diff --git a/source/java/org/alfresco/repo/copy/CopyServiceImpl.java b/source/java/org/alfresco/repo/copy/CopyServiceImpl.java index 00e4675fd3..0fe1eb9e3b 100644 --- a/source/java/org/alfresco/repo/copy/CopyServiceImpl.java +++ b/source/java/org/alfresco/repo/copy/CopyServiceImpl.java @@ -36,6 +36,7 @@ import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.i18n.I18NUtil; import org.alfresco.model.ApplicationModel; import org.alfresco.model.ContentModel; +import org.alfresco.repo.action.ActionServiceImpl; import org.alfresco.repo.policy.ClassPolicyDelegate; import org.alfresco.repo.policy.JavaBehaviour; import org.alfresco.repo.policy.PolicyComponent; @@ -68,6 +69,11 @@ import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.RegexQNamePattern; import org.alfresco.util.ParameterCheck; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.tools.ant.taskdefs.War; + +import freemarker.log.Logger; /** * Node operations service implmentation. @@ -76,6 +82,11 @@ import org.alfresco.util.ParameterCheck; */ public class CopyServiceImpl implements CopyService { + /** + * The logger + */ + private static Log logger = LogFactory.getLog(ActionServiceImpl.class); + /** I18N labels */ private String COPY_OF_LABEL = "copy_service.copy_of_label"; @@ -733,7 +744,16 @@ public class CopyServiceImpl implements CopyService if (this.nodeService.hasAspect(destinationNodeRef, aspect) == false) { // Error since the aspect has not been added to the destination node (should never happen) - throw new CopyServiceException("The aspect has not been added to the destination node."); + if (logger.isWarnEnabled() == true) + { + logger.warn("WARNING: the aspect " + aspect.toString() + " could not be found on node " + destinationNodeRef.toString() + "during copy. It has been reapplied."); + } + + // For some reason the aspect has not been added, so re-add it + this.nodeService.addAspect( + destinationNodeRef, + aspect, + copyDetails.getProperties(aspect)); } copyChildAssociations(aspect, destinationNodeRef, copyDetails, copyChildren, copiedChildren); diff --git a/source/java/org/alfresco/repo/node/archive/NodeArchiveServiceImpl.java b/source/java/org/alfresco/repo/node/archive/NodeArchiveServiceImpl.java index f3cec7a42f..8ea3149066 100644 --- a/source/java/org/alfresco/repo/node/archive/NodeArchiveServiceImpl.java +++ b/source/java/org/alfresco/repo/node/archive/NodeArchiveServiceImpl.java @@ -187,6 +187,7 @@ public class NodeArchiveServiceImpl implements NodeArchiveService { report.setCause(e); report.setStatus(RestoreStatus.FAILURE_OTHER); + logger.error("An unhandled exception stopped the restore", e); } // done if (logger.isDebugEnabled()) diff --git a/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java b/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java index 80da89917b..b57e5cc4e0 100644 --- a/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java +++ b/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java @@ -1837,6 +1837,11 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl } Node nodeToMove = oldNodeStatus.getNode(); + if (nodeToMove == null) + { + // Ignore it. It was moved already. + continue; + } NodeRef oldNodeRef = nodeToMove.getNodeRef(); nodeToMove.setStore(store); NodeRef newNodeRef = nodeToMove.getNodeRef(); diff --git a/source/java/org/alfresco/repo/node/integrity/AssocTargetRoleIntegrityEvent.java b/source/java/org/alfresco/repo/node/integrity/AssocTargetRoleIntegrityEvent.java index 0c20187fa8..45fbce5a69 100644 --- a/source/java/org/alfresco/repo/node/integrity/AssocTargetRoleIntegrityEvent.java +++ b/source/java/org/alfresco/repo/node/integrity/AssocTargetRoleIntegrityEvent.java @@ -98,7 +98,7 @@ public class AssocTargetRoleIntegrityEvent extends AbstractIntegrityEvent if (assocRoleQName != null) { // the assoc defines a role name - check it - RegexQNamePattern rolePattern = new RegexQNamePattern(assocRoleQName.toString()); + RegexQNamePattern rolePattern = new RegexQNamePattern(assocRoleQName.getNamespaceURI(), assocRoleQName.getLocalName()); if (!rolePattern.isMatch(assocQName)) { IntegrityRecord result = new IntegrityRecord( diff --git a/source/java/org/alfresco/service/cmr/dictionary/InvalidTypeException.java b/source/java/org/alfresco/service/cmr/dictionary/InvalidTypeException.java index 0e92cc4761..a629e3354f 100644 --- a/source/java/org/alfresco/service/cmr/dictionary/InvalidTypeException.java +++ b/source/java/org/alfresco/service/cmr/dictionary/InvalidTypeException.java @@ -38,7 +38,7 @@ public class InvalidTypeException extends InvalidClassException public InvalidTypeException(QName typeName) { - super(null, typeName); + super("Invalid type: " + typeName, typeName); } public InvalidTypeException(String msg, QName typeName)