From 9ef32ac93559b94de75f6690273b74e60d947fa1 Mon Sep 17 00:00:00 2001 From: Kevin Roast Date: Thu, 11 May 2006 09:10:54 +0000 Subject: [PATCH] Derek's fix to return FAILURE_INVALID_PARENT when restoring a node git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2835 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../node/archive/NodeArchiveServiceImpl.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/source/java/org/alfresco/repo/node/archive/NodeArchiveServiceImpl.java b/source/java/org/alfresco/repo/node/archive/NodeArchiveServiceImpl.java index 40a3334b07..fd2493a165 100644 --- a/source/java/org/alfresco/repo/node/archive/NodeArchiveServiceImpl.java +++ b/source/java/org/alfresco/repo/node/archive/NodeArchiveServiceImpl.java @@ -23,6 +23,7 @@ import org.alfresco.model.ContentModel; import org.alfresco.repo.node.archive.RestoreNodeReport.RestoreStatus; import org.alfresco.repo.transaction.TransactionUtil; import org.alfresco.repo.transaction.TransactionUtil.TransactionWork; +import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.InvalidNodeRefException; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; @@ -133,6 +134,23 @@ public class NodeArchiveServiceImpl implements NodeArchiveService { report.setStatus(RestoreStatus.FAILURE_INVALID_PARENT); } + else if (destinationNodeRef == null) + { + // get the original parent of the archived node + ChildAssociationRef originalParentAssocRef = (ChildAssociationRef) nodeService.getProperty( + archivedNodeRef, + ContentModel.PROP_ARCHIVED_ORIGINAL_PARENT_ASSOC); + NodeRef originalParentNodeRef = originalParentAssocRef.getParentRef(); + if (EqualsHelper.nullSafeEquals(originalParentNodeRef, invalidNodeRef)) + { + report.setStatus(RestoreStatus.FAILURE_INVALID_PARENT); + } + else + { + // some other invalid node was detected + report.setStatus(RestoreStatus.FAILURE_OTHER); + } + } else { // some other invalid node was detected