Enhanced 'beforeCreateChildAssociaton' and 'onCreateChildAssociation' to carry an 'isNewNode' flag.

Fixed Lock and Rules to react correctly to this new information.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6003 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2007-06-18 11:29:00 +00:00
parent 832c1b599e
commit 6e0c406488
9 changed files with 106 additions and 45 deletions

View File

@@ -231,6 +231,9 @@ public class IncompleteNodeTagger
}
}
/**
* {@inheritDoc}
*/
public void onCreateNode(ChildAssociationRef childAssocRef)
{
NodeRef nodeRef = childAssocRef.getChildRef();
@@ -238,6 +241,9 @@ public class IncompleteNodeTagger
saveAssoc(nodeRef, null);
}
/**
* {@inheritDoc}
*/
public void onUpdateProperties(
NodeRef nodeRef,
Map<QName, Serializable> before,
@@ -247,6 +253,8 @@ public class IncompleteNodeTagger
}
/**
* {@inheritDoc}
* <p>
* Save the node for checking of properties.
* The {@link org.alfresco.model.ContentModel#ASPECT_INCOMPLETE incomplete} aspect is
* not processed.
@@ -279,20 +287,21 @@ public class IncompleteNodeTagger
}
/**
* @see AssocSourceTypeIntegrityEvent
* @see AssocTargetTypeIntegrityEvent
* @see AssocSourceMultiplicityIntegrityEvent
* @see AssocTargetMultiplicityIntegrityEvent
* @see AssocTargetRoleIntegrityEvent
* {@inheritDoc}
* <p>
* This only saves the node for checking if it is <i>not</i> new. The create of the
* node will handle it.
*/
public void onCreateChildAssociation(ChildAssociationRef childAssocRef)
public void onCreateChildAssociation(ChildAssociationRef childAssocRef, boolean isNew)
{
saveAssoc(childAssocRef.getParentRef(), childAssocRef.getTypeQName());
if (!isNew)
{
saveAssoc(childAssocRef.getParentRef(), childAssocRef.getTypeQName());
}
}
/**
* @see AssocSourceMultiplicityIntegrityEvent
* @see AssocTargetMultiplicityIntegrityEvent
* {@inheritDoc}
*/
public void onDeleteChildAssociation(ChildAssociationRef childAssocRef)
{
@@ -300,10 +309,7 @@ public class IncompleteNodeTagger
}
/**
* @see AssocSourceTypeIntegrityEvent
* @see AssocTargetTypeIntegrityEvent
* @see AssocSourceMultiplicityIntegrityEvent
* @see AssocTargetMultiplicityIntegrityEvent
* {@inheritDoc}
*/
public void onCreateAssociation(AssociationRef nodeAssocRef)
{
@@ -311,8 +317,7 @@ public class IncompleteNodeTagger
}
/**
* @see AssocSourceMultiplicityIntegrityEvent
* @see AssocTargetMultiplicityIntegrityEvent
* {@inheritDoc}
*/
public void onDeleteAssociation(AssociationRef nodeAssocRef)
{

View File

@@ -328,7 +328,7 @@ public class IntegrityChecker
save(event);
// check that the multiplicity and other properties of the new association are allowed
onCreateChildAssociation(childAssocRef);
onCreateChildAssociation(childAssocRef, false);
// check mandatory aspects
event = new AspectsIntegrityEvent(nodeService, dictionaryService, childRef);
@@ -426,14 +426,21 @@ public class IntegrityChecker
}
/**
* This handles the creation of secondary child associations.
*
* @see AssocSourceTypeIntegrityEvent
* @see AssocTargetTypeIntegrityEvent
* @see AssocSourceMultiplicityIntegrityEvent
* @see AssocTargetMultiplicityIntegrityEvent
* @see AssocTargetRoleIntegrityEvent
*/
public void onCreateChildAssociation(ChildAssociationRef childAssocRef)
public void onCreateChildAssociation(ChildAssociationRef childAssocRef, boolean isNew)
{
if (isNew)
{
return;
}
IntegrityEvent event = null;
// check source type
event = new AssocSourceTypeIntegrityEvent(