cziegeler 02/05/10 01:33:29 Modified: src/java/org/apache/cocoon/components/pipeline/impl CachingProcessingPipeline.java Log: Some more lines Revision Changes Path 1.8 +23 -5 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.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- CachingProcessingPipeline.java 7 May 2002 06:37:32 -0000 1.7 +++ CachingProcessingPipeline.java 10 May 2002 08:33:29 -0000 1.8 @@ -89,7 +89,7 @@ * * @since @next-version@ * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a> - * @version CVS $Id: CachingProcessingPipeline.java,v 1.7 2002/05/07 06:37:32 cziegeler Exp $ + * @version CVS $Id: CachingProcessingPipeline.java,v 1.8 2002/05/10 08:33:29 cziegeler Exp $ */ public class CachingProcessingPipeline extends AbstractProcessingPipeline @@ -332,7 +332,9 @@ } // now, if we have a key, let's see if there is a cached response - if (this.pipelineCacheKey != null) { + boolean finished = false; + while (this.pipelineCacheKey != null && !finished) { + finished = true; CachedResponse response = this.cache.get(this.pipelineCacheKey.toString()); // now test validity if (response != null) { @@ -350,7 +352,7 @@ } else { validity = new CacheValidityToSourceValidity(((Cacheable)this.generator).generateValidity()); } - } else if (i >= firstNotCacheableTransformerIndex + 1) { + } else if (i <= firstNotCacheableTransformerIndex + 1) { // test transformer final Transformer trans = (Transformer)this.transformers.get(i-1); @@ -361,8 +363,11 @@ } } else { // test serializer - // FIXME - validity = null; + if (serializerIsCacheableProcessingComponent) { + validity = ((CacheableProcessingComponent)this.serializer).generateValidity(); + } else { + validity = new CacheValidityToSourceValidity(((Cacheable)this.serializer).generateValidity()); + } } if (validity != null) { isValid = validities[i].isValid( validity ); @@ -382,6 +387,19 @@ if (validities[i] == null) { // we can try a shorter key now... // but we don't invalidate the current entry! + if (i > 0) { + int deleteCount = validities.length - i; + if (i > 0 && i <= firstNotCacheableTransformerIndex + 1) { + this.firstNotCacheableTransformerIndex = i-1; + } + for(int x=0; x < deleteCount; x++) { + final int deletePos = this.pipelineCacheKey.toString().lastIndexOf("CCK:"); + this.pipelineCacheKey.delete(deletePos, this.pipelineCacheKey.length()); + } + finished = false; + } else { + this.pipelineCacheKey = null; + } } else { // invalidate entry this.cache.remove(this.pipelineCacheKey.toString());
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]