From 03ccdc3c34de97ca6fe06f36eeaa9f97424a93b3 Mon Sep 17 00:00:00 2001 From: Sara Aspery Date: Wed, 5 Jun 2019 15:26:31 +0100 Subject: [PATCH] RM-6865 allow spaces in declare and file path --- .../action/dm/CreateRecordAction.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/dm/CreateRecordAction.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/dm/CreateRecordAction.java index 8684092a73..f668e41e28 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/dm/CreateRecordAction.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/action/dm/CreateRecordAction.java @@ -27,6 +27,8 @@ package org.alfresco.module.org_alfresco_module_rm.action.dm; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; import java.util.Arrays; import java.util.List; @@ -171,6 +173,8 @@ public class CreateRecordAction extends AuditableActionExecuterAbstractBase */ private NodeRef resolvePath(NodeRef filePlan, final String pathParameter) { + String decodedPathParameter = decode(pathParameter); + NodeRef destinationFolder; if (filePlan == null) @@ -178,7 +182,7 @@ public class CreateRecordAction extends AuditableActionExecuterAbstractBase filePlan = getDefaultFilePlan(); } - final String[] pathElementsArray = StringUtils.tokenizeToStringArray(pathParameter, "/", false, true); + final String[] pathElementsArray = StringUtils.tokenizeToStringArray(decodedPathParameter, "/", false, true); if ((pathElementsArray != null) && (pathElementsArray.length > 0)) { destinationFolder = resolvePath(filePlan, Arrays.asList(pathElementsArray)); @@ -259,4 +263,24 @@ public class CreateRecordAction extends AuditableActionExecuterAbstractBase } return filePlan; } + + /** + * Helper method to decode path string + * + * @param pathParameter The path string to be decoded + * @return The decoded path string + */ + private String decode(String pathParameter) + { + String decodedPathParameter; + try + { + decodedPathParameter = URLDecoder.decode(pathParameter, "UTF-8"); + } + catch (UnsupportedEncodingException ex) + { + throw new AlfrescoRuntimeException("Unable to execute " + NAME + " action, because the destination path could not be decoded."); + } + return decodedPathParameter; + } }