cziegeler 02/05/27 05:06:13 Modified: src/java/org/apache/cocoon/caching CacheableProcessingComponent.java src/java/org/apache/cocoon/components/pipeline/impl CachingProcessingPipeline.java Log: Switching new caching interface to strings (for know...) Revision Changes Path 1.3 +3 -3 xml-cocoon2/src/java/org/apache/cocoon/caching/CacheableProcessingComponent.java Index: CacheableProcessingComponent.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/caching/CacheableProcessingComponent.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- CacheableProcessingComponent.java 6 May 2002 13:22:31 -0000 1.2 +++ CacheableProcessingComponent.java 27 May 2002 12:06:12 -0000 1.3 @@ -59,7 +59,7 @@ * * @since @next-version@ * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a> - * @version CVS $Id: CacheableProcessingComponent.java,v 1.2 2002/05/06 13:22:31 cziegeler Exp $ + * @version CVS $Id: CacheableProcessingComponent.java,v 1.3 2002/05/27 12:06:12 cziegeler Exp $ */ public interface CacheableProcessingComponent { @@ -68,10 +68,10 @@ * This key must be unique inside the space of this component. * This method must be invoked before the generateValidity() method. * - * @return The generated key or <code>0</code> if the component + * @return The generated key or <code>null</code> if the component * is currently not cacheable. */ - long generateKey(); + String generateKey(); /** * Generate the validity object. 1.12 +37 -14 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.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- CachingProcessingPipeline.java 27 May 2002 10:06:40 -0000 1.11 +++ CachingProcessingPipeline.java 27 May 2002 12:06:13 -0000 1.12 @@ -89,7 +89,7 @@ * * @since @next-version@ * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a> - * @version CVS $Id: CachingProcessingPipeline.java,v 1.11 2002/05/27 10:06:40 cziegeler Exp $ + * @version CVS $Id: CachingProcessingPipeline.java,v 1.12 2002/05/27 12:06:13 cziegeler Exp $ */ public class CachingProcessingPipeline extends AbstractProcessingPipeline @@ -279,22 +279,27 @@ // is the generator cacheable? long key = 0; + String stringKey = null; boolean generatorIsCacheableProcessingComponent = false; boolean serializerIsCacheableProcessingComponent = false; boolean[] transformerIsCacheableProcessingComponent = new boolean[this.transformers.size()]; if (this.generator instanceof CacheableProcessingComponent) { - key = ((CacheableProcessingComponent)this.generator).generateKey(); + stringKey = ((CacheableProcessingComponent)this.generator).generateKey(); generatorIsCacheableProcessingComponent = true; } else if (this.generator instanceof Cacheable) { key = ((Cacheable)this.generator).generateKey(); } - if (key != 0) { + if (key != 0 || stringKey != null) { this.pipelineCacheKey = new StringBuffer(); this.pipelineCacheKey.append("PCK:CCK:1-") - .append(this.generatorRole).append('-') - .append(key); + .append(this.generatorRole).append('-'); + if (key != 0) { + this.pipelineCacheKey.append(key); + } else { + this.pipelineCacheKey.append( stringKey ); + } // now testing transformers final int transformerSize = this.transformers.size(); @@ -305,17 +310,22 @@ final Transformer trans = (Transformer)this.transformers.get(this.firstNotCacheableTransformerIndex); key = 0; + stringKey = null; if (trans instanceof CacheableProcessingComponent) { - key = ((CacheableProcessingComponent)trans).generateKey(); + stringKey = ((CacheableProcessingComponent)trans).generateKey(); transformerIsCacheableProcessingComponent[this.firstNotCacheableTransformerIndex] = true; } else if (trans instanceof Cacheable) { key = ((Cacheable)trans).generateKey(); } - if (key != 0) { + if (key != 0 || stringKey != null) { this.pipelineCacheKey.append("CCK:2-") .append((String)this.transformerRoles.get(this.firstNotCacheableTransformerIndex)) - .append('-') - .append(key); + .append('-'); + if (key != 0) { + this.pipelineCacheKey.append(key); + } else { + this.pipelineCacheKey.append( stringKey ); + } this.firstNotCacheableTransformerIndex++; } else { continueTest = false; @@ -325,8 +335,10 @@ if (this.firstNotCacheableTransformerIndex == transformerSize && this.serializer == this.lastConsumer) { + key = 0; + stringKey = null; if (this.serializer instanceof CacheableProcessingComponent) { - key = ((CacheableProcessingComponent)this.serializer).generateKey(); + stringKey = ((CacheableProcessingComponent)this.serializer).generateKey(); serializerIsCacheableProcessingComponent = true; } else if (this.serializer instanceof Cacheable) { key = ((Cacheable)this.serializer).generateKey(); @@ -337,6 +349,12 @@ .append('-') .append(key); this.completeResponseIsCached = true; + } else if (stringKey != null) { + this.pipelineCacheKey.append("CCK:3-") + .append(this.serializerRole) + .append('-') + .append(stringKey); + this.completeResponseIsCached = true; } } } @@ -569,20 +587,25 @@ // test if reader is cacheable long readerKey = 0; + String readerStringKey = null; boolean isCacheableProcessingComponent = false; if (this.reader instanceof CacheableProcessingComponent) { - readerKey = ((CacheableProcessingComponent)this.reader).generateKey(); + readerStringKey = ((CacheableProcessingComponent)this.reader).generateKey(); isCacheableProcessingComponent = true; } else if (this.reader instanceof Cacheable) { readerKey = ((Cacheable)this.reader).generateKey(); } - if ( readerKey != 0) { + if ( readerKey != 0 || readerStringKey != null) { // response is cacheable, build the key pcKey = new StringBuffer(); pcKey.append("PCK:CCK:4-").append(this.readerRole) - .append('-') - .append(readerKey); + .append('-'); + if (readerKey != 0) { + pcKey.append(readerKey); + } else { + pcKey.append(readerStringKey); + } // now we have the key to get the cached object CachedResponse cachedObject = (CachedResponse)this.cache.get(pcKey.toString());
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]