cziegeler    2003/08/07 00:07:02

  Modified:    src/java/org/apache/cocoon/components/source
                        SitemapSource.java
  Log:
  Applying modified patch for bug 14348 from Marco Rolappe
  
  Revision  Changes    Path
  1.2       +41 -11    
cocoon-2.0/src/java/org/apache/cocoon/components/source/SitemapSource.java
  
  Index: SitemapSource.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.0/src/java/org/apache/cocoon/components/source/SitemapSource.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SitemapSource.java        9 Mar 2003 00:02:32 -0000       1.1
  +++ SitemapSource.java        7 Aug 2003 07:07:02 -0000       1.2
  @@ -50,6 +50,13 @@
   */
   package org.apache.cocoon.components.source;
   
  +import java.io.ByteArrayInputStream;
  +import java.io.ByteArrayOutputStream;
  +import java.io.IOException;
  +import java.io.InputStream;
  +import java.net.MalformedURLException;
  +import java.util.Map;
  +
   import org.apache.avalon.framework.component.ComponentException;
   import org.apache.avalon.framework.component.ComponentManager;
   import org.apache.cocoon.ProcessingException;
  @@ -60,11 +67,11 @@
   import org.apache.cocoon.components.pipeline.CacheableEventPipeline;
   import org.apache.cocoon.components.pipeline.EventPipeline;
   import org.apache.cocoon.components.pipeline.StreamPipeline;
  +import org.apache.cocoon.components.store.Store;
   import org.apache.cocoon.environment.Environment;
   import org.apache.cocoon.environment.ModifiableSource;
   import org.apache.cocoon.environment.Source;
   import org.apache.cocoon.environment.wrapper.EnvironmentWrapper;
  -import org.apache.cocoon.util.HashUtil;
   import org.apache.cocoon.xml.AbstractXMLConsumer;
   import org.apache.cocoon.xml.ContentHandlerWrapper;
   import org.apache.cocoon.xml.XMLConsumer;
  @@ -77,13 +84,6 @@
   import org.xml.sax.SAXException;
   import org.xml.sax.ext.LexicalHandler;
   
  -import java.io.ByteArrayInputStream;
  -import java.io.ByteArrayOutputStream;
  -import java.io.IOException;
  -import java.io.InputStream;
  -import java.util.Map;
  -import java.net.MalformedURLException;
  -
   /**
    * Description of a source which is defined by a pipeline.
    *
  @@ -303,9 +303,38 @@
                       {
                           CacheableEventPipeline cep = 
(CacheableEventPipeline)this.eventPipeline;
                           PipelineCacheKey pck = cep.generateKey(this.environment);
  -                        Map validity = null;
  +                        // patch for 14348
  +                        if (pck != null) {
  +                            final Store cache = (Store) 
this.manager.lookup(Store.TRANSIENT_CACHE);
  +                            
  +                            try {
  +                                final String cacheKey = pck.toString() + 
"/Timestamp";  
  +                                Object[] obj = (Object[])cache.get(cacheKey);
  +                                Long prevTimestamp = null;
  +                                Map  prevValidity = null;
  +                                if ( obj != null ) {
  +                                    prevTimestamp = (Long)obj[0];
  +                                    prevValidity = (Map)obj[1];
  +                                }
  +                                if (prevTimestamp != null) {
  +                                    this.lastModificationDate = 
prevTimestamp.longValue();
  +                                }
  +                                   
  +                                Map currValidity = 
cep.generateValidity(this.environment);
  +        
  +                                if (prevValidity == null || 
!currValidity.equals(prevValidity)) {
  +                                    // validity changed, update cached validity, 
timestamp and last modified
  +                                    this.lastModificationDate = 
System.currentTimeMillis();
  +                                    obj = new Object[] {new Long 
(this.lastModificationDate), currValidity};
  +                                    cache.store(cacheKey, obj);
  +                                }
  +                            } finally {
  +                                this.manager.release(cache);
  +                            }
  +                        }
  +                        /*
                           if (pck != null) {
  -                            validity = cep.generateValidity(this.environment);
  +                            Map validity = cep.generateValidity(this.environment);
                               if (validity != null) {
                                   // the event pipeline is cacheable
                                   // now calculate a last modification date
  @@ -313,6 +342,7 @@
                                   this.lastModificationDate = HashUtil.hash(hashKey);
                               }
                           }
  +                        */
                       }
                  } else {
                       if (redirectURL.indexOf(":") == -1) {
  
  
  

Reply via email to