diff --git a/source/java/org/alfresco/repo/importer/ImporterComponent.java b/source/java/org/alfresco/repo/importer/ImporterComponent.java index 098f3e6644..26bb38ebb5 100644 --- a/source/java/org/alfresco/repo/importer/ImporterComponent.java +++ b/source/java/org/alfresco/repo/importer/ImporterComponent.java @@ -1605,7 +1605,7 @@ public class ImporterComponent implements ImporterService // uuid already exists String uuid = node.getUUID(); NodeRef existingNodeRef = null; - if (uuid == null) + if (uuid == null && location.getPath() != null ) //need a valid location where to search { NodeRef parentNodeRef = node.getParentContext().getParentRef(); diff --git a/source/test-java/org/alfresco/repo/importer/ImporterComponentTest.java b/source/test-java/org/alfresco/repo/importer/ImporterComponentTest.java index 7139e14571..7d6a1e9946 100644 --- a/source/test-java/org/alfresco/repo/importer/ImporterComponentTest.java +++ b/source/test-java/org/alfresco/repo/importer/ImporterComponentTest.java @@ -37,6 +37,8 @@ import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter; import org.alfresco.service.cmr.version.VersionHistory; import org.alfresco.service.cmr.version.VersionService; import org.alfresco.service.cmr.view.ImporterBinding.UUID_BINDING; +import org.alfresco.service.cmr.view.ImporterBinding; +import org.alfresco.service.cmr.view.ImporterContentCache; import org.alfresco.service.cmr.view.ImporterService; import org.alfresco.service.cmr.view.Location; import org.alfresco.service.namespace.NamespaceService; @@ -251,5 +253,81 @@ public class ImporterComponentTest extends BaseSpringTest authenticationComponent.setSystemUserAsCurrentUser(); System.out.println(NodeStoreInspector.dumpNodeStore(nodeService, bootstrapStoreRef)); } + + public void testImportFoldersUuidBindingNullUuidNullLocationPath() throws Exception + { + Location location = new Location(storeRef); + + InputStream test1 = getClass().getClassLoader().getResourceAsStream("org/alfresco/repo/importer/import_folders.xml"); + InputStreamReader testReader1 = new InputStreamReader(test1, "UTF-8"); + try + { + importerService.importView(testReader1, location, new ImporterBinding() + { + + @Override + public String getValue(String key) + { + return null; + } + + @Override + public UUID_BINDING getUUIDBinding() + { + return UUID_BINDING.UPDATE_EXISTING; + } + + @Override + public ImporterContentCache getImportConentCache() + { + return null; + } + + @Override + public QName[] getExcludedClasses() + { + return null; + } + + @Override + public boolean allowReferenceWithinTransaction() + { + return true; + } + }, new ImportTimerProgress()); + } + finally + { + testReader1.close(); + } + + // - root + // - Main folder + // - sub folder + // - sub folder 1 + // - sub folder 2 + // - Archive folder + + NodeRef rootNodeRef = nodeService.getRootNode(storeRef); + List childAssocs = nodeService.getChildAssocs( + rootNodeRef, + RegexQNamePattern.MATCH_ALL, + new RegexQNamePattern(NamespaceService.CONTENT_MODEL_1_0_URI, "main folder")); + assertEquals("'main folder' path not found", 1, childAssocs.size()); + + NodeRef mainFolderNode = childAssocs.get(0).getChildRef(); + childAssocs = nodeService.getChildAssocs(mainFolderNode); + assertEquals("'sub folder' path not found", 1, childAssocs.size()); + + NodeRef subFolderNode = childAssocs.get(0).getChildRef(); + childAssocs = nodeService.getChildAssocs(subFolderNode); + assertEquals("'subsub folder' path not found", 2, childAssocs.size()); + + childAssocs = nodeService.getChildAssocs( + rootNodeRef, + RegexQNamePattern.MATCH_ALL, + new RegexQNamePattern(NamespaceService.CONTENT_MODEL_1_0_URI, "ArchiveFolder")); + assertEquals("'ArchiveFolder' path not found", 1, childAssocs.size()); + } } diff --git a/source/test-resources/org/alfresco/repo/importer/import_folders.xml b/source/test-resources/org/alfresco/repo/importer/import_folders.xml new file mode 100644 index 0000000000..69f959dc32 --- /dev/null +++ b/source/test-resources/org/alfresco/repo/importer/import_folders.xml @@ -0,0 +1,51 @@ + + + + + space-icon-default + main folder + main folder + + + + space-icon-default + sub folder + sub folder + + + + space-icon-default + sub folder1 + sub folder1 + + + + + space-icon-default + sub folder2 + sub folder2 + + + + + + + + + + + space-icon-default + ArchiveFolder + ArchiveFolder + + + + space-icon-default + 2015 + 2015 + + + + + \ No newline at end of file