X-Git-Url: https://juplo.de/gitweb/?p=percentcodec;a=blobdiff_plain;f=cachecontrol%2Fsrc%2Fmain%2Fjava%2Fde%2Fhalbekunst%2Fjuplo%2Fcachecontrol%2Fannotations%2FCacheSeconds.java;fp=cachecontrol%2Fsrc%2Fmain%2Fjava%2Fde%2Fhalbekunst%2Fjuplo%2Fcachecontrol%2Fannotations%2FCacheSeconds.java;h=e076e0875d51401688daf55e83220ba01579e97d;hp=0000000000000000000000000000000000000000;hb=75b55d74f57705c6c5ebee2bcd66c87f3f09089d;hpb=397f5a682248103663ddd0db81decdcdee1c37fc diff --git a/cachecontrol/src/main/java/de/halbekunst/juplo/cachecontrol/annotations/CacheSeconds.java b/cachecontrol/src/main/java/de/halbekunst/juplo/cachecontrol/annotations/CacheSeconds.java new file mode 100644 index 00000000..e076e087 --- /dev/null +++ b/cachecontrol/src/main/java/de/halbekunst/juplo/cachecontrol/annotations/CacheSeconds.java @@ -0,0 +1,52 @@ +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; +import javax.servlet.http.HttpServletRequest; + +/** + * Mit dieser Annotation können Klassen oder Methoden merkiert werden. + *

+ * Wenn eine Methode markiert wird, muss diese eine Instanz von + * {@link HttpServletRequest} als (einziges!) Argument akzeptieren und einen + * Wert liefern, der sich nach int casten lässt. + * Die annotierte Methode ermöglicht eine einfache, zentrale aber Request- + * Abhängige Steuerung des Caching-Verhaltens. + *

+ * Wenn eine Klasse annotiert wird, muss der Anotation die dann statisch für + * alle von der Klasse erzeugten Antworten gültige Cache-Zeit als Argument + * übergeben werden. + * Wird keine Cache-Zeit spezifiziert, wird der Wert 86400 + * (ein Tag) verwendet. + *

+ *

+ * TODO + * Zu beachten: Wenn die Methode + * {@link #getCacheControl(javax.servlet.http.HttpServletRequest)} weitere + * Schlüssel-Wert-Paare für den Cache-Control-Header liefert, + * werden diese ergänzt. Wenn in der Rückgabe ein Wert für + * max-age enthalten ist, wir er allerdings von dem durch diese + * Methode vorgegebenen Wert überschrieben! + * + * @author kai + * @See Cacheable + * @See LastModified + * @See CacheControl + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ ElementType.TYPE, ElementType.METHOD }) +public @interface CacheSeconds { + int value() default 86400; /** Default: 1 Tag */ +}