X-Git-Url: https://juplo.de/gitweb/?p=percentcodec;a=blobdiff_plain;f=cachecontrol%2Fsrc%2Fmain%2Fjava%2Fde%2Fhalbekunst%2Fjuplo%2Fcachecontrol%2Fannotations%2FCacheable.java;fp=cachecontrol%2Fsrc%2Fmain%2Fjava%2Fde%2Fhalbekunst%2Fjuplo%2Fcachecontrol%2Fannotations%2FCacheable.java;h=7a1be26767c0a874d7a2764828205293a04fbe3b;hp=0000000000000000000000000000000000000000;hb=75b55d74f57705c6c5ebee2bcd66c87f3f09089d;hpb=397f5a682248103663ddd0db81decdcdee1c37fc diff --git a/cachecontrol/src/main/java/de/halbekunst/juplo/cachecontrol/annotations/Cacheable.java b/cachecontrol/src/main/java/de/halbekunst/juplo/cachecontrol/annotations/Cacheable.java new file mode 100644 index 00000000..7a1be267 --- /dev/null +++ b/cachecontrol/src/main/java/de/halbekunst/juplo/cachecontrol/annotations/Cacheable.java @@ -0,0 +1,45 @@ +package de.halbekunst.juplo.cachecontrol.annotations; + + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + + +/** + * Marker-Annotation für Handler (i.A. eine Impelementierung von + * {@link Controller}), deren Antworten vom {@link CachingInterceptor} mit + * HTTP/1.1-Caching-Header nach + * {@linkplain http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html RFC 2616} + * dekoriert werden sollen. + *
+ * Wenn der Parameter eager
auf true
gesetzt wird,
+ * ermittelt der {@link CachingInterceptor} die Cache-Parameter über die
+ * annotierten Methoden vorab.
+ * Achtung:
+ * Dies bedeutet, dass die annotierten Methoden aufgerufen werden bevor
+ * die eigentliche Verarbeitungs-Routine der markierten Klasse aufgerufen wird!
+ * Wenn sich dabei ergiebt, dass die Antwort nicht erneut ausgeliefert werden
+ * muss, wird die eigentliche Verarbeitungs-Routine gar nicht aufgerufen.
+ *
+ * Wenn der Parameter eager
nicht gesetzt ist (oder explizit auf
+ * false
gesetzt wurde), kapselt der {@link CachingInterceptor}
+ * den Request und den Ausgabestrom für den Response-Body und trifft die
+ * Entscheidung über die zu ergänzenden Header, wenn der Status des
+ * {@link HttpServletResponse} gesetzt oder mit dem Schreiben des Response-Body
+ * begonnen wird.
+ *
+ * @see CacheControl
+ * @see Accepts
+ * @see CacheSeconds
+ * @see LastModified
+ * @see ETag
+ * @see CacheControl
+ * @author kai
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface Cacheable {
+ boolean eager() default false;
+}