X-Git-Url: https://juplo.de/gitweb/?p=percentcodec;a=blobdiff_plain;f=cachecontrol%2Fsrc%2Fmain%2Fjava%2Fde%2Fhalbekunst%2Fjuplo%2Fcachecontrol%2Fannotations%2FLastModified.java;fp=cachecontrol%2Fsrc%2Fmain%2Fjava%2Fde%2Fhalbekunst%2Fjuplo%2Fcachecontrol%2Fannotations%2FLastModified.java;h=be28e0ea1b6bad74508766936d8651a38dbf55d4;hp=0000000000000000000000000000000000000000;hb=75b55d74f57705c6c5ebee2bcd66c87f3f09089d;hpb=397f5a682248103663ddd0db81decdcdee1c37fc
diff --git a/cachecontrol/src/main/java/de/halbekunst/juplo/cachecontrol/annotations/LastModified.java b/cachecontrol/src/main/java/de/halbekunst/juplo/cachecontrol/annotations/LastModified.java
new file mode 100644
index 00000000..be28e0ea
--- /dev/null
+++ b/cachecontrol/src/main/java/de/halbekunst/juplo/cachecontrol/annotations/LastModified.java
@@ -0,0 +1,53 @@
+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.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * Ãber diese Annotation kann der Inhalt des Last-Modified
-Headers
+ * gesteuert werden.
+ * Mit dieser Annotation können Klassen oder Methoden merkiert werden.
+ *
+ * Wenn eine Methode annotiert wird, muss diese eine Instanz von
+ * {@link HttpServletRequest} als (einziges!) Argument akzeptieren und einen
+ * Wert liefern, der sich nach long
casten lässt.
+ * Die Signatur der Methode entspricht der Methode
+ * {@link HttpServlet#getLastModified(javax.servlet.http.HttpServletRequest)}
+ * aus dem HttpServlet
-Interface.
+ * Um das Cache-Verhalten ein existierendes Servlet, das diese Methode bereits
+ * implementiert, mit Juplo-CacheControll zu verbessern, kann als erste
+ * MaÃnahme daher einfach diese Methode mit dieser Annotation markiert werden.
+ *
+ * Wenn eine Klasse Annotiert wird, muss der Annotation der Wert für den
+ * Last-Modified
-Header übergeben werden.
+ * Da dieser Wert somit statisch ist, macht es nur Sinn, Klassen mit dieser
+ * Annotation zu markieren, die ausschlieÃlich statische Ressourcen ausliefern,
+ * die sich nur mit der Neuinstallation der Webanwendung ändern.
+ *
+ * Zu beachten:
+ * Wenn zugleich die Annotation {@link CacheSeconds} verwendet wird, wird
+ * die mit dieser Annotation markierte Methode nur aufgerufen, wenn die mit
+ * der Annotation {@link CacheSeconds} markierte Methode einen Wert gröÃer
+ * oder gleich 0
liefert, bzw. für die mit Annotation
+ * {@link CacheSeconds} markierte Klasse eine Cache-Zeit gröÃer oder gleich
+ * 0
festgelegt wurde.
+ *
+ * @author kai
+ * @see Cacheable
+ * @see CacheSeconds
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ ElementType.TYPE, ElementType.METHOD })
+public @interface LastModified {
+ long value() default 0;
+}