Unnötige decorate()-Aufrufe durch AcceleratorFilter verhindert
[percentcodec] / cachecontrol / src / main / java / de / halbekunst / juplo / cachecontrol / AcceleratorFilter.java
index f0037bf..f9cd886 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;
@@ -332,6 +333,7 @@ public class AcceleratorFilter implements Filter {
        */
       response.reset();
       pos = 0;
+      size = 0;
       stream = null;
       writer = null;
     }
@@ -648,9 +650,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 +666,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 +679,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 {