Compare commits

...

1 Commits

Author SHA1 Message Date
Damian Ujma
6e76b119a9 ACS-8668 Add PoC 2024-09-23 15:04:05 +02:00
5 changed files with 38 additions and 2 deletions

View File

@@ -48,6 +48,7 @@ import org.alfresco.repo.event2.filter.ChildAssociationTypeFilter;
import org.alfresco.repo.event2.filter.EventFilterRegistry;
import org.alfresco.repo.event2.filter.EventUserFilter;
import org.alfresco.repo.event2.filter.NodeTypeFilter;
import org.alfresco.repo.node.NodeServicePolicies.BeforeArchiveNodePolicy;
import org.alfresco.repo.node.NodeServicePolicies.BeforeDeleteAssociationPolicy;
import org.alfresco.repo.node.NodeServicePolicies.BeforeDeleteChildAssociationPolicy;
import org.alfresco.repo.node.NodeServicePolicies.BeforeDeleteNodePolicy;
@@ -155,6 +156,7 @@ public class EventGenerator extends AbstractLifecycleBean implements Initializin
{
setClassBehaviour(OnCreateNodePolicy.QNAME, "onCreateNode");
setClassBehaviour(BeforeDeleteNodePolicy.QNAME, "beforeDeleteNode");
setClassBehaviour(BeforeArchiveNodePolicy.QNAME, "beforeArchiveNode");
setClassBehaviour(OnUpdatePropertiesPolicy.QNAME, "onUpdateProperties");
setClassBehaviour(OnSetNodeTypePolicy.QNAME, "onSetNodeType");
setClassBehaviour(OnAddAspectPolicy.QNAME, "onAddAspect");
@@ -549,6 +551,12 @@ public class EventGenerator extends AbstractLifecycleBean implements Initializin
//NOOP
}
@Override
public void beforeArchiveNode(NodeRef nodeRef)
{
getEventConsolidator(nodeRef).beforeArchiveNode(nodeRef);
}
protected class EventTransactionListener extends TransactionListenerAdapter
{
@Override

View File

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

View File

@@ -67,6 +67,7 @@ public class NodeEventConsolidator extends EventConsolidator<NodeRef, NodeResour
private List<String> primaryHierarchyBefore;
private List<String> secondaryParentsBefore;
private boolean resourceBeforeAllFieldsNull = true;
protected boolean isArchived = false;
public NodeEventConsolidator(NodeResourceHelper nodeResourceHelper)
{
@@ -94,6 +95,11 @@ public class NodeEventConsolidator extends EventConsolidator<NodeRef, NodeResour
eventDataBuilder.setResourceBefore(buildNodeResourceBeforeDelta(resource));
}
if (eventType == EventType.NODE_DELETED && !isArchived)
{
eventDataBuilder.setResourceBefore(NodeResource.builder().build());
}
return eventDataBuilder.build();
}
@@ -196,6 +202,14 @@ public class NodeEventConsolidator extends EventConsolidator<NodeRef, NodeResour
createBuilderIfAbsent(nodeRef);
}
@Override
public void beforeArchiveNode(NodeRef nodeRef)
{
eventTypes.add(EventType.NODE_DELETED);
createBuilderIfAbsent(nodeRef);
isArchived = true;
}
@Override
public void onAddAspect(NodeRef nodeRef, QName aspectTypeQName)
{
@@ -515,4 +529,5 @@ public class NodeEventConsolidator extends EventConsolidator<NodeRef, NodeResour
protected void setResourceBeforeAllFieldsNull(boolean resourceBeforeAllFieldsNull){
this.resourceBeforeAllFieldsNull = resourceBeforeAllFieldsNull;
}
}

View File

@@ -111,6 +111,7 @@ public abstract class AbstractNodeServiceImpl implements NodeService
protected TransactionService transactionService;
protected TenantService tenantService;
protected Set<String> storesToIgnorePolicies = Collections.emptySet();
protected String archiveStore;
/*
* Policy delegates
@@ -174,6 +175,11 @@ public abstract class AbstractNodeServiceImpl implements NodeService
this.storesToIgnorePolicies = storesToIgnorePolicies;
}
public void setArchiveStore(String archiveStore)
{
this.archiveStore = archiveStore;
}
/**
* Checks equality by type and uuid
*/
@@ -244,6 +250,11 @@ public abstract class AbstractNodeServiceImpl implements NodeService
{
return (storesToIgnorePolicies.contains(tenantService.getBaseName(nodeRef.getStoreRef()).toString()));
}
private boolean isInArchiveStore(NodeRef nodeRef)
{
return archiveStore.equals(tenantService.getBaseName(nodeRef.getStoreRef()).toString());
}
/**
* @see NodeServicePolicies.BeforeCreateStorePolicy#beforeCreateStore(QName,
@@ -479,7 +490,7 @@ public abstract class AbstractNodeServiceImpl implements NodeService
*/
protected void invokeBeforeDeleteNode(NodeRef nodeRef)
{
if (ignorePolicy(nodeRef))
if (ignorePolicy(nodeRef) && !isInArchiveStore(nodeRef))
{
return;
}

View File

@@ -281,6 +281,7 @@
<ref bean="storesToIgnorePolicies"/>
</property>
<property name="enableTimestampPropagation" value="${system.enableTimestampPropagation}" />
<property name="archiveStore" value="${spaces.archive.store}" />
</bean>
<bean id="nodeAuditor" class="org.alfresco.repo.node.NodeAuditor">