cziegeler 02/05/28 04:33:58
Modified: src/java/org/apache/cocoon/components/pipeline/impl
CachingProcessingPipeline.java
Log:
Fixing bugs - caching of complete pipelines works now
Revision Changes Path
1.19 +16 -16
xml-cocoon2/src/java/org/apache/cocoon/components/pipeline/impl/CachingProcessingPipeline.java
Index: CachingProcessingPipeline.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/pipeline/impl/CachingProcessingPipeline.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- CachingProcessingPipeline.java 28 May 2002 10:51:31 -0000 1.18
+++ CachingProcessingPipeline.java 28 May 2002 11:33:57 -0000 1.19
@@ -92,7 +92,7 @@
*
* @since @next-version@
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
- * @version CVS $Id: CachingProcessingPipeline.java,v 1.18 2002/05/28 10:51:31
cziegeler Exp $
+ * @version CVS $Id: CachingProcessingPipeline.java,v 1.19 2002/05/28 11:33:57
cziegeler Exp $
*/
public class CachingProcessingPipeline
extends AbstractProcessingPipeline
@@ -115,8 +115,6 @@
/** The deserializer */
protected XMLDeserializer xmlDeserializer;
- /** Complete response is cached */
- protected boolean completeResponseIsCached;
/** The serializer */
protected XMLSerializer xmlSerializer;
@@ -124,6 +122,8 @@
protected byte[] cachedResponse;
/** The index indicating the first transformer getting input from the cache */
protected int firstProcessedTransformerIndex;
+ /** Complete response is cached */
+ protected boolean completeResponseIsCached;
/** The key to store the generated response */
protected PipelineCacheKey pipelineCacheKey;
@@ -131,7 +131,8 @@
protected SourceValidity[] pipelineValidityObjects;
/** The index indicating to the first transformer which is not cacheable */
protected int firstNotCacheableTransformerIndex;
-
+ /** Cache complete response */
+ protected boolean cacheCompleteResponse;
/**
* Composable Interface
@@ -208,11 +209,10 @@
if (this.getLogger().isDebugEnabled()) {
this.getLogger().debug("Caching content for further requests of '"
+ environment.getURI() + "'.");
- System.out.println("Caching content for further requests of '" +
environment.getURI() + "'.");
}
try {
OutputStream os = environment.getOutputStream();
- if ( this.completeResponseIsCached ) {
+ if ( this.cacheCompleteResponse ) {
os = new CachingOutputStream( os );
}
if (this.serializer.shouldSetContentLength()) {
@@ -239,14 +239,14 @@
this.generator.generate();
}
}
- if ( this.completeResponseIsCached ) {
+ if ( this.cacheCompleteResponse ) {
CachedResponse response = new
CachedResponse(this.pipelineValidityObjects,
((CachingOutputStream)os).getContent());
this.cache.store(environment.getObjectModel(),
this.pipelineCacheKey,
response);
} else {
- CachedResponse response = new
CachedResponse(this.pipelineValidityObjects,
+ CachedResponse response = new
CachedResponse(this.pipelineValidityObjects,
(byte[])this.xmlSerializer.getSAXFragment());
this.cache.store(environment.getObjectModel(),
this.pipelineCacheKey,
@@ -289,8 +289,8 @@
this.firstNotCacheableTransformerIndex = 0;
this.firstProcessedTransformerIndex = 0;
this.completeResponseIsCached = false;
+ this.cacheCompleteResponse = false;
- System.out.println("Generating key.");
// first step is to generate the key:
// All pipeline components starting with the generator
// are tested if they are either a CacheableProcessingComponent
@@ -354,11 +354,11 @@
key)
);
this.completeResponseIsCached = true;
+ this.cacheCompleteResponse = true;
}
}
}
- System.out.println("Generated key:"+processingPipelineKey);
// now, we have a key representing all cacheable components up to the
// first non cacheable
if (processingPipelineKey != null) {
@@ -377,7 +377,6 @@
boolean responseIsUsable = true;
if (this.getLogger().isDebugEnabled()) {
this.getLogger().debug("Found cached response for '" +
environment.getURI() + "'.");
- System.out.println("Found cached response for '" +
environment.getURI() + "'.");
}
this.cachedResponse = response.getResponse();
SourceValidity[] validities = response.getValidityObjects();
@@ -428,12 +427,10 @@
cachedValidityObjects = validities;
if (this.getLogger().isDebugEnabled()) {
this.getLogger().debug("Using valid cached content for '" +
environment.getURI() + "'.");
- System.out.println("Using valid cached content for '" +
environment.getURI() + "'.");
}
} else {
if (this.getLogger().isDebugEnabled()) {
this.getLogger().debug("Cached content is invalid for '" +
environment.getURI() + "'.");
- System.out.println("Cached content is invalid for '" +
environment.getURI() + "'.");
}
// we are not valid!
this.completeResponseIsCached = false;
@@ -455,6 +452,7 @@
} else {
processingPipelineKey = null;
}
+ this.cacheCompleteResponse = false;
} else {
// the entry is invalid, remove it
this.cache.remove( cachedPipelineKey );
@@ -470,7 +468,6 @@
} else {
if (this.getLogger().isDebugEnabled()) {
this.getLogger().debug("Cached response not found for '" +
environment.getURI() + "'.");
- System.out.println("Cached response not found for '" +
environment.getURI() + "'.");
}
finished = false;
this.completeResponseIsCached = false;
@@ -542,8 +539,11 @@
return;
} else {
try {
- this.xmlSerializer = (XMLSerializer)this.manager.lookup(
XMLSerializer.ROLE );
- XMLSerializer localXMLSerializer = this.xmlSerializer;
+ XMLSerializer localXMLSerializer = null;
+ if (!this.cacheCompleteResponse) {
+ this.xmlSerializer = (XMLSerializer)this.manager.lookup(
XMLSerializer.ROLE );
+ localXMLSerializer = this.xmlSerializer;
+ }
if ( this.cachedResponse == null ) {
XMLProducer prev = super.generator;
XMLConsumer next;
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]