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,
org.springframework.transaction.PlatformTransactionManager transactionManager) |
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, org.springframework.transaction.PlatformTransactionManager transactionManager)
@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.ApplicationListener
Copyright © 2003–2020 Atlassian. All rights reserved.