public final class ConfluenceDirectoryEventListener extends Object implements org.springframework.context.ApplicationListener
DirectoryUpdatedEvent and DirectoryDeletedEvent to other nodes in a cluster
to trigger the relevant updates to caches and directory monitors on each node.
When this listener receives one of those events, it is wrapped and republished via ClusterManager.publishEvent(ConfluenceEvent).
The same listener on the other nodes receives the cluster wrapper event, unwraps the original event and republishes it.
Republished events have a null source to distinguish them from original events occurring on the the local node.
| Modifier and Type | Class and Description |
|---|---|
static class |
ConfluenceDirectoryEventListener.ClusterDirectoryDeletedEvent |
protected static class |
ConfluenceDirectoryEventListener.ClusterDirectoryEvent
Crowd's event classes are not Serializable, so we need to extract the event class and directory, then
reconstruct the event on the other nodes.
|
static class |
ConfluenceDirectoryEventListener.ClusterDirectoryUpdatedEvent |
| Constructor and Description |
|---|
ConfluenceDirectoryEventListener(ClusterManager clusterManager,
com.atlassian.event.api.EventPublisher eventPublisher) |
| Modifier and Type | Method and Description |
|---|---|
void |
handleEventOnThisNode(com.atlassian.crowd.event.directory.DirectoryDeletedEvent directoryDeletedEvent)
Handles directory modification events on the current node, republishing this to other nodes in
the cluster once the current transaction is complete.
|
void |
handleEventOnThisNode(com.atlassian.crowd.event.directory.DirectoryUpdatedEvent directoryUpdatedEvent)
Handles directory modification events on the current node, republishing this to other nodes in
the cluster once the current transaction is complete.
|
void |
init() |
void |
onApplicationEvent(org.springframework.context.ApplicationEvent event)
Handles cluster events from other nodes.
|
public ConfluenceDirectoryEventListener(ClusterManager clusterManager, com.atlassian.event.api.EventPublisher eventPublisher)
@PostConstruct public void init()
@EventListener public void handleEventOnThisNode(com.atlassian.crowd.event.directory.DirectoryDeletedEvent directoryDeletedEvent)
@EventListener public void handleEventOnThisNode(com.atlassian.crowd.event.directory.DirectoryUpdatedEvent directoryUpdatedEvent)
public void onApplicationEvent(org.springframework.context.ApplicationEvent event)
Assumes that the call to ClusterManager.publishEvent(ConfluenceEvent) above actually ends up
invoking the legacy EventManager on all nodes to publish a Spring ApplicationEvent with the
relevant information.
onApplicationEvent in interface org.springframework.context.ApplicationListenerCopyright © 2003–2016 Atlassian. All rights reserved.