Return-Path: Delivered-To: apmail-cocoon-cvs-archive@cocoon.apache.org Received: (qmail 82747 invoked by uid 500); 7 Aug 2003 07:06:40 -0000 Mailing-List: contact cvs-help@cocoon.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@cocoon.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list cvs@cocoon.apache.org Received: (qmail 82736 invoked by uid 500); 7 Aug 2003 07:06:40 -0000 Delivered-To: apmail-cocoon-2.0-cvs@apache.org Received: (qmail 82732 invoked from network); 7 Aug 2003 07:06:39 -0000 Received: from unknown (HELO minotaur.apache.org) (209.237.227.194) by daedalus.apache.org with SMTP; 7 Aug 2003 07:06:39 -0000 Received: (qmail 36667 invoked by uid 1260); 7 Aug 2003 07:07:02 -0000 Date: 7 Aug 2003 07:07:02 -0000 Message-ID: <20030807070702.36666.qmail@minotaur.apache.org> From: cziegeler@apache.org To: cocoon-2.0-cvs@apache.org Subject: cvs commit: cocoon-2.0/src/java/org/apache/cocoon/components/source SitemapSource.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N 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) {