- solve cyclic dependencie
- solve urlinformation and servlethelper changes
git-svn-id: https://svn.apache.org/repos/asf/lenya/trunk@1038626 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/org.apache.lenya.core.linking/pom.xml b/org.apache.lenya.core.linking/pom.xml
index 30a13d1..83f29c0 100644
--- a/org.apache.lenya.core.linking/pom.xml
+++ b/org.apache.lenya.core.linking/pom.xml
@@ -31,5 +31,25 @@
<groupId>org.apache.lenya</groupId>
<artifactId>lenya-core-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.lenya</groupId>
+ <artifactId>lenya-core-impl</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.lenya</groupId>
+ <artifactId>lenya-core-publication-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.lenya</groupId>
+ <artifactId>lenya-core-document-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.lenya</groupId>
+ <artifactId>lenya-core-utils</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.lenya</groupId>
+ <artifactId>lenya-core-proxy</artifactId>
+ </dependency>
</dependencies>
</project>
diff --git a/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/UuidToUrlModule.java b/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/UuidToUrlModule.java
index 3a01d11..ce2522a 100644
--- a/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/UuidToUrlModule.java
+++ b/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/UuidToUrlModule.java
@@ -28,7 +28,8 @@
import org.apache.lenya.cms.linking.UuidToUrlRewriter;
import org.apache.lenya.cms.publication.Repository;
import org.apache.lenya.cms.publication.Session;
-import org.apache.lenya.util.ServletHelper;
+//import org.apache.lenya.util.ServletHelper;
+import org.apache.lenya.utils.ServletHelper;
/**
* Transform lenya-document: URLs to web application URLs.
@@ -44,7 +45,8 @@
Request request = ObjectModelHelper.getRequest(objectModel);
try {
Session session = this.repository.getSession(request);
- String currentUrl = ServletHelper.getWebappURI(request);
+ //String currentUrl = ServletHelper.getWebappURI(request);
+ String currentUrl = new URLInformation().getWebappUrl();
UuidToUrlRewriter rewriter = new UuidToUrlRewriter(currentUrl, linkResolver, session);
if (session.getUriHandler().isDocument(currentUrl)) {
diff --git a/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSourceFactory.java b/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSourceFactory.java
index ff23778..d4c68b7 100644
--- a/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSourceFactory.java
+++ b/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSourceFactory.java
@@ -39,9 +39,11 @@
import org.apache.lenya.cms.publication.DocumentException;
import org.apache.lenya.cms.publication.Repository;
import org.apache.lenya.cms.publication.Session;
-import org.apache.lenya.cms.publication.URLInformation;
+//import org.apache.lenya.cms.publication.URLInformation;
+import org.apache.lenya.utils.URLInformation;
import org.apache.lenya.util.Query;
-import org.apache.lenya.util.ServletHelper;
+//import org.apache.lenya.util.ServletHelper;
+import org.apache.lenya.utils.ServletHelper;
/**
* <p>
@@ -89,11 +91,12 @@
try {
Session session = this.repository.getSession(request);
- String webappUrl = ServletHelper.getWebappURI(request);
+ //String webappUrl = ServletHelper.getWebappURI(request);
+ String webappUrl = new URLInformation().getWebappUrl();
LinkTarget target;
if (session.getUriHandler().isDocument(webappUrl)) {
Document currentDoc = session.getUriHandler().getDocument(webappUrl);
- target = getLinkResolver().resolve(currentDoc, linkUri);
+ target = getLinkResolver().resolve(session, currentDoc, linkUri);
} else {
Link link = new Link(linkUri);
contextualize(link, webappUrl);
@@ -141,7 +144,8 @@
* @param webappUrl The web application URL to extract the context information from..
*/
protected void contextualize(Link link, String webappUrl) {
- URLInformation url = new URLInformation(webappUrl);
+ //URLInformation url = new URLInformation(webappUrl);
+ URLInformation url = new URLInformation();
if (link.getPubId() == null) {
link.setPubId(url.getPublicationId());
}
@@ -153,7 +157,7 @@
protected Source getFormatSource(Document doc, String format) throws DocumentException,
ServiceException, IOException {
String formatBaseUri = doc.getResourceType().getFormatURI(format);
- String formatUri = formatBaseUri + "/" + doc.getPublication().getId() + "/" + doc.getArea()
+ String formatUri = formatBaseUri + "/" + doc.getPublicationId() + "/" + doc.getArea()
+ "/" + doc.getUUID() + "/" + doc.getLanguage();
return this.sourceResolver.resolveURI(formatUri);
diff --git a/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/AbstractLinkTransformer.java b/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/AbstractLinkTransformer.java
index 7cc9ad3..81170ea 100644
--- a/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/AbstractLinkTransformer.java
+++ b/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/AbstractLinkTransformer.java
@@ -34,13 +34,14 @@
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.transformation.AbstractSAXTransformer;
-import org.apache.lenya.ac.AccessControlException;
+//import org.apache.lenya.ac.AccessControlException;
import org.apache.lenya.cms.linking.LinkRewriteAttribute;
import org.apache.lenya.cms.linking.LinkRewriteAttributes;
import org.apache.lenya.cms.linking.LinkRewriter;
import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.util.ServletHelper;
+//import org.apache.lenya.cms.publication.URLInformation;
+import org.apache.lenya.utils.URLInformation;
+import org.apache.lenya.utils.ServletHelper;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
@@ -76,8 +77,11 @@
public void setup(SourceResolver resolver, Map objectModel, String src, Parameters params)
throws ProcessingException, SAXException, IOException {
super.setup(resolver, objectModel, src, params);
- String webappUrl = getWebappUrl(params, objectModel);
- URLInformation url = new URLInformation(webappUrl);
+ /* TODO : florent : remove it when ok, change of urlinformation apî
+ * String webappUrl = getWebappUrl(params, objectModel);
+ * URLInformation url = new URLInformation(webappUrl);
+ */
+ URLInformation url = new URLInformation();
this.area = url.getArea();
}
@@ -98,7 +102,8 @@
}
} else {
Request request = ObjectModelHelper.getRequest(objectModel);
- webappUrl = ServletHelper.getWebappURI(request);
+ //webappUrl = ServletHelper.getWebappURI(request);
+ webappUrl = new URLInformation().getWebappUrl();
}
return webappUrl;
}
@@ -330,7 +335,9 @@
* @throws AccessControlException when something went wrong.
*/
protected void markBrokenLink(AttributesImpl newAttrs, String attrName, String brokenLinkUri)
- throws AccessControlException {
+ //TODO : remove this accessControlException in order to solve cyclic dependencies. See how to clean this
+ //throws AccessControlException {
+ {
if (this.brokenLinkAttribute != null) {
if (newAttrs.getIndex(this.brokenLinkAttribute) > -1) {
newAttrs.removeAttribute(newAttrs.getIndex(this.brokenLinkAttribute));
diff --git a/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/IncomingProxyTransformer.java b/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/IncomingProxyTransformer.java
index e0f21e3..335044c 100644
--- a/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/IncomingProxyTransformer.java
+++ b/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/IncomingProxyTransformer.java
@@ -29,7 +29,8 @@
import org.apache.lenya.cms.linking.LinkRewriter;
import org.apache.lenya.cms.publication.Repository;
import org.apache.lenya.cms.publication.Session;
-import org.apache.lenya.cms.publication.URLInformation;
+//import org.apache.lenya.cms.publication.URLInformation;
+import org.apache.lenya.utils.URLInformation;
import org.xml.sax.SAXException;
/**
@@ -48,8 +49,9 @@
try {
Session session = this.repository.getSession(request);
- String webappUrl = getWebappUrl(params, objectModel);
- URLInformation info = new URLInformation(webappUrl);
+ //String webappUrl = getWebappUrl(params, objectModel);
+ //URLInformation info = new URLInformation(webappUrl);
+ URLInformation info = new URLInformation();
String pubId = info.getPublicationId();
this.rewriter = new IncomingLinkRewriter(session.getPublication(pubId));
} catch (final Exception e) {
diff --git a/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/ContentLinkManager.java b/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/ContentLinkManager.java
index a31e3f6..a212167 100644
--- a/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/ContentLinkManager.java
+++ b/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/ContentLinkManager.java
@@ -98,6 +98,9 @@
return uri.startsWith(LinkResolver.SCHEME + ":");
}
+ //TODO : florent : first just used in core-workflow o.a.l.c.workflow.usecase, but seem that Deactivate d'ont need to use it
+ //so, func commented, suppress when ok. This use the suppressed document.area func
+ /*
public Document[] getReferencingDocuments(Document target) {
Document[] allDocs = target.area().getDocuments();
@@ -124,7 +127,7 @@
}
}
return (Document[]) docs.toArray(new Document[docs.size()]);
- }
+ }*/
public void service(ServiceManager manager) throws ServiceException {
this.manager = manager;
diff --git a/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/LinkManager.java b/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/LinkManager.java
index b8cb709..4c3618d 100644
--- a/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/LinkManager.java
+++ b/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/LinkManager.java
@@ -43,6 +43,7 @@
* @param target The target document.
* @return An array of documents.
*/
- Document[] getReferencingDocuments(Document target);
+ //TODO : florent : remove as it don't seem to be used (see o.a.l.c.linking.ContentLinkManager : supress when ok
+ //Document[] getReferencingDocuments(Document target);
}
diff --git a/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/LinkResolverImpl.java b/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/LinkResolverImpl.java
index f515b15..01c0eb2 100644
--- a/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/LinkResolverImpl.java
+++ b/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/LinkResolverImpl.java
@@ -38,21 +38,27 @@
*/
public static final String ROLE = LinkResolverImpl.class.getName();
- public LinkTarget resolve(Document currentDoc, String linkUri) throws MalformedURLException {
+ //TODO : florent : change the method signature by adding a session attribute because document don't still handle his session
+ // remove comments when ok
+ public LinkTarget resolve(Session session, Document currentDoc, String linkUri) throws MalformedURLException {
Link link = new Link(linkUri);
String language = getValue(link.getLanguage(), currentDoc.getLanguage());
String revisionString = getValue(link.getRevision(), null);
String area = getValue(link.getArea(), currentDoc.getArea());
- String pubId = getValue(link.getPubId(), currentDoc.getPublication().getId());
-
+ //TODO : florent : remove it when ok
+ //String pubId = getValue(link.getPubId(), currentDoc.getPublication().getId());
+ String pubId = getValue(link.getPubId(), currentDoc.getPublicationId());
+
String uuid = getValue(link.getUuid(), currentDoc.getUUID());
if (uuid.length() == 0) {
uuid = currentDoc.getUUID();
}
- return resolve(currentDoc.getSession(), pubId, area, uuid, language, revisionString);
+ //TODO : florent : remove comment when ok
+ //return resolve(currentDoc.getSession(), pubId, area, uuid, language, revisionString);
+ return resolve(session, pubId, area, uuid, language, revisionString);
}
protected String getValue(String value, String defaultValue) {
diff --git a/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/UrlToUuidRewriter.java b/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/UrlToUuidRewriter.java
index b029edc..ad099aa 100644
--- a/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/UrlToUuidRewriter.java
+++ b/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/UrlToUuidRewriter.java
@@ -22,8 +22,8 @@
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.Session;
-import org.apache.lenya.cms.publication.URLInformation;
-
+//import org.apache.lenya.cms.publication.URLInformation;
+import org.apache.lenya.utils.URLInformation;
/**
* <p>
* Converts webapp URLs to UUID-based internal links. If the URL doesn't refer to a document, the
@@ -46,7 +46,8 @@
public boolean matches(String url) {
if (url.startsWith("/")) {
- URLInformation info = new URLInformation(url);
+ // URLInformation info = new URLInformation(url);
+ URLInformation info = new URLInformation();
String pubId = info.getPublicationId();
String area = info.getArea();
if (pubId != null && area != null) {
diff --git a/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/UuidToUrlRewriter.java b/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/UuidToUrlRewriter.java
index b533450..6ddd531 100644
--- a/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/UuidToUrlRewriter.java
+++ b/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/UuidToUrlRewriter.java
@@ -21,11 +21,12 @@
import java.util.StringTokenizer;
import org.apache.commons.lang.Validate;
-import org.apache.lenya.ac.AccessControlException;
+//import org.apache.lenya.ac.AccessControlException;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.Session;
-import org.apache.lenya.cms.publication.URLInformation;
+//import org.apache.lenya.cms.publication.URLInformation;
+import org.apache.lenya.utils.URLInformation;
import org.apache.lenya.util.Query;
/**
@@ -96,7 +97,8 @@
String rewrittenUrl = null;
- URLInformation info = new URLInformation(this.currentUrl);
+ //URLInformation info = new URLInformation(this.currentUrl);
+ URLInformation info = new URLInformation();
if (linkUrl.startsWith(SCHEME)) {
String anchor = null;
@@ -125,7 +127,7 @@
LinkTarget target;
try {
if (this.currentDoc != null) {
- target = this.linkResolver.resolve(this.currentDoc, linkUri);
+ target = this.linkResolver.resolve(this.session, this.currentDoc, linkUri);
} else {
Link link = getAbsoluteLink(info, linkUri);
target = this.linkResolver.resolve(this.session, link.getUri());
@@ -178,7 +180,10 @@
* @throws AccessControlException when something went wrong.
*/
protected String getWebappUrl(Document targetDocument, String anchor, String queryString,
- String extension) throws AccessControlException {
+ String extension) {
+ //TODO : exception removed for cyclic dependencies. See if create another exception
+ //throws AccessControlException {
+
String webappUrl = targetDocument.getCanonicalWebappURL();