Factorize URL generation
authorMathieu Baudier <mbaudier@argeo.org>
Fri, 6 Nov 2015 19:32:39 +0000 (19:32 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Fri, 6 Nov 2015 19:32:39 +0000 (19:32 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@8554 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.cms/src/org/argeo/cms/AbstractCmsEntryPoint.java
org.argeo.cms/src/org/argeo/cms/internal/ImageManagerImpl.java
org.argeo.cms/src/org/argeo/cms/util/CmsUtils.java

index bdfca6203fe6ff1166cf8bb1261d84ca1fc2addf..883d84df4450e710c6ef44aad792a8e1e6c624ca 100644 (file)
@@ -22,6 +22,7 @@ import org.apache.commons.logging.LogFactory;
 import org.argeo.ArgeoException;
 import org.argeo.cms.auth.AuthConstants;
 import org.argeo.cms.auth.HttpRequestCallbackHandler;
+import org.argeo.cms.util.CmsUtils;
 import org.argeo.eclipse.ui.specific.UiContext;
 import org.argeo.jcr.JcrUtils;
 import org.eclipse.rap.rwt.RWT;
@@ -275,17 +276,12 @@ public abstract class AbstractCmsEntryPoint extends AbstractEntryPoint
                                title = getBaseTitle();
 
                        HttpServletRequest request = RWT.getRequest();
-                       String url = request.getRequestURL().append('!')
-                                       .append(node.getPath()).toString();
+                       String url = CmsUtils.getCanonicalUrl(node, request);
                        String imgUrl = null;
                        for (NodeIterator it = node.getNodes(); it.hasNext();) {
                                Node child = it.nextNode();
                                if (child.isNodeType(CmsTypes.CMS_IMAGE))
-                                       imgUrl = request
-                                                       .getRequestURL()
-                                                       .append("data/public/node/")
-                                                       .append(child.getSession().getWorkspace().getName())
-                                                       .append(child.getPath()).toString();
+                                       imgUrl = CmsUtils.getDataUrl(child, request);
                        }
 
                        StringBuilder js = new StringBuilder();
index 7765ecdc3dc7491b9c4582726a3b25e6ca5d3710..37ae6ffd36f0d44a3b0f3006568a6b77e3a2c85e 100644 (file)
@@ -164,9 +164,10 @@ public class ImageManagerImpl implements CmsImageManager, CmsNames {
        /** @return null if not available */
        @Override
        public String getImageUrl(Node node) throws RepositoryException {
-               String url = "/data/public/node/"
-                               + node.getSession().getWorkspace().getName() + node.getPath();
-               return url;
+               return CmsUtils.getDataPath(node);
+               // String url = "/data/public/node/"
+               // + node.getSession().getWorkspace().getName() + node.getPath();
+               // return url;
                // String name = getResourceName(node);
                // ResourceManager resourceManager = RWT.getResourceManager();
                // if (!resourceManager.isRegistered(name)) {
index 6e895818a35c34fd49bf736c146dc7813cb82f80..6011345d1dc6ca716b2512b93c5d62fc7d626e5f 100644 (file)
@@ -1,11 +1,15 @@
 package org.argeo.cms.util;
 
+import static org.argeo.cms.internal.kernel.KernelConstants.WEBDAV_PUBLIC;
+import static org.argeo.jcr.ArgeoJcrConstants.ALIAS_NODE;
+
 import java.io.InputStream;
 
 import javax.jcr.Item;
 import javax.jcr.Node;
 import javax.jcr.Property;
 import javax.jcr.RepositoryException;
+import javax.servlet.http.HttpServletRequest;
 
 import org.apache.commons.io.IOUtils;
 import org.argeo.cms.CmsConstants;
@@ -38,6 +42,25 @@ public class CmsUtils implements CmsConstants {
                return UiContext.getData(CmsView.KEY);
        }
 
+       public static String getDataUrl(Node node, HttpServletRequest request)
+                       throws RepositoryException {
+               return request.getRequestURL().append(getDataPath(node).substring(1))
+                               .toString();
+       }
+
+       public static String getDataPath(Node node) throws RepositoryException {
+               return new StringBuilder().append(WEBDAV_PUBLIC).append('/')
+                               .append(ALIAS_NODE + "/")
+                               .append(node.getSession().getWorkspace().getName())
+                               .append(node.getPath()).toString();
+       }
+
+       public static String getCanonicalUrl(Node node, HttpServletRequest request)
+                       throws RepositoryException {
+               return request.getRequestURL().append('!').append(node.getPath())
+                               .toString();
+       }
+
        /** @deprecated Use rowData16px() instead. GridData should not be reused. */
        @Deprecated
        public static RowData ROW_DATA_16px = new RowData(16, 16);