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