Es werden nun vorerst doch auch 30x-Antworten werden dekoriert
[percentcodec] / cachecontrol / src / main / java / de / halbekunst / juplo / cachecontrol / CacheControl.java
index 0512de4..458979d 100644 (file)
@@ -45,8 +45,7 @@ public class CacheControl {
 
   public boolean decorate(
       HttpServletRequest request,
-      HttpServletResponse response,
-      Object handler
+      HttpServletResponse response
       )
   {
     try {
@@ -73,6 +72,15 @@ public class CacheControl {
       case HttpServletResponse.SC_PARTIAL_CONTENT: // 206
         /** Normale Antwort! Antwort dekorieren... */
         break;
+      case HttpServletResponse.SC_MOVED_PERMANENTLY: // 301
+      case HttpServletResponse.SC_MOVED_TEMPORARILY: // 302
+      case HttpServletResponse.SC_SEE_OTHER: // 303
+      case HttpServletResponse.SC_NOT_MODIFIED: // 304
+      case HttpServletResponse.SC_USE_PROXY: // 305
+      case HttpServletResponse.SC_TEMPORARY_REDIRECT: // 307
+        /** Redirect-Antwort! Antwort dekodieren... */
+        // TODO: Kann das wirklich nicht zu Protokoll-Verletzungen führen?
+        break;
       case HttpServletResponse.SC_BAD_REQUEST: // 400
       case HttpServletResponse.SC_UNAUTHORIZED: // 401
       case HttpServletResponse.SC_PAYMENT_REQUIRED: // 402
@@ -94,18 +102,14 @@ public class CacheControl {
       case HttpServletResponse.SC_NOT_IMPLEMENTED: // 501
       case HttpServletResponse.SC_SERVICE_UNAVAILABLE: // 503
       case HttpServletResponse.SC_HTTP_VERSION_NOT_SUPPORTED: // 505
-        return true;
       default:
         /**
          * Es ist nicht klar, was der Handler noch machen wird/muss:
          * Antwort nicht dekorieren und Kontroller an den Handler übergeben...
          */
-        return false;
+        return true;
     }
 
-    if (handle.isZipped())
-      response.addHeader(Headers.HEADER_CONTENT_ENCODING, "gzip");
-
     Map<String,String> headers = handle.getAdditionalHeaders(request);
     for (String name : headers.keySet())
       response.addHeader(name, headers.get(name));
@@ -125,7 +129,7 @@ public class CacheControl {
     }
 
     int cacheSeconds = handle.getCacheSeconds(request);
-    if (cacheSeconds < 1) {
+    if (cacheSeconds < 0) {
       log.debug("{}: caching disabled!", url);
       response.setDateHeader(Headers.HEADER_DATE, handle.getTimestamp());
       response.setDateHeader(Headers.HEADER_EXPIRES, 0);
@@ -135,6 +139,8 @@ public class CacheControl {
       response.addHeader(Headers.HEADER_CACHE_CONTROL, "no-store");
       response.addHeader(Headers.HEADER_CACHE_CONTROL, "max-age=0");
       response.addHeader(Headers.HEADER_CACHE_CONTROL, "s-max-age=0");
+      if (handle.isZipped())
+        response.addHeader(Headers.HEADER_CONTENT_ENCODING, "gzip");
       return true;
     }
 
@@ -225,6 +231,9 @@ public class CacheControl {
 
     log.debug("{}: first up!", url);
 
+    if (handle.isZipped())
+      response.addHeader(Headers.HEADER_CONTENT_ENCODING, "gzip");
+
     /** HTTP/1.1-Caching-Header richtig setzen!! */
     response.setDateHeader(Headers.HEADER_LAST_MODIFIED, lastModified);
 
@@ -328,7 +337,6 @@ public class CacheControl {
 
       cacheSeconds = CacheControl.this.defaultCacheSeconds;
       lastModified = CacheControl.this.defaultLastModified;
-      eTag = "";
 
       /** Class-Level-Annotations auslesen */
       for (Annotation annotation : handler.getClass().getAnnotations()) {