From a20061ccf13be3b182cf29f4641f8b92f00dec6b Mon Sep 17 00:00:00 2001 From: Mike Hatfield Date: Mon, 19 May 2008 16:00:06 +0000 Subject: [PATCH] Merged V2.2 to HEAD 8630: Merged V2.1 to V2.2 8513: Fixed AR-2157: Integrity checking fails when target roles are present on child associations 8517: Fixed AR-2171: NPE restoring large hierarchy 8519: New workflow description field limited to 100 characters (AWC-1938) 8520: Removed copy of mysql connector to tomcat distribution 8529: Fix for pop-up task panel, when task has due date 8537: Fix for AWC-1951 8538: AR-2141: Problem copying large hierarchical folder structures 8594: Closing of servlet output stream in TemplateContentServlet 8616: Fix for WCM-1134 (editing rich text area, causes relative links to become absolute in IE) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@9168 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../alfresco/repo/copy/CopyServiceImpl.java | 22 ++++++++++++++++++- .../node/archive/NodeArchiveServiceImpl.java | 1 + .../repo/node/db/DbNodeServiceImpl.java | 5 +++++ .../AssocTargetRoleIntegrityEvent.java | 2 +- .../cmr/dictionary/InvalidTypeException.java | 2 +- 5 files changed, 29 insertions(+), 3 deletions(-) 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)