Próbuję zrobić nieco lepszą adnotację z poziomu podręcznika, informując o parametrach funkcji, którą wywołuję w kontrolerach.Sprawdź, czy wynik jest poprawny dla playframework
więc mam to działanie:
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()
}
}
Moje pytanie jest takie: Chciałbym buforować wynik delegate.call() tylko wtedy, gdy jest to OK(). Jak mogę to sprawdzić? Czy jest nieruchomość? a util? lub czy potrzebuję Ok(). GetClass(). IsInstance (wynik)?
Dzięki za wszelkie odpowiedzi i wskazówki.
PS: Dlaczego chcę to zrobić? Ponieważ mam połączenia, które generują kilka typów różnych wyników. wystarczającej kilka wyników, które ich buforowanie może być opcja, ponieważ nie chcę, aby
To zadziałało ... dzięki –
Czy to jest zalecany sposób, aby to zrobić? Wydaje się to naprawdę niezręczne i skomplikowane, aby osiągnąć coś prostego, jak sprawdzanie kodu statusu odpowiedzi – knittl
Co, jeśli to nie jest instancja 'PlainResult'? – jlars62