Author: ilgrosso
Date: Thu Jun 7 15:26:20 2012
New Revision: 1347679
URL: http://svn.apache.org/viewvc?rev=1347679&view=rev
Log:
[COCOON3-102] Using CompoundCacheKey with all URLs to be xincluded
Modified:
cocoon/cocoon3/trunk/cocoon-sax/src/main/java/org/apache/cocoon/sax/component/XIncludeTransformer.java
Modified: cocoon/cocoon3/trunk/cocoon-sax/src/main/java/org/apache/cocoon/sax/component/XIncludeTransformer.java
URL: http://svn.apache.org/viewvc/cocoon/cocoon3/trunk/cocoon-sax/src/main/java/org/apache/cocoon/sax/component/XIncludeTransformer.java?rev=1347679&r1=1347678&r2=1347679&view=diff
==============================================================================
--- cocoon/cocoon3/trunk/cocoon-sax/src/main/java/org/apache/cocoon/sax/component/XIncludeTransformer.java (original)
+++ cocoon/cocoon3/trunk/cocoon-sax/src/main/java/org/apache/cocoon/sax/component/XIncludeTransformer.java Thu Jun 7 15:26:20 2012
@@ -26,11 +26,18 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
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.ProcessingException;
+import org.apache.cocoon.pipeline.caching.CacheKey;
+import org.apache.cocoon.pipeline.caching.CompoundCacheKey;
+import org.apache.cocoon.pipeline.caching.TimestampCacheKey;
+import org.apache.cocoon.pipeline.component.CachingPipelineComponent;
import org.apache.cocoon.sax.AbstractSAXTransformer;
import org.apache.cocoon.sax.SAXConsumer;
+import org.apache.cocoon.sax.util.URLManipulationUtils;
import org.apache.cocoon.sax.util.XMLUtils;
import org.apache.cocoon.sax.xpointer.ParseException;
import org.apache.cocoon.sax.xpointer.XPointer;
@@ -45,7 +52,7 @@ import org.xml.sax.SAXException;
/**
* $Id$
*/
-public final class XIncludeTransformer extends AbstractSAXTransformer implements SAXConsumer {
+public final class XIncludeTransformer extends AbstractSAXTransformer implements CachingPipelineComponent {
private static final String XINCLUDE_NAMESPACE_URI = "http://www.w3.org/2001/XInclude";
@@ -125,6 +132,11 @@ public final class XIncludeTransformer e
*/
private final Map<String, String> namespaces = new HashMap<String, String>();
+ /**
+ * Keep the set of URLs for <xi:include>.
+ */
+ private final Set<URL> xincludeURLs = new HashSet<URL>();
+
public XIncludeTransformer() {
// default empty constructor - used in the sitemap
}
@@ -140,6 +152,7 @@ public final class XIncludeTransformer e
@Override
public void setConfiguration(final Map<String, ? extends Object> configuration) {
this.setBaseUrl((URL) configuration.get(BASE_URL));
+ this.xincludeURLs.clear();
}
/**
@@ -300,6 +313,7 @@ public final class XIncludeTransformer e
"XIncludeTransformer: encountered empty href (= href pointing to the current document).");
}
URL source = this.createSource(href);
+ this.xincludeURLs.add(source);
URLConnection urlConnection = null;
try {
@@ -630,4 +644,20 @@ public final class XIncludeTransformer e
}
}
}
+
+ @Override
+ public CacheKey constructCacheKey() {
+ CompoundCacheKey cacheKey = new CompoundCacheKey();
+
+ if (this.baseUrl != null) {
+ cacheKey.addCacheKey(new TimestampCacheKey(this.baseUrl,
+ URLManipulationUtils.getLastModified(this.baseUrl)));
+ }
+ for (URL xincludeURL : this.xincludeURLs) {
+ cacheKey.addCacheKey(new TimestampCacheKey(xincludeURL,
+ URLManipulationUtils.getLastModified(xincludeURL)));
+ }
+
+ return cacheKey;
+ }
}
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.