diff --git a/source/java/org/alfresco/repo/audit/AuditableAspectTest.java b/source/java/org/alfresco/repo/audit/AuditableAspectTest.java index 82479054aa..701e1c805b 100644 --- a/source/java/org/alfresco/repo/audit/AuditableAspectTest.java +++ b/source/java/org/alfresco/repo/audit/AuditableAspectTest.java @@ -39,6 +39,7 @@ import org.alfresco.service.namespace.QName; import org.alfresco.service.transaction.TransactionService; import org.alfresco.util.ApplicationContextHelper; import org.alfresco.util.debug.NodeStoreInspector; +import org.apache.chemistry.tck.atompub.fixture.AssertNotExistVisitor; import org.springframework.context.ApplicationContext; /** @@ -259,8 +260,12 @@ public class AuditableAspectTest extends TestCase // Now modify the node so that the auditable values advance nodeService.setProperty(nodeRef, ContentModel.PROP_FIRSTNAME, "TEST-FIRST-NAME-" + System.currentTimeMillis()); + String modifiedBy = (String) nodeService.getProperty(nodeRef, ContentModel.PROP_MODIFIER); + assertEquals( + "The modifier should have changed to reflect the current user", + AuthenticationUtil.getRunAsUser(), modifiedBy); - RetryingTransactionCallback setAuditableCallback = new RetryingTransactionCallback() + RetryingTransactionCallback setAuditableCallback1 = new RetryingTransactionCallback() { public Void execute() throws Throwable { @@ -272,7 +277,22 @@ public class AuditableAspectTest extends TestCase return null; } }; - transactionService.getRetryingTransactionHelper().doInTransaction(setAuditableCallback); + transactionService.getRetryingTransactionHelper().doInTransaction(setAuditableCallback1); + // Check + assertAuditableProperties(nodeRef, auditableProps); + + RetryingTransactionCallback setAuditableCallback2 = new RetryingTransactionCallback() + { + public Void execute() throws Throwable + { + behaviourFilter.disableBehaviour(ContentModel.ASPECT_AUDITABLE); // Lasts for txn + // Set some other property and ensure that the cm:auditable does not change + nodeService.setProperty(nodeRef, ContentModel.PROP_FIRSTNAME, "TEST-FIRST-NAME-" + System.currentTimeMillis()); + // Done + return null; + } + }; + transactionService.getRetryingTransactionHelper().doInTransaction(setAuditableCallback2); // Check assertAuditableProperties(nodeRef, auditableProps); } diff --git a/source/java/org/alfresco/repo/domain/node/AbstractNodeDAOImpl.java b/source/java/org/alfresco/repo/domain/node/AbstractNodeDAOImpl.java index 45e6ca5178..067ae98a5b 100644 --- a/source/java/org/alfresco/repo/domain/node/AbstractNodeDAOImpl.java +++ b/source/java/org/alfresco/repo/domain/node/AbstractNodeDAOImpl.java @@ -1600,7 +1600,12 @@ public abstract class AbstractNodeDAOImpl implements NodeDAO, BatchingDAO if (!policyBehaviourFilter.isEnabled(node.getNodeRef(), ContentModel.ASPECT_AUDITABLE)) { auditableProps = new AuditablePropertiesEntity(); - auditableProps.setAuditValues(null, null, newProps); + boolean containedAuditProperties = auditableProps.setAuditValues(null, null, newProps); + if (!containedAuditProperties) + { + // The behaviour is disabled, but no audit properties were passed in + auditableProps = null; + } } // Remove cm:auditable