Author: unico Date: Thu Nov 18 09:46:32 2004 New Revision: 76260 Modified: cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/source/impl/CachingSource.java Log: create cached response in the same way irrespective of initialization method
Modified: cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/source/impl/CachingSource.java ============================================================================== --- cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/source/impl/CachingSource.java (original) +++ cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/components/source/impl/CachingSource.java Thu Nov 18 09:46:32 2004 @@ -209,14 +209,7 @@ boolean storeResponse = false; CachedSourceResponse response = this.response; if (response == null) { - SourceValidity[] validities; - if (this.cache instanceof EventAware) { - validities = new SourceValidity[] { new EventValidity(new NamedEvent(this.source.getURI())) }; - } - else { - validities = new SourceValidity[] { new ExpiresValidity(getExpiration()), source.getValidity() }; - } - response = new CachedSourceResponse(validities); + response = new CachedSourceResponse(getCacheValidities()); storeResponse = true; } if (response.getExtra() == null) { @@ -244,7 +237,7 @@ /* delay caching the response until we have a valid new one */ CachedSourceResponse response = this.response; if (response == null) { - response = new CachedSourceResponse(new SourceValidity[] { new ExpiresValidity(getExpiration()), source.getValidity()}); + response = new CachedSourceResponse(getCacheValidities()); storeResponse = true; } if (response.getBinaryResponse() == null) { @@ -279,7 +272,7 @@ /* delay caching the response until we have a valid new one */ CachedSourceResponse response = this.response; if (response == null) { - response = new CachedSourceResponse(new SourceValidity[] { new ExpiresValidity(getExpiration()), source.getValidity() }); + response = new CachedSourceResponse(getCacheValidities()); storeResponse = true; } if (response.getXMLResponse() == null || refresh) { @@ -621,7 +614,19 @@ } return valid; } - + + private SourceValidity[] getCacheValidities() { + if (this.cache instanceof EventAware) { + // use event caching strategy, the associated event is the source uri + return new SourceValidity[] { new EventValidity(new NamedEvent(this.source.getURI())) }; + } + else { + // we need to store both the cache expiration and the original source validity + // the former is to determine whether to recheck the latter (see checkValidity) + return new SourceValidity[] { new ExpiresValidity(getExpiration()), source.getValidity() }; + } + } + private static boolean isValid(SourceValidity oldValidity, SourceValidity newValidity) { return (oldValidity.isValid() == SourceValidity.VALID || (oldValidity.isValid() == SourceValidity.UNKNOWN &&