cziegeler    01/04/12 03:06:41

  Modified:    src/org/apache/cocoon/components/pipeline Tag: xml-cocoon2
                        CachingEventPipeline.java
  Log:
  Fixed bug when Cacheable and non cacheable transformers are mixed
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.2   +15 -13    
xml-cocoon/src/org/apache/cocoon/components/pipeline/Attic/CachingEventPipeline.java
  
  Index: CachingEventPipeline.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon/src/org/apache/cocoon/components/pipeline/Attic/CachingEventPipeline.java,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- CachingEventPipeline.java 2001/04/11 10:52:33     1.1.2.1
  +++ CachingEventPipeline.java 2001/04/12 10:06:39     1.1.2.2
  @@ -51,7 +51,7 @@
    * The CachingEventPipeline
    *
    * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
  - * @version CVS $Revision: 1.1.2.1 $ $Date: 2001/04/11 10:52:33 $
  + * @version CVS $Revision: 1.1.2.2 $ $Date: 2001/04/12 10:06:39 $
    */
   public class CachingEventPipeline extends AbstractEventPipeline {
   
  @@ -112,23 +112,24 @@
                       pipelineCacheKey.addKey(cck);
   
                       // now testing transformers
  -                    Iterator itt = this.transformers.iterator();
                       Transformer trans;
                       ComponentCacheKey transCacheKey;
  -                    int index = 0;
  +                    int transformerIndex = 0;
  +                    int transformerSize = this.transformers.size();
                       long transKey;
                       CacheValidity transValidity;
                       boolean testTrans = true;
   
  -                    while (itt.hasNext() == true && testTrans == true) {
  -                        trans = (Transformer)itt.next();
  +                    while (transformerIndex < transformerSize
  +                           && testTrans == true) {
  +                        trans = 
(Transformer)this.transformers.get(transformerIndex);
                           if (trans instanceof Cacheable) {
                               transKey = ((Cacheable)trans).generateKey();
                               transValidity = 
((Cacheable)trans).generateValidity();
                               if (transKey != 0 && transValidity != null) {
                                   transCacheKey = new ComponentCacheKey(
                                        
ComponentCacheKey.ComponentType_Transformer,
  -                                     
(String)this.transformerRoles.get(index),
  +                                     
(String)this.transformerRoles.get(transformerIndex),
                                        transKey);
                                   pipelineCacheKey.addKey(transCacheKey);
                                   validityObjects.put(transCacheKey, 
transValidity);
  @@ -138,12 +139,13 @@
                           } else {
                               testTrans = false;
                           }
  -                        index++;
  +                        transformerIndex++;
                       }
   
                       // now we have the key to get the cached object
                       CachedObject cachedObject = 
(CachedObject)saxStore.get(pipelineCacheKey);
                       if (cachedObject != null) {
  +                        getLogger().debug("Found cached content.");
                           Iterator validityIterator = 
validityObjects.keySet().iterator();
                           ComponentCacheKey validityKey;
                           boolean valid = true;
  @@ -153,13 +155,11 @@
                           }
                           if (valid == true) {
   
  +                            getLogger().debug("Using valid cached content.");
                               // get all transformers which are not cacheable
  -                            itt = this.transformers.iterator();
  -                            while (itt.hasNext() == true) {
  -                                trans = (Transformer)itt.next();
  -                                if (trans instanceof Cacheable == false) {
  -                                    this.notCacheableTransformers.add(trans);
  -                                }
  +                            while (transformerIndex < transformerSize) {
  +                                
this.notCacheableTransformers.add(this.transformers.get(transformerIndex));
  +                                transformerIndex++;
                               }
   
                               XMLDeserializer deserializer = null;
  @@ -182,12 +182,14 @@
                                       
this.manager.release((Component)deserializer);
                               }
                           } else {
  +                            getLogger().debug("Cached content is invalid.");
                               // remove invalid cached object
                               saxStore.remove(pipelineCacheKey);
                               cachedObject = null;
                           }
                       }
                       if (cachedObject == null) {
  +                        getLogger().debug("Caching content for further 
request.");
                           xmlSerializer = 
(XMLSerializer)this.manager.lookup(Roles.XML_SERIALIZER);
                       }
                   }
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to