You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by gk...@apache.org on 2007/03/13 16:21:37 UTC
svn commit: r517729 - in
/cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline:
./ impl/
Author: gkossakowski
Date: Tue Mar 13 08:21:36 2007
New Revision: 517729
URL: http://svn.apache.org/viewvc?view=rev&rev=517729
Log:
Making pipelines more HTTP-compliant
Now pipelines will set approporiate status code in (hopefully) every case.
Also Last-Modified headers are produced in all cases.
Modified:
cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/AbstractProcessingPipeline.java
cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/AbstractCachingProcessingPipeline.java
cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/CachingPointProcessingPipeline.java
cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/CachingProcessingPipeline.java
cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/ExpiresCachingProcessingPipeline.java
Modified: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/AbstractProcessingPipeline.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/AbstractProcessingPipeline.java?view=diff&rev=517729&r1=517728&r2=517729
==============================================================================
--- cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/AbstractProcessingPipeline.java (original)
+++ cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/AbstractProcessingPipeline.java Tue Mar 13 08:21:36 2007
@@ -24,6 +24,8 @@
import java.util.NoSuchElementException;
import java.util.StringTokenizer;
+import javax.servlet.http.HttpServletResponse;
+
import org.apache.avalon.excalibur.pool.Recyclable;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
import org.apache.avalon.framework.parameters.ParameterException;
@@ -546,6 +548,8 @@
handleException(e);
}
+ //Request has been succesfully processed, set approporiate status code
+ environment.setStatus(HttpServletResponse.SC_OK);
return true;
}
@@ -656,7 +660,9 @@
} catch (Exception e) {
handleException(e);
}
-
+
+ //Request has been succesfully processed, set approporiate status code
+ environment.setStatus(HttpServletResponse.SC_OK);
return true;
}
Modified: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/AbstractCachingProcessingPipeline.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/AbstractCachingProcessingPipeline.java?view=diff&rev=517729&r1=517728&r2=517729
==============================================================================
--- cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/AbstractCachingProcessingPipeline.java (original)
+++ cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/AbstractCachingProcessingPipeline.java Tue Mar 13 08:21:36 2007
@@ -23,6 +23,8 @@
import java.util.ArrayList;
import java.util.Date;
+import javax.servlet.http.HttpServletResponse;
+
import org.apache.avalon.framework.parameters.ParameterException;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.service.ServiceException;
@@ -91,8 +93,10 @@
protected Store transientStore = null;
- /** Abstract method defined in subclasses */
- protected abstract void cacheResults(Environment environment,
+ /** Abstract method defined in subclasses
+ * @return <u>complete</u> cached response or <code>null</code><br>
+ * See issue COCOON-2009 for discussion*/
+ protected abstract CachedResponse cacheResults(Environment environment,
OutputStream os)
throws Exception;
@@ -365,7 +369,14 @@
// Now that we have processed the pipeline,
// we do the actual caching
//
- cacheResults(environment,os);
+ CachedResponse completeCachedResponse = cacheResults(environment,os);
+
+ if (completeCachedResponse != null) {
+ //Dirty work-around for setting Last-Modified header as there is no appoporiate method
+ //org.apache.cocoon.environment.http.HttpEnvironment.isResponseModified will set it and the result of
+ //the actual check is neither meaningful nor important here
+ environment.isResponseModified(completeCachedResponse.getLastModified());
+ }
} catch (Exception e) {
handleException(e);
@@ -373,6 +384,8 @@
releaseLock(this.toCacheKey);
}
+ //Request has been succesfully processed, set approporiate status code
+ environment.setStatus(HttpServletResponse.SC_OK);
return true;
}
@@ -897,7 +910,9 @@
} catch (Exception e) {
handleException(e);
}
-
+
+ //Request has been succesfully processed, set approporiate status code
+ environment.setStatus(HttpServletResponse.SC_OK);
return true;
}
Modified: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/CachingPointProcessingPipeline.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/CachingPointProcessingPipeline.java?view=diff&rev=517729&r1=517728&r2=517729
==============================================================================
--- cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/CachingPointProcessingPipeline.java (original)
+++ cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/CachingPointProcessingPipeline.java Tue Mar 13 08:21:36 2007
@@ -166,7 +166,8 @@
/**
* Cache longest cacheable path plus cache points.
*/
- protected void cacheResults(Environment environment, OutputStream os) throws Exception {
+ protected CachedResponse cacheResults(Environment environment, OutputStream os) throws Exception {
+ CachedResponse completeCachedResponse = null;
if (this.toCacheKey != null) {
if ( this.cacheCompleteResponse ) {
@@ -179,6 +180,7 @@
response.setContentType(environment.getContentType());
this.cache.store(this.toCacheKey.copy(),
response);
+ completeCachedResponse = response;
//
// Scan back along the pipelineCacheKey for
// for any cachepoint(s)
@@ -232,6 +234,7 @@
}
}
+ return completeCachedResponse;
}
/**
Modified: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/CachingProcessingPipeline.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/CachingProcessingPipeline.java?view=diff&rev=517729&r1=517728&r2=517729
==============================================================================
--- cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/CachingProcessingPipeline.java (original)
+++ cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/CachingProcessingPipeline.java Tue Mar 13 08:21:36 2007
@@ -43,7 +43,7 @@
/**
* Cache longest cacheable key
*/
- protected void cacheResults(Environment environment, OutputStream os) throws Exception {
+ protected CachedResponse cacheResults(Environment environment, OutputStream os) throws Exception {
if (this.toCacheKey != null) {
// See if there is an expires object for this resource.
Long expiresObj = (Long) environment.getObjectModel().get(ObjectModelHelper.EXPIRES_OBJECT);
@@ -61,7 +61,9 @@
}
this.cache.store(this.toCacheKey, response);
+ return response;
}
+ return null;
}
/**
Modified: cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/ExpiresCachingProcessingPipeline.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/ExpiresCachingProcessingPipeline.java?view=diff&rev=517729&r1=517728&r2=517729
==============================================================================
--- cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/ExpiresCachingProcessingPipeline.java (original)
+++ cocoon/trunk/core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/pipeline/impl/ExpiresCachingProcessingPipeline.java Tue Mar 13 08:21:36 2007
@@ -39,6 +39,8 @@
import java.io.OutputStream;
import java.util.Map;
+import javax.servlet.http.HttpServletResponse;
+
/**
* This pipeline implementation caches the complete content for a defined
* period of time (expires).
@@ -165,6 +167,8 @@
handleException(e);
}
+ //Request has been succesfully processed, set approporiate status code
+ environment.setStatus(HttpServletResponse.SC_OK);
return true;
}
@@ -352,6 +356,8 @@
handleException(e);
}
+ //Request has been succesfully processed, set approporiate status code
+ environment.setStatus(HttpServletResponse.SC_OK);
return true;
}
}