Überflüssige Include-Überprüfung entfernt
[percentcodec] / cachecontrol / src / main / java / de / halbekunst / juplo / cachecontrol / AcceleratorFilter.java
index f0037bf..63edfb5 100644 (file)
@@ -27,6 +27,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowire;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Configurable;
+import org.springframework.beans.factory.annotation.Qualifier;
 
 
 
@@ -46,7 +47,7 @@ public class AcceleratorFilter implements Filter {
 
 
   @Autowired CacheControl cacheControl;
-  @Autowired(required=false) Integer defaultBufferSize = DEFAULT_BUFFER_SIZE;
+  @Autowired(required=false) @Qualifier("defaultBufferSize") Integer defaultBufferSize = DEFAULT_BUFFER_SIZE;
   @Autowired String eTag;
   @Autowired Boolean weak;
   @Autowired Long lastModified;
@@ -61,14 +62,6 @@ public class AcceleratorFilter implements Filter {
       return;
     }
 
-    // TODO: Das macht so wahrscheinlich keinen Sinn...
-    /** Prüfen, ob es sich um eine Anfrage für einen JSP-Include handelt */
-    if (request.getAttribute(REQUEST_URI_ATTRIBUTE) != null) {
-      log.debug("Includes cannot be accelerated");
-      chain.doFilter(request, response);
-      return;
-    }
-
     HttpServletRequest httpRequest = (HttpServletRequest)request;
     HttpServletResponse httpResponse = (HttpServletResponse)response;
     AccelerationWrapper wrapper = new AccelerationWrapper(httpRequest, httpResponse);
@@ -332,6 +325,7 @@ public class AcceleratorFilter implements Filter {
        */
       response.reset();
       pos = 0;
+      size = 0;
       stream = null;
       writer = null;
     }
@@ -648,9 +642,11 @@ public class AcceleratorFilter implements Filter {
       public void write(int i) throws IOException {
         if (pos == bufferSize) {
           out().write(buffer);
-          pos = 0;
           committed = true;
-          cacheControl.decorate(request, response, this);
+          /** Dekoration nur beim ersten Schreib-Schub anstoßen */
+          if (pos == size)
+            cacheControl.decorate(request, response);
+          pos = 0;
         }
         buffer[pos++] = (byte) i;
         size++;
@@ -662,7 +658,9 @@ public class AcceleratorFilter implements Filter {
           return;
 
         committed = true;
-        cacheControl.decorate(request, response, this);
+        /** Dekoration nur beim ersten Schreib-Schub anstoßen */
+        if (pos == size)
+          cacheControl.decorate(request, response);
         out().write(buffer, 0, pos);
         out().flush();
         pos = 0;
@@ -673,7 +671,7 @@ public class AcceleratorFilter implements Filter {
         if (size == 0) {
           committed = true;
           zipped = false;
-          cacheControl.decorate(request, response, this);
+          cacheControl.decorate(request, response);
           sos.close();
         }
         else {