Fixed ALF-4117: NodeDAO: Allow cm:auditable to be set

- Prevents regression of ALF-2565: Allow cm:auditable values to be set programmatically
 - Prevents regression of ALF-3569: Alfresco repository CIFS driver not setting timestamps


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@21939 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2010-08-23 14:55:07 +00:00
parent 88317ea7ab
commit 26eb271ff9
2 changed files with 23 additions and 11 deletions

View File

@@ -39,7 +39,6 @@ import org.alfresco.service.namespace.QName;
import org.alfresco.service.transaction.TransactionService; import org.alfresco.service.transaction.TransactionService;
import org.alfresco.util.ApplicationContextHelper; import org.alfresco.util.ApplicationContextHelper;
import org.alfresco.util.debug.NodeStoreInspector; import org.alfresco.util.debug.NodeStoreInspector;
import org.apache.chemistry.tck.atompub.fixture.AssertNotExistVisitor;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
/** /**
@@ -228,9 +227,11 @@ public class AuditableAspectTest extends TestCase
} }
/** /**
* ALF-2565: Allow cm:auditable values to be set programmatically * ALF-2565: Allow cm:auditable values to be set programmatically<br/>
* ALF-4117: NodeDAO: Allow cm:auditable to be set
* ALF-3569: Alfresco repository CIFS driver not setting timestamps
*/ */
public void testCreateNodeWithAuditableProperties_ALF_2565() public void testCreateAndUpdateAuditableProperties()
{ {
// Create a person (which doesn't have auditable capability by default) // Create a person (which doesn't have auditable capability by default)
Map<QName, Serializable> personProps = new HashMap<QName, Serializable>(); Map<QName, Serializable> personProps = new HashMap<QName, Serializable>();
@@ -271,7 +272,11 @@ public class AuditableAspectTest extends TestCase
{ {
behaviourFilter.disableBehaviour(ContentModel.ASPECT_AUDITABLE); // Lasts for txn behaviourFilter.disableBehaviour(ContentModel.ASPECT_AUDITABLE); // Lasts for txn
// Set the auditable properties explicitly // Set the auditable properties explicitly
auditableProps.put(ContentModel.PROP_MODIFIER, "ThisUser"); Long currentTime = System.currentTimeMillis();
auditableProps.put(ContentModel.PROP_CREATOR, "Creator-" +currentTime);
auditableProps.put(ContentModel.PROP_CREATED, new Date(currentTime - 1000L));
auditableProps.put(ContentModel.PROP_MODIFIER, "Modifier-" + currentTime);
auditableProps.put(ContentModel.PROP_MODIFIED, new Date(currentTime - 1000L));
nodeService.addProperties(nodeRef, auditableProps); nodeService.addProperties(nodeRef, auditableProps);
// Done // Done
return null; return null;

View File

@@ -1269,13 +1269,15 @@ public abstract class AbstractNodeDAOImpl implements NodeDAO, BatchingDAO
if (auditableProps != null) if (auditableProps != null)
{ {
nodeUpdate.setAuditableProperties(auditableProps); nodeUpdate.setAuditableProperties(auditableProps);
nodeUpdate.setUpdateAuditableProperties(true);
} }
} }
// else else
// { {
// // SAIL-390: NodeDAO: Allow cm:auditable to be set // ALF-4117: NodeDAO: Allow cm:auditable to be set
// // The nodeUpdate had auditable properties set, so we just use that directly // The nodeUpdate had auditable properties set, so we just use that directly
// } nodeUpdate.setUpdateAuditableProperties(true);
}
} }
else else
{ {
@@ -1582,7 +1584,8 @@ public abstract class AbstractNodeDAOImpl implements NodeDAO, BatchingDAO
* <tt>false</tt> if the properties are a complete set * <tt>false</tt> if the properties are a complete set
* @return Returns <tt>true</tt> if any properties were changed * @return Returns <tt>true</tt> if any properties were changed
*/ */
private boolean setNodePropertiesImpl(Long nodeId, private boolean setNodePropertiesImpl(
Long nodeId,
Map<QName, Serializable> newProps, Map<QName, Serializable> newProps,
boolean isAddOnly) boolean isAddOnly)
{ {
@@ -1599,7 +1602,11 @@ public abstract class AbstractNodeDAOImpl implements NodeDAO, BatchingDAO
AuditablePropertiesEntity auditableProps = null; AuditablePropertiesEntity auditableProps = null;
if (!policyBehaviourFilter.isEnabled(node.getNodeRef(), ContentModel.ASPECT_AUDITABLE)) if (!policyBehaviourFilter.isEnabled(node.getNodeRef(), ContentModel.ASPECT_AUDITABLE))
{ {
auditableProps = new AuditablePropertiesEntity(); auditableProps = node.getAuditableProperties();
if (auditableProps == null)
{
auditableProps = new AuditablePropertiesEntity();
}
boolean containedAuditProperties = auditableProps.setAuditValues(null, null, newProps); boolean containedAuditProperties = auditableProps.setAuditValues(null, null, newProps);
if (!containedAuditProperties) if (!containedAuditProperties)
{ {