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.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();
|
||||
}
|
||||
|
||||
|
@@ -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)
|
||||
{
|
||||
|
@@ -37,6 +37,7 @@ public interface EventSupportedPolicies extends NodeServicePolicies.OnCreateNode
|
||||
NodeServicePolicies.OnUpdatePropertiesPolicy,
|
||||
NodeServicePolicies.BeforeDeleteNodePolicy,
|
||||
NodeServicePolicies.OnAddAspectPolicy,
|
||||
NodeServicePolicies.OnRemoveAspectPolicy
|
||||
NodeServicePolicies.OnRemoveAspectPolicy,
|
||||
NodeServicePolicies.OnMoveNodePolicy
|
||||
{
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user