diff --git a/source/java/org/alfresco/repo/avm/AVMServiceTest.java b/source/java/org/alfresco/repo/avm/AVMServiceTest.java index 99c0cdc764..7692d97784 100644 --- a/source/java/org/alfresco/repo/avm/AVMServiceTest.java +++ b/source/java/org/alfresco/repo/avm/AVMServiceTest.java @@ -99,6 +99,10 @@ public class AVMServiceTest extends AVMServiceTestBase fService.getDirectoryListingDirect(-1, "main:/layer"); assertEquals(0, listing.size()); + listing = + fService.getDirectoryListingDirect(-1, + "main:/layer/b"); + assertEquals(0, listing.size()); fService.createFile("main:/layer/b/c", "sigmoid").close(); fService.createSnapshot("main"); listing = fService.getDirectoryListingDirect(-1, "main:/layer"); diff --git a/source/java/org/alfresco/repo/avm/AVMStoreImpl.java b/source/java/org/alfresco/repo/avm/AVMStoreImpl.java index 2f4c1a06fd..deb471f174 100644 --- a/source/java/org/alfresco/repo/avm/AVMStoreImpl.java +++ b/source/java/org/alfresco/repo/avm/AVMStoreImpl.java @@ -320,6 +320,10 @@ class AVMStoreImpl implements AVMStore, Serializable { Lookup lPath = lookupDirectory(version, path, false); DirectoryNode dir = (DirectoryNode)lPath.getCurrentNode(); + if (lPath.isLayered() && dir.getType() != AVMNodeType.LAYERED_DIRECTORY) + { + return new TreeMap(); + } Map listing = dir.getListingDirect(lPath); return translateListing(listing, lPath); } diff --git a/source/java/org/alfresco/repo/avm/Lookup.java b/source/java/org/alfresco/repo/avm/Lookup.java index 92d29af0ba..4b8891a4f8 100644 --- a/source/java/org/alfresco/repo/avm/Lookup.java +++ b/source/java/org/alfresco/repo/avm/Lookup.java @@ -134,6 +134,7 @@ class Lookup { comp.setIndirection(computeIndirection(name)); } + fLayeredYet = true; } fComponents.add(comp); fPosition++;