diff --git a/config/alfresco/public-services-context.xml b/config/alfresco/public-services-context.xml index d233b8c133..20077ca526 100644 --- a/config/alfresco/public-services-context.xml +++ b/config/alfresco/public-services-context.xml @@ -94,6 +94,7 @@ setProperty + removeProperty diff --git a/source/java/org/alfresco/repo/audit/DisableAuditableBehaviourInterceptor.java b/source/java/org/alfresco/repo/audit/DisableAuditableBehaviourInterceptor.java index 638146487e..a9da506a2e 100644 --- a/source/java/org/alfresco/repo/audit/DisableAuditableBehaviourInterceptor.java +++ b/source/java/org/alfresco/repo/audit/DisableAuditableBehaviourInterceptor.java @@ -83,9 +83,15 @@ public class DisableAuditableBehaviourInterceptor implements MethodInterceptor methodNames.contains(methodName) && (arg1 == null || argumentQNameValues.contains(arg1))) { + Set disabledNodeRefs = new HashSet(); // Avoid nested calls that enable the aspect early for (NodeRef nodeRef : nodes) { - behaviourFilter.disableBehaviour(nodeRef, ContentModel.ASPECT_AUDITABLE); + if (!disabledNodeRefs.contains(nodeRef) && + behaviourFilter.isEnabled(nodeRef, ContentModel.ASPECT_AUDITABLE)) + { + behaviourFilter.disableBehaviour(nodeRef, ContentModel.ASPECT_AUDITABLE); + disabledNodeRefs.add(nodeRef); + } } try { @@ -95,7 +101,10 @@ public class DisableAuditableBehaviourInterceptor implements MethodInterceptor { for (NodeRef nodeRef : nodes) { - behaviourFilter.enableBehaviour(nodeRef, ContentModel.ASPECT_AUDITABLE); + if (disabledNodeRefs.contains(nodeRef)) + { + behaviourFilter.enableBehaviour(nodeRef, ContentModel.ASPECT_AUDITABLE); + } } } }