Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/OseeCoreModelEventServiceImpl.java')
-rw-r--r--plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/OseeCoreModelEventServiceImpl.java50
1 files changed, 33 insertions, 17 deletions
diff --git a/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/OseeCoreModelEventServiceImpl.java b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/OseeCoreModelEventServiceImpl.java
index e3c79050c65..27c0ca5c8e8 100644
--- a/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/OseeCoreModelEventServiceImpl.java
+++ b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/OseeCoreModelEventServiceImpl.java
@@ -11,16 +11,17 @@
package org.eclipse.osee.framework.messaging.event.res.internal;
import java.util.Collection;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
import org.eclipse.osee.framework.jdk.core.type.HashCollection;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.messaging.ConnectionListener;
import org.eclipse.osee.framework.messaging.ConnectionNode;
+import org.eclipse.osee.framework.messaging.MessageService;
import org.eclipse.osee.framework.messaging.OseeMessagingListener;
import org.eclipse.osee.framework.messaging.OseeMessagingStatusCallback;
import org.eclipse.osee.framework.messaging.event.res.IFrameworkEventListener;
@@ -33,15 +34,30 @@ import org.eclipse.osee.framework.messaging.event.res.RemoteEvent;
public class OseeCoreModelEventServiceImpl implements OseeMessagingStatusCallback, IOseeCoreModelEventService {
private final Map<IFrameworkEventListener, HashCollection<ResMessages, OseeMessagingListener>> subscriptions =
- new HashMap<IFrameworkEventListener, HashCollection<ResMessages, OseeMessagingListener>>();
+ new ConcurrentHashMap<IFrameworkEventListener, HashCollection<ResMessages, OseeMessagingListener>>();
+
private final Map<ResMessages, Boolean> messages;
- private final ConnectionNode connectionNode;
+ private final MessageService messageService;
+
+ private ConnectionNode connectionNode;
- public OseeCoreModelEventServiceImpl(ConnectionNode connectionNode, Map<ResMessages, Boolean> messages) {
- this.connectionNode = connectionNode;
+ public OseeCoreModelEventServiceImpl(MessageService messageService, Map<ResMessages, Boolean> messages) {
+ this.messageService = messageService;
this.messages = messages;
}
+ private synchronized ConnectionNode getConnectionNode() {
+ if (connectionNode == null) {
+ try {
+ connectionNode = messageService.getDefault();
+ } catch (OseeCoreException ex) {
+ OseeLog.log(OseeCoreModelEventServiceProxy.class, Level.SEVERE,
+ "Error initializing OseeCoreModelEventServiceProxy");
+ }
+ }
+ return connectionNode;
+ }
+
@Override
public void success() {
// do nothing
@@ -49,20 +65,20 @@ public class OseeCoreModelEventServiceImpl implements OseeMessagingStatusCallbac
@Override
public void fail(Throwable th) {
- OseeLog.log(Activator.class, Level.SEVERE, th);
-
+ OseeLog.log(OseeCoreModelEventServiceImpl.class, Level.SEVERE, th);
}
@Override
public void sendRemoteEvent(RemoteEvent remoteEvent) throws OseeCoreException {
ResMessages resMessage = getResMessageType(remoteEvent);
if (resMessage == null) {
- OseeLog.logf(Activator.class, Level.INFO, "ResEventManager: Unhandled remote event [%s]", resMessage);
- } else if (connectionNode == null) {
- OseeLog.logf(Activator.class, Level.INFO,
+ OseeLog.logf(OseeCoreModelEventServiceImpl.class, Level.INFO, "ResEventManager: Unhandled remote event [%s]",
+ resMessage);
+ } else if (getConnectionNode() == null) {
+ OseeLog.logf(OseeCoreModelEventServiceImpl.class, Level.INFO,
"ResEventManager: Connection node was null - unable to send remote event [%s]", resMessage);
} else {
- connectionNode.send(resMessage, remoteEvent, this);
+ getConnectionNode().send(resMessage, remoteEvent, this);
}
}
@@ -82,17 +98,17 @@ public class OseeCoreModelEventServiceImpl implements OseeMessagingStatusCallbac
@Override
public void addConnectionListener(ConnectionListener connectionListener) {
- connectionNode.addConnectionListener(connectionListener);
+ getConnectionNode().addConnectionListener(connectionListener);
}
@Override
public void removeConnectionListener(ConnectionListener connectionListener) {
- connectionNode.removeConnectionListener(connectionListener);
+ getConnectionNode().removeConnectionListener(connectionListener);
}
@Override
public void addFrameworkListener(IFrameworkEventListener frameworkEventListener) {
- OseeLog.log(Activator.class, Level.INFO, "Registering Client for Remote Events");
+ OseeLog.log(OseeCoreModelEventServiceImpl.class, Level.INFO, "Registering Client for Remote Events");
for (Entry<ResMessages, Boolean> messageEntries : messages.entrySet()) {
ResMessages resMessageID = messageEntries.getKey();
@@ -103,7 +119,7 @@ public class OseeCoreModelEventServiceImpl implements OseeMessagingStatusCallbac
@Override
public void removeFrameworkListener(IFrameworkEventListener frameworkEventListener) {
- OseeLog.log(Activator.class, Level.INFO, "De-Registering Client for Remote Events");
+ OseeLog.log(OseeCoreModelEventServiceImpl.class, Level.INFO, "De-Registering Client for Remote Events");
HashCollection<ResMessages, OseeMessagingListener> listeners = subscriptions.get(frameworkEventListener);
if (listeners != null) {
@@ -111,7 +127,7 @@ public class OseeCoreModelEventServiceImpl implements OseeMessagingStatusCallbac
Collection<OseeMessagingListener> listernerList = listeners.getValues(messageID);
if (listernerList != null) {
for (OseeMessagingListener listener : listernerList) {
- connectionNode.unsubscribe(messageID, listener, this);
+ getConnectionNode().unsubscribe(messageID, listener, this);
}
}
}
@@ -121,7 +137,7 @@ public class OseeCoreModelEventServiceImpl implements OseeMessagingStatusCallbac
private <T extends RemoteEvent> void subscribe(ResMessages messageId, Class<T> clazz, boolean isVerbose, IFrameworkEventListener frameworkEventListener) {
OseeMessagingListener listener = new FrameworkRelayMessagingListener<T>(clazz, frameworkEventListener, isVerbose);
- connectionNode.subscribe(messageId, listener, this);
+ getConnectionNode().subscribe(messageId, listener, this);
HashCollection<ResMessages, OseeMessagingListener> listeners = subscriptions.get(frameworkEventListener);
if (listeners == null) {
listeners = new HashCollection<ResMessages, OseeMessagingListener>(true, HashSet.class);

Back to the top