unico       2003/10/28 05:39:36

  Modified:    src/blocks/eventcache/java/org/apache/cocoon/caching/impl
                        EventAwareCacheImpl.java
               
src/blocks/repository/java/org/apache/cocoon/components/source/impl
                        MultiSourceValidity.java
  Log:
  Make EventAwareCacheImpl work with MultiSourceValidity. 
  Since EventAwareCacheImpl was only aware of AggregatedValidity 
  components working with MultiSourceValidity such as *TraversableGenerator
  could not be used to take advantage of the event cache mechanism. By 
  having MultiSourceValidity extend AbstractAggregatedValidity and making event 
cache
  aware of the more general AbstractAggregatedValidity this issue has now been 
solved
  
  Revision  Changes    Path
  1.7       +5 -5      
cocoon-2.1/src/blocks/eventcache/java/org/apache/cocoon/caching/impl/EventAwareCacheImpl.java
  
  Index: EventAwareCacheImpl.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/blocks/eventcache/java/org/apache/cocoon/caching/impl/EventAwareCacheImpl.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- EventAwareCacheImpl.java  2 Oct 2003 04:21:17 -0000       1.6
  +++ EventAwareCacheImpl.java  28 Oct 2003 13:39:36 -0000      1.7
  @@ -59,7 +59,7 @@
   import org.apache.cocoon.caching.validity.Event;
   import org.apache.cocoon.caching.validity.EventValidity;
   import org.apache.excalibur.source.SourceValidity;
  -import org.apache.excalibur.source.impl.validity.AggregatedValidity;
  +import org.apache.excalibur.source.impl.validity.AbstractAggregatedValidity;
   
   /**
    * This implementation holds all mappings between Events and 
PipelineCacheKeys 
  @@ -202,15 +202,15 @@
        }
   
       private void examineValidity(SourceValidity val, Serializable key) {
  -        if (val instanceof AggregatedValidity) {
  -            handleAggregatedValidity((AggregatedValidity)val, key);
  +        if (val instanceof AbstractAggregatedValidity) {
  +            handleAggregatedValidity((AbstractAggregatedValidity)val, key);
           } else if (val instanceof EventValidity) {
               handleEventValidity((EventValidity)val, key);
           }
       }
   
       private void handleAggregatedValidity(
  -                                    AggregatedValidity val,
  +                                    AbstractAggregatedValidity val,
                                       Serializable key) {
           // AggregatedValidity must be investigated further.
            Iterator it = val.getValidities().iterator();
  
  
  
  1.2       +14 -12    
cocoon-2.1/src/blocks/repository/java/org/apache/cocoon/components/source/impl/MultiSourceValidity.java
  
  Index: MultiSourceValidity.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/blocks/repository/java/org/apache/cocoon/components/source/impl/MultiSourceValidity.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MultiSourceValidity.java  23 Oct 2003 08:52:50 -0000      1.1
  +++ MultiSourceValidity.java  28 Oct 2003 13:39:36 -0000      1.2
  @@ -57,6 +57,7 @@
   import org.apache.excalibur.source.Source;
   import org.apache.excalibur.source.SourceResolver;
   import org.apache.excalibur.source.SourceValidity;
  +import org.apache.excalibur.source.impl.validity.AbstractAggregatedValidity;
   
   /**
    * An aggregated validity for multiple sources.
  @@ -64,11 +65,11 @@
    * @author <a href="http://www.apache.org/~sylvain";>Sylvain Wallez</a>
    * @version CVS $Id$
    */
  -public class MultiSourceValidity implements SourceValidity{
  +public class MultiSourceValidity extends AbstractAggregatedValidity 
implements SourceValidity {
   
       private long expiry;
       private long delay;
  -    private List data = new ArrayList();
  +    private List uris = new ArrayList();
       private boolean isClosed = false;
       
       /** SourceResolver. Transient in order not to be serialized */
  @@ -81,15 +82,15 @@
       }
       
       public void addSource(Source src) {
  -        if (this.data != null) {
  +        if (this.uris != null) {
               SourceValidity validity = src.getValidity();
               if (validity == null) {
                   // one of the sources has no validity : this object will 
always be invalid
  -                this.data = null;
  +                this.uris = null;
               } else {
                   // Add the validity and URI to the list
  -                this.data.add(validity);
  -                this.data.add(src.getURI());
  +                super.add(validity);
  +                this.uris.add(src.getURI());
               }
           }
       }
  @@ -105,7 +106,7 @@
           }
           expiry = System.currentTimeMillis() + delay;
           
  -        if (data == null || !isClosed) {
  +        if (uris == null || !isClosed) {
               return -1;
           } else {
               return computeStatus(null);
  @@ -113,7 +114,7 @@
       }
   
       public int isValid(SourceValidity newValidity) {
  -        if (data == null || !isClosed) {
  +        if (uris == null || !isClosed) {
               return -1;
           }
           
  @@ -126,8 +127,9 @@
       }
       
       private int computeStatus(SourceResolver resolver) {
  -        for (int i = 0; i < data.size(); i+=2) {
  -            SourceValidity validity = (SourceValidity)data.get(i);
  +        List validities = super.getValidities();
  +        for (int i = 0; i < validities.size(); i++) {
  +            SourceValidity validity = (SourceValidity) validities.get(i);
               switch(validity.isValid()) {
                   case -1:
                       // invalid : stop examining
  @@ -142,7 +144,7 @@
                           return 0;
                       }
                       try {
  -                        Source newSrc = 
resolver.resolveURI((String)data.get(i+1));
  +                        Source newSrc = resolver.resolveURI((String) 
uris.get(i));
                           int value = validity.isValid(newSrc.getValidity());
                           resolver.release(newSrc);
                           if (value != 1) {
  
  
  

Reply via email to