mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-18 10:37:43 +00:00
Merge pull request #1582 from rcordovano/local_event_pub_restore
Rollback LocalEventPublisher commit f5dd822128878096d79add9bdc4aae703…
This commit is contained in:
commit
68ca2f34ff
@ -19,10 +19,9 @@
|
|||||||
package org.sleuthkit.autopsy.events;
|
package org.sleuthkit.autopsy.events;
|
||||||
|
|
||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
|
|
||||||
@ -43,15 +42,7 @@ final class LocalEventPublisher {
|
|||||||
* this Autopsy node.
|
* this Autopsy node.
|
||||||
*/
|
*/
|
||||||
LocalEventPublisher() {
|
LocalEventPublisher() {
|
||||||
/*
|
subscribersByEvent = new ConcurrentHashMap<>();
|
||||||
* Thread-safety was originally provided through use of a
|
|
||||||
* ConcurrentHashMap as the subscribers by event collection. However,
|
|
||||||
* the semantics of ConcurrentHashMap are such that it was possible for
|
|
||||||
* a subscriber to receive an event after unsubscribing. To eliminate
|
|
||||||
* this possibility, the map was changed to an ordinary map and the
|
|
||||||
* methods of this class were made synchronized instead.
|
|
||||||
*/
|
|
||||||
subscribersByEvent = new HashMap<>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -60,7 +51,7 @@ final class LocalEventPublisher {
|
|||||||
* @param eventNames The events the subscriber is interested in.
|
* @param eventNames The events the subscriber is interested in.
|
||||||
* @param subscriber The subscriber to add.
|
* @param subscriber The subscriber to add.
|
||||||
*/
|
*/
|
||||||
synchronized void addSubscriber(Set<String> eventNames, PropertyChangeListener subscriber) {
|
void addSubscriber(Set<String> eventNames, PropertyChangeListener subscriber) {
|
||||||
for (String eventName : eventNames) {
|
for (String eventName : eventNames) {
|
||||||
addSubscriber(eventName, subscriber);
|
addSubscriber(eventName, subscriber);
|
||||||
}
|
}
|
||||||
@ -72,10 +63,8 @@ final class LocalEventPublisher {
|
|||||||
* @param eventName The event the subscriber is interested in.
|
* @param eventName The event the subscriber is interested in.
|
||||||
* @param subscriber The subscriber to add.
|
* @param subscriber The subscriber to add.
|
||||||
*/
|
*/
|
||||||
synchronized void addSubscriber(String eventName, PropertyChangeListener subscriber) {
|
void addSubscriber(String eventName, PropertyChangeListener subscriber) {
|
||||||
if (!subscribersByEvent.containsKey(eventName)) {
|
subscribersByEvent.putIfAbsent(eventName, ConcurrentHashMap.<PropertyChangeListener>newKeySet());
|
||||||
subscribersByEvent.put(eventName, new HashSet<>());
|
|
||||||
}
|
|
||||||
Set<PropertyChangeListener> subscribers = subscribersByEvent.get(eventName);
|
Set<PropertyChangeListener> subscribers = subscribersByEvent.get(eventName);
|
||||||
subscribers.add(subscriber);
|
subscribers.add(subscriber);
|
||||||
}
|
}
|
||||||
@ -86,7 +75,7 @@ final class LocalEventPublisher {
|
|||||||
* @param eventNames The events the subscriber is no longer interested in.
|
* @param eventNames The events the subscriber is no longer interested in.
|
||||||
* @param subscriber The subscriber to remove.
|
* @param subscriber The subscriber to remove.
|
||||||
*/
|
*/
|
||||||
synchronized void removeSubscriber(Set<String> eventNames, PropertyChangeListener subscriber) {
|
void removeSubscriber(Set<String> eventNames, PropertyChangeListener subscriber) {
|
||||||
for (String eventName : eventNames) {
|
for (String eventName : eventNames) {
|
||||||
removeSubscriber(eventName, subscriber);
|
removeSubscriber(eventName, subscriber);
|
||||||
}
|
}
|
||||||
@ -98,7 +87,7 @@ final class LocalEventPublisher {
|
|||||||
* @param eventNames The event the subscriber is no longer interested in.
|
* @param eventNames The event the subscriber is no longer interested in.
|
||||||
* @param subscriber The subscriber to remove.
|
* @param subscriber The subscriber to remove.
|
||||||
*/
|
*/
|
||||||
synchronized void removeSubscriber(String eventName, PropertyChangeListener subscriber) {
|
void removeSubscriber(String eventName, PropertyChangeListener subscriber) {
|
||||||
Set<PropertyChangeListener> subscribers = subscribersByEvent.getOrDefault(eventName, null);
|
Set<PropertyChangeListener> subscribers = subscribersByEvent.getOrDefault(eventName, null);
|
||||||
if (null != subscribers) {
|
if (null != subscribers) {
|
||||||
subscribers.remove(subscriber);
|
subscribers.remove(subscriber);
|
||||||
@ -111,7 +100,7 @@ final class LocalEventPublisher {
|
|||||||
*
|
*
|
||||||
* @param event The event to be published.
|
* @param event The event to be published.
|
||||||
*/
|
*/
|
||||||
synchronized void publish(AutopsyEvent event) {
|
void publish(AutopsyEvent event) {
|
||||||
Set<PropertyChangeListener> subscribers = subscribersByEvent.getOrDefault(event.getPropertyName(), null);
|
Set<PropertyChangeListener> subscribers = subscribersByEvent.getOrDefault(event.getPropertyName(), null);
|
||||||
if (null != subscribers) {
|
if (null != subscribers) {
|
||||||
for (PropertyChangeListener subscriber : subscribers) {
|
for (PropertyChangeListener subscriber : subscribers) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user