mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
REPO-5117: Node move event - primary parent only (#991)
REPO-5117: Node move event - primary parent only
This commit is contained in:
@@ -33,6 +33,7 @@ import java.util.Date;
|
|||||||
import java.util.Deque;
|
import java.util.Deque;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@@ -64,6 +65,7 @@ public class EventConsolidator implements EventSupportedPolicies
|
|||||||
private Map<QName, Serializable> propertiesAfter;
|
private Map<QName, Serializable> propertiesAfter;
|
||||||
private NodeRef nodeRef;
|
private NodeRef nodeRef;
|
||||||
private QName nodeType;
|
private QName nodeType;
|
||||||
|
private List<String> primaryHierarchyBefore;
|
||||||
|
|
||||||
public EventConsolidator(NodeResourceHelper nodeResourceHelper)
|
public EventConsolidator(NodeResourceHelper nodeResourceHelper)
|
||||||
{
|
{
|
||||||
@@ -144,6 +146,15 @@ public class EventConsolidator implements EventSupportedPolicies
|
|||||||
setAfterProperties(helper.getProperties(nodeRef));
|
setAfterProperties(helper.getProperties(nodeRef));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMoveNode(ChildAssociationRef oldChildAssocRef, ChildAssociationRef newChildAssocRef)
|
||||||
|
{
|
||||||
|
eventTypes.add(EventType.NODE_UPDATED);
|
||||||
|
|
||||||
|
createBuilderIfAbsent(newChildAssocRef.getChildRef());
|
||||||
|
setBeforePrimaryHierarchy(helper.getPrimaryHierarchy(oldChildAssocRef.getParentRef(), true));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onUpdateProperties(NodeRef nodeRef, Map<QName, Serializable> before, Map<QName, Serializable> after)
|
public void onUpdateProperties(NodeRef nodeRef, Map<QName, Serializable> before, Map<QName, Serializable> after)
|
||||||
{
|
{
|
||||||
@@ -196,6 +207,15 @@ public class EventConsolidator implements EventSupportedPolicies
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setBeforePrimaryHierarchy(List<String> before)
|
||||||
|
{
|
||||||
|
// Don't overwrite the original value if there are multiple calls.
|
||||||
|
if (primaryHierarchyBefore == null)
|
||||||
|
{
|
||||||
|
primaryHierarchyBefore = before;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private NodeResource buildNodeResource()
|
private NodeResource buildNodeResource()
|
||||||
{
|
{
|
||||||
if (resourceBuilder == null)
|
if (resourceBuilder == null)
|
||||||
@@ -265,6 +285,11 @@ public class EventConsolidator implements EventSupportedPolicies
|
|||||||
builder.setAspectNames(aspectsBefore);
|
builder.setAspectNames(aspectsBefore);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (primaryHierarchyBefore != null && !primaryHierarchyBefore.isEmpty())
|
||||||
|
{
|
||||||
|
builder.setPrimaryHierarchy(primaryHierarchyBefore);
|
||||||
|
}
|
||||||
|
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -39,6 +39,7 @@ import org.alfresco.repo.event2.filter.NodeTypeFilter;
|
|||||||
import org.alfresco.repo.node.NodeServicePolicies.BeforeDeleteNodePolicy;
|
import org.alfresco.repo.node.NodeServicePolicies.BeforeDeleteNodePolicy;
|
||||||
import org.alfresco.repo.node.NodeServicePolicies.OnAddAspectPolicy;
|
import org.alfresco.repo.node.NodeServicePolicies.OnAddAspectPolicy;
|
||||||
import org.alfresco.repo.node.NodeServicePolicies.OnCreateNodePolicy;
|
import org.alfresco.repo.node.NodeServicePolicies.OnCreateNodePolicy;
|
||||||
|
import org.alfresco.repo.node.NodeServicePolicies.OnMoveNodePolicy;
|
||||||
import org.alfresco.repo.node.NodeServicePolicies.OnRemoveAspectPolicy;
|
import org.alfresco.repo.node.NodeServicePolicies.OnRemoveAspectPolicy;
|
||||||
import org.alfresco.repo.node.NodeServicePolicies.OnUpdatePropertiesPolicy;
|
import org.alfresco.repo.node.NodeServicePolicies.OnUpdatePropertiesPolicy;
|
||||||
import org.alfresco.repo.policy.JavaBehaviour;
|
import org.alfresco.repo.policy.JavaBehaviour;
|
||||||
@@ -119,6 +120,8 @@ public class EventGenerator extends AbstractLifecycleBean implements Initializin
|
|||||||
new JavaBehaviour(this, "onAddAspect"));
|
new JavaBehaviour(this, "onAddAspect"));
|
||||||
policyComponent.bindClassBehaviour(OnRemoveAspectPolicy.QNAME, this,
|
policyComponent.bindClassBehaviour(OnRemoveAspectPolicy.QNAME, this,
|
||||||
new JavaBehaviour(this, "onRemoveAspect"));
|
new JavaBehaviour(this, "onRemoveAspect"));
|
||||||
|
policyComponent.bindClassBehaviour(OnMoveNodePolicy.QNAME, this,
|
||||||
|
new JavaBehaviour(this, "onMoveNode"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPolicyComponent(PolicyComponent policyComponent)
|
public void setPolicyComponent(PolicyComponent policyComponent)
|
||||||
@@ -172,6 +175,12 @@ public class EventGenerator extends AbstractLifecycleBean implements Initializin
|
|||||||
getEventConsolidator(childAssocRef.getChildRef()).onCreateNode(childAssocRef);
|
getEventConsolidator(childAssocRef.getChildRef()).onCreateNode(childAssocRef);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMoveNode(ChildAssociationRef oldChildAssocRef, ChildAssociationRef newChildAssocRef)
|
||||||
|
{
|
||||||
|
getEventConsolidator(newChildAssocRef.getChildRef()).onMoveNode(oldChildAssocRef, newChildAssocRef);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onUpdateProperties(NodeRef nodeRef, Map<QName, Serializable> before, Map<QName, Serializable> after)
|
public void onUpdateProperties(NodeRef nodeRef, Map<QName, Serializable> before, Map<QName, Serializable> after)
|
||||||
{
|
{
|
||||||
|
@@ -37,6 +37,7 @@ public interface EventSupportedPolicies extends NodeServicePolicies.OnCreateNode
|
|||||||
NodeServicePolicies.OnUpdatePropertiesPolicy,
|
NodeServicePolicies.OnUpdatePropertiesPolicy,
|
||||||
NodeServicePolicies.BeforeDeleteNodePolicy,
|
NodeServicePolicies.BeforeDeleteNodePolicy,
|
||||||
NodeServicePolicies.OnAddAspectPolicy,
|
NodeServicePolicies.OnAddAspectPolicy,
|
||||||
NodeServicePolicies.OnRemoveAspectPolicy
|
NodeServicePolicies.OnRemoveAspectPolicy,
|
||||||
|
NodeServicePolicies.OnMoveNodePolicy
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@@ -31,6 +31,7 @@ import java.time.ZonedDateTime;
|
|||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@@ -274,4 +275,10 @@ public class NodeResourceHelper
|
|||||||
{
|
{
|
||||||
return mapToNodeAspects(nodeService.getAspects(nodeRef));
|
return mapToNodeAspects(nodeService.getAspects(nodeRef));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<String> getPrimaryHierarchy(NodeRef nodeRef, boolean showLeaf)
|
||||||
|
{
|
||||||
|
final Path path = nodeService.getPath(nodeRef);
|
||||||
|
return PathUtil.getNodeIdsInReverse(path, showLeaf);
|
||||||
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user