From 91fcd647244c5d87f8f434f261a0768bea84c528 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Fri, 6 Nov 2015 19:32:39 +0000 Subject: [PATCH] Factorize URL generation git-svn-id: https://svn.argeo.org/commons/trunk@8554 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../org/argeo/cms/AbstractCmsEntryPoint.java | 10 +++----- .../argeo/cms/internal/ImageManagerImpl.java | 7 +++--- .../src/org/argeo/cms/util/CmsUtils.java | 23 +++++++++++++++++++ 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/org.argeo.cms/src/org/argeo/cms/AbstractCmsEntryPoint.java b/org.argeo.cms/src/org/argeo/cms/AbstractCmsEntryPoint.java index bdfca6203..883d84df4 100644 --- a/org.argeo.cms/src/org/argeo/cms/AbstractCmsEntryPoint.java +++ b/org.argeo.cms/src/org/argeo/cms/AbstractCmsEntryPoint.java @@ -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(); diff --git a/org.argeo.cms/src/org/argeo/cms/internal/ImageManagerImpl.java b/org.argeo.cms/src/org/argeo/cms/internal/ImageManagerImpl.java index 7765ecdc3..37ae6ffd3 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/ImageManagerImpl.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/ImageManagerImpl.java @@ -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)) { diff --git a/org.argeo.cms/src/org/argeo/cms/util/CmsUtils.java b/org.argeo.cms/src/org/argeo/cms/util/CmsUtils.java index 6e895818a..6011345d1 100644 --- a/org.argeo.cms/src/org/argeo/cms/util/CmsUtils.java +++ b/org.argeo.cms/src/org/argeo/cms/util/CmsUtils.java @@ -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); -- 2.30.2