You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2008/02/21 23:12:31 UTC

svn commit: r630025 - /lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/ac/DocumentPolicyManagerWrapper.java

Author: andreas
Date: Thu Feb 21 14:12:30 2008
New Revision: 630025

URL: http://svn.apache.org/viewvc?rev=630025&view=rev
Log:
Use locator instead of document to compute a policy URL, works for non-document URLs too.

Modified:
    lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/ac/DocumentPolicyManagerWrapper.java

Modified: lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/ac/DocumentPolicyManagerWrapper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/ac/DocumentPolicyManagerWrapper.java?rev=630025&r1=630024&r2=630025&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/ac/DocumentPolicyManagerWrapper.java (original)
+++ lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/ac/DocumentPolicyManagerWrapper.java Thu Feb 21 14:12:30 2008
@@ -42,8 +42,8 @@
 import org.apache.lenya.ac.Role;
 import org.apache.lenya.ac.impl.DefaultAccessController;
 import org.apache.lenya.cms.cocoon.components.context.ContextUtility;
-import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.publication.DocumentFactory;
+import org.apache.lenya.cms.publication.DocumentLocator;
 import org.apache.lenya.cms.publication.DocumentUtil;
 import org.apache.lenya.cms.publication.Publication;
 import org.apache.lenya.cms.publication.PublicationUtil;
@@ -94,50 +94,34 @@
         }
 
         String url = null;
-        ContextUtility contextUtility = null;
-        try {
-            contextUtility = (ContextUtility) serviceManager.lookup(ContextUtility.ROLE);
-            Session session = RepositoryUtil.getSession(this.serviceManager, contextUtility
-                    .getRequest());
-            DocumentFactory map = DocumentUtil.createDocumentFactory(this.serviceManager, session);
-
-            // always check for authoring URL since the live document doesn't
-            // have to exist
-
-            URLInformation info = new URLInformation(webappUrl);
-            // Danger, Will Robinson! If area or pubId is null, webappUrl.substring()
-            // will be out of bounds, because null becomes "null" in string concatenation
-            String pubId = info.getPublicationId();
-            String area = info.getArea();
-            String prefix = "/" + ((pubId != null) ? pubId + "/" : "");
-            // String prefix = "/" + pubId + "/";
-            String prefixWithArea = prefix + ((area != null) ? area : "");
-            // String prefixWithArea = prefix + area;
-            String authoringUrl = prefix + Publication.AUTHORING_AREA
-                    + ((webappUrl.length()>prefixWithArea.length())?webappUrl.substring(prefixWithArea.length()):"/");
-
-            if (map.isDocument(authoringUrl)) {
-                Document authoringDoc = map.getFromURL(authoringUrl);
-                url = "/" + authoringDoc.getPublication().getId() + "/" + area
-                        + authoringDoc.getPath();
-                if (getLogger().isDebugEnabled()) {
-                    getLogger().debug("    Document exists");
-                    getLogger().debug("    Document path: [" + authoringDoc.getPath() + "]");
+        URLInformation info = new URLInformation(webappUrl);
+        String pubId = info.getPublicationId();
+        String area = info.getArea();
+        
+        if (pubId != null && area != null && info.getDocumentUrl().length() > 1) {
+            ContextUtility contextUtility = null;
+            try {
+                contextUtility = (ContextUtility) serviceManager.lookup(ContextUtility.ROLE);
+                Session session = RepositoryUtil.getSession(this.serviceManager, contextUtility
+                        .getRequest());
+                DocumentFactory map = DocumentUtil.createDocumentFactory(this.serviceManager, session);
+                Publication pub = map.getPublication(pubId);
+                DocumentLocator loc = pub.getDocumentBuilder().getLocator(map, webappUrl);
+                url = "/" + pubId + "/" + area + loc.getPath();
+            } catch (ServiceException e) {
+                throw new AccessControlException("Error looking up ContextUtility component", e);
+            } catch (Exception e) {
+                throw new AccessControlException(e);
+            } finally {
+                if (contextUtility != null) {
+                    serviceManager.release(contextUtility);
                 }
             }
-        } catch (ServiceException e) {
-            throw new AccessControlException("Error looking up ContextUtility component", e);
-        } catch (Exception e) {
-            throw new AccessControlException(e);
-        } finally {
-            if (contextUtility != null) {
-                serviceManager.release(contextUtility);
-            }
         }
 
         if (url == null) {
             if (getLogger().isDebugEnabled()) {
-                getLogger().debug("    Document does not exist.");
+                getLogger().debug("    URL does not refer to a document.");
             }
             url = webappUrl;
         }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org