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 |
onApplicationEvent(org.springframework.context.ApplicationEvent event)
Handles cluster events from other nodes.
|
public ConfluenceDirectoryEventListener(ClusterManager clusterManager, com.atlassian.event.api.EventPublisher eventPublisher)
@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)
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.ApplicationListener
Copyright © 2003–2015 Atlassian. All rights reserved.