- private void notifyListeners(Entity entity, boolean wasOwner, boolean isOwner, boolean hasOwner,
- Collection<EntityOwnershipListener> listeners) {
- EntityOwnershipChange changed = new EntityOwnershipChange(entity, wasOwner, isOwner, hasOwner);
- for(EntityOwnershipListener listener: listeners) {
- ActorRef listenerActor = listenerActorFor(listener);
-
- LOG.debug("{}: Notifying EntityOwnershipListenerActor {} with {}", logId, listenerActor, changed);
-
- listenerActor.tell(changed, ActorRef.noSender());
+ @Override
+ void notifyEntityOwnershipListeners(final DOMEntity entity, final boolean wasOwner, final boolean isOwner,
+ final boolean hasOwner) {
+ listenerLock.readLock().lock();
+ try {
+ Collection<DOMEntityOwnershipListener> listeners = entityTypeListenerMap.get(entity.getType());
+ if (!listeners.isEmpty()) {
+ notifyListeners(entity, wasOwner, isOwner, hasOwner,
+ listeners.stream().map(listenerActorMap::get).collect(Collectors.toList()));
+ }
+ } finally {
+ listenerLock.readLock().unlock();