मैं अपने नियंत्रकों में कॉल किए गए फ़ंक्शन के पैरामीटर के बारे में जागरूक करके थोड़ा बेहतर @ कैश एनोटेशन बनाने की कोशिश कर रहा हूं।जांचें कि परिणाम एक ठीक playframework
public class ContextualCachedAction extends Action<ContextualCached> {
@Override
public Result call(Context ctx) throws Throwable {
try {
String key = makeKey(ctx);
Integer duration = configuration.duration();
Result result = (Result) Cache.get(key);
if (result == null) {
result = delegate.call(ctx);
//TODO find a way to cache only successful calls
Cache.set(key, result, duration);
}
return result;
} catch (RuntimeException e) {
throw e;
} catch (Throwable t) {
throw new RuntimeException(t);
}
}
private String makeKey(Context ctx) {
//makes the key from some parameters in the ctx.request()
}
}
मेरा प्रश्न यह है::
तो मैं इस लड़ाई है मैं) delegate.call का परिणाम (कैश करने के लिए केवल अगर यह एक ठीक है चाहते हैं()। मैं इसके लिए कैसे जांच सकता हूं? क्या कोई संपत्ति है? एक उपयोग? या मुझे ठीक है()। GetClass()। IsInstance (परिणाम)?
किसी भी उत्तर और संकेत के लिए धन्यवाद।
पीएस: मैं ऐसा क्यों करना चाहता हूं? क्योंकि मेरे पास कुछ कॉल हैं जो विभिन्न प्रकार के विभिन्न परिणाम उत्पन्न करती हैं। कुछ पर्याप्त परिणाम है कि उन्हें कैशिंग एक विकल्प हो सकता है के बाद से मैं
यह काम किया ... धन्यवाद –
क्या यह करने का यह अनुशंसित तरीका है? प्रतिक्रिया स्थिति कोड – knittl
की जांच करने जैसे कुछ सरल प्राप्त करने के लिए यह वास्तव में अजीब और जटिल लगता है यदि यह 'PlainResult' का उदाहरण नहीं है तो क्या होगा? – jlars62