svn commit: r620049 - in /lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation: UrlToUuidTransformer.java UuidToUrlTransformer.java
[email protected] Sat, 09 Feb 2008 00:14:20 -0000
Newsgroups
gmane.comp.cms.lenya.cvs
Message-ID
<[email protected] >
Author: andreas
Date: Fri Feb 8 16:14:18 2008
New Revision: 620049
URL: http://svn.apache.org/viewvc?rev=620049&view=rev
Log:
Made url2uuid and uuid2url transformers cacheable.
Modified:
lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UrlToUuidTransformer.java
lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java
Modified: lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UrlToUuidTransformer.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UrlToUuidTransformer.java?rev=620049&r1=620048&r2=620049&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UrlToUuidTransformer.java (original)
+++ lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UrlToUuidTransformer.java Fri Feb 8 16:14:18 2008
@@ -18,13 +18,17 @@
package org.apache.lenya.cms.cocoon.transformation;
import java.io.IOException;
+import java.io.Serializable;
import java.util.Map;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.caching.CacheableProcessingComponent;
import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.SourceResolver;
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceValidity;
import org.apache.lenya.cms.linking.LinkResolver;
import org.apache.lenya.cms.linking.LinkRewriter;
import org.apache.lenya.cms.linking.UrlToUuidRewriter;
@@ -47,10 +51,13 @@
* This transformer is applied to an XHMTL document. It processes all URL-based
* links to links following the {@link LinkResolver} syntax.
* </p>
+ * @see UrlToUuidRewriter
*/
-public class UrlToUuidTransformer extends AbstractLinkTransformer {
+public class UrlToUuidTransformer extends AbstractLinkTransformer implements CacheableProcessingComponent {
private LinkRewriter rewriter;
+ private String cacheKey;
+ private SourceValidity validity;
/**
* @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver,
@@ -61,6 +68,7 @@
Parameters _parameters) throws ProcessingException, SAXException, IOException {
super.setup(_resolver, _objectModel, _source, _parameters);
+ Source source = null;
Request _request = ObjectModelHelper.getRequest(_objectModel);
try {
Session session = RepositoryUtil.getSession(this.manager, _request);
@@ -70,13 +78,34 @@
Publication pub = factory.getPublication(info.getPublicationId());
Area area = pub.getArea(info.getArea());
this.rewriter = new UrlToUuidRewriter(area);
+ this.cacheKey = pub.getId() + ":" + area.getName();
+ source = resolver.resolveURI(area.getSite().getRepositoryNode().getSourceURI());
+ this.validity = source.getValidity();
} catch (final Exception e1) {
throw new ProcessingException(e1);
+ } finally {
+ if (source != null) {
+ resolver.release(source);
+ }
}
}
protected LinkRewriter getLinkRewriter() {
return this.rewriter;
+ }
+
+ public Serializable getKey() {
+ if (this.cacheKey == null) {
+ throw new IllegalStateException("setup() was not called.");
+ }
+ return this.cacheKey;
+ }
+
+ public SourceValidity getValidity() {
+ if (this.validity == null) {
+ throw new IllegalStateException("setup() was not called.");
+ }
+ return this.validity;
}
}
Modified: lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java?rev=620049&r1=620048&r2=620049&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java (original)
+++ lenya/trunk/src/modules-core/linking/java/src/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java Fri Feb 8 16:14:18 2008
@@ -18,6 +18,7 @@
package org.apache.lenya.cms.cocoon.transformation;
import java.io.IOException;
+import java.io.Serializable;
import java.net.MalformedURLException;
import java.util.Map;
import java.util.StringTokenizer;
@@ -25,14 +26,19 @@
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.caching.CacheableProcessingComponent;
import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.SourceResolver;
+import org.apache.excalibur.source.Source;
+import org.apache.excalibur.source.SourceValidity;
import org.apache.lenya.ac.AccessControlException;
import org.apache.lenya.cms.linking.Link;
import org.apache.lenya.cms.linking.LinkResolver;
import org.apache.lenya.cms.linking.LinkRewriter;
import org.apache.lenya.cms.linking.LinkTarget;
+import org.apache.lenya.cms.linking.UrlToUuidRewriter;
+import org.apache.lenya.cms.publication.Area;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.DocumentFactory;
import org.apache.lenya.cms.publication.DocumentUtil;
@@ -77,7 +83,7 @@
*
* $Id: LinkRewritingTransformer.java,v 1.7 2004/03/16 11:12:16 gregor
*/
-public class UuidToUrlTransformer extends AbstractLinkTransformer implements Disposable {
+public class UuidToUrlTransformer extends AbstractLinkTransformer implements Disposable, CacheableProcessingComponent {
protected static final String BROKEN_ATTRIB = "class";
protected static final String BROKEN_VALUE = "brokenlink";
@@ -88,17 +94,20 @@
private DocumentFactory factory;
private LinkResolver linkResolver;
private Document currentDoc;
+ private String cacheKey;
+ private SourceValidity validity;
/**
* @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver,
* java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
*/
- public void setup(SourceResolver _resolver, Map _objectModel, String _source,
+ public void setup(SourceResolver resolver, Map _objectModel, String _source,
Parameters _parameters) throws ProcessingException, SAXException, IOException {
- super.setup(_resolver, _objectModel, _source, _parameters);
+ super.setup(resolver, _objectModel, _source, _parameters);
Request _request = ObjectModelHelper.getRequest(_objectModel);
+ Source source = null;
try {
Session session = RepositoryUtil.getSession(this.manager, _request);
this.factory = DocumentUtil.createDocumentFactory(this.manager, session);
@@ -107,8 +116,19 @@
this.currentDoc = this.factory.getFromURL(this.currentUrl);
}
this.linkResolver = (LinkResolver) this.manager.lookup(LinkResolver.ROLE);
+
+ URLInformation info = new URLInformation(this.currentUrl);
+ Publication pub = factory.getPublication(info.getPublicationId());
+ Area area = pub.getArea(info.getArea());
+ this.cacheKey = pub.getId() + ":" + area.getName();
+ source = resolver.resolveURI(area.getSite().getRepositoryNode().getSourceURI());
+ this.validity = source.getValidity();
} catch (final Exception e) {
throw new ProcessingException(e);
+ } finally {
+ if (source != null) {
+ resolver.release(source);
+ }
}
}
@@ -310,4 +330,19 @@
protected LinkRewriter getLinkRewriter() {
return null;
}
+
+ public Serializable getKey() {
+ if (this.cacheKey == null) {
+ throw new IllegalStateException("setup() was not called.");
+ }
+ return this.cacheKey;
+ }
+
+ public SourceValidity getValidity() {
+ if (this.validity == null) {
+ throw new IllegalStateException("setup() was not called.");
+ }
+ return this.validity;
+ }
+
}