REPO-5117: Node move event - primary parent only (#991)

REPO-5117: Node move event - primary parent only
This commit is contained in:
Chris Shields
2020-05-15 10:18:22 +01:00
committed by GitHub
parent df5f2dab77
commit 2399f46fc1
4 changed files with 43 additions and 1 deletions

View File

@@ -33,6 +33,7 @@ import java.util.Date;
import java.util.Deque;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -64,6 +65,7 @@ public class EventConsolidator implements EventSupportedPolicies
private Map<QName, Serializable> propertiesAfter;
private NodeRef nodeRef;
private QName nodeType;
private List<String> primaryHierarchyBefore;
public EventConsolidator(NodeResourceHelper nodeResourceHelper)
{
@@ -144,6 +146,15 @@ public class EventConsolidator implements EventSupportedPolicies
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
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()
{
if (resourceBuilder == null)
@@ -265,6 +285,11 @@ public class EventConsolidator implements EventSupportedPolicies
builder.setAspectNames(aspectsBefore);
}
if (primaryHierarchyBefore != null && !primaryHierarchyBefore.isEmpty())
{
builder.setPrimaryHierarchy(primaryHierarchyBefore);
}
return builder.build();
}

View File

@@ -39,6 +39,7 @@ import org.alfresco.repo.event2.filter.NodeTypeFilter;
import org.alfresco.repo.node.NodeServicePolicies.BeforeDeleteNodePolicy;
import org.alfresco.repo.node.NodeServicePolicies.OnAddAspectPolicy;
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.OnUpdatePropertiesPolicy;
import org.alfresco.repo.policy.JavaBehaviour;
@@ -119,6 +120,8 @@ public class EventGenerator extends AbstractLifecycleBean implements Initializin
new JavaBehaviour(this, "onAddAspect"));
policyComponent.bindClassBehaviour(OnRemoveAspectPolicy.QNAME, this,
new JavaBehaviour(this, "onRemoveAspect"));
policyComponent.bindClassBehaviour(OnMoveNodePolicy.QNAME, this,
new JavaBehaviour(this, "onMoveNode"));
}
public void setPolicyComponent(PolicyComponent policyComponent)
@@ -172,6 +175,12 @@ public class EventGenerator extends AbstractLifecycleBean implements Initializin
getEventConsolidator(childAssocRef.getChildRef()).onCreateNode(childAssocRef);
}
@Override
public void onMoveNode(ChildAssociationRef oldChildAssocRef, ChildAssociationRef newChildAssocRef)
{
getEventConsolidator(newChildAssocRef.getChildRef()).onMoveNode(oldChildAssocRef, newChildAssocRef);
}
@Override
public void onUpdateProperties(NodeRef nodeRef, Map<QName, Serializable> before, Map<QName, Serializable> after)
{

View File

@@ -37,6 +37,7 @@ public interface EventSupportedPolicies extends NodeServicePolicies.OnCreateNode
NodeServicePolicies.OnUpdatePropertiesPolicy,
NodeServicePolicies.BeforeDeleteNodePolicy,
NodeServicePolicies.OnAddAspectPolicy,
NodeServicePolicies.OnRemoveAspectPolicy
NodeServicePolicies.OnRemoveAspectPolicy,
NodeServicePolicies.OnMoveNodePolicy
{
}

View File

@@ -31,6 +31,7 @@ import java.time.ZonedDateTime;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -274,4 +275,10 @@ public class NodeResourceHelper
{
return mapToNodeAspects(nodeService.getAspects(nodeRef));
}
public List<String> getPrimaryHierarchy(NodeRef nodeRef, boolean showLeaf)
{
final Path path = nodeService.getPath(nodeRef);
return PathUtil.getNodeIdsInReverse(path, showLeaf);
}
}