mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
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:
@@ -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;
|
||||||
|
@@ -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)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user