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);
+ }
}
}
}