From 494545b20da42cf0fa6d231aa332ec49d40da9d5 Mon Sep 17 00:00:00 2001 From: Satyam Sah Date: Thu, 3 Apr 2025 18:33:03 +0530 Subject: [PATCH 1/6] Stripped Accent characters from folder name before directory creation. --- .../alfresco/repo/action/executer/ImporterActionExecuter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repository/src/main/java/org/alfresco/repo/action/executer/ImporterActionExecuter.java b/repository/src/main/java/org/alfresco/repo/action/executer/ImporterActionExecuter.java index ab9897ed9a..b0b93c7172 100644 --- a/repository/src/main/java/org/alfresco/repo/action/executer/ImporterActionExecuter.java +++ b/repository/src/main/java/org/alfresco/repo/action/executer/ImporterActionExecuter.java @@ -456,7 +456,7 @@ public class ImporterActionExecuter extends ActionExecuterAbstractBase } else { - File newdir = new File(extractDir + entry.getName()); + File newdir = new File(extractDir + StringUtils.stripAccents(entry.getName()).replaceAll("\\?", "_")); newdir.mkdirs(); } } From 2ded9e6c4b4b40b682de1943f171deacdd44a469 Mon Sep 17 00:00:00 2001 From: Satyam Sah Date: Fri, 4 Apr 2025 14:58:38 +0530 Subject: [PATCH 2/6] Added unit test case for MNT-24623 --- .../executer/ImporterActionExecuterTest.java | 42 ++++++++++++++++++ .../import-archive-test/accentCharTestZip.zip | Bin 0 -> 647 bytes 2 files changed, 42 insertions(+) create mode 100644 repository/src/test/resources/import-archive-test/accentCharTestZip.zip diff --git a/repository/src/test/java/org/alfresco/repo/action/executer/ImporterActionExecuterTest.java b/repository/src/test/java/org/alfresco/repo/action/executer/ImporterActionExecuterTest.java index 4ed456799d..bdba1986f1 100644 --- a/repository/src/test/java/org/alfresco/repo/action/executer/ImporterActionExecuterTest.java +++ b/repository/src/test/java/org/alfresco/repo/action/executer/ImporterActionExecuterTest.java @@ -299,6 +299,48 @@ public class ImporterActionExecuterTest }); } + @Test + public void testUnzipZipFileHavingAccentCharInFolderName() throws IOException + { + final RetryingTransactionHelper retryingTransactionHelper = serviceRegistry.getRetryingTransactionHelper(); + + retryingTransactionHelper.doInTransaction(new RetryingTransactionCallback() { + @Override + public Void execute() throws Throwable { + NodeRef rootNodeRef = nodeService.getRootNode(storeRef); + + // create test data + NodeRef zipFileNodeRef = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, ContentModel.ASSOC_CHILDREN, ContentModel.TYPE_CONTENT).getChildRef(); + NodeRef targetFolderNodeRef = nodeService.createNode(rootNodeRef, ContentModel.ASSOC_CHILDREN, ContentModel.ASSOC_CHILDREN, ContentModel.TYPE_FOLDER).getChildRef(); + + putContent(zipFileNodeRef, "import-archive-test/accentCharTestZip.zip"); + + Action action = createAction(zipFileNodeRef, "ImporterActionExecuterTestActionDefinition", targetFolderNodeRef); + + try + { + importerActionExecuter.setUncompressedBytesLimit("100000"); + importerActionExecuter.execute(action, zipFileNodeRef); + NodeRef importedFolder = nodeService.getChildByName(targetFolderNodeRef, ContentModel.ASSOC_CONTAINS, "accentCharTestZip"); + assertNotNull("import action failed", importedFolder); + assertTrue("unzip action failed",nodeService.getChildAssocs(importedFolder).size() == 1); + } + catch (AlfrescoRuntimeException e) + { + throw(new AlfrescoRuntimeException(e.getMessage())); + } + finally + { + // clean test data + nodeService.deleteNode(targetFolderNodeRef); + nodeService.deleteNode(zipFileNodeRef); + } + + return null; + } + }); + } + private void putContent(NodeRef zipFileNodeRef, String resource) { URL url = AbstractContentTransformerTest.class.getClassLoader().getResource(resource); diff --git a/repository/src/test/resources/import-archive-test/accentCharTestZip.zip b/repository/src/test/resources/import-archive-test/accentCharTestZip.zip new file mode 100644 index 0000000000000000000000000000000000000000..87850d8b8a44d5e65898d6e379bcb80e77163977 GIT binary patch literal 647 zcmWIWW@Zs#0D(0nEm2?wln`Q2U`R|(PR%QE&PXf@Ni8mk$}G??t>9*0WC1Aw6QLoz z4D3D&-=~KGu^tcyK+NM{V8}!>PYJ7e5F0?IJLaSvZoz8)`2`U3K{UjC4h{~6#w=9# z8WCka!oI^TdLT^x(%XPN3J>fjGdMkx7IZ zSI|j-LI@20JAx=80+N-15o9UcT&zKeY;FKna}gfI5uiYOAOQ(+KP)Jb{bs~~uxDH2 i2BPdi*oz}zf%bv|G{Bpc4HP2GKxo0pz+ef)3=9Ak- Date: Fri, 4 Apr 2025 15:05:39 +0530 Subject: [PATCH 3/6] added proper message --- .../repo/action/executer/ImporterActionExecuterTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/repository/src/test/java/org/alfresco/repo/action/executer/ImporterActionExecuterTest.java b/repository/src/test/java/org/alfresco/repo/action/executer/ImporterActionExecuterTest.java index bdba1986f1..b8bdb261f0 100644 --- a/repository/src/test/java/org/alfresco/repo/action/executer/ImporterActionExecuterTest.java +++ b/repository/src/test/java/org/alfresco/repo/action/executer/ImporterActionExecuterTest.java @@ -322,8 +322,8 @@ public class ImporterActionExecuterTest importerActionExecuter.setUncompressedBytesLimit("100000"); importerActionExecuter.execute(action, zipFileNodeRef); NodeRef importedFolder = nodeService.getChildByName(targetFolderNodeRef, ContentModel.ASSOC_CONTAINS, "accentCharTestZip"); - assertNotNull("import action failed", importedFolder); - assertTrue("unzip action failed",nodeService.getChildAssocs(importedFolder).size() == 1); + assertNotNull("unzip action failed", importedFolder); + assertTrue("multiple folder structure created",nodeService.getChildAssocs(importedFolder).size() == 1); } catch (AlfrescoRuntimeException e) { From 9c65ffddc9e20ae5fb38d8728c12333f2411beef Mon Sep 17 00:00:00 2001 From: Satyam Sah Date: Fri, 4 Apr 2025 15:20:59 +0530 Subject: [PATCH 4/6] removed redundant logic --- .../repo/action/executer/ImporterActionExecuterTest.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/repository/src/test/java/org/alfresco/repo/action/executer/ImporterActionExecuterTest.java b/repository/src/test/java/org/alfresco/repo/action/executer/ImporterActionExecuterTest.java index b8bdb261f0..63b1c7416f 100644 --- a/repository/src/test/java/org/alfresco/repo/action/executer/ImporterActionExecuterTest.java +++ b/repository/src/test/java/org/alfresco/repo/action/executer/ImporterActionExecuterTest.java @@ -325,10 +325,6 @@ public class ImporterActionExecuterTest assertNotNull("unzip action failed", importedFolder); assertTrue("multiple folder structure created",nodeService.getChildAssocs(importedFolder).size() == 1); } - catch (AlfrescoRuntimeException e) - { - throw(new AlfrescoRuntimeException(e.getMessage())); - } finally { // clean test data From 920d34b289f162eb482820a5ce4cdabbcb6b6f66 Mon Sep 17 00:00:00 2001 From: Satyam Sah Date: Fri, 4 Apr 2025 15:36:44 +0530 Subject: [PATCH 5/6] format fix --- .../repo/action/executer/ImporterActionExecuterTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/repository/src/test/java/org/alfresco/repo/action/executer/ImporterActionExecuterTest.java b/repository/src/test/java/org/alfresco/repo/action/executer/ImporterActionExecuterTest.java index 63b1c7416f..dcf7ad4000 100644 --- a/repository/src/test/java/org/alfresco/repo/action/executer/ImporterActionExecuterTest.java +++ b/repository/src/test/java/org/alfresco/repo/action/executer/ImporterActionExecuterTest.java @@ -306,7 +306,8 @@ public class ImporterActionExecuterTest retryingTransactionHelper.doInTransaction(new RetryingTransactionCallback() { @Override - public Void execute() throws Throwable { + public Void execute() throws Throwable + { NodeRef rootNodeRef = nodeService.getRootNode(storeRef); // create test data @@ -323,7 +324,7 @@ public class ImporterActionExecuterTest importerActionExecuter.execute(action, zipFileNodeRef); NodeRef importedFolder = nodeService.getChildByName(targetFolderNodeRef, ContentModel.ASSOC_CONTAINS, "accentCharTestZip"); assertNotNull("unzip action failed", importedFolder); - assertTrue("multiple folder structure created",nodeService.getChildAssocs(importedFolder).size() == 1); + assertTrue("multiple folder structure created", nodeService.getChildAssocs(importedFolder).size() == 1); } finally { From dbf149779d63bfd970b66fb9bf08437dd1b12da5 Mon Sep 17 00:00:00 2001 From: Satyam Sah Date: Tue, 8 Apr 2025 17:58:05 +0530 Subject: [PATCH 6/6] added supress warning for ImporterActionExecutorTest --- .../repo/action/executer/ImporterActionExecuterTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/repository/src/test/java/org/alfresco/repo/action/executer/ImporterActionExecuterTest.java b/repository/src/test/java/org/alfresco/repo/action/executer/ImporterActionExecuterTest.java index dcf7ad4000..f636f9f8b1 100644 --- a/repository/src/test/java/org/alfresco/repo/action/executer/ImporterActionExecuterTest.java +++ b/repository/src/test/java/org/alfresco/repo/action/executer/ImporterActionExecuterTest.java @@ -62,6 +62,7 @@ import org.alfresco.util.test.junitrules.ApplicationContextInit; * * @author abalmus */ +@SuppressWarnings("PMD.UnitTestShouldIncludeAssert") public class ImporterActionExecuterTest { // Rule to initialise the default Alfresco spring configuration @@ -307,6 +308,7 @@ public class ImporterActionExecuterTest retryingTransactionHelper.doInTransaction(new RetryingTransactionCallback() { @Override public Void execute() throws Throwable + { NodeRef rootNodeRef = nodeService.getRootNode(storeRef);