Author: cziegeler
Date: Wed Sep 29 07:34:38 2004
New Revision: 47487

Modified:
   
cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/pipeline/impl/ExpiresCachingProcessingPipeline.java
Log:
Support of caching the mime-type

Modified: 
cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/pipeline/impl/ExpiresCachingProcessingPipeline.java
==============================================================================
--- 
cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/pipeline/impl/ExpiresCachingProcessingPipeline.java
    (original)
+++ 
cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/pipeline/impl/ExpiresCachingProcessingPipeline.java
    Wed Sep 29 07:34:38 2004
@@ -91,12 +91,18 @@
                 byte[] content = cachedResponse.getResponse();
 
                 if ( this.serializer == this.lastConsumer ) {
+                    if ( cachedResponse.getContentType() != null ) {
+                        
environment.setContentType(cachedResponse.getContentType());
+                    } else {
+                        this.setMimeTypeForSerializer(environment);
+                    }
                     final OutputStream outputStream = 
environment.getOutputStream(0);
                     if (content.length > 0) {
                         environment.setContentLength(content.length);
                         outputStream.write(content);
                     }
                 } else {
+                    this.setMimeTypeForSerializer(environment);
                     this.xmlDeserializer.setConsumer( this.lastConsumer );
                     this.xmlDeserializer.deserialize( content );
                 }
@@ -109,6 +115,7 @@
                     return super.processXMLPipeline( environment );
                 }
 
+                this.setMimeTypeForSerializer(environment);
                 byte[] cachedData;
                 if ( this.serializer == this.lastConsumer ) {
 
@@ -145,6 +152,7 @@
                 if (this.cacheValidity != null) {
                     cachedResponse = new CachedResponse(this.cacheValidity,
                                                         cachedData);
+                    
cachedResponse.setContentType(environment.getContentType());
                     this.cache.store(this.cacheKey, cachedResponse);
                 }
             }
@@ -287,6 +295,12 @@
     throws ProcessingException {
         try {
             if (this.cachedResponse != null) {
+                if ( cachedResponse.getContentType() != null ) {
+                    
environment.setContentType(cachedResponse.getContentType());
+                } else {
+                    this.setMimeTypeForReader(environment);
+                }
+
                 final byte[] content = cachedResponse.getResponse();
                 environment.setContentLength(content.length);
 
@@ -302,6 +316,7 @@
 
                 byte[] cachedData;
 
+                this.setMimeTypeForReader(environment);
                 if (this.reader.shouldSetContentLength()) {
                     final OutputStream os = 
environment.getOutputStream(this.outputBufferSize);
 
@@ -330,6 +345,7 @@
                 if (this.cacheValidity != null) {
                     cachedResponse = new CachedResponse(this.cacheValidity,
                                                         cachedData);
+                    
cachedResponse.setContentType(environment.getContentType());
                     this.cache.store(this.cacheKey, cachedResponse);
                 }
             }

Reply via email to