Projekt von de.halbekunst.juplo nach de.juplo verschoben und aufgeräumt
[percentcodec] / accelerator / src / main / java / de / juplo / accelerator / annotations / Accepts.java
diff --git a/accelerator/src/main/java/de/juplo/accelerator/annotations/Accepts.java b/accelerator/src/main/java/de/juplo/accelerator/annotations/Accepts.java
new file mode 100644 (file)
index 0000000..2f44afc
--- /dev/null
@@ -0,0 +1,30 @@
+package de.juplo.accelerator.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Mit dieser Methode kann eine Methode annotiert werden, die Auskunft darüber
+ * erteilt, mit welchem HTTP-Status-Code der Handler die Anfrage beatnworten
+ * wird.
+ * <p>
+ * Die Methode muss eine Instanz von {@link HttpServletRequest} als (einziges!)
+ * Argument akzeptieren und einen Wert liefern, der sich nach
+ * <code>int</code> casten lässt.
+ * <p>
+ * Eine mit dieser Annotation markierte Methode wird nur benötigt, wenn die
+ * Caching-Dekoration im Modus <code>eager=true</code> ausgeführt wird. Sie
+ * wird in diesem Fall benötigt, weil die Entscheidungen zur Cache-Dekoration
+ * dann getroffen werden müssen, <em>bevor</em> die verarbeitende Klasse die
+ * Anfrage verarbeitet hat.
+ * Wenn die Cache-Dekoration im Modus <code>eager=true</code> betrieben wird
+ * und keine Methode mit dieser Annotation annotiert ist, geht {@link CacheControl}
+ * davon aus, dass die verarbeitende Klasse alle Anfragen annimmt.
+ *
+ * @author kai
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface Accepts {}