You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by jb...@apache.org on 2006/03/29 10:05:35 UTC
svn commit: r389703 - in
/cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl:
CachingSource.java CachingSourceFactory.java
InspectableTraversableCachingSource.java TraversableCachingSource.java
Author: jbq
Date: Wed Mar 29 00:05:32 2006
New Revision: 389703
URL: http://svn.apache.org/viewcvs?rev=389703&view=rev
Log:
Reported by Jens Maukisch: Replace remainingParameters.getQueryString() with
remainingParameters.getEncodedQueryString()
Also adding a new configuration parameter « event-aware » to remove a hard-coded
hack: if (validities.length == 2)
I had this patch since ages but waited for someone to complain ;)
Modified:
cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/CachingSource.java
cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/CachingSourceFactory.java
cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/InspectableTraversableCachingSource.java
cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/TraversableCachingSource.java
Modified: cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/CachingSource.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/CachingSource.java?rev=389703&r1=389702&r2=389703&view=diff
==============================================================================
--- cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/CachingSource.java (original)
+++ cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/CachingSource.java Wed Mar 29 00:05:32 2006
@@ -114,6 +114,8 @@
/** asynchronic refresh strategy ? */
final protected boolean async;
+ final protected boolean eventAware;
+
/**
* Construct a new object.
*/
@@ -122,15 +124,17 @@
final Source source,
final int expires,
final String cacheName,
- final boolean async) {
+ final boolean async,
+ final boolean eventAware) {
this.protocol = protocol;
this.uri = uri;
this.source = source;
this.expires = expires;
this.cacheName = cacheName;
this.async = async;
-
- String key = "source:" + source.getURI();
+ this.eventAware = eventAware;
+
+ String key = "source:" + getSourceURI();
if (cacheName != null) {
key += ":" + cacheName;
}
@@ -550,11 +554,11 @@
initMeta(meta, source);
return meta;
}
-
+
protected SourceMeta createMeta() {
return new SourceMeta();
}
-
+
protected void initMeta(SourceMeta meta, Source source) throws IOException {
final long lastModified = source.getLastModified();
if (lastModified > 0) {
@@ -568,10 +572,10 @@
private boolean checkValidity() {
if (this.response == null) return false;
-
+
final SourceValidity[] validities = this.response.getValidityObjects();
boolean valid = true;
- if (validities.length == 2) {
+ if (! eventAware) {
final ExpiresValidity expiresValidity = (ExpiresValidity) validities[0];
final SourceValidity sourceValidity = validities[1];
@@ -598,8 +602,7 @@
getLogger().debug("Cached response of source " + getSourceURI() + " is NOT expired.");
}
}
- }
- else {
+ } else {
// assert(validities.length == 1 && validities[0] instanceof EventValidity)
if (getLogger().isDebugEnabled()) {
getLogger().debug("Cached response of source does not expire");
Modified: cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/CachingSourceFactory.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/CachingSourceFactory.java?rev=389703&r1=389702&r2=389703&view=diff
==============================================================================
--- cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/CachingSourceFactory.java (original)
+++ cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/CachingSourceFactory.java Wed Mar 29 00:05:32 2006
@@ -99,6 +99,13 @@
* <td><code>false</code></td>
* </tr>
* <tr>
+ * <th>event-aware (boolean)</th>
+ * <td>Whether to use event-based cache invalidation.</td>
+ * <td>opt</td>
+ * <td>String</td>
+ * <td><code>false</code></td>
+ * </tr>
+ * <tr>
* <th>default-expires (int)</th>
* <td>Default expiration value for if it is not specified on the Source itself.</td>
* <td>opt</td>
@@ -117,6 +124,7 @@
// ---------------------------------------------------- Constants
public static final String ASYNC_PARAM = "async";
+ public static final String EVENT_AWARE_PARAM = "event-aware";
public static final String FAILSAFE_PARAM = "failsafe";
public static final String CACHE_ROLE_PARAM = "cache-role";
public static final String REFRESHER_ROLE_PARAM = "refresher-role";
@@ -130,6 +138,9 @@
/** Asynchronous ? */
private boolean async;
+ /** Event aware ? */
+ private boolean eventAware;
+
/** The role of the cache */
private String cacheRole;
@@ -172,7 +183,10 @@
// 'async' parameter
this.async = parameters.getParameterAsBoolean(ASYNC_PARAM, false);
-
+
+ // 'event-aware' parameter
+ this.eventAware = parameters.getParameterAsBoolean(EVENT_AWARE_PARAM, false);
+
// 'cache-role' parameter
this.cacheRole = parameters.getParameter(CACHE_ROLE_PARAM, Cache.ROLE);
if (this.getLogger().isDebugEnabled()) {
@@ -288,7 +302,7 @@
remainingParameters.removeParameter(name);
}
}
- queryString = remainingParameters.getQueryString();
+ queryString = remainingParameters.getEncodedQueryString();
if (queryString != null) {
uri += "?" + queryString;
}
@@ -319,10 +333,10 @@
this.cacheRole,
params);
}
-
+
return source;
}
-
+
/**
* Factory method for creating a new CachingSource. Delegates to createCachingSource()
*/
@@ -361,14 +375,16 @@
(InspectableSource) wrappedSource,
expires,
cacheName,
- async);
+ async,
+ eventAware);
} else {
source = new TraversableCachingSource(scheme,
uri,
(TraversableSource) wrappedSource,
expires,
cacheName,
- async);
+ async,
+ eventAware);
}
} else {
source = new CachingSource(scheme,
@@ -376,7 +392,8 @@
wrappedSource,
expires,
cacheName,
- async);
+ async,
+ eventAware);
}
// set the required components directly for speed
@@ -394,7 +411,7 @@
}
return source;
}
-
+
/**
* Release a {@link Source} object.
*/
Modified: cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/InspectableTraversableCachingSource.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/InspectableTraversableCachingSource.java?rev=389703&r1=389702&r2=389703&view=diff
==============================================================================
--- cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/InspectableTraversableCachingSource.java (original)
+++ cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/InspectableTraversableCachingSource.java Wed Mar 29 00:05:32 2006
@@ -40,8 +40,9 @@
InspectableSource source,
int expires,
String cacheName,
- boolean async) {
- super(protocol, uri, (TraversableSource) source, expires, cacheName, async);
+ boolean async,
+ boolean eventAware) {
+ super(protocol, uri, (TraversableSource) source, expires, cacheName, async, eventAware);
this.isource = source;
}
@@ -136,7 +137,8 @@
(InspectableSource) wrapped,
super.expires,
super.cacheName,
- super.async);
+ super.async,
+ super.eventAware);
}
protected static class InspectableSourceMeta extends TraversableSourceMeta {
Modified: cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/TraversableCachingSource.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/TraversableCachingSource.java?rev=389703&r1=389702&r2=389703&view=diff
==============================================================================
--- cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/TraversableCachingSource.java (original)
+++ cocoon/blocks/scratchpad/trunk/java/org/apache/cocoon/components/source/impl/TraversableCachingSource.java Wed Mar 29 00:05:32 2006
@@ -37,8 +37,9 @@
TraversableSource source,
int expires,
String cacheName,
- boolean async) {
- super(protocol, uri, source, expires, cacheName, async);
+ boolean async,
+ boolean eventAware) {
+ super(protocol, uri, source, expires, cacheName, async, eventAware);
this.tsource = source;
}
@@ -163,7 +164,8 @@
(TraversableSource) wrapped,
super.expires,
super.cacheName,
- super.async);
+ super.async,
+ super.eventAware);
}
protected void initializeSource(TraversableCachingSource source) throws SourceException {