diff options
author | Roberto E. Escobar | 2012-04-13 21:22:06 +0000 |
---|---|---|
committer | Roberto E. Escobar | 2012-04-13 21:22:06 +0000 |
commit | f97e58b2c70927a2c896a06d99027ac0b760686f (patch) | |
tree | 2301a90de231e1962c7b765a7abc68ad42cf5440 /plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event | |
parent | c3d840e4703cb62d9db92362b737a7f1c7f8ed46 (diff) | |
download | org.eclipse.osee-f97e58b2c70927a2c896a06d99027ac0b760686f.tar.gz org.eclipse.osee-f97e58b2c70927a2c896a06d99027ac0b760686f.tar.xz org.eclipse.osee-f97e58b2c70927a2c896a06d99027ac0b760686f.zip |
feature[ats_VGR8B]: Convert messaging event res to DS
Diffstat (limited to 'plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event')
5 files changed, 127 insertions, 123 deletions
diff --git a/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/IOseeCoreModelEventService.java b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/IOseeCoreModelEventService.java index 7b9f383bfab..fec36860eb2 100644 --- a/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/IOseeCoreModelEventService.java +++ b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/IOseeCoreModelEventService.java @@ -18,13 +18,13 @@ import org.eclipse.osee.framework.messaging.ConnectionListener; */ public interface IOseeCoreModelEventService { - void addFrameworkListener(IFrameworkEventListener frameworkEventListener); + void addFrameworkListener(IFrameworkEventListener frameworkEventListener) throws OseeCoreException; - void removeFrameworkListener(IFrameworkEventListener frameworkEventListener); + void removeFrameworkListener(IFrameworkEventListener frameworkEventListener) throws OseeCoreException; - void addConnectionListener(ConnectionListener connectionListener); + void addConnectionListener(ConnectionListener connectionListener) throws OseeCoreException; - void removeConnectionListener(ConnectionListener connectionListener); + void removeConnectionListener(ConnectionListener connectionListener) throws OseeCoreException; void sendRemoteEvent(RemoteEvent remoteEvent) throws OseeCoreException; diff --git a/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/Activator.java b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/Activator.java deleted file mode 100644 index 664ff1b2fde..00000000000 --- a/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/Activator.java +++ /dev/null @@ -1,35 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2007 Boeing. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Boeing - initial API and implementation - *******************************************************************************/ -package org.eclipse.osee.framework.messaging.event.res.internal; - -import org.eclipse.osee.framework.core.util.ServiceDependencyTracker; -import org.eclipse.osee.framework.jdk.core.util.Lib; -import org.osgi.framework.BundleActivator; -import org.osgi.framework.BundleContext; - -/** - * @author Donald G. Dunne - */ -public class Activator implements BundleActivator { - - private ServiceDependencyTracker tracker; - - @Override - public void start(BundleContext context) throws Exception { - tracker = new ServiceDependencyTracker(context, new OseeCoreModelEventServiceRegHandler()); - tracker.open(); - } - - @Override - public void stop(BundleContext context) throws Exception { - Lib.close(tracker); - } -}
\ No newline at end of file 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); diff --git a/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/OseeCoreModelEventServiceProxy.java b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/OseeCoreModelEventServiceProxy.java new file mode 100644 index 00000000000..7e6243387ed --- /dev/null +++ b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/OseeCoreModelEventServiceProxy.java @@ -0,0 +1,90 @@ +/******************************************************************************* + * Copyright (c) 2010 Boeing. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Boeing - initial API and implementation + *******************************************************************************/ +package org.eclipse.osee.framework.messaging.event.res.internal; + +import java.util.HashMap; +import java.util.Map; +import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.core.util.Conditions; +import org.eclipse.osee.framework.messaging.ConnectionListener; +import org.eclipse.osee.framework.messaging.MessageService; +import org.eclipse.osee.framework.messaging.event.res.IFrameworkEventListener; +import org.eclipse.osee.framework.messaging.event.res.IOseeCoreModelEventService; +import org.eclipse.osee.framework.messaging.event.res.RemoteEvent; + +/** + * @author Roberto E. Escobar + */ +public class OseeCoreModelEventServiceProxy implements IOseeCoreModelEventService { + + private MessageService messageService; + private IOseeCoreModelEventService proxiedService; + + public void setMessageService(MessageService messageService) { + this.messageService = messageService; + } + + private IOseeCoreModelEventService getProxiedService() { + return proxiedService; + } + + public void start() { + Map<ResMessages, Boolean> eventMessageConfig = new HashMap<ResMessages, Boolean>(); + + eventMessageConfig.put(ResMessages.RemoteAccessControlEvent1, Boolean.TRUE); + eventMessageConfig.put(ResMessages.RemoteBranchEvent1, Boolean.TRUE); + eventMessageConfig.put(ResMessages.RemoteBroadcastEvent1, Boolean.TRUE); + eventMessageConfig.put(ResMessages.RemotePersistEvent1, Boolean.FALSE); + eventMessageConfig.put(ResMessages.RemoteTransactionEvent1, Boolean.TRUE); + + proxiedService = new OseeCoreModelEventServiceImpl(messageService, eventMessageConfig); + } + + public void stop() { + proxiedService = null; + } + + private void checkInitialized() throws OseeCoreException { + Conditions.checkNotNull(getProxiedService(), + "IOseeCoreModelEventService was not initialized correctly. Make sure start() was called"); + } + + @Override + public void addFrameworkListener(IFrameworkEventListener frameworkEventListener) throws OseeCoreException { + checkInitialized(); + getProxiedService().addFrameworkListener(frameworkEventListener); + } + + @Override + public void removeFrameworkListener(IFrameworkEventListener frameworkEventListener) throws OseeCoreException { + checkInitialized(); + getProxiedService().removeFrameworkListener(frameworkEventListener); + } + + @Override + public void addConnectionListener(ConnectionListener connectionListener) throws OseeCoreException { + checkInitialized(); + getProxiedService().addConnectionListener(connectionListener); + } + + @Override + public void removeConnectionListener(ConnectionListener connectionListener) throws OseeCoreException { + checkInitialized(); + getProxiedService().removeConnectionListener(connectionListener); + } + + @Override + public void sendRemoteEvent(RemoteEvent remoteEvent) throws OseeCoreException { + checkInitialized(); + getProxiedService().sendRemoteEvent(remoteEvent); + } + +} diff --git a/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/OseeCoreModelEventServiceRegHandler.java b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/OseeCoreModelEventServiceRegHandler.java deleted file mode 100644 index dafdab435ca..00000000000 --- a/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/OseeCoreModelEventServiceRegHandler.java +++ /dev/null @@ -1,67 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 Boeing. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Boeing - initial API and implementation - *******************************************************************************/ -package org.eclipse.osee.framework.messaging.event.res.internal; - -import java.util.HashMap; -import java.util.Map; -import java.util.logging.Level; -import org.eclipse.osee.framework.core.exception.OseeCoreException; -import org.eclipse.osee.framework.core.util.AbstractTrackingHandler; -import org.eclipse.osee.framework.logging.OseeLog; -import org.eclipse.osee.framework.messaging.ConnectionNode; -import org.eclipse.osee.framework.messaging.MessageService; -import org.eclipse.osee.framework.messaging.event.res.IOseeCoreModelEventService; -import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceRegistration; - -/** - * @author Roberto E. Escobar - */ -public class OseeCoreModelEventServiceRegHandler extends AbstractTrackingHandler { - - private static final Class<?>[] DEPENDENCIES = new Class<?>[] {MessageService.class}; - - private final Map<ResMessages, Boolean> eventMessageConfig = new HashMap<ResMessages, Boolean>(); - private ServiceRegistration registration; - - public OseeCoreModelEventServiceRegHandler() { - eventMessageConfig.put(ResMessages.RemoteAccessControlEvent1, Boolean.TRUE); - eventMessageConfig.put(ResMessages.RemoteBranchEvent1, Boolean.TRUE); - eventMessageConfig.put(ResMessages.RemoteBroadcastEvent1, Boolean.TRUE); - eventMessageConfig.put(ResMessages.RemotePersistEvent1, Boolean.FALSE); - eventMessageConfig.put(ResMessages.RemoteTransactionEvent1, Boolean.TRUE); - } - - @Override - public Class<?>[] getDependencies() { - return DEPENDENCIES; - } - - @Override - public void onActivate(BundleContext context, Map<Class<?>, Object> services) { - MessageService messageService = getService(MessageService.class, services); - try { - ConnectionNode connectionNode = messageService.getDefault(); - IOseeCoreModelEventService service = new OseeCoreModelEventServiceImpl(connectionNode, eventMessageConfig); - registration = context.registerService(IOseeCoreModelEventService.class.getName(), service, null); - } catch (OseeCoreException ex) { - OseeLog.log(Activator.class, Level.SEVERE, ex); - } - } - - @Override - public void onDeActivate() { - if (registration != null) { - registration.unregister(); - } - } - -} |