- 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();