mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Merge pull request #139 from Alfresco/feature/SEARCH-2532_PermissionEvents
SEARCH-2532: Add Permission Update events to be generated from alfres…
This commit is contained in:
@@ -58,7 +58,7 @@ import org.alfresco.service.namespace.QName;
|
|||||||
public class EventConsolidator implements EventSupportedPolicies
|
public class EventConsolidator implements EventSupportedPolicies
|
||||||
{
|
{
|
||||||
private final NodeResourceHelper helper;
|
private final NodeResourceHelper helper;
|
||||||
private final Deque<EventType> eventTypes;
|
protected final Deque<EventType> eventTypes;
|
||||||
private final List<QName> aspectsAdded;
|
private final List<QName> aspectsAdded;
|
||||||
private final List<QName> aspectsRemoved;
|
private final List<QName> aspectsRemoved;
|
||||||
|
|
||||||
@@ -125,7 +125,7 @@ public class EventConsolidator implements EventSupportedPolicies
|
|||||||
* @param forceUpdate if {@code true}, will get the latest node info and ignores
|
* @param forceUpdate if {@code true}, will get the latest node info and ignores
|
||||||
* the existing builder object.
|
* the existing builder object.
|
||||||
*/
|
*/
|
||||||
private void createBuilderIfAbsent(NodeRef nodeRef, boolean forceUpdate)
|
protected void createBuilderIfAbsent(NodeRef nodeRef, boolean forceUpdate)
|
||||||
{
|
{
|
||||||
if (resourceBuilder == null || forceUpdate)
|
if (resourceBuilder == null || forceUpdate)
|
||||||
{
|
{
|
||||||
@@ -140,7 +140,7 @@ public class EventConsolidator implements EventSupportedPolicies
|
|||||||
*
|
*
|
||||||
* @param nodeRef the nodeRef in the txn
|
* @param nodeRef the nodeRef in the txn
|
||||||
*/
|
*/
|
||||||
private void createBuilderIfAbsent(NodeRef nodeRef)
|
protected void createBuilderIfAbsent(NodeRef nodeRef)
|
||||||
{
|
{
|
||||||
createBuilderIfAbsent(nodeRef, false);
|
createBuilderIfAbsent(nodeRef, false);
|
||||||
}
|
}
|
||||||
@@ -491,4 +491,9 @@ public class EventConsolidator implements EventSupportedPolicies
|
|||||||
{
|
{
|
||||||
return resourceBeforeAllFieldsNull;
|
return resourceBeforeAllFieldsNull;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void setResourceBeforeAllFieldsNull(boolean resourceBeforeAllFieldsNull){
|
||||||
|
this.resourceBeforeAllFieldsNull = resourceBeforeAllFieldsNull;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -83,21 +83,21 @@ public class EventGenerator extends AbstractLifecycleBean implements Initializin
|
|||||||
{
|
{
|
||||||
private static final Log LOGGER = LogFactory.getLog(EventGenerator.class);
|
private static final Log LOGGER = LogFactory.getLog(EventGenerator.class);
|
||||||
|
|
||||||
private PolicyComponent policyComponent;
|
protected PolicyComponent policyComponent;
|
||||||
private NodeService nodeService;
|
protected NodeService nodeService;
|
||||||
private NamespaceService namespaceService;
|
private NamespaceService namespaceService;
|
||||||
private DictionaryService dictionaryService;
|
protected DictionaryService dictionaryService;
|
||||||
private DescriptorService descriptorService;
|
private DescriptorService descriptorService;
|
||||||
private EventFilterRegistry eventFilterRegistry;
|
private EventFilterRegistry eventFilterRegistry;
|
||||||
private Event2MessageProducer event2MessageProducer;
|
private Event2MessageProducer event2MessageProducer;
|
||||||
private TransactionService transactionService;
|
private TransactionService transactionService;
|
||||||
private PersonService personService;
|
private PersonService personService;
|
||||||
private NodeResourceHelper nodeResourceHelper;
|
protected NodeResourceHelper nodeResourceHelper;
|
||||||
|
|
||||||
private NodeTypeFilter nodeTypeFilter;
|
private NodeTypeFilter nodeTypeFilter;
|
||||||
private ChildAssociationTypeFilter childAssociationTypeFilter;
|
private ChildAssociationTypeFilter childAssociationTypeFilter;
|
||||||
private EventUserFilter userFilter;
|
private EventUserFilter userFilter;
|
||||||
private final EventTransactionListener transactionListener = new EventTransactionListener();
|
protected final EventTransactionListener transactionListener = new EventTransactionListener();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterPropertiesSet()
|
public void afterPropertiesSet()
|
||||||
@@ -283,7 +283,7 @@ public class EventGenerator extends AbstractLifecycleBean implements Initializin
|
|||||||
* @return the {@link EventConsolidator} for the supplied {@code nodeRef} from
|
* @return the {@link EventConsolidator} for the supplied {@code nodeRef} from
|
||||||
* the current transaction context.
|
* the current transaction context.
|
||||||
*/
|
*/
|
||||||
private EventConsolidator getEventConsolidator(NodeRef nodeRef)
|
protected EventConsolidator getEventConsolidator(NodeRef nodeRef)
|
||||||
{
|
{
|
||||||
Consolidators consolidators = getTxnConsolidators(transactionListener);
|
Consolidators consolidators = getTxnConsolidators(transactionListener);
|
||||||
Map<NodeRef, EventConsolidator> nodeEvents = consolidators.getNodes();
|
Map<NodeRef, EventConsolidator> nodeEvents = consolidators.getNodes();
|
||||||
@@ -302,7 +302,7 @@ public class EventGenerator extends AbstractLifecycleBean implements Initializin
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private Consolidators getTxnConsolidators(Object resourceKey)
|
protected Consolidators getTxnConsolidators(Object resourceKey)
|
||||||
{
|
{
|
||||||
Consolidators consolidators = AlfrescoTransactionSupport.getResource(resourceKey);
|
Consolidators consolidators = AlfrescoTransactionSupport.getResource(resourceKey);
|
||||||
if (consolidators == null)
|
if (consolidators == null)
|
||||||
@@ -388,7 +388,7 @@ public class EventGenerator extends AbstractLifecycleBean implements Initializin
|
|||||||
//NOOP
|
//NOOP
|
||||||
}
|
}
|
||||||
|
|
||||||
private class EventTransactionListener extends TransactionListenerAdapter
|
protected class EventTransactionListener extends TransactionListenerAdapter
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public void afterCommit()
|
public void afterCommit()
|
||||||
@@ -425,7 +425,7 @@ public class EventGenerator extends AbstractLifecycleBean implements Initializin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendEvent(NodeRef nodeRef, EventConsolidator consolidator)
|
protected void sendEvent(NodeRef nodeRef, EventConsolidator consolidator)
|
||||||
{
|
{
|
||||||
if (consolidator.isTemporaryNode())
|
if (consolidator.isTemporaryNode())
|
||||||
{
|
{
|
||||||
@@ -466,7 +466,7 @@ public class EventGenerator extends AbstractLifecycleBean implements Initializin
|
|||||||
logAndSendEvent(event, consolidator.getEventTypes());
|
logAndSendEvent(event, consolidator.getEventTypes());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendEvent(ChildAssociationRef childAssociationRef, ChildAssociationEventConsolidator consolidator)
|
protected void sendEvent(ChildAssociationRef childAssociationRef, ChildAssociationEventConsolidator consolidator)
|
||||||
{
|
{
|
||||||
if (consolidator.isTemporaryChildAssociation())
|
if (consolidator.isTemporaryChildAssociation())
|
||||||
{
|
{
|
||||||
@@ -506,7 +506,7 @@ public class EventGenerator extends AbstractLifecycleBean implements Initializin
|
|||||||
logAndSendEvent(event, consolidator.getEventTypes());
|
logAndSendEvent(event, consolidator.getEventTypes());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendEvent(AssociationRef peerAssociationRef, PeerAssociationEventConsolidator consolidator)
|
protected void sendEvent(AssociationRef peerAssociationRef, PeerAssociationEventConsolidator consolidator)
|
||||||
{
|
{
|
||||||
if (consolidator.isTemporaryPeerAssociation())
|
if (consolidator.isTemporaryPeerAssociation())
|
||||||
{
|
{
|
||||||
@@ -525,7 +525,7 @@ public class EventGenerator extends AbstractLifecycleBean implements Initializin
|
|||||||
logAndSendEvent(event, consolidator.getEventTypes());
|
logAndSendEvent(event, consolidator.getEventTypes());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void logAndSendEvent(RepoEvent<?> event, Deque<EventType> listOfEvents)
|
protected void logAndSendEvent(RepoEvent<?> event, Deque<EventType> listOfEvents)
|
||||||
{
|
{
|
||||||
if (LOGGER.isTraceEnabled())
|
if (LOGGER.isTraceEnabled())
|
||||||
{
|
{
|
||||||
@@ -542,7 +542,7 @@ public class EventGenerator extends AbstractLifecycleBean implements Initializin
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static class Consolidators
|
protected static class Consolidators
|
||||||
{
|
{
|
||||||
private Map<NodeRef, EventConsolidator> nodes;
|
private Map<NodeRef, EventConsolidator> nodes;
|
||||||
private Map<ChildAssociationRef, ChildAssociationEventConsolidator> childAssocs;
|
private Map<ChildAssociationRef, ChildAssociationEventConsolidator> childAssocs;
|
||||||
|
@@ -43,7 +43,8 @@ public enum EventJSONSchema
|
|||||||
CHILD_ASSOC_CREATED_V1("childAssocCreated", 1, EventType.CHILD_ASSOC_CREATED),
|
CHILD_ASSOC_CREATED_V1("childAssocCreated", 1, EventType.CHILD_ASSOC_CREATED),
|
||||||
CHILD_ASSOC_DELETED_V1("childAssocDeleted", 1, EventType.CHILD_ASSOC_DELETED),
|
CHILD_ASSOC_DELETED_V1("childAssocDeleted", 1, EventType.CHILD_ASSOC_DELETED),
|
||||||
PEER_ASSOC_CREATED_V1("peerAssocCreated", 1 , EventType.PEER_ASSOC_CREATED),
|
PEER_ASSOC_CREATED_V1("peerAssocCreated", 1 , EventType.PEER_ASSOC_CREATED),
|
||||||
PEER_ASSOC_DELETED_V1("peerAssocDeleted", 1 , EventType.PEER_ASSOC_DELETED);
|
PEER_ASSOC_DELETED_V1("peerAssocDeleted", 1 , EventType.PEER_ASSOC_DELETED),
|
||||||
|
PERMISSION_UPDATED_V1("permissionUpdated", 1, EventType.PERMISSION_UPDATED);
|
||||||
|
|
||||||
private static final String PREFIX = "https://api.alfresco.com/schema/event/repo/v";
|
private static final String PREFIX = "https://api.alfresco.com/schema/event/repo/v";
|
||||||
|
|
||||||
|
@@ -34,7 +34,8 @@ public enum EventType
|
|||||||
{
|
{
|
||||||
NODE_CREATED(EventTypeConst.CREATED, ContextType.NODE), NODE_UPDATED(EventTypeConst.UPDATED, ContextType.NODE), NODE_DELETED(EventTypeConst.DELETED, ContextType.NODE),
|
NODE_CREATED(EventTypeConst.CREATED, ContextType.NODE), NODE_UPDATED(EventTypeConst.UPDATED, ContextType.NODE), NODE_DELETED(EventTypeConst.DELETED, ContextType.NODE),
|
||||||
CHILD_ASSOC_CREATED(EventTypeConst.CREATED, ContextType.CHILD_ASSOC), CHILD_ASSOC_DELETED(EventTypeConst.DELETED, ContextType.CHILD_ASSOC),
|
CHILD_ASSOC_CREATED(EventTypeConst.CREATED, ContextType.CHILD_ASSOC), CHILD_ASSOC_DELETED(EventTypeConst.DELETED, ContextType.CHILD_ASSOC),
|
||||||
PEER_ASSOC_CREATED(EventTypeConst.CREATED, ContextType.PEER_ASSOC), PEER_ASSOC_DELETED(EventTypeConst.DELETED, ContextType.PEER_ASSOC);
|
PEER_ASSOC_CREATED(EventTypeConst.CREATED, ContextType.PEER_ASSOC), PEER_ASSOC_DELETED(EventTypeConst.DELETED, ContextType.PEER_ASSOC),
|
||||||
|
PERMISSION_UPDATED(EventTypeConst.UPDATED, ContextType.NODE);
|
||||||
|
|
||||||
private static final String PREFIX = "org.alfresco.event.";
|
private static final String PREFIX = "org.alfresco.event.";
|
||||||
private final String type;
|
private final String type;
|
||||||
|
@@ -52,6 +52,7 @@ import org.alfresco.service.cmr.repository.NodeRef;
|
|||||||
import org.alfresco.service.cmr.repository.NodeService;
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
import org.alfresco.service.cmr.repository.Path;
|
import org.alfresco.service.cmr.repository.Path;
|
||||||
import org.alfresco.service.cmr.security.NoSuchPersonException;
|
import org.alfresco.service.cmr.security.NoSuchPersonException;
|
||||||
|
import org.alfresco.service.cmr.security.PermissionService;
|
||||||
import org.alfresco.service.cmr.security.PersonService;
|
import org.alfresco.service.cmr.security.PersonService;
|
||||||
import org.alfresco.service.namespace.NamespaceException;
|
import org.alfresco.service.namespace.NamespaceException;
|
||||||
import org.alfresco.service.namespace.NamespaceService;
|
import org.alfresco.service.namespace.NamespaceService;
|
||||||
@@ -76,6 +77,7 @@ public class NodeResourceHelper implements InitializingBean
|
|||||||
protected PersonService personService;
|
protected PersonService personService;
|
||||||
protected EventFilterRegistry eventFilterRegistry;
|
protected EventFilterRegistry eventFilterRegistry;
|
||||||
protected NamespaceService namespaceService;
|
protected NamespaceService namespaceService;
|
||||||
|
protected PermissionService permissionService;
|
||||||
|
|
||||||
private NodeAspectFilter nodeAspectFilter;
|
private NodeAspectFilter nodeAspectFilter;
|
||||||
private NodePropertyFilter nodePropertyFilter;
|
private NodePropertyFilter nodePropertyFilter;
|
||||||
@@ -88,6 +90,7 @@ public class NodeResourceHelper implements InitializingBean
|
|||||||
PropertyCheck.mandatory(this, "personService", personService);
|
PropertyCheck.mandatory(this, "personService", personService);
|
||||||
PropertyCheck.mandatory(this, "eventFilterRegistry", eventFilterRegistry);
|
PropertyCheck.mandatory(this, "eventFilterRegistry", eventFilterRegistry);
|
||||||
PropertyCheck.mandatory(this, "namespaceService", namespaceService);
|
PropertyCheck.mandatory(this, "namespaceService", namespaceService);
|
||||||
|
PropertyCheck.mandatory(this, "permissionService", permissionService);
|
||||||
|
|
||||||
this.nodeAspectFilter = eventFilterRegistry.getNodeAspectFilter();
|
this.nodeAspectFilter = eventFilterRegistry.getNodeAspectFilter();
|
||||||
this.nodePropertyFilter = eventFilterRegistry.getNodePropertyFilter();
|
this.nodePropertyFilter = eventFilterRegistry.getNodePropertyFilter();
|
||||||
@@ -108,6 +111,11 @@ public class NodeResourceHelper implements InitializingBean
|
|||||||
this.personService = personService;
|
this.personService = personService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setPermissionService(PermissionService permissionService)
|
||||||
|
{
|
||||||
|
this.permissionService = permissionService;
|
||||||
|
}
|
||||||
|
|
||||||
// To make IntelliJ stop complaining about unused method!
|
// To make IntelliJ stop complaining about unused method!
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public void setEventFilterRegistry(EventFilterRegistry eventFilterRegistry)
|
public void setEventFilterRegistry(EventFilterRegistry eventFilterRegistry)
|
||||||
@@ -316,4 +324,9 @@ public class NodeResourceHelper implements InitializingBean
|
|||||||
final Path path = nodeService.getPath(nodeRef);
|
final Path path = nodeService.getPath(nodeRef);
|
||||||
return PathUtil.getNodeIdsInReverse(path, showLeaf);
|
return PathUtil.getNodeIdsInReverse(path, showLeaf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PermissionService getPermissionService()
|
||||||
|
{
|
||||||
|
return permissionService;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -49,6 +49,7 @@
|
|||||||
<property name="personService" ref="personService"/>
|
<property name="personService" ref="personService"/>
|
||||||
<property name="eventFilterRegistry" ref="event2FilterRegistry"/>
|
<property name="eventFilterRegistry" ref="event2FilterRegistry"/>
|
||||||
<property name="namespaceService" ref="namespaceService"/>
|
<property name="namespaceService" ref="namespaceService"/>
|
||||||
|
<property name="permissionService" ref="permissionService"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="nodeResourceHelper" class="org.alfresco.repo.event2.NodeResourceHelper" parent="baseNodeResourceHelper"/>
|
<bean id="nodeResourceHelper" class="org.alfresco.repo.event2.NodeResourceHelper" parent="baseNodeResourceHelper"/>
|
||||||
|
Reference in New Issue
Block a user