diff --git a/source/java/org/alfresco/repo/avm/AVMRepository.java b/source/java/org/alfresco/repo/avm/AVMRepository.java index 8c0bad1b79..e1d4c93d27 100644 --- a/source/java/org/alfresco/repo/avm/AVMRepository.java +++ b/source/java/org/alfresco/repo/avm/AVMRepository.java @@ -2469,7 +2469,7 @@ public class AVMRepository } fLookupCache.onWrite(pathParts[0]); // Just force a copy if needed by looking up in write mode. - Lookup lPath = store.lookup(-1, pathParts[1], true, false); + Lookup lPath = store.lookup(-1, pathParts[1], true, true); if (lPath == null) { throw new AVMNotFoundException("Path not found."); diff --git a/source/java/org/alfresco/repo/avm/AVMServiceTest.java b/source/java/org/alfresco/repo/avm/AVMServiceTest.java index bcad2ab7d3..389473d47d 100644 --- a/source/java/org/alfresco/repo/avm/AVMServiceTest.java +++ b/source/java/org/alfresco/repo/avm/AVMServiceTest.java @@ -84,6 +84,23 @@ import org.alfresco.util.Pair; */ public class AVMServiceTest extends AVMServiceTestBase { + public void testForceCopyDeleted() + { + try + { + setupBasicTree(); + fService.removeNode("main:/a/b/c/foo"); + fService.createSnapshot("main", null, null); + AVMNodeDescriptor desc = fService.forceCopy("main:/a/b/c/foo"); + assertTrue(desc.isDeleted()); + } + catch (Exception e) + { + e.printStackTrace(); + fail(); + } + } + public void testLayerSnapshots() { try diff --git a/source/java/org/alfresco/repo/avm/DeletedNodeImpl.java b/source/java/org/alfresco/repo/avm/DeletedNodeImpl.java index 340dc06f27..6bdf04600c 100644 --- a/source/java/org/alfresco/repo/avm/DeletedNodeImpl.java +++ b/source/java/org/alfresco/repo/avm/DeletedNodeImpl.java @@ -83,8 +83,9 @@ public class DeletedNodeImpl extends AVMNodeImpl implements DeletedNode return fDeletedType; } + // TODO What happens when this is called? Does it muck anything up. /** - * This should never be called. + * This is only called rarely. */ public AVMNode copy(Lookup lPath) {