cziegeler    2003/01/13 06:44:34

  Modified:    src/java/org/apache/cocoon/components/pipeline/impl
                        AbstractCachingProcessingPipeline.java
  Removed:     src/java/org/apache/cocoon/components/pipeline/impl
                        SourceDeferredValidity.java
  Log:
  Next step for caching
  
  Revision  Changes    Path
  1.18      +33 -2     
xml-cocoon2/src/java/org/apache/cocoon/components/pipeline/impl/AbstractCachingProcessingPipeline.java
  
  Index: AbstractCachingProcessingPipeline.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/pipeline/impl/AbstractCachingProcessingPipeline.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- AbstractCachingProcessingPipeline.java    13 Jan 2003 14:38:16 -0000      1.17
  +++ AbstractCachingProcessingPipeline.java    13 Jan 2003 14:44:34 -0000      1.18
  @@ -64,6 +64,7 @@
   import org.apache.cocoon.transformation.Transformer;
   import org.apache.excalibur.source.SourceValidity;
   import org.apache.excalibur.source.impl.validity.DeferredAggregatedValidity;
  +import org.apache.excalibur.source.impl.validity.DeferredValidity;
   
   import java.io.ByteArrayOutputStream;
   import java.io.OutputStream;
  @@ -133,6 +134,9 @@
       /** Default setting for smart caching */
       protected boolean configuredDoSmartCaching;
       
  +    /** Deferred source validities (for performance) */
  +    protected DeferredPipelineValidity[] deferredValidities = new 
DeferredPipelineValidity[8];
  +    
       /**
        * Abstract methods defined in subclasses
        */
  @@ -155,6 +159,10 @@
       public void parameterize(Parameters params) {
           super.parameterize(params);
           this.configuredDoSmartCaching = 
params.getParameterAsBoolean("smart-caching", true);
  +        // initialize array of deferred pipeline validities
  +        for(int i=0; i<this.deferredValidities.length;i++) {
  +            this.deferredValidities[i] = new DeferredPipelineValidity(this, i);
  +        }
       }
       
       /**
  @@ -774,8 +782,13 @@
           if (!this.completeResponseIsCached
                   && this.firstNotCacheableTransformerIndex == 
super.transformers.size()) {
               DeferredAggregatedValidity validity = new DeferredAggregatedValidity();
  +            final int maxObjectCache = this.deferredValidities.length;
               for(int i=0; i < this.toCacheKey.size(); i++) {
  -                validity.add(new SourceDeferredValidity(this, i));
  +                if (i < maxObjectCache) {
  +                    validity.add(this.deferredValidities[i]);
  +                } else {
  +                    validity.add(new DeferredPipelineValidity(this, i));
  +                }
               }
               return validity;
           }
  @@ -848,5 +861,23 @@
           }
           this.cache = null;
           this.manager = null;
  +    }
  +}
  +
  +final class DeferredPipelineValidity implements DeferredValidity {
  +
  +    private final AbstractCachingProcessingPipeline pipeline;
  +    private final int index;
  +    
  +    public DeferredPipelineValidity(AbstractCachingProcessingPipeline pipeline, int 
index) {
  +        this.pipeline = pipeline;
  +        this.index = index;
  +    }
  +    
  +    /**
  +     * @see org.apache.excalibur.source.impl.validity.DeferredValidity#getValidity()
  +     */
  +    public SourceValidity getValidity() {
  +        return pipeline.getValidityForInternalPipeline(this.index);
       }
   }
  
  
  

----------------------------------------------------------------------
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