Author: ilgrosso
Date: Thu Jun 28 15:50:53 2012
New Revision: 1355053
URL: http://svn.apache.org/viewvc?rev=1355053&view=rev
Log:
Adding toString() and a way to escape sitemap-only parameters for caching
Modified:
cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/ParameterCacheKey.java
Modified: cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/ParameterCacheKey.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/ParameterCacheKey.java?rev=1355053&r1=1355052&r2=1355053&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/ParameterCacheKey.java (original)
+++ cocoon/cocoon3/trunk/cocoon-pipeline/src/main/java/org/apache/cocoon/pipeline/caching/ParameterCacheKey.java Thu Jun 28 15:50:53 2012
@@ -16,10 +16,13 @@
*/
package org.apache.cocoon.pipeline.caching;
+import java.util.Arrays;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
-
+import java.util.Set;
+import org.apache.cocoon.pipeline.util.StringRepresentation;
import org.apache.cocoon.util.murmurhash.MurmurHashCodeBuilder;
/**
@@ -28,6 +31,18 @@ import org.apache.cocoon.util.murmurhash
public class ParameterCacheKey extends AbstractCacheKey {
private static final long serialVersionUID = 1L;
+
+ /**
+ * Set of parameter names that must not be considered for caching when in Sitemap context.
+ */
+ private static final Set<String> SITEMAP_PARAM_NON_CACHABLE_NAMES = new HashSet<String>(Arrays.asList(new String[]{
+ "cocoon",
+ "org.apache.cocoon.configuration.Settings",
+ "javax.servlet.ServletContext",
+ "javax.servlet.http.HttpServletRequest",
+ "javax.servlet.http.HttpServletResponse"
+ }));
+
private final Map<String, String> parameters;
public ParameterCacheKey() {
@@ -60,17 +75,43 @@ public class ParameterCacheKey extends A
this.parameters.put(name, Integer.toString(value));
}
- public void addParameter(String name, Map<?, ?> value) {
+ public final void addParameter(String name, Map<?, ?> value) {
for (Entry<?, ?> object : value.entrySet()) {
this.parameters.put(name + "_" + object.getKey().toString(), object.getValue().toString());
}
}
- public void addParameter(String name, String value) {
+ public final void addParameter(String name, String value) {
this.parameters.put(name, value);
}
/**
+ * Add a parameter to this cache key, only when name is safe in Sitemap context.
+ *
+ * @param name parameter name
+ * @param value parameter value
+ */
+ public void addSitemapParameter(String name, Object value) {
+ if (!SITEMAP_PARAM_NON_CACHABLE_NAMES.contains(name)) {
+ this.addParameter(name, value.toString());
+ }
+ }
+
+ /**
+ * Set this cache key parameters, only when names that are safe in Sitemap context.
+ *
+ * @param sitemapParameters
+ * @return this instance, for chained invokation
+ */
+ public ParameterCacheKey setSitemapParameters(Map<String, Object> sitemapParameters) {
+ this.parameters.clear();
+ for (Entry<String, Object> entry : sitemapParameters.entrySet()) {
+ this.addSitemapParameter(entry.getKey(), entry.getValue());
+ }
+ return this;
+ }
+
+ /**
* {@inheritDoc}
*
* @see java.lang.Object#equals(java.lang.Object)
@@ -90,6 +131,7 @@ public class ParameterCacheKey extends A
*
* @see org.apache.cocoon.pipeline.caching.CacheKey#getLastModified()
*/
+ @Override
public long getLastModified() {
return -1;
}
@@ -113,7 +155,13 @@ public class ParameterCacheKey extends A
*
* @see org.apache.cocoon.pipeline.caching.CacheKey#isValid(org.apache.cocoon.pipeline.caching.CacheKey)
*/
+ @Override
public boolean isValid(CacheKey cacheKey) {
return this.equals(cacheKey);
}
+
+ @Override
+ public String toString() {
+ return StringRepresentation.buildString(this, "parameters=" + this.parameters);
+ }
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.