From: Mathieu Baudier Date: Fri, 1 Sep 2023 10:23:08 +0000 (+0200) Subject: Factorise access to content data path X-Git-Tag: v2.3.19~24 X-Git-Url: https://git.argeo.org/?a=commitdiff_plain;h=556aa2a2a44e763ef14d8fea5c5dd69a9eb9f29e;p=lgpl%2Fargeo-commons.git Factorise access to content data path --- diff --git a/org.argeo.cms/src/org/argeo/cms/acr/ContentUtils.java b/org.argeo.cms/src/org/argeo/cms/acr/ContentUtils.java index bf5954411..2e101a0d6 100644 --- a/org.argeo.cms/src/org/argeo/cms/acr/ContentUtils.java +++ b/org.argeo.cms/src/org/argeo/cms/acr/ContentUtils.java @@ -1,10 +1,13 @@ package org.argeo.cms.acr; import java.io.PrintStream; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.StringJoiner; +import java.util.StringTokenizer; import java.util.function.BiConsumer; import javax.security.auth.login.LoginContext; @@ -16,6 +19,7 @@ import org.argeo.api.acr.ContentRepository; import org.argeo.api.acr.ContentSession; import org.argeo.api.acr.DName; import org.argeo.api.cms.CmsAuth; +import org.argeo.api.cms.CmsConstants; import org.argeo.api.cms.CmsSession; import org.argeo.api.cms.directory.CmsDirectory; import org.argeo.api.cms.directory.CmsUserManager; @@ -217,6 +221,33 @@ public class ContentUtils { return relativePath; } + /** A path in the node repository */ + public static String getDataPath(Content node) { + // TODO make it more configurable? + StringBuilder buf = new StringBuilder(CmsConstants.PATH_API_ACR); + buf.append(node.getPath()); + return buf.toString(); + } + + /** A path in the node repository */ + public static String getDataPathForUrl(Content node) { + return cleanPathForUrl(getDataPath(node)); + } + + /** Clean reserved URL characters for use in HTTP links. */ + public static String cleanPathForUrl(String path) { + StringTokenizer st = new StringTokenizer(path, "/"); + StringBuilder sb = new StringBuilder(); + while (st.hasMoreElements()) { + sb.append('/'); + String encoded = URLEncoder.encode(st.nextToken(), StandardCharsets.UTF_8); + encoded = encoded.replace("+", "%20"); + sb.append(encoded); + + } + return sb.toString(); + } + /** Singleton. */ private ContentUtils() { diff --git a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/CmsSwtUtils.java b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/CmsSwtUtils.java index 5d964090b..3a91dbc23 100644 --- a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/CmsSwtUtils.java +++ b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/CmsSwtUtils.java @@ -1,10 +1,7 @@ package org.argeo.cms.swt; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; -import java.util.StringTokenizer; import org.argeo.api.cms.ux.CmsIcon; import org.argeo.api.cms.ux.CmsStyle; @@ -294,20 +291,6 @@ public class CmsSwtUtils { child.dispose(); } - /** Clean reserved URL characters for use in HTTP links. */ - public static String cleanPathForUrl(String path) { - StringTokenizer st = new StringTokenizer(path, "/"); - StringBuilder sb = new StringBuilder(); - while (st.hasMoreElements()) { - sb.append('/'); - String encoded = URLEncoder.encode(st.nextToken(), StandardCharsets.UTF_8); - encoded = encoded.replace("+", "%20"); - sb.append(encoded); - - } - return sb.toString(); - } - /** Singleton. */ private CmsSwtUtils() { } diff --git a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/acr/AcrSwtImageManager.java b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/acr/AcrSwtImageManager.java index 0984f57fb..3c825c1ff 100644 --- a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/acr/AcrSwtImageManager.java +++ b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/acr/AcrSwtImageManager.java @@ -5,11 +5,10 @@ import java.io.InputStream; import java.util.Optional; import org.argeo.api.acr.Content; -import org.argeo.api.cms.CmsConstants; import org.argeo.api.cms.ux.Cms2DSize; +import org.argeo.cms.acr.ContentUtils; import org.argeo.cms.acr.SvgAttrs; import org.argeo.cms.swt.AbstractSwtImageManager; -import org.argeo.cms.swt.CmsSwtUtils; import org.argeo.cms.ux.CmsUxUtils; import org.eclipse.swt.graphics.ImageData; @@ -44,15 +43,7 @@ public class AcrSwtImageManager extends AbstractSwtImageManager { } protected String getDataPathForUrl(Content content) { - return CmsSwtUtils.cleanPathForUrl(getDataPath(content)); - } - - /** A path in the node repository */ - protected String getDataPath(Content node) { - // TODO make it more configurable? - StringBuilder buf = new StringBuilder(CmsConstants.PATH_API_ACR); - buf.append(node.getPath()); - return buf.toString(); + return ContentUtils.getDataPathForUrl(content); } @Override diff --git a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/acr/LinkedControl.java b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/acr/LinkedControl.java index 6a75dfb2c..4333f48df 100644 --- a/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/acr/LinkedControl.java +++ b/swt/org.argeo.cms.swt/src/org/argeo/cms/swt/acr/LinkedControl.java @@ -3,7 +3,7 @@ package org.argeo.cms.swt.acr; import java.net.URI; import org.argeo.api.acr.Content; -import org.argeo.cms.swt.CmsSwtUtils; +import org.argeo.cms.acr.ContentUtils; import org.argeo.cms.swt.widgets.StyledControl; import org.eclipse.swt.widgets.Composite; @@ -56,7 +56,7 @@ public abstract class LinkedControl extends StyledControl { if (plainUri != null) return plainUri; if (linkedContent != null) - return URI.create("#" + CmsSwtUtils.cleanPathForUrl(linkedContent.getPath())); + return URI.create("#" + ContentUtils.cleanPathForUrl(linkedContent.getPath())); return null; }