Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrescobar2010-08-23 19:57:24 +0000
committerrescobar2010-08-23 19:57:24 +0000
commit1378e118ea5006b764c9ea902773456c817e9a50 (patch)
tree00ca2e881f4a72e4e21e37b489017f211a563cfc /plugins
parentf5b90f0676d83705154ef331f32e1a0d5b56d17c (diff)
downloadorg.eclipse.osee-1378e118ea5006b764c9ea902773456c817e9a50.tar.gz
org.eclipse.osee-1378e118ea5006b764c9ea902773456c817e9a50.tar.xz
org.eclipse.osee-1378e118ea5006b764c9ea902773456c817e9a50.zip
Event System registration cleanup
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.osee.framework.messaging.event.res/META-INF/MANIFEST.MF17
-rw-r--r--plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/Activator.java34
-rw-r--r--plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/IOseeCoreModelEventService.java31
-rw-r--r--plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/RemoteEventUtil.java6
-rw-r--r--plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/ResEventManager.java233
-rw-r--r--plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/ResMessagingTracker.java60
-rw-r--r--plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/Activator.java35
-rw-r--r--plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/FrameworkRelayMessagingListener.java82
-rw-r--r--plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/OseeCoreModelEventServiceImpl.java130
-rw-r--r--plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/OseeCoreModelEventServiceRegHandler.java67
-rw-r--r--plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/ResMessages.java (renamed from plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/ResMessages.java)9
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/ArtifactEventFiltersTest.java53
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/ArtifactEventLoopbackTest.java6
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/ArtifactEventTest.java74
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/BranchEventFiltersTest.java27
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/BranchEventLoopbackTest.java6
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/BranchEventTest.java25
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/TransactionEventLoopbackTest.java6
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/TransactionEventTest.java27
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactTransactionData.java2
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/HttpAttributeTaggingListener.java (renamed from plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/HttpAttributeTagger.java)239
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/EventSystemPreferences.java97
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/EventUtil.java87
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/FrameworkTransactionData.java167
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/OseeEventManager.java327
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/RemoteEventManager.java720
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/Sender.java6
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/ArtifactModifiedEvent.java (renamed from plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/ArtifactModifiedEvent.java)4
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/EventManagerData.java58
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/EventManagerFactory.java53
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/FrameworkEventToRemoteEvent2Listener.java (renamed from plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/RemoteEventManager2.java)822
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/FrameworkTransationDataCompacter.java184
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/InternalEventManager2.java (renamed from plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/InternalEventManager2.java)365
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/JiniSkynetEventServiceLookup.java208
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/LegacyEventManager.java (renamed from plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/InternalEventManager.java)319
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/LegacyRemoteEventReceiver.java476
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/RelationModifiedEvent.java (renamed from plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/RelationModifiedEvent.java)4
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/ResMessagingConnectionListener.java63
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event2/ArtifactEvent.java2
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/httpRequests/ClientDashboardRequestHandler.java9
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/Activator.java107
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/ClientCachingServiceRegHandler.java (renamed from plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/ClientCachingServiceFactory.java)53
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/ClientWorkbenchUserRegHandler.java40
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/OseeEventSystemServiceRegHandler.java135
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/SkynetTransactionAccessServiceHandler.java65
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/relation/RelationTransactionData.java2
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/transaction/StoreSkynetTransactionOperation.java2
-rw-r--r--plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactExplorerEventManager.java237
-rw-r--r--plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/OseeContributionItem.java4
-rw-r--r--plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ResServiceContributionItem.java8
-rw-r--r--plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetServiceContributionItem.java5
-rw-r--r--plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/AbstractEventArtifactEditor.java4
-rw-r--r--plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/ArtifactEditorEventManager.java3
-rw-r--r--plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/preferences/ConfigurationDetails.java24
54 files changed, 3152 insertions, 2677 deletions
diff --git a/plugins/org.eclipse.osee.framework.messaging.event.res/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.framework.messaging.event.res/META-INF/MANIFEST.MF
index afa1e4499f9..3d7c51f356c 100644
--- a/plugins/org.eclipse.osee.framework.messaging.event.res/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.osee.framework.messaging.event.res/META-INF/MANIFEST.MF
@@ -4,16 +4,19 @@ Bundle-Name: Framework Event Service (Incubation)
Bundle-SymbolicName: org.eclipse.osee.framework.messaging.event.res;singleton:=true
Bundle-Version: 0.9.5.qualifier
Eclipse-ExtensibleAPI: true
-Bundle-Activator: org.eclipse.osee.framework.messaging.event.res.Activator
-Require-Bundle: org.eclipse.osee.framework.jdk.core,
- org.eclipse.osee.framework.plugin.core,
- org.eclipse.osee.framework.core,
- org.eclipse.core.runtime,
- org.eclipse.osee.framework.messaging
+Bundle-Activator: org.eclipse.osee.framework.messaging.event.res.internal.Activator
Bundle-ActivationPolicy: lazy
Bundle-Description: Skynet Event Service - Skynet Cache Network Manager
Bundle-Vendor: Eclipse Open System Engineering Environment
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Import-Package: org.eclipse.osee.framework.core.enums
+Import-Package: org.eclipse.core.runtime,
+ org.eclipse.osee.framework.core.enums,
+ org.eclipse.osee.framework.core.exception,
+ org.eclipse.osee.framework.core.util,
+ org.eclipse.osee.framework.jdk.core.type,
+ org.eclipse.osee.framework.jdk.core.util,
+ org.eclipse.osee.framework.logging,
+ org.eclipse.osee.framework.messaging,
+ org.osgi.framework
Export-Package: org.eclipse.osee.framework.messaging.event.res,
org.eclipse.osee.framework.messaging.event.res.msgs
diff --git a/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/Activator.java b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/Activator.java
deleted file mode 100644
index ecf0694211b..00000000000
--- a/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/Activator.java
+++ /dev/null
@@ -1,34 +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;
-
-import org.eclipse.osee.framework.plugin.core.OseeActivator;
-
-/**
- * @author Donald G. Dunne
- */
-public class Activator extends OseeActivator {
-
- private static Activator pluginInstance;
- public static final String PLUGIN_ID = "org.eclipse.osee.framework.messaging.event.res";
-
- public Activator() {
- super();
- pluginInstance = this;
- }
-
- /**
- * Returns the shared instance.
- */
- public static Activator getInstance() {
- return pluginInstance;
- }
-} \ 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/IOseeCoreModelEventService.java b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/IOseeCoreModelEventService.java
new file mode 100644
index 00000000000..7b9f383bfab
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/IOseeCoreModelEventService.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * 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;
+
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.messaging.ConnectionListener;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public interface IOseeCoreModelEventService {
+
+ void addFrameworkListener(IFrameworkEventListener frameworkEventListener);
+
+ void removeFrameworkListener(IFrameworkEventListener frameworkEventListener);
+
+ void addConnectionListener(ConnectionListener connectionListener);
+
+ void removeConnectionListener(ConnectionListener connectionListener);
+
+ 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/RemoteEventUtil.java b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/RemoteEventUtil.java
index 83a7051142c..b7a14a53e48 100644
--- a/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/RemoteEventUtil.java
+++ b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/RemoteEventUtil.java
@@ -15,7 +15,11 @@ import org.eclipse.osee.framework.messaging.event.res.msgs.RemoteNetworkSender1;
/**
* @author Donald G. Dunne
*/
-public class RemoteEventUtil {
+public final class RemoteEventUtil {
+
+ private RemoteEventUtil() {
+ // Utility class
+ }
public static RemoteNetworkSender1 getNetworkSender(String sourceObject, String sessionId, String machineName, String userId, String machineIp, int port, String clientVersion) {
RemoteNetworkSender1 networkSender = new RemoteNetworkSender1();
diff --git a/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/ResEventManager.java b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/ResEventManager.java
deleted file mode 100644
index 9f1a9e134ca..00000000000
--- a/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/ResEventManager.java
+++ /dev/null
@@ -1,233 +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;
-
-import java.rmi.RemoteException;
-import java.util.Map;
-import org.eclipse.osee.framework.messaging.ConnectionListener;
-import org.eclipse.osee.framework.messaging.ConnectionNode;
-import org.eclipse.osee.framework.messaging.OseeMessagingListener;
-import org.eclipse.osee.framework.messaging.OseeMessagingStatusCallback;
-import org.eclipse.osee.framework.messaging.ReplyConnection;
-import org.eclipse.osee.framework.messaging.event.res.msgs.RemoteAccessControlEvent1;
-import org.eclipse.osee.framework.messaging.event.res.msgs.RemoteBranchEvent1;
-import org.eclipse.osee.framework.messaging.event.res.msgs.RemoteBroadcastEvent1;
-import org.eclipse.osee.framework.messaging.event.res.msgs.RemotePersistEvent1;
-import org.eclipse.osee.framework.messaging.event.res.msgs.RemoteTransactionEvent1;
-
-/**
- * @author Donald G. Dunne
- */
-public class ResEventManager implements OseeMessagingStatusCallback {
-
- private static ResEventManager instance;
- private ConnectionNode connectionNode;
- private ResMessagingTracker resMessagingTracker;
- private IFrameworkEventListener frameworkEventListener;
- private ConnectionListener connectionListener;
-
- private ResEventManager() {
- // private
- }
-
- public static ResEventManager getInstance() {
- if (instance == null) {
- instance = new ResEventManager();
- }
- return instance;
- }
-
- public static void dispose() {
- if (instance != null) {
- instance.stopListeningForRemoteCoverageEvents();
- instance.resMessagingTracker.close();
- instance = null;
- }
- }
-
- private void startListeningForRemoteCoverageEvents() {
- if (resMessagingTracker == null) {
- System.out.println("Registering Client for Remote Events\n");
- resMessagingTracker = new ResMessagingTracker();
- resMessagingTracker.open(true);
- addingRemoteEventService(resMessagingTracker.getConnectionNode());
- }
- }
-
- private void stopListeningForRemoteCoverageEvents() {
- System.out.println("De-Registering Client for Remote Events\n");
- resMessagingTracker.close();
- resMessagingTracker = null;
- }
-
- public void addingRemoteEventService(ConnectionNode connectionNode) {
- this.connectionNode = connectionNode;
- connectionNode.addConnectionListener(connectionListener);
-
- connectionNode.subscribe(ResMessages.RemoteTransactionEvent1, new RemoteTransactionEvent1Listener(), instance);
- connectionNode.subscribe(ResMessages.RemotePersistEvent1, new RemotePersistEvent1Listener(), instance);
- connectionNode.subscribe(ResMessages.RemoteBranchEvent1, new RemoteBranchEvent1Listener(), instance);
- connectionNode.subscribe(ResMessages.RemoteBroadcastEvent1, new RemoteBroadcastEvent1Listener(), instance);
- connectionNode.subscribe(ResMessages.RemoteAccessControlEvent1, new RemoteAccessControlEvent1Listener(), instance);
- }
-
- public void kick(RemoteEvent remoteEvent) throws Exception {
- if (remoteEvent instanceof RemotePersistEvent1) {
- sendRemoteEvent(ResMessages.RemotePersistEvent1, remoteEvent);
- } else if (remoteEvent instanceof RemoteTransactionEvent1) {
- sendRemoteEvent(ResMessages.RemoteTransactionEvent1, remoteEvent);
- } else if (remoteEvent instanceof RemoteBranchEvent1) {
- sendRemoteEvent(ResMessages.RemoteBranchEvent1, remoteEvent);
- } else if (remoteEvent instanceof RemoteBroadcastEvent1) {
- sendRemoteEvent(ResMessages.RemoteBroadcastEvent1, remoteEvent);
- } else if (remoteEvent instanceof RemoteAccessControlEvent1) {
- sendRemoteEvent(ResMessages.RemoteAccessControlEvent1, remoteEvent);
- } else {
- System.out.println("ResEventManager: Unhandled remote event " + remoteEvent);
- }
- }
-
- public void sendRemoteEvent(ResMessages resMessage, RemoteEvent remoteEvent) throws Exception {
- // System.out.println(String.format(getClass().getSimpleName() + " - sending [%s]",
- // remoteEvent.getClass().getSimpleName()));
- if (connectionNode != null) {
- connectionNode.send(resMessage, remoteEvent, instance);
- }
- }
-
- public void start(IFrameworkEventListener frameworkEventListener) {
- this.frameworkEventListener = frameworkEventListener;
- startListeningForRemoteCoverageEvents();
- }
-
- public void stop() {
- this.frameworkEventListener = null;
- stopListeningForRemoteCoverageEvents();
- }
-
- @Override
- public void fail(Throwable th) {
- System.err.println(getClass().getSimpleName() + " - fail: " + th.getLocalizedMessage());
- th.printStackTrace();
- }
-
- @Override
- public void success() {
- // do nothing
- }
-
- public class RemoteAccessControlEvent1Listener extends OseeMessagingListener {
-
- public RemoteAccessControlEvent1Listener() {
- super(RemoteAccessControlEvent1.class);
- }
-
- @Override
- public void process(final Object message, Map<String, Object> headers, ReplyConnection replyConnection) {
- RemoteAccessControlEvent1 remoteTransactionEvent1 = (RemoteAccessControlEvent1) message;
- System.err.println(String.format(getClass().getSimpleName() + " - received [%s]",
- message.getClass().getSimpleName()));
- try {
- frameworkEventListener.onEvent(remoteTransactionEvent1);
- } catch (RemoteException ex) {
- System.err.println(getClass().getSimpleName() + " - process: " + ex.getLocalizedMessage());
- }
- }
- }
-
- public class RemoteTransactionEvent1Listener extends OseeMessagingListener {
-
- public RemoteTransactionEvent1Listener() {
- super(RemoteTransactionEvent1.class);
- }
-
- @Override
- public void process(final Object message, Map<String, Object> headers, ReplyConnection replyConnection) {
- RemoteTransactionEvent1 remoteTransactionEvent1 = (RemoteTransactionEvent1) message;
- System.err.println(String.format(getClass().getSimpleName() + " - received [%s]",
- message.getClass().getSimpleName()));
- try {
- frameworkEventListener.onEvent(remoteTransactionEvent1);
- } catch (RemoteException ex) {
- System.err.println(getClass().getSimpleName() + " - process: " + ex.getLocalizedMessage());
- }
- }
- }
-
- public class RemotePersistEvent1Listener extends OseeMessagingListener {
-
- public RemotePersistEvent1Listener() {
- super(RemotePersistEvent1.class);
- }
-
- @Override
- public void process(final Object message, Map<String, Object> headers, ReplyConnection replyConnection) {
- RemotePersistEvent1 remotePersistEvent1 = (RemotePersistEvent1) message;
- // System.err.println(String.format(getClass().getSimpleName() + " - received [%s]",
- // message.getClass().getSimpleName()));
- try {
- frameworkEventListener.onEvent(remotePersistEvent1);
- } catch (RemoteException ex) {
- System.err.println(getClass().getSimpleName() + " - process: " + ex.getLocalizedMessage());
- }
- }
- }
-
- public class RemoteBranchEvent1Listener extends OseeMessagingListener {
-
- public RemoteBranchEvent1Listener() {
- super(RemoteBranchEvent1.class);
- }
-
- @Override
- public void process(final Object message, Map<String, Object> headers, ReplyConnection replyConnection) {
- RemoteBranchEvent1 remoteBranchEvent1 = (RemoteBranchEvent1) message;
- System.err.println(String.format(getClass().getSimpleName() + " - received [%s]",
- message.getClass().getSimpleName()));
- try {
- frameworkEventListener.onEvent(remoteBranchEvent1);
- } catch (RemoteException ex) {
- System.err.println(getClass().getSimpleName() + " - process: " + ex.getLocalizedMessage());
- }
- }
- }
-
- public class RemoteBroadcastEvent1Listener extends OseeMessagingListener {
-
- public RemoteBroadcastEvent1Listener() {
- super(RemoteBroadcastEvent1.class);
- }
-
- @Override
- public void process(final Object message, Map<String, Object> headers, ReplyConnection replyConnection) {
- RemoteBroadcastEvent1 remoteBroadcastEvent1 = (RemoteBroadcastEvent1) message;
- System.err.println(String.format(getClass().getSimpleName() + " - received [%s]",
- message.getClass().getSimpleName()));
- try {
- frameworkEventListener.onEvent(remoteBroadcastEvent1);
- } catch (RemoteException ex) {
- System.err.println(getClass().getSimpleName() + " - process: " + ex.getLocalizedMessage());
- }
- }
- }
-
- public ConnectionListener getConnectionListener() {
- return connectionListener;
- }
-
- public void setConnectionListener(ConnectionListener connectionListener) {
- this.connectionListener = connectionListener;
- if (connectionNode != null) {
- connectionNode.addConnectionListener(connectionListener);
- }
- }
-
-}
diff --git a/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/ResMessagingTracker.java b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/ResMessagingTracker.java
deleted file mode 100644
index c75b3115e3b..00000000000
--- a/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/ResMessagingTracker.java
+++ /dev/null
@@ -1,60 +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;
-
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.messaging.ConnectionNode;
-import org.eclipse.osee.framework.messaging.MessageService;
-import org.osgi.framework.ServiceReference;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * @author Donald G. Dunne
- */
-public class ResMessagingTracker extends ServiceTracker {
-
- private ConnectionNode connectionNode;
-
- public ResMessagingTracker() {
- super(Activator.getInstance().getBundle().getBundleContext(), MessageService.class.getName(), null);
- }
-
- @Override
- public Object addingService(ServiceReference reference) {
- MessageService service = (MessageService) super.addingService(reference);
- try {
- connectionNode = service.getDefault();
- } catch (OseeCoreException ex) {
- System.err.println("Can't add RES messaging service " + ex.getLocalizedMessage());
- ex.printStackTrace();
- }
- return service;
- }
-
- @Override
- public void removedService(ServiceReference reference, Object service) {
- super.removedService(reference, service);
- }
-
- @Override
- public MessageService getService() {
- return (MessageService) super.getService();
- }
-
- public ConnectionNode getConnectionNode() {
- return connectionNode;
- }
-
- public void setConnectionNode(ConnectionNode connectionNode) {
- this.connectionNode = connectionNode;
- }
-
-}
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
new file mode 100644
index 00000000000..664ff1b2fde
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/Activator.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * 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/FrameworkRelayMessagingListener.java b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/FrameworkRelayMessagingListener.java
new file mode 100644
index 00000000000..6e91bfaa922
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/FrameworkRelayMessagingListener.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * 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 java.rmi.RemoteException;
+import java.util.Map;
+import org.eclipse.osee.framework.messaging.OseeMessagingListener;
+import org.eclipse.osee.framework.messaging.ReplyConnection;
+import org.eclipse.osee.framework.messaging.event.res.IFrameworkEventListener;
+import org.eclipse.osee.framework.messaging.event.res.RemoteEvent;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class FrameworkRelayMessagingListener<T extends RemoteEvent> extends OseeMessagingListener {
+
+ private final IFrameworkEventListener frameworkEventListener;
+ private final boolean isVerbose;
+
+ protected FrameworkRelayMessagingListener(Class<?> clazz, IFrameworkEventListener frameworkEventListener, boolean isVerbose) {
+ super(clazz);
+ this.frameworkEventListener = frameworkEventListener;
+ this.isVerbose = isVerbose;
+ }
+
+ @Override
+ public void process(Object message, Map<String, Object> headers, ReplyConnection replyConnection) {
+ if (isVerbose) {
+ System.err.println(String.format(getClass().getSimpleName() + " - received [%s]",
+ message.getClass().getSimpleName()));
+ }
+ try {
+ T remoteEvent = asCastedMessage(message);
+ frameworkEventListener.onEvent(remoteEvent);
+ } catch (RemoteException ex) {
+ System.err.println(getClass().getSimpleName() + " - process: " + ex.getLocalizedMessage());
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ private T asCastedMessage(Object message) {
+ return (T) message;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((frameworkEventListener == null) ? 0 : frameworkEventListener.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ FrameworkRelayMessagingListener<?> other = (FrameworkRelayMessagingListener<?>) obj;
+ if (frameworkEventListener == null) {
+ if (other.frameworkEventListener != null) {
+ return false;
+ }
+ } else if (!frameworkEventListener.equals(other.frameworkEventListener)) {
+ return false;
+ }
+ return true;
+ }
+}
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
new file mode 100644
index 00000000000..96dd50a7785
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/OseeCoreModelEventServiceImpl.java
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * 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.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Map.Entry;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.jdk.core.type.HashCollection;
+import org.eclipse.osee.framework.messaging.ConnectionListener;
+import org.eclipse.osee.framework.messaging.ConnectionNode;
+import org.eclipse.osee.framework.messaging.OseeMessagingListener;
+import org.eclipse.osee.framework.messaging.OseeMessagingStatusCallback;
+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 Donald G. Dunne
+ */
+public class OseeCoreModelEventServiceImpl implements OseeMessagingStatusCallback, IOseeCoreModelEventService {
+
+ private final Map<IFrameworkEventListener, HashCollection<ResMessages, OseeMessagingListener>> subscriptions =
+ new HashMap<IFrameworkEventListener, HashCollection<ResMessages, OseeMessagingListener>>();
+ private final Map<ResMessages, Boolean> messages;
+ private final ConnectionNode connectionNode;
+
+ public OseeCoreModelEventServiceImpl(ConnectionNode connectionNode, Map<ResMessages, Boolean> messages) {
+ this.connectionNode = connectionNode;
+ this.messages = messages;
+ }
+
+ @Override
+ public void success() {
+ // do nothing
+ }
+
+ @Override
+ public void fail(Throwable th) {
+ System.err.println(getClass().getSimpleName() + " - fail: " + th.getLocalizedMessage());
+ th.printStackTrace();
+ }
+
+ @Override
+ public void sendRemoteEvent(RemoteEvent remoteEvent) throws OseeCoreException {
+ ResMessages resMessage = getResMessageType(remoteEvent);
+ if (resMessage != null) {
+ System.out.println(String.format("ResEventManager: Unhandled remote event ", remoteEvent));
+ } else if (connectionNode != null) {
+ System.out.println(String.format(
+ "ResEventManager: Connection node was null - unable to send remote event [%s] ", resMessage));
+ } else {
+ connectionNode.send(resMessage, remoteEvent, this);
+ }
+ }
+
+ private ResMessages getResMessageType(RemoteEvent remoteEvent) {
+ ResMessages resMessage = null;
+ if (remoteEvent != null) {
+ for (ResMessages allowedMessage : messages.keySet()) {
+ Class<?> messageClass = allowedMessage.getSerializationClass();
+ if (messageClass.isAssignableFrom(remoteEvent.getClass())) {
+ resMessage = allowedMessage;
+ break;
+ }
+ }
+ }
+ return resMessage;
+ }
+
+ @Override
+ public void addConnectionListener(ConnectionListener connectionListener) {
+ connectionNode.addConnectionListener(connectionListener);
+ }
+
+ @Override
+ public void removeConnectionListener(ConnectionListener connectionListener) {
+ connectionNode.removeConnectionListener(connectionListener);
+ }
+
+ @Override
+ public void addFrameworkListener(IFrameworkEventListener frameworkEventListener) {
+ System.out.println("Registering Client for Remote Events\n");
+
+ for (Entry<ResMessages, Boolean> messageEntries : messages.entrySet()) {
+ ResMessages resMessageID = messageEntries.getKey();
+ boolean isVerbose = messageEntries.getValue();
+ subscribe(resMessageID, resMessageID.getSerializationClass(), isVerbose, frameworkEventListener);
+ }
+ }
+
+ @Override
+ public void removeFrameworkListener(IFrameworkEventListener frameworkEventListener) {
+ System.out.println("De-Registering Client for Remote Events\n");
+
+ HashCollection<ResMessages, OseeMessagingListener> listeners = subscriptions.get(frameworkEventListener);
+ if (listeners != null) {
+ for (ResMessages messageID : listeners.keySet()) {
+ Collection<OseeMessagingListener> listernerList = listeners.getValues(messageID);
+ if (listernerList != null) {
+ for (OseeMessagingListener listener : listernerList) {
+ connectionNode.unsubscribe(messageID, listener, this);
+ }
+ }
+ }
+ subscriptions.remove(frameworkEventListener);
+ }
+ }
+
+ 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);
+ HashCollection<ResMessages, OseeMessagingListener> listeners = subscriptions.get(frameworkEventListener);
+ if (listeners == null) {
+ listeners = new HashCollection<ResMessages, OseeMessagingListener>(true, HashSet.class);
+ subscriptions.put(frameworkEventListener, listeners);
+ }
+ listeners.put(messageId, listener);
+ }
+}
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
new file mode 100644
index 00000000000..dafdab435ca
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/OseeCoreModelEventServiceRegHandler.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * 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();
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/ResMessages.java b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/ResMessages.java
index b04aec89f79..9200dc090b9 100644
--- a/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/ResMessages.java
+++ b/plugins/org.eclipse.osee.framework.messaging.event.res/src/org/eclipse/osee/framework/messaging/event/res/internal/ResMessages.java
@@ -8,9 +8,10 @@
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
-package org.eclipse.osee.framework.messaging.event.res;
+package org.eclipse.osee.framework.messaging.event.res.internal;
import org.eclipse.osee.framework.messaging.MessageID;
+import org.eclipse.osee.framework.messaging.event.res.RemoteEvent;
import org.eclipse.osee.framework.messaging.event.res.msgs.RemoteAccessControlEvent1;
import org.eclipse.osee.framework.messaging.event.res.msgs.RemoteBranchEvent1;
import org.eclipse.osee.framework.messaging.event.res.msgs.RemoteBroadcastEvent1;
@@ -25,12 +26,12 @@ public enum ResMessages implements MessageID {
RemoteAccessControlEvent1(true, "AFRkIhdPkwExx96ioXgA", "topic:org.eclipse.osee.coverage.msgs.RemoteAccessControlEvent1", RemoteAccessControlEvent1.class, false);
private String name;
- private Class<?> clazz;
+ private Class<? extends RemoteEvent> clazz;
boolean isReplyRequired;
private String guid;
private boolean isTopic;
- ResMessages(boolean isTopic, String guid, String name, Class<?> clazz, boolean isReplyRequired) {
+ ResMessages(boolean isTopic, String guid, String name, Class<? extends RemoteEvent> clazz, boolean isReplyRequired) {
this.guid = guid;
this.name = name;
this.clazz = clazz;
@@ -44,7 +45,7 @@ public enum ResMessages implements MessageID {
}
@Override
- public Class<?> getSerializationClass() {
+ public Class<? extends RemoteEvent> getSerializationClass() {
return clazz;
}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/ArtifactEventFiltersTest.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/ArtifactEventFiltersTest.java
index b1de302027e..cdb53aa1520 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/ArtifactEventFiltersTest.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/ArtifactEventFiltersTest.java
@@ -21,7 +21,6 @@ import org.eclipse.osee.framework.jdk.core.util.GUID;
import org.eclipse.osee.framework.logging.SevereLoggingMonitor;
import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkSender;
import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager;
-import org.eclipse.osee.framework.skynet.core.event.InternalEventManager2;
import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
import org.eclipse.osee.framework.skynet.core.event.Sender;
import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
@@ -39,7 +38,8 @@ import org.junit.Before;
* @author Donald G. Dunne
*/
public class ArtifactEventFiltersTest {
-
+ // artifact listener create for use by all tests to just capture result eventArtifacts for query
+ private final ArtifactEventListener artifactEventListener = new ArtifactEventListener();
private ArtifactEvent resultArtifactEvent = null;
private Sender resultSender = null;
public static List<String> ignoreLogging = Arrays.asList("");
@@ -47,19 +47,20 @@ public class ArtifactEventFiltersTest {
@Before
public void setup() {
- InternalEventManager2.internalSetPendRunning(true);
+ OseeEventManager.getPreferences().setNewEvents(true);
+ OseeEventManager.getPreferences().setPendRunning(true);
}
@After
public void cleanup() {
- InternalEventManager2.internalSetPendRunning(false);
+ OseeEventManager.getPreferences().setPendRunning(false);
}
@org.junit.Test
public void testArtifactEventFilters() throws Exception {
SevereLoggingMonitor monitorLog = TestUtil.severeLoggingStart();
- InternalEventManager2.internalRemoveAllListeners();
- InternalEventManager2.addListener(artifactEventListener);
+ OseeEventManager.removeAllListeners();
+ OseeEventManager.addListener(artifactEventListener);
testArtifactEventFilters__artifactTypeInheritance();
testArtifactEventFilters__branchFilter();
@@ -103,7 +104,7 @@ public class ArtifactEventFiltersTest {
// Send dummy event
Sender sender = new Sender(new NetworkSender(this, GUID.create(), "PC", "12345", "123.234.345.456", 34, "1.0.0"));
- InternalEventManager2.processEventArtifactsAndRelations(sender, testArtifactEvent);
+ processEventArtifactsAndRelations(sender, testArtifactEvent);
// Test that event DID come through
Assert.assertNotNull(resultArtifactEvent);
@@ -116,7 +117,7 @@ public class ArtifactEventFiltersTest {
resultSender = null;
// Re-send dummy event
- InternalEventManager2.processEventArtifactsAndRelations(sender, testArtifactEvent);
+ processEventArtifactsAndRelations(sender, testArtifactEvent);
// Test that event DID come through
Assert.assertNotNull(resultArtifactEvent);
@@ -129,7 +130,7 @@ public class ArtifactEventFiltersTest {
resultSender = null;
// Re-send dummy event
- InternalEventManager2.processEventArtifactsAndRelations(sender, testArtifactEvent);
+ processEventArtifactsAndRelations(sender, testArtifactEvent);
// Test that event did NOT come through
Assert.assertNull(resultArtifactEvent);
@@ -154,7 +155,7 @@ public class ArtifactEventFiltersTest {
// Send dummy event
Sender sender = new Sender(new NetworkSender(this, GUID.create(), "PC", "12345", "123.234.345.456", 34, "1.0.0"));
- InternalEventManager2.processEventArtifactsAndRelations(sender, testArtifactEvent);
+ processEventArtifactsAndRelations(sender, testArtifactEvent);
// Test that event DID come through
Assert.assertNotNull(resultArtifactEvent);
@@ -168,7 +169,7 @@ public class ArtifactEventFiltersTest {
resultSender = null;
// Re-send dummy event
- InternalEventManager2.processEventArtifactsAndRelations(sender, testArtifactEvent);
+ processEventArtifactsAndRelations(sender, testArtifactEvent);
// Test that event did NOT come through
Assert.assertNull(resultArtifactEvent);
@@ -181,17 +182,27 @@ public class ArtifactEventFiltersTest {
resultSender = null;
// Re-send dummy event
- InternalEventManager2.processEventArtifactsAndRelations(sender, testArtifactEvent);
+ processEventArtifactsAndRelations(sender, testArtifactEvent);
// Test that event did NOT come through
Assert.assertNull(resultArtifactEvent);
}
- private NetworkSender getDummyRemoteNetworkSender() {
- return new NetworkSender(this.getClass(), GUID.create(), "PC", "12345", "123.234.345.456", 34, "1.0.0");
+ private static void processEventArtifactsAndRelations(Sender sender, ArtifactEvent artifactEvent) {
+ OseeEventManager.internalTestProcessEventArtifactsAndRelations(sender, artifactEvent);
+ }
+
+ private static NetworkSender getDummyRemoteNetworkSender() {
+ return new NetworkSender(ArtifactEventFiltersTest.class, GUID.create(), "PC", "12345", "123.234.345.456", 34,
+ "1.0.0");
}
- private class ArtifactEventListener implements IArtifactEventListener {
+
+ public void clearEventCollections() {
+ resultArtifactEvent = null;
+ }
+
+ private final class ArtifactEventListener implements IArtifactEventListener {
@Override
public List<? extends IEventFilter> getEventFilters() {
@@ -206,16 +217,4 @@ public class ArtifactEventFiltersTest {
}
- @org.junit.Before
- public void setUpTest() {
- OseeEventManager.setNewEvents(true);
- }
-
- // artifact listener create for use by all tests to just capture result eventArtifacts for query
- private final ArtifactEventListener artifactEventListener = new ArtifactEventListener();
-
- public void clearEventCollections() {
- resultArtifactEvent = null;
- }
-
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/ArtifactEventLoopbackTest.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/ArtifactEventLoopbackTest.java
index f63b299b769..93aab09f888 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/ArtifactEventLoopbackTest.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/ArtifactEventLoopbackTest.java
@@ -10,7 +10,7 @@
*******************************************************************************/
package org.eclipse.osee.framework.skynet.core.test.event;
-import org.eclipse.osee.framework.skynet.core.event.InternalEventManager2;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
import org.junit.AfterClass;
import org.junit.BeforeClass;
@@ -24,12 +24,12 @@ public class ArtifactEventLoopbackTest extends ArtifactEventTest {
@BeforeClass
public static void setUp() {
- InternalEventManager2.setEnableRemoteEventLoopback(true);
+ OseeEventManager.getPreferences().setEnableRemoteEventLoopback(true);
}
@AfterClass
public static void tearDown() {
- InternalEventManager2.setEnableRemoteEventLoopback(false);
+ OseeEventManager.getPreferences().setEnableRemoteEventLoopback(false);
}
@Override
diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/ArtifactEventTest.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/ArtifactEventTest.java
index 7454804c7f7..0ad002207fe 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/ArtifactEventTest.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/ArtifactEventTest.java
@@ -39,9 +39,7 @@ import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
import org.eclipse.osee.framework.skynet.core.artifact.ChangeArtifactType;
import org.eclipse.osee.framework.skynet.core.artifact.StaticIdManager;
import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery;
-import org.eclipse.osee.framework.skynet.core.event.InternalEventManager2;
import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
-import org.eclipse.osee.framework.skynet.core.event.RemoteEventManager2;
import org.eclipse.osee.framework.skynet.core.event.Sender;
import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
import org.eclipse.osee.framework.skynet.core.event2.FrameworkEventUtil;
@@ -92,17 +90,13 @@ public class ArtifactEventTest {
@Before
public void setup() {
- InternalEventManager2.internalSetPendRunning(true);
+ OseeEventManager.getPreferences().setNewEvents(true);
+ OseeEventManager.getPreferences().setPendRunning(true);
}
@After
public void cleanup() {
- InternalEventManager2.internalSetPendRunning(false);
- }
-
- @org.junit.Before
- public void setUpTest() {
- OseeEventManager.setNewEvents(true);
+ OseeEventManager.getPreferences().setPendRunning(false);
}
// artifact listener create for use by all tests to just capture result eventArtifacts for query
@@ -117,14 +111,14 @@ public class ArtifactEventTest {
public void testRegistration() throws Exception {
SevereLoggingMonitor monitorLog = TestUtil.severeLoggingStart();
- InternalEventManager2.internalRemoveAllListeners();
- Assert.assertEquals(0, InternalEventManager2.getNumberOfListeners());
+ OseeEventManager.removeAllListeners();
+ Assert.assertEquals(0, OseeEventManager.getNumberOfListeners());
OseeEventManager.addListener(artifactEventListener);
- Assert.assertEquals(1, InternalEventManager2.getNumberOfListeners());
+ Assert.assertEquals(1, OseeEventManager.getNumberOfListeners());
OseeEventManager.removeListener(artifactEventListener);
- Assert.assertEquals(0, InternalEventManager2.getNumberOfListeners());
+ Assert.assertEquals(0, OseeEventManager.getNumberOfListeners());
TestUtil.severeLoggingEnd(monitorLog);
}
@@ -142,11 +136,11 @@ public class ArtifactEventTest {
}
SevereLoggingMonitor monitorLog = TestUtil.severeLoggingStart();
- InternalEventManager2.internalRemoveAllListeners();
- Assert.assertEquals(0, InternalEventManager2.getNumberOfListeners());
+ OseeEventManager.removeAllListeners();
+ Assert.assertEquals(0, OseeEventManager.getNumberOfListeners());
OseeEventManager.addListener(artifactEventListener);
- Assert.assertEquals(1, InternalEventManager2.getNumberOfListeners());
+ Assert.assertEquals(1, OseeEventManager.getNumberOfListeners());
// Test attribute injection
Artifact injectArt = remoteInjection_attributes_modifyName();
@@ -170,11 +164,11 @@ public class ArtifactEventTest {
public void testArtifactRelationEvents() throws Exception {
SevereLoggingMonitor monitorLog = TestUtil.severeLoggingStart();
- InternalEventManager2.internalRemoveAllListeners();
- Assert.assertEquals(0, InternalEventManager2.getNumberOfListeners());
+ OseeEventManager.removeAllListeners();
+ Assert.assertEquals(0, OseeEventManager.getNumberOfListeners());
OseeEventManager.addListener(artifactEventListener);
- Assert.assertEquals(1, InternalEventManager2.getNumberOfListeners());
+ Assert.assertEquals(1, OseeEventManager.getNumberOfListeners());
Artifact newArt = testArtifactRelationEvents__addArtifact();
testArtifactRelationEvents__addRelation(newArt);
@@ -334,7 +328,7 @@ public class ArtifactEventTest {
RelationEventType.Added, CoreRelationTypes.Default_Hierarchical__Child, rootArt, injectArt);
// Send
- RemoteEventManager2.getInstance().onEvent(remoteEvent);
+ OseeEventManager.internalTestSendRemoteEvent(remoteEvent);
// Wait for event to propagate
@@ -368,7 +362,7 @@ public class ArtifactEventTest {
CoreRelationTypes.Default_Hierarchical__Child, rootArt, injectArt);
// Send
- RemoteEventManager2.getInstance().onEvent(remoteEvent);
+ OseeEventManager.internalTestSendRemoteEvent(remoteEvent);
// Wait for event to propagate
@@ -415,7 +409,7 @@ public class ArtifactEventTest {
remoteEvent.getRelationReorders().add(remoteReorder);
// Send
- RemoteEventManager2.getInstance().onEvent(remoteEvent);
+ OseeEventManager.internalTestSendRemoteEvent(remoteEvent);
// Wait for event to propagate
@@ -447,7 +441,7 @@ public class ArtifactEventTest {
relation.setRationale(RATIONALE_STR);
// Send
- RemoteEventManager2.getInstance().onEvent(remoteEvent);
+ OseeEventManager.internalTestSendRemoteEvent(remoteEvent);
// Wait for event to propagate
@@ -484,7 +478,7 @@ public class ArtifactEventTest {
relation.setRationale(NEW_RATIONALE_STR);
// Send
- RemoteEventManager2.getInstance().onEvent(remoteEvent);
+ OseeEventManager.internalTestSendRemoteEvent(remoteEvent);
// Wait for event to propagate
@@ -537,7 +531,7 @@ public class ArtifactEventTest {
remGuidArt.getAttributes().add(remAttrChg);
// Send
- RemoteEventManager2.getInstance().onEvent(remoteEvent);
+ OseeEventManager.internalTestSendRemoteEvent(remoteEvent);
// Wait for event to propagate
@@ -587,7 +581,7 @@ public class ArtifactEventTest {
remGuidArt.getAttributes().add(remAttrChg);
// Send
- RemoteEventManager2.getInstance().onEvent(remoteEvent);
+ OseeEventManager.internalTestSendRemoteEvent(remoteEvent);
// Wait for event to propagate
@@ -636,7 +630,7 @@ public class ArtifactEventTest {
remGuidArt.getAttributes().add(remAttrChg);
// Send
- RemoteEventManager2.getInstance().onEvent(remoteEvent);
+ OseeEventManager.internalTestSendRemoteEvent(remoteEvent);
// Wait for event to propagate
@@ -668,8 +662,8 @@ public class ArtifactEventTest {
public void testArtifactRelationReorderEvents() throws Exception {
SevereLoggingMonitor monitorLog = TestUtil.severeLoggingStart();
- InternalEventManager2.internalRemoveAllListeners();
- Assert.assertEquals(0, InternalEventManager2.getNumberOfListeners());
+ OseeEventManager.removeAllListeners();
+ Assert.assertEquals(0, OseeEventManager.getNumberOfListeners());
// Setup artifact and children to reorder
SkynetTransaction transaction =
@@ -688,7 +682,7 @@ public class ArtifactEventTest {
transaction.execute();
OseeEventManager.addListener(artifactEventListener);
- Assert.assertEquals(1, InternalEventManager2.getNumberOfListeners());
+ Assert.assertEquals(1, OseeEventManager.getNumberOfListeners());
List<Artifact> orderedChildren = newArt.getChildren();
Assert.assertEquals(5, orderedChildren.size());
@@ -779,16 +773,16 @@ public class ArtifactEventTest {
public void testPurgeArtifactEvents() throws Exception {
SevereLoggingMonitor monitorLog = TestUtil.severeLoggingStart();
- InternalEventManager2.internalRemoveAllListeners();
- Assert.assertEquals(0, InternalEventManager2.getNumberOfListeners());
+ OseeEventManager.removeAllListeners();
+ Assert.assertEquals(0, OseeEventManager.getNumberOfListeners());
// Add new Artifact Test
Artifact newArt = ArtifactTypeManager.addArtifact(CoreArtifactTypes.GeneralData, BranchManager.getCommonBranch());
newArt.setName(getClass().getSimpleName() + " - testPurgeArtifactEvents");
newArt.persist();
- InternalEventManager2.addListener(artifactEventListener);
- Assert.assertEquals(1, InternalEventManager2.getNumberOfListeners());
+ OseeEventManager.addListener(artifactEventListener);
+ Assert.assertEquals(1, OseeEventManager.getNumberOfListeners());
// Purge Artifact
newArt.purgeFromBranch();
@@ -815,8 +809,8 @@ public class ArtifactEventTest {
@org.junit.Test
public void testReloadArtifactEvents() throws Exception {
SevereLoggingMonitor monitorLog = TestUtil.severeLoggingStart();
- InternalEventManager2.internalRemoveAllListeners();
- Assert.assertEquals(0, InternalEventManager2.getNumberOfListeners());
+ OseeEventManager.removeAllListeners();
+ Assert.assertEquals(0, OseeEventManager.getNumberOfListeners());
// Add new Artifact Test
Artifact newArt = ArtifactTypeManager.addArtifact(CoreArtifactTypes.GeneralData, BranchManager.getCommonBranch());
@@ -824,7 +818,7 @@ public class ArtifactEventTest {
newArt.persist();
OseeEventManager.addListener(artifactEventListener);
- Assert.assertEquals(1, InternalEventManager2.getNumberOfListeners());
+ Assert.assertEquals(1, OseeEventManager.getNumberOfListeners());
// reload Artifact
StaticIdManager.setSingletonAttributeValue(newArt, "this");
@@ -851,8 +845,8 @@ public class ArtifactEventTest {
public void testChangeTypeArtifactEvents() throws Exception {
SevereLoggingMonitor monitorLog = TestUtil.severeLoggingStart();
- InternalEventManager2.internalRemoveAllListeners();
- Assert.assertEquals(0, InternalEventManager2.getNumberOfListeners());
+ OseeEventManager.removeAllListeners();
+ Assert.assertEquals(0, OseeEventManager.getNumberOfListeners());
// Add new Artifact for Test
Artifact newArt = ArtifactTypeManager.addArtifact(CoreArtifactTypes.GeneralData, BranchManager.getCommonBranch());
@@ -860,7 +854,7 @@ public class ArtifactEventTest {
newArt.persist();
OseeEventManager.addListener(artifactEventListener);
- Assert.assertEquals(1, InternalEventManager2.getNumberOfListeners());
+ Assert.assertEquals(1, OseeEventManager.getNumberOfListeners());
// reload Artifact
Assert.assertTrue(newArt.isOfType(CoreArtifactTypes.GeneralData));
diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/BranchEventFiltersTest.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/BranchEventFiltersTest.java
index 271c190b391..8712cd63d78 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/BranchEventFiltersTest.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/BranchEventFiltersTest.java
@@ -18,7 +18,6 @@ import org.eclipse.osee.framework.logging.SevereLoggingMonitor;
import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkSender;
import org.eclipse.osee.framework.skynet.core.event.BranchEventType;
import org.eclipse.osee.framework.skynet.core.event.IBranchEventListener;
-import org.eclipse.osee.framework.skynet.core.event.InternalEventManager2;
import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
import org.eclipse.osee.framework.skynet.core.event.Sender;
import org.eclipse.osee.framework.skynet.core.event2.BranchEvent;
@@ -39,20 +38,21 @@ public class BranchEventFiltersTest {
@Before
public void setup() {
- InternalEventManager2.internalSetPendRunning(true);
+ OseeEventManager.getPreferences().setNewEvents(true);
+ OseeEventManager.getPreferences().setPendRunning(true);
}
@After
public void cleanup() {
- InternalEventManager2.internalSetPendRunning(false);
+ OseeEventManager.getPreferences().setPendRunning(false);
}
@org.junit.Test
public void testBranchEventFilters() throws Exception {
SevereLoggingMonitor monitorLog = TestUtil.severeLoggingStart();
- InternalEventManager2.internalRemoveAllListeners();
- InternalEventManager2.addListener(branchEventListener);
- Assert.assertEquals(1, InternalEventManager2.getNumberOfListeners());
+ OseeEventManager.removeAllListeners();
+ OseeEventManager.addListener(branchEventListener);
+ Assert.assertEquals(1, OseeEventManager.getNumberOfListeners());
// Create dummy branch event
String branchGuid = GUID.create();
@@ -65,7 +65,7 @@ public class BranchEventFiltersTest {
// Send dummy event
Sender sender = new Sender(new NetworkSender(this, GUID.create(), "PC", "12345", "123.234.345.456", 34, "1.0.0"));
- InternalEventManager2.processBranchEvent(sender, testBranchEvent);
+ processBranchEvent(sender, testBranchEvent);
// Test that event did come through
Assert.assertNotNull(resultBranchEvent);
@@ -79,7 +79,7 @@ public class BranchEventFiltersTest {
resultSender = null;
// Re-send dummy event
- InternalEventManager2.processBranchEvent(sender, testBranchEvent);
+ processBranchEvent(sender, testBranchEvent);
// Test that event did come through
Assert.assertNotNull(resultBranchEvent);
@@ -94,7 +94,7 @@ public class BranchEventFiltersTest {
resultSender = null;
// Re-send dummy event
- InternalEventManager2.processBranchEvent(sender, testBranchEvent);
+ processBranchEvent(sender, testBranchEvent);
// Test that event did NOT come through
Assert.assertNull(resultBranchEvent);
@@ -102,6 +102,10 @@ public class BranchEventFiltersTest {
TestUtil.severeLoggingEnd(monitorLog);
}
+ private static void processBranchEvent(Sender sender, BranchEvent branchEvent) {
+ OseeEventManager.internalTestProcessBranchEvent(sender, branchEvent);
+ }
+
private class BranchEventListener implements IBranchEventListener {
@Override
@@ -121,11 +125,6 @@ public class BranchEventFiltersTest {
}
}
- @org.junit.Before
- public void setUpTest() {
- OseeEventManager.setNewEvents(true);
- }
-
// artifact listener create for use by all tests to just capture result eventArtifacts for query
private final BranchEventListener branchEventListener = new BranchEventListener();
diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/BranchEventLoopbackTest.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/BranchEventLoopbackTest.java
index 1763d5e6506..35d65700676 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/BranchEventLoopbackTest.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/BranchEventLoopbackTest.java
@@ -10,7 +10,7 @@
*******************************************************************************/
package org.eclipse.osee.framework.skynet.core.test.event;
-import org.eclipse.osee.framework.skynet.core.event.InternalEventManager2;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
import org.junit.AfterClass;
import org.junit.BeforeClass;
@@ -24,12 +24,12 @@ public class BranchEventLoopbackTest extends BranchEventTest {
@BeforeClass
public static void setUp2() {
- InternalEventManager2.setEnableRemoteEventLoopback(true);
+ OseeEventManager.getPreferences().setEnableRemoteEventLoopback(true);
}
@AfterClass
public static void tearDown2() {
- InternalEventManager2.setEnableRemoteEventLoopback(false);
+ OseeEventManager.getPreferences().setEnableRemoteEventLoopback(false);
}
@Override
diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/BranchEventTest.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/BranchEventTest.java
index 0d7594cad08..810011a9a4a 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/BranchEventTest.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/BranchEventTest.java
@@ -34,7 +34,6 @@ import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
import org.eclipse.osee.framework.skynet.core.conflict.ConflictManagerExternal;
import org.eclipse.osee.framework.skynet.core.event.BranchEventType;
import org.eclipse.osee.framework.skynet.core.event.IBranchEventListener;
-import org.eclipse.osee.framework.skynet.core.event.InternalEventManager2;
import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
import org.eclipse.osee.framework.skynet.core.event.Sender;
import org.eclipse.osee.framework.skynet.core.event2.BranchEvent;
@@ -56,14 +55,14 @@ public class BranchEventTest {
public void testRegistration() throws Exception {
SevereLoggingMonitor monitorLog = TestUtil.severeLoggingStart();
- InternalEventManager2.internalRemoveAllListeners();
- Assert.assertEquals(0, InternalEventManager2.getNumberOfListeners());
+ OseeEventManager.removeAllListeners();
+ Assert.assertEquals(0, OseeEventManager.getNumberOfListeners());
- InternalEventManager2.addListener(branchEventListener);
- Assert.assertEquals(1, InternalEventManager2.getNumberOfListeners());
+ OseeEventManager.addListener(branchEventListener);
+ Assert.assertEquals(1, OseeEventManager.getNumberOfListeners());
- InternalEventManager2.removeListener(branchEventListener);
- Assert.assertEquals(0, InternalEventManager2.getNumberOfListeners());
+ OseeEventManager.removeListener(branchEventListener);
+ Assert.assertEquals(0, OseeEventManager.getNumberOfListeners());
TestUtil.severeLoggingEnd(monitorLog);
}
@@ -71,12 +70,12 @@ public class BranchEventTest {
@org.junit.Test
public void testEvents() throws Exception {
SevereLoggingMonitor monitorLog = TestUtil.severeLoggingStart();
- InternalEventManager2.internalRemoveAllListeners();
- InternalEventManager2.addListener(branchEventListener);
- Assert.assertEquals(1, InternalEventManager2.getNumberOfListeners());
+ OseeEventManager.removeAllListeners();
+ OseeEventManager.addListener(branchEventListener);
+ Assert.assertEquals(1, OseeEventManager.getNumberOfListeners());
try {
- InternalEventManager2.internalSetPendRunning(true);
+ OseeEventManager.getPreferences().setPendRunning(true);
Branch topLevel = testEvents__topLevelAdded();
Branch workingBranch = testEvents__workingAdded(topLevel);
@@ -90,7 +89,7 @@ public class BranchEventTest {
TestUtil.severeLoggingEnd(monitorLog, (isRemoteTest() ? ignoreLogging : new ArrayList<String>()));
} finally {
- InternalEventManager2.internalSetPendRunning(false);
+ OseeEventManager.getPreferences().setPendRunning(false);
}
}
@@ -346,7 +345,7 @@ public class BranchEventTest {
@org.junit.Before
public void setUpTest() {
- OseeEventManager.setNewEvents(true);
+ OseeEventManager.getPreferences().setNewEvents(true);
}
@org.junit.BeforeClass
diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/TransactionEventLoopbackTest.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/TransactionEventLoopbackTest.java
index 3bccb3941b9..008ad2737b3 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/TransactionEventLoopbackTest.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/TransactionEventLoopbackTest.java
@@ -10,7 +10,7 @@
*******************************************************************************/
package org.eclipse.osee.framework.skynet.core.test.event;
-import org.eclipse.osee.framework.skynet.core.event.InternalEventManager2;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
import org.junit.AfterClass;
import org.junit.BeforeClass;
@@ -24,12 +24,12 @@ public class TransactionEventLoopbackTest extends TransactionEventTest {
@BeforeClass
public static void setUp() {
- InternalEventManager2.setEnableRemoteEventLoopback(true);
+ OseeEventManager.getPreferences().setEnableRemoteEventLoopback(true);
}
@AfterClass
public static void tearDown() {
- InternalEventManager2.setEnableRemoteEventLoopback(false);
+ OseeEventManager.getPreferences().setEnableRemoteEventLoopback(false);
}
@Override
diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/TransactionEventTest.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/TransactionEventTest.java
index 57c04cf2ef8..aad4f6b8936 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/TransactionEventTest.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/test/event/TransactionEventTest.java
@@ -12,7 +12,6 @@ package org.eclipse.osee.framework.skynet.core.test.event;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.List;
import junit.framework.Assert;
import org.eclipse.osee.framework.core.enums.CoreArtifactTypes;
import org.eclipse.osee.framework.core.model.event.DefaultBasicGuidArtifact;
@@ -23,7 +22,6 @@ import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeManager;
import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
import org.eclipse.osee.framework.skynet.core.artifact.PurgeTransactionOperation;
-import org.eclipse.osee.framework.skynet.core.event.InternalEventManager2;
import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
import org.eclipse.osee.framework.skynet.core.event.Sender;
import org.eclipse.osee.framework.skynet.core.event2.ITransactionEventListener;
@@ -43,30 +41,30 @@ public class TransactionEventTest {
private TransactionEvent resultTransEvent = null;
private Sender resultSender = null;
- public static List<String> ignoreLogging = Arrays.asList("");
@Before
public void setup() {
- InternalEventManager2.internalSetPendRunning(true);
+ OseeEventManager.getPreferences().setNewEvents(true);
+ OseeEventManager.getPreferences().setPendRunning(true);
}
@After
public void cleanup() {
- InternalEventManager2.internalSetPendRunning(false);
+ OseeEventManager.getPreferences().setPendRunning(false);
}
@org.junit.Test
public void testRegistration() throws Exception {
SevereLoggingMonitor monitorLog = TestUtil.severeLoggingStart();
- InternalEventManager2.internalRemoveAllListeners();
- Assert.assertEquals(0, InternalEventManager2.getNumberOfListeners());
+ OseeEventManager.removeAllListeners();
+ Assert.assertEquals(0, OseeEventManager.getNumberOfListeners());
OseeEventManager.addListener(transEventListener);
- Assert.assertEquals(1, InternalEventManager2.getNumberOfListeners());
+ Assert.assertEquals(1, OseeEventManager.getNumberOfListeners());
OseeEventManager.removeListener(transEventListener);
- Assert.assertEquals(0, InternalEventManager2.getNumberOfListeners());
+ Assert.assertEquals(0, OseeEventManager.getNumberOfListeners());
TestUtil.severeLoggingEnd(monitorLog);
}
@@ -96,9 +94,9 @@ public class TransactionEventTest {
}
// Add listener for delete transaction event
- InternalEventManager2.internalRemoveAllListeners();
+ OseeEventManager.removeAllListeners();
OseeEventManager.addListener(transEventListener);
- Assert.assertEquals(1, InternalEventManager2.getNumberOfListeners());
+ Assert.assertEquals(1, OseeEventManager.getNumberOfListeners());
// Delete it
IOperation operation = new PurgeTransactionOperation(Activator.getInstance(), false, transIdToDelete);
@@ -122,7 +120,7 @@ public class TransactionEventTest {
Assert.assertEquals(newArt.getGuid(), guidArt.getGuid());
Assert.assertEquals(CoreArtifactTypes.GeneralData.getGuid(), guidArt.getArtTypeGuid());
- TestUtil.severeLoggingEnd(monitorLog, (isRemoteTest() ? ignoreLogging : new ArrayList<String>()));
+ TestUtil.severeLoggingEnd(monitorLog, (isRemoteTest() ? Arrays.asList("") : new ArrayList<String>()));
}
protected boolean isRemoteTest() {
@@ -138,11 +136,6 @@ public class TransactionEventTest {
}
}
- @org.junit.Before
- public void setUpTest() {
- OseeEventManager.setNewEvents(true);
- }
-
// artifact listener create for use by all tests to just capture result eventArtifacts for query
private final TransactionEventListener transEventListener = new TransactionEventListener();
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactTransactionData.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactTransactionData.java
index 2ac976b31e9..8e0799ea835 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactTransactionData.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/artifact/ArtifactTransactionData.java
@@ -14,8 +14,8 @@ import org.eclipse.osee.framework.core.exception.OseeCoreException;
import org.eclipse.osee.framework.core.model.TransactionRecord;
import org.eclipse.osee.framework.database.core.ConnectionHandler;
import org.eclipse.osee.framework.database.core.OseeSql;
-import org.eclipse.osee.framework.skynet.core.event.ArtifactModifiedEvent;
import org.eclipse.osee.framework.skynet.core.event.Sender;
+import org.eclipse.osee.framework.skynet.core.event.systems.ArtifactModifiedEvent;
import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
import org.eclipse.osee.framework.skynet.core.event2.artifact.EventBasicGuidArtifact;
import org.eclipse.osee.framework.skynet.core.event2.artifact.EventModType;
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/HttpAttributeTagger.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/HttpAttributeTaggingListener.java
index 3da93ce84c0..7db30655c5d 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/HttpAttributeTagger.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/attribute/HttpAttributeTaggingListener.java
@@ -29,7 +29,6 @@ import org.eclipse.osee.framework.core.exception.OseeCoreException;
import org.eclipse.osee.framework.core.util.HttpProcessor;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.messaging.event.skynet.event.SkynetAttributeChange;
-import org.eclipse.osee.framework.skynet.core.event.ArtifactModifiedEvent;
import org.eclipse.osee.framework.skynet.core.event.ArtifactTransactionModifiedEvent;
import org.eclipse.osee.framework.skynet.core.event.BranchEventType;
import org.eclipse.osee.framework.skynet.core.event.FrameworkTransactionData;
@@ -38,8 +37,8 @@ import org.eclipse.osee.framework.skynet.core.event.IArtifactsPurgedEventListene
import org.eclipse.osee.framework.skynet.core.event.IBranchEventListener;
import org.eclipse.osee.framework.skynet.core.event.IFrameworkTransactionEventListener;
import org.eclipse.osee.framework.skynet.core.event.ITransactionsDeletedEventListener;
-import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
import org.eclipse.osee.framework.skynet.core.event.Sender;
+import org.eclipse.osee.framework.skynet.core.event.systems.ArtifactModifiedEvent;
import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
import org.eclipse.osee.framework.skynet.core.event2.BranchEvent;
import org.eclipse.osee.framework.skynet.core.event2.ITransactionEventListener;
@@ -55,27 +54,125 @@ import org.eclipse.osee.framework.skynet.core.utility.LoadedArtifacts;
*
* @author Roberto E. Escobar
*/
-public class HttpAttributeTagger {
- private static final HttpAttributeTagger instance = new HttpAttributeTagger();
+public class HttpAttributeTaggingListener implements IArtifactEventListener, IFrameworkTransactionEventListener, IBranchEventListener, IArtifactsPurgedEventListener, IArtifactsChangeTypeEventListener, ITransactionEventListener, ITransactionsDeletedEventListener {
private static final String XML_START = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><AttributeTag>";
private static final String XML_FINISH = "</AttributeTag>";
private static final String PREFIX = "<entry gammaId=\"";
private static final String POSTFIX = "\"/>\n";
private final ExecutorService executor;
- private final EventRelay eventRelay;
- private HttpAttributeTagger() {
+ public HttpAttributeTaggingListener() {
this.executor = Executors.newSingleThreadExecutor();
- this.eventRelay = new EventRelay();
- OseeEventManager.addListener(eventRelay);
}
- public static HttpAttributeTagger getInstance() {
- return instance;
+ @Override
+ public void handleBranchEventREM1(Sender sender, BranchEventType branchModType, int branchId) {
+ // do nothing
}
- public void deregisterFromEventManager() {
- OseeEventManager.removeListener(eventRelay);
+ @Override
+ public void handleArtifactsPurgedEvent(Sender sender, LoadedArtifacts loadedArtifacts) {
+ // if (sender.isRemote()) {
+ // return;
+ // }
+ // try {
+ // loadedArtifacts.
+ // //TODO: implements
+ // // Map<String, String> parameters = new HashMap<String, String>();
+ // // parameters.put("sessionId", ClientSessionManager.getSessionId());
+ // // parameters.put("queryId", Integer.toString(transactionJoinId));
+ // // String url =
+ // // HttpUrlBuilder.getInstance().getOsgiServletServiceUrl(OseeServerContext.SEARCH_TAGGING_CONTEXT,
+ // // parameters);
+ // // String response = HttpProcessor.delete(new URL(url));
+ //
+ // } catch (Exception ex) {
+ // OseeLog.log(Activator.class, Level.WARNING, "Error Deleting Tags during purge.", ex);
+ // }
+ }
+
+ @Override
+ public void handleArtifactsChangeTypeEvent(Sender sender, int toArtifactTypeId, LoadedArtifacts loadedArtifacts) {
+ // Need to fix tags based on this event
+ }
+
+ @Override
+ public void handleTransactionsDeletedEvent(Sender sender, int[] transactionIds) {
+ // Need to fix tags based on this event
+ }
+
+ @Override
+ public void handleTransactionEvent(Sender sender, TransactionEvent transEvent) {
+ // Need to fix tags based on this event
+ }
+
+ @Override
+ public void handleFrameworkTransactionEvent(Sender sender, FrameworkTransactionData txData) throws OseeCoreException {
+ if (sender.isRemote()) {
+ return;
+ }
+ TagService taggingInfo = new TagService();
+ for (ArtifactTransactionModifiedEvent event : txData.getXModifiedEvents()) {
+ if (event instanceof ArtifactModifiedEvent) {
+ for (SkynetAttributeChange change : ((ArtifactModifiedEvent) event).getAttributeChanges()) {
+ if (AttributeTypeManager.getType(change.getTypeId()).isTaggable()) {
+ taggingInfo.add(change.getGammaId());
+ }
+ }
+ }
+ }
+ if (taggingInfo.size() > 0) {
+ Future<?> future = executor.submit(taggingInfo);
+ if (DbUtil.isDbInit()) {
+ try {
+ future.get();
+ } catch (Exception ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, "Error while waiting for tagger to complete.", ex);
+ }
+ }
+ }
+ }
+
+ @Override
+ public List<? extends IEventFilter> getEventFilters() {
+ return null;
+ }
+
+ @Override
+ public void handleArtifactEvent(ArtifactEvent artifactEvent, Sender sender) {
+ try {
+ if (sender.isRemote()) {
+ return;
+ }
+ TagService taggingInfo = new TagService();
+ for (ArtifactTransactionModifiedEvent event : artifactEvent.getSkynetTransactionDetails()) {
+ if (event instanceof ArtifactModifiedEvent) {
+ for (SkynetAttributeChange change : ((ArtifactModifiedEvent) event).getAttributeChanges()) {
+ if (AttributeTypeManager.getType(change.getTypeId()).isTaggable()) {
+ taggingInfo.add(change.getGammaId());
+ }
+ }
+ }
+ }
+ if (taggingInfo.size() > 0) {
+ Future<?> future = executor.submit(taggingInfo);
+ if (DbUtil.isDbInit()) {
+ try {
+ future.get();
+ } catch (Exception ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, "Error while waiting for tagger to complete.", ex);
+ }
+ }
+ }
+ } catch (OseeCoreException ex1) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex1);
+ return;
+ }
+ }
+
+ @Override
+ public void handleBranchEvent(Sender sender, BranchEvent branchEvent) {
+ // Need to fix tags based on this event
}
private final static class TagService implements Runnable {
@@ -137,122 +234,4 @@ public class HttpAttributeTagger {
}
}
}
-
- /**
- * <REM2>
- *
- * @author Donald G. Dunne
- */
- private final class EventRelay implements IArtifactEventListener, IFrameworkTransactionEventListener, IBranchEventListener, IArtifactsPurgedEventListener, IArtifactsChangeTypeEventListener, ITransactionEventListener, ITransactionsDeletedEventListener {
- @Override
- public void handleBranchEventREM1(Sender sender, BranchEventType branchModType, int branchId) {
- // do nothing
- }
-
- @Override
- public void handleArtifactsPurgedEvent(Sender sender, LoadedArtifacts loadedArtifacts) {
- // if (sender.isRemote()) {
- // return;
- // }
- // try {
- // loadedArtifacts.
- // //TODO: implements
- // // Map<String, String> parameters = new HashMap<String, String>();
- // // parameters.put("sessionId", ClientSessionManager.getSessionId());
- // // parameters.put("queryId", Integer.toString(transactionJoinId));
- // // String url =
- // // HttpUrlBuilder.getInstance().getOsgiServletServiceUrl(OseeServerContext.SEARCH_TAGGING_CONTEXT,
- // // parameters);
- // // String response = HttpProcessor.delete(new URL(url));
- //
- // } catch (Exception ex) {
- // OseeLog.log(Activator.class, Level.WARNING, "Error Deleting Tags during purge.", ex);
- // }
- }
-
- @Override
- public void handleArtifactsChangeTypeEvent(Sender sender, int toArtifactTypeId, LoadedArtifacts loadedArtifacts) {
- // Need to fix tags based on this event
- }
-
- @Override
- public void handleTransactionsDeletedEvent(Sender sender, int[] transactionIds) {
- // Need to fix tags based on this event
- }
-
- @Override
- public void handleTransactionEvent(Sender sender, TransactionEvent transEvent) {
- // Need to fix tags based on this event
- }
-
- @Override
- public void handleFrameworkTransactionEvent(Sender sender, FrameworkTransactionData txData) throws OseeCoreException {
- if (sender.isRemote()) {
- return;
- }
- TagService taggingInfo = new TagService();
- for (ArtifactTransactionModifiedEvent event : txData.getXModifiedEvents()) {
- if (event instanceof ArtifactModifiedEvent) {
- for (SkynetAttributeChange change : ((ArtifactModifiedEvent) event).getAttributeChanges()) {
- if (AttributeTypeManager.getType(change.getTypeId()).isTaggable()) {
- taggingInfo.add(change.getGammaId());
- }
- }
- }
- }
- if (taggingInfo.size() > 0) {
- Future<?> future = executor.submit(taggingInfo);
- if (DbUtil.isDbInit()) {
- try {
- future.get();
- } catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, "Error while waiting for tagger to complete.", ex);
- }
- }
- }
- }
-
- @Override
- public List<? extends IEventFilter> getEventFilters() {
- return null;
- }
-
- @Override
- public void handleArtifactEvent(ArtifactEvent artifactEvent, Sender sender) {
- try {
- if (sender.isRemote()) {
- return;
- }
- TagService taggingInfo = new TagService();
- for (ArtifactTransactionModifiedEvent event : artifactEvent.getSkynetTransactionDetails()) {
- if (event instanceof ArtifactModifiedEvent) {
- for (SkynetAttributeChange change : ((ArtifactModifiedEvent) event).getAttributeChanges()) {
- if (AttributeTypeManager.getType(change.getTypeId()).isTaggable()) {
- taggingInfo.add(change.getGammaId());
- }
- }
- }
- }
- if (taggingInfo.size() > 0) {
- Future<?> future = executor.submit(taggingInfo);
- if (DbUtil.isDbInit()) {
- try {
- future.get();
- } catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, "Error while waiting for tagger to complete.", ex);
- }
- }
- }
- } catch (OseeCoreException ex1) {
- OseeLog.log(Activator.class, Level.SEVERE, ex1);
- return;
- }
- }
-
- @Override
- public void handleBranchEvent(Sender sender, BranchEvent branchEvent) {
- // Need to fix tags based on this event
- }
-
- }
}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/EventSystemPreferences.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/EventSystemPreferences.java
new file mode 100644
index 00000000000..f0ede4ee6f7
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/EventSystemPreferences.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * 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.skynet.core.event;
+
+import java.util.logging.Level;
+import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
+import org.eclipse.osee.framework.database.core.OseeInfo;
+import org.eclipse.osee.framework.jdk.core.util.OseeProperties;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.skynet.core.internal.Activator;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public final class EventSystemPreferences {
+ // This will disable all Local TransactionEvents and enable loop-back routing of Remote TransactionEvents back
+ // through the RemoteEventService as if they came from another client. This is for testing purposes only and
+ // should be reset to false before release.
+ private boolean enableRemoteEventLoopback = false;
+ private boolean disableEvents = false;
+ private boolean pendRunning = false;
+
+ public boolean isDisableEvents() {
+ return disableEvents;
+ }
+
+ public void setDisableEvents(boolean disableEvents) {
+ this.disableEvents = disableEvents;
+ }
+
+ public boolean isEnableRemoteEventLoopback() {
+ return enableRemoteEventLoopback;
+ }
+
+ public void setEnableRemoteEventLoopback(boolean enableRemoteEventLoopback) {
+ this.enableRemoteEventLoopback = enableRemoteEventLoopback;
+ }
+
+ /**
+ * If true, all listeners will be called back in main thread. For testing purposes only.
+ */
+ public void setPendRunning(boolean pendRunning) {
+ this.pendRunning = pendRunning;
+ }
+
+ public boolean isPendRunning() {
+ return pendRunning;
+ }
+
+ public boolean isNewEvents() {
+ try {
+ String dbProperty = OseeInfo.getCachedValue("eventSystem");
+ if (Strings.isValid(dbProperty)) {
+ return dbProperty.equals("new");
+ }
+ } catch (OseeDataStoreException ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ if (!Strings.isValid(getEventSystemType())) {
+ return false;
+ }
+ return getEventSystemType().equals("new");
+ }
+
+ public void setNewEvents(boolean enabled) {
+ System.setProperty("eventSystem", enabled ? "new" : "old");
+ }
+
+ public boolean isOldEvents() {
+ return !isNewEvents();
+ }
+
+ public String getEventSystemType() {
+ return System.getProperty("eventSystem");
+ }
+
+ public String getEventDebug() {
+ return System.getProperty("eventDebug");
+ }
+
+ public String getOseeEventBrokerUri() {
+ return OseeProperties.getOseeDefaultBrokerUri();
+ }
+
+ public boolean isOseeEventBrokerValid() {
+ return Strings.isValid(getOseeEventBrokerUri());
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/EventUtil.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/EventUtil.java
new file mode 100644
index 00000000000..06012ea4c81
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/EventUtil.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * 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.skynet.core.event;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.logging.Level;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.skynet.core.internal.Activator;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public final class EventUtil {
+
+ private EventUtil() {
+ // Utility Class
+ }
+
+ public static String getObjectSafeName(Object object) {
+ try {
+ return object.toString();
+ } catch (Exception ex) {
+ return object.getClass().getSimpleName() + " - exception on toString: " + ex.getLocalizedMessage();
+ }
+ }
+
+ public static String getListenerReport(Collection<IEventListener> listeners, Collection<IEventListener> priorityListeners) {
+ List<String> listenerStrs = new ArrayList<String>();
+ for (IEventListener listener : priorityListeners) {
+ listenerStrs.add("Priority: " + EventUtil.getObjectSafeName(listener));
+ }
+ for (IEventListener listener : listeners) {
+ listenerStrs.add(EventUtil.getObjectSafeName(listener));
+ }
+ String[] listArr = listenerStrs.toArray(new String[listenerStrs.size()]);
+ Arrays.sort(listArr);
+ return org.eclipse.osee.framework.jdk.core.util.Collections.toString("\n", (Object[]) listArr);
+ }
+
+ public static void eventLog(String output) {
+ eventLog(output, null);
+ }
+
+ public static void eventLog(String output, Exception ex) {
+ try {
+ if (isEventDebugConsole()) {
+ System.err.println(output + (ex != null ? " <<ERROR>> " + ex.toString() : ""));
+ } else if (isEventDebugErrorLog()) {
+ if (ex != null) {
+ OseeLog.log(Activator.class, Level.SEVERE, output, ex);
+ } else {
+ OseeLog.log(Activator.class, Level.FINE, output);
+ }
+ }
+ } catch (Exception ex1) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex1);
+ }
+ }
+
+ private static boolean isEventDebugConsole() {
+ if (!Strings.isValid(System.getProperty("eventDebug"))) {
+ return false;
+ }
+ return System.getProperty("eventDebug").equals("console");
+ }
+
+ private static boolean isEventDebugErrorLog() {
+ if (!Strings.isValid(System.getProperty("eventDebug"))) {
+ return false;
+ }
+ return System.getProperty("eventDebug").equals("log") || "TRUE".equalsIgnoreCase(Platform.getDebugOption("org.eclipse.osee.framework.skynet.core/debug/Events"));
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/FrameworkTransactionData.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/FrameworkTransactionData.java
index 2c79380d957..816dc24c661 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/FrameworkTransactionData.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/FrameworkTransactionData.java
@@ -13,19 +13,12 @@ package org.eclipse.osee.framework.skynet.core.event;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
-import java.util.logging.Level;
import org.eclipse.osee.framework.core.data.IRelationType;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactCache;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactModType;
import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery;
-import org.eclipse.osee.framework.skynet.core.internal.Activator;
-import org.eclipse.osee.framework.skynet.core.relation.RelationEventType;
-import org.eclipse.osee.framework.skynet.core.relation.RelationLink;
-import org.eclipse.osee.framework.skynet.core.relation.RelationTypeManager;
+import org.eclipse.osee.framework.skynet.core.event.systems.FrameworkTransationDataCompacter;
import org.eclipse.osee.framework.ui.plugin.event.UnloadedArtifact;
import org.eclipse.osee.framework.ui.plugin.event.UnloadedRelation;
@@ -48,7 +41,7 @@ import org.eclipse.osee.framework.ui.plugin.event.UnloadedRelation;
*/
public class FrameworkTransactionData {
- Collection<ArtifactTransactionModifiedEvent> xModifiedEvents;
+ private Collection<ArtifactTransactionModifiedEvent> xModifiedEvents;
// artifact collections of artifacts based on artifactModType that are currently loaded in the client's artifact cache
public Set<Artifact> cacheChangedArtifacts = new HashSet<Artifact>();
@@ -255,161 +248,7 @@ public class FrameworkTransactionData {
public void setXModifiedEvents(Collection<ArtifactTransactionModifiedEvent> modifiedEvents) {
xModifiedEvents = modifiedEvents;
- createTransactionDataRollup();
- }
-
- private void createTransactionDataRollup() {
- // Roll-up change information
-
- for (ArtifactTransactionModifiedEvent xModifiedEvent : getXModifiedEvents()) {
- if (xModifiedEvent instanceof ArtifactModifiedEvent) {
- ArtifactModifiedEvent xArtifactModifiedEvent = (ArtifactModifiedEvent) xModifiedEvent;
- if (xArtifactModifiedEvent.artifactModType == ArtifactModType.Added) {
- if (xArtifactModifiedEvent.artifact != null) {
- cacheAddedArtifacts.add(xArtifactModifiedEvent.artifact);
- if (branchId == -1) {
- branchId = xArtifactModifiedEvent.artifact.getBranch().getId();
- }
- } else {
- unloadedAddedArtifacts.add(xArtifactModifiedEvent.unloadedArtifact);
- if (branchId == -1) {
- branchId = xArtifactModifiedEvent.unloadedArtifact.getBranchId();
- }
- }
- }
- if (xArtifactModifiedEvent.artifactModType == ArtifactModType.Deleted) {
- if (xArtifactModifiedEvent.artifact != null) {
- cacheDeletedArtifacts.add(xArtifactModifiedEvent.artifact);
- if (branchId == -1) {
- branchId = xArtifactModifiedEvent.artifact.getBranch().getId();
- }
- } else {
- unloadedDeletedArtifacts.add(xArtifactModifiedEvent.unloadedArtifact);
- if (branchId == -1) {
- branchId = xArtifactModifiedEvent.unloadedArtifact.getBranchId();
- }
- }
- }
- if (xArtifactModifiedEvent.artifactModType == ArtifactModType.Changed) {
- if (xArtifactModifiedEvent.artifact != null) {
- cacheChangedArtifacts.add(xArtifactModifiedEvent.artifact);
- if (branchId == -1) {
- branchId = xArtifactModifiedEvent.artifact.getBranch().getId();
- }
- } else {
- unloadedChangedArtifacts.add(xArtifactModifiedEvent.unloadedArtifact);
- if (branchId == -1) {
- branchId = xArtifactModifiedEvent.unloadedArtifact.getBranchId();
- }
- }
- }
- }
- if (xModifiedEvent instanceof RelationModifiedEvent) {
- RelationModifiedEvent xRelationModifiedEvent = (RelationModifiedEvent) xModifiedEvent;
- UnloadedRelation unloadedRelation = xRelationModifiedEvent.unloadedRelation;
- LoadedRelation loadedRelation = null;
- // If link is loaded, get information from link
- if (xRelationModifiedEvent.link != null) {
- RelationLink link = xRelationModifiedEvent.link;
- // Get artifact A/B if loaded in artifact cache
- Artifact artA = ArtifactCache.getActive(link.getAArtifactId(), link.getABranch());
- Artifact artB = ArtifactCache.getActive(link.getBArtifactId(), link.getBBranch());
- try {
- loadedRelation =
- new LoadedRelation(artA, artB, xRelationModifiedEvent.link.getRelationType(),
- xRelationModifiedEvent.branch, unloadedRelation);
- } catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- }
- // Else, get information from unloadedRelation (if != null)
- else if (unloadedRelation != null) {
- Artifact artA = ArtifactCache.getActive(unloadedRelation.getArtifactAId(), unloadedRelation.getId());
- Artifact artB = ArtifactCache.getActive(unloadedRelation.getArtifactBId(), unloadedRelation.getId());
- if (artA != null || artB != null) {
- try {
- loadedRelation =
- new LoadedRelation(artA, artB, RelationTypeManager.getType(unloadedRelation.getTypeId()),
- artA != null ? artA.getBranch() : artB.getBranch(), unloadedRelation);
- } catch (OseeCoreException ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- }
- }
- if (xRelationModifiedEvent.relationEventType == RelationEventType.Added) {
- if (loadedRelation != null) {
- cacheAddedRelations.add(loadedRelation);
- if (loadedRelation.getArtifactA() != null) {
- cacheRelationAddedArtifacts.add(loadedRelation.getArtifactA());
- if (branchId == -1) {
- branchId = loadedRelation.getArtifactA().getBranch().getId();
- }
- }
- if (loadedRelation.getArtifactB() != null) {
- cacheRelationAddedArtifacts.add(loadedRelation.getArtifactB());
- if (branchId == -1) {
- branchId = loadedRelation.getArtifactB().getBranch().getId();
- }
- }
- }
- if (unloadedRelation != null) {
- unloadedAddedRelations.add(unloadedRelation);
- }
- }
- if (xRelationModifiedEvent.relationEventType == RelationEventType.Deleted) {
- if (loadedRelation != null) {
- cacheDeletedRelations.add(loadedRelation);
- if (loadedRelation.getArtifactA() != null) {
- cacheRelationDeletedArtifacts.add(loadedRelation.getArtifactA());
- if (branchId == -1) {
- branchId = loadedRelation.getArtifactA().getBranch().getId();
- loadedRelation.getBranch();
- }
- }
- if (loadedRelation.getArtifactB() != null) {
- cacheRelationDeletedArtifacts.add(loadedRelation.getArtifactB());
- if (branchId == -1) {
- branchId = loadedRelation.getArtifactB().getBranch().getId();
- }
- }
- }
- if (unloadedRelation != null) {
- unloadedDeletedRelations.add(unloadedRelation);
- if (branchId == -1) {
- branchId = unloadedRelation.getId();
- }
- }
- }
- if (xRelationModifiedEvent.relationEventType == RelationEventType.ModifiedRationale) {
- if (loadedRelation != null) {
- cacheChangedRelations.add(loadedRelation);
- if (loadedRelation.getArtifactA() != null) {
- cacheRelationChangedArtifacts.add(loadedRelation.getArtifactA());
- if (branchId == -1) {
- branchId = loadedRelation.getArtifactA().getBranch().getId();
- }
- }
- if (loadedRelation.getArtifactB() != null) {
- cacheRelationChangedArtifacts.add(loadedRelation.getArtifactB());
- if (branchId == -1) {
- branchId = loadedRelation.getArtifactB().getBranch().getId();
- }
- }
- }
- if (unloadedRelation != null) {
- unloadedChangedRelations.add(unloadedRelation);
- if (branchId == -1) {
- branchId = unloadedRelation.getId();
- }
- }
- }
- }
- }
-
- // Clean out known duplicates
- cacheChangedArtifacts.removeAll(cacheDeletedArtifacts);
- cacheAddedArtifacts.removeAll(cacheDeletedArtifacts);
-
+ FrameworkTransationDataCompacter.compact(this);
}
}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/OseeEventManager.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/OseeEventManager.java
index 547f9a3c233..c270a0ed4cf 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/OseeEventManager.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/OseeEventManager.java
@@ -10,26 +10,27 @@
*******************************************************************************/
package org.eclipse.osee.framework.skynet.core.event;
+import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
-import org.eclipse.core.runtime.Platform;
import org.eclipse.osee.framework.core.client.ClientSessionManager;
import org.eclipse.osee.framework.core.data.OseeBranch;
import org.eclipse.osee.framework.core.enums.CoreBranches;
import org.eclipse.osee.framework.core.exception.OseeAuthenticationRequiredException;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.exception.OseeDataStoreException;
import org.eclipse.osee.framework.core.model.Branch;
-import org.eclipse.osee.framework.database.core.OseeInfo;
import org.eclipse.osee.framework.jdk.core.util.OseeProperties;
-import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.messaging.event.res.RemoteEvent;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.skynet.core.artifact.ArtifactModType;
+import org.eclipse.osee.framework.skynet.core.event.systems.EventManagerData;
+import org.eclipse.osee.framework.skynet.core.event.systems.InternalEventManager2;
+import org.eclipse.osee.framework.skynet.core.event.systems.LegacyEventManager;
import org.eclipse.osee.framework.skynet.core.event2.AccessControlEvent;
import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
import org.eclipse.osee.framework.skynet.core.event2.BranchEvent;
@@ -58,25 +59,141 @@ public class OseeEventManager {
private static List<IEventFilter> commonBranchEventFilter;
private static BranchGuidEventFilter commonBranchGuidEvenFilter;
- private static Sender getSender(Object sourceObject) throws OseeAuthenticationRequiredException {
+ private static EventManagerData eventManagerData;
+
+ private OseeEventManager() {
+ // Static methods only;
+ }
+
+ public static void setEventManagerData(EventManagerData eventManagerData) {
+ OseeEventManager.eventManagerData = eventManagerData;
+ }
+
+ /**
+ * Add a priority listener. This should only be done for caches where they need to be updated before all other
+ * listeners are called.
+ */
+ public static void addPriorityListener(IEventListener listener) {
+ if (listener == null) {
+ throw new IllegalArgumentException("listener can not be null");
+ }
+ Collection<IEventListener> priorityListeners = eventManagerData.getPriorityListeners();
+ if (!priorityListeners.contains(listener)) {
+ priorityListeners.add(listener);
+ }
+ }
+
+ public static void addListener(IEventListener listener) {
+ if (listener == null) {
+ throw new IllegalArgumentException("listener can not be null");
+ }
+ Collection<IEventListener> listeners = eventManagerData.getListeners();
+ if (!listeners.contains(listener)) {
+ listeners.add(listener);
+ }
+ }
+
+ public static void removeAllListeners() {
+ eventManagerData.getListeners().clear();
+ eventManagerData.getPriorityListeners().clear();
+ }
+
+ public static void removeListener(IEventListener listener) {
+ eventManagerData.getListeners().remove(listener);
+ eventManagerData.getPriorityListeners().remove(listener);
+ }
+
+ private static LegacyEventManager getLegacyEventManager() {
+ return eventManagerData.getLegacyEventManager();
+ }
+
+ private static InternalEventManager2 getEventManager() {
+ return eventManagerData.getMessageEventManager();
+ }
+
+ public static EventSystemPreferences getPreferences() {
+ return eventManagerData.getPreferences();
+ }
+
+ public static boolean isLegacyEventManagerConnected() {
+ return getLegacyEventManager() != null ? getLegacyEventManager().isConnected() : false;
+ }
+
+ public static boolean isEventManagerConnected() {
+ return getEventManager() != null ? getEventManager().isConnected() : false;
+ }
+
+ public static String getLegacyConnectionDetails() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("osee.jini.lookup.groups [");
+ sb.append(System.getProperty("osee.jini.lookup.groups"));
+ sb.append("]");
+ sb.append("eventSystem [");
+ sb.append(getPreferences().getEventSystemType());
+ sb.append("]");
+ return sb.toString();
+ }
+
+ public static String getConnectionDetails() {
+ EventSystemPreferences preferences = getPreferences();
+ StringBuilder sb = new StringBuilder();
+ sb.append("oseeEventBrokerUri [" + preferences.getOseeEventBrokerUri() + "]");
+ sb.append("eventDebug [" + preferences.getEventDebug() + "]");
+ sb.append("eventSystem [" + preferences.getEventSystemType() + "]");
+ return sb.toString();
+ }
+
+ public static int getNumberOfListeners() {
+ int toReturn = -1;
+ if (isOldEvents() || isNewEvents()) {
+ toReturn = eventManagerData.getListeners().size();
+ }
+ return toReturn;
+ }
+
+ private static Sender createSender(Object sourceObject) throws OseeAuthenticationRequiredException {
+ Sender sender = null;
// Sender came from Remote Event Manager if source == sender
if (sourceObject instanceof Sender && ((Sender) sourceObject).isRemote()) {
- return (Sender) sourceObject;
+ sender = (Sender) sourceObject;
+ } else {
+ // create new sender based on sourceObject
+ sender = new Sender(sourceObject, ClientSessionManager.getSession());
+ }
+ return sender;
+ }
+
+ // Only Used for Testing purposes
+ public static void internalTestSendRemoteEvent(final RemoteEvent remoteEvent) throws RemoteException {
+ if (isNewEvents()) {
+ getEventManager().testSendRemoteEventThroughFrameworkListener(remoteEvent);
+ }
+ }
+
+ // Only Used for Testing purposes
+ public static void internalTestProcessBranchEvent(Sender sender, BranchEvent branchEvent) {
+ if (isNewEvents()) {
+ getEventManager().processBranchEvent(sender, branchEvent);
+ }
+ }
+
+ // Only Used for Testing purposes
+ public static void internalTestProcessEventArtifactsAndRelations(Sender sender, ArtifactEvent artifactEvent) {
+ if (isNewEvents()) {
+ getEventManager().processEventArtifactsAndRelations(sender, artifactEvent);
}
- // Else, create new sender based on sourceObject
- return new Sender(sourceObject, ClientSessionManager.getSession());
}
// Kick LOCAL remote-event event
public static void kickLocalRemEvent(Object source, RemoteEventServiceEventType remoteEventServiceEventType) throws OseeCoreException {
- if (InternalEventManager.isDisableEvents()) {
+ if (isDisableEvents()) {
return;
}
- if (OseeEventManager.isOldEvents()) {
- InternalEventManager.kickRemoteEventManagerEvent(getSender(source), remoteEventServiceEventType);
+ if (isOldEvents()) {
+ getLegacyEventManager().kickRemoteEventManagerEvent(createSender(source), remoteEventServiceEventType);
}
- if (OseeEventManager.isNewEvents()) {
- InternalEventManager2.kickLocalRemEvent(getSender(source), remoteEventServiceEventType);
+ if (isNewEvents()) {
+ getEventManager().kickLocalRemEvent(createSender(source), remoteEventServiceEventType);
}
}
@@ -85,31 +202,31 @@ public class OseeEventManager {
if (isDisableEvents()) {
return;
}
- if (OseeEventManager.isOldEvents()) {
- InternalEventManager.kickBroadcastEvent(getSender(source), broadcastEvent.getBroadcastEventType(),
+ if (isOldEvents()) {
+ getLegacyEventManager().kickBroadcastEvent(createSender(source), broadcastEvent.getBroadcastEventType(),
broadcastEvent.getUsers().toArray(new String[broadcastEvent.getUsers().size()]),
broadcastEvent.getMessage());
}
- if (OseeEventManager.isNewEvents()) {
- InternalEventManager2.kickBroadcastEvent(getSender(source), broadcastEvent);
+ if (isNewEvents()) {
+ getEventManager().kickBroadcastEvent(createSender(source), broadcastEvent);
}
}
//Kick LOCAL and REMOTE branch events
public static void kickBranchEvent(Object source, BranchEvent branchEvent, int branchId) throws OseeCoreException {
- eventLog("OEM: kickBranchEvent: type: " + branchEvent.getEventType() + " guid: " + branchEvent.getBranchGuid() + " - " + source);
+ EventUtil.eventLog("OEM: kickBranchEvent: type: " + branchEvent.getEventType() + " guid: " + branchEvent.getBranchGuid() + " - " + source);
if (testBranchEventListener != null) {
- testBranchEventListener.handleBranchEventREM1(getSender(source), branchEvent.getEventType(), branchId);
+ testBranchEventListener.handleBranchEventREM1(createSender(source), branchEvent.getEventType(), branchId);
}
if (isDisableEvents()) {
return;
}
- if (OseeEventManager.isOldEvents()) {
- InternalEventManager.kickBranchEvent(getSender(source), branchEvent.getEventType(), branchId);
+ if (isOldEvents()) {
+ getLegacyEventManager().kickBranchEvent(createSender(source), branchEvent.getEventType(), branchId);
}
- branchEvent.setNetworkSender(getSender(source).getNetworkSender());
- if (OseeEventManager.isNewEvents()) {
- InternalEventManager2.kickBranchEvent(getSender(source), branchEvent);
+ branchEvent.setNetworkSender(createSender(source).getNetworkSender());
+ if (isNewEvents()) {
+ getEventManager().kickBranchEvent(createSender(source), branchEvent);
}
}
@@ -118,8 +235,8 @@ public class OseeEventManager {
if (isDisableEvents()) {
return;
}
- if (OseeEventManager.isOldEvents()) {
- InternalEventManager.kickMergeBranchEvent(getSender(source), branchEventType, branchId);
+ if (isOldEvents()) {
+ getLegacyEventManager().kickMergeBranchEvent(createSender(source), branchEventType, branchId);
// Handled by kickMergeBranchEvent for new Events
}
}
@@ -129,12 +246,13 @@ public class OseeEventManager {
if (isDisableEvents()) {
return;
}
- accessControlEvent.setNetworkSender(getSender(source).getNetworkSender());
- if (OseeEventManager.isOldEvents()) {
- InternalEventManager.kickAccessControlArtifactsEvent(getSender(source), accessControlEvent, loadedArtifacts);
+ accessControlEvent.setNetworkSender(createSender(source).getNetworkSender());
+ if (isOldEvents()) {
+ getLegacyEventManager().kickAccessControlArtifactsEvent(createSender(source), accessControlEvent,
+ loadedArtifacts);
}
- if (OseeEventManager.isNewEvents()) {
- InternalEventManager2.kickAccessControlArtifactsEvent(getSender(source), accessControlEvent);
+ if (isNewEvents()) {
+ getEventManager().kickAccessControlArtifactsEvent(createSender(source), accessControlEvent);
}
}
@@ -143,8 +261,8 @@ public class OseeEventManager {
if (isDisableEvents()) {
return;
}
- if (OseeEventManager.isOldEvents()) {
- InternalEventManager.kickArtifactModifiedEvent(getSender(source), artifactModType, artifact);
+ if (isOldEvents()) {
+ getLegacyEventManager().kickArtifactModifiedEvent(createSender(source), artifactModType, artifact);
}
}
@@ -153,8 +271,8 @@ public class OseeEventManager {
if (isDisableEvents()) {
return;
}
- if (OseeEventManager.isOldEvents()) {
- InternalEventManager.kickRelationModifiedEvent(getSender(source), relationEventType, link, branch,
+ if (isOldEvents()) {
+ getLegacyEventManager().kickRelationModifiedEvent(createSender(source), relationEventType, link, branch,
relationType);
}
}
@@ -164,8 +282,8 @@ public class OseeEventManager {
if (isDisableEvents()) {
return;
}
- if (OseeEventManager.isOldEvents()) {
- InternalEventManager.kickArtifactsPurgedEvent(getSender(source), loadedArtifacts);
+ if (isOldEvents()) {
+ getLegacyEventManager().kickArtifactsPurgedEvent(createSender(source), loadedArtifacts);
// Handled by kickTransactionEvent for new Events
}
}
@@ -175,8 +293,8 @@ public class OseeEventManager {
if (isDisableEvents()) {
return;
}
- if (OseeEventManager.isOldEvents()) {
- InternalEventManager.kickArtifactsChangeTypeEvent(getSender(source), toArtifactTypeId, loadedArtifacts);
+ if (isOldEvents()) {
+ getLegacyEventManager().kickArtifactsChangeTypeEvent(createSender(source), toArtifactTypeId, loadedArtifacts);
// Handled by kickTransactionEvent for new Events
}
}
@@ -196,11 +314,11 @@ public class OseeEventManager {
transIds[x++] = value.intValue();
}
if (transactionEvent.getEventType() == TransactionEventType.Purged && OseeEventManager.isOldEvents()) {
- InternalEventManager.kickTransactionsPurgedEvent(getSender(source), transIds);
+ getLegacyEventManager().kickTransactionsPurgedEvent(createSender(source), transIds);
}
- transactionEvent.setNetworkSender(getSender(source).getNetworkSender());
- if (OseeEventManager.isNewEvents()) {
- InternalEventManager2.kickTransactionEvent(getSender(source), transactionEvent);
+ transactionEvent.setNetworkSender(createSender(source).getNetworkSender());
+ if (isNewEvents()) {
+ getEventManager().kickTransactionEvent(createSender(source), transactionEvent);
}
}
@@ -210,11 +328,11 @@ public class OseeEventManager {
return;
}
if (artifactEvent.getSkynetTransactionDetails() != null && OseeEventManager.isOldEvents()) {
- InternalEventManager.kickPersistEvent(getSender(source), artifactEvent.getSkynetTransactionDetails());
+ getLegacyEventManager().kickPersistEvent(createSender(source), artifactEvent.getSkynetTransactionDetails());
}
- artifactEvent.setNetworkSender(getSender(source).getNetworkSender());
- if (OseeEventManager.isNewEvents()) {
- InternalEventManager2.kickArtifactEvent(getSender(source), artifactEvent);
+ artifactEvent.setNetworkSender(createSender(source).getNetworkSender());
+ if (isNewEvents()) {
+ getEventManager().kickArtifactEvent(createSender(source), artifactEvent);
}
}
@@ -223,66 +341,35 @@ public class OseeEventManager {
if (isDisableEvents()) {
return;
}
- if (OseeEventManager.isOldEvents()) {
- InternalEventManager.kickArtifactReloadEvent(getSender(source), artifacts);
+ if (isOldEvents()) {
+ getLegacyEventManager().kickArtifactReloadEvent(createSender(source), artifacts);
}
ArtifactEvent artifactEvent = new ArtifactEvent(artifacts.iterator().next().getBranch());
artifactEvent.getArtifacts().addAll(EventBasicGuidArtifact.get(EventModType.Reloaded, artifacts));
- if (OseeEventManager.isNewEvents()) {
- InternalEventManager2.kickLocalArtifactReloadEvent(getSender(source), artifactEvent);
- }
- }
-
- /**
- * Add a priority listener. This should only be done for caches where they need to be updated before all other
- * listeners are called.
- */
- public static void addPriorityListener(IEventListener listener) {
- if (OseeEventManager.isOldEvents()) {
- InternalEventManager.addPriorityListener(listener);
- }
- if (OseeEventManager.isNewEvents()) {
- InternalEventManager2.addPriorityListener(listener);
- }
- }
-
- public static void addListener(IEventListener listener) {
- if (OseeEventManager.isOldEvents()) {
- InternalEventManager.addListener(listener);
- }
- if (OseeEventManager.isNewEvents()) {
- InternalEventManager2.addListener(listener);
- }
- }
-
- public static void removeListener(IEventListener listener) {
- if (OseeEventManager.isOldEvents()) {
- InternalEventManager.removeListeners(listener);
- }
- if (OseeEventManager.isNewEvents()) {
- InternalEventManager2.removeListeners(listener);
+ if (isNewEvents()) {
+ getEventManager().kickLocalArtifactReloadEvent(createSender(source), artifactEvent);
}
}
public static boolean isDisableEvents() {
- return InternalEventManager.isDisableEvents();
+ return getPreferences().isDisableEvents();
}
// Turn off all event processing including LOCAL and REMOTE
public static void setDisableEvents(boolean disableEvents) {
- InternalEventManager.setDisableEvents(disableEvents);
- InternalEventManager2.setDisableEvents(disableEvents);
+ getPreferences().setDisableEvents(disableEvents);
}
// Return report showing all listeners registered
public static String getListenerReport() {
- if (OseeEventManager.isOldEvents()) {
- return InternalEventManager.getListenerReport();
- }
- if (OseeEventManager.isNewEvents()) {
- return InternalEventManager2.getListenerReport();
- }
- return "Neither event system is active";
+ String toReturn;
+ if (isOldEvents() || isNewEvents()) {
+ toReturn =
+ EventUtil.getListenerReport(eventManagerData.getListeners(), eventManagerData.getPriorityListeners());
+ } else {
+ toReturn = "Neither event system is active";
+ }
+ return toReturn;
}
// Registration for branch events; for test only
@@ -293,67 +380,18 @@ public class OseeEventManager {
testBranchEventListener = branchEventListener;
}
- public static boolean isEventDebugConsole() {
- if (!Strings.isValid(System.getProperty("eventDebug"))) {
- return false;
- }
- return System.getProperty("eventDebug").equals("console");
- }
-
- public static boolean isEventDebugErrorLog() {
- if (!Strings.isValid(System.getProperty("eventDebug"))) {
- return false;
- }
- return System.getProperty("eventDebug").equals("log") || "TRUE".equalsIgnoreCase(Platform.getDebugOption("org.eclipse.osee.framework.skynet.core/debug/Events"));
- }
-
/**
* If old event kicks and listens should be used
*/
- public static boolean isOldEvents() {
+ private static boolean isOldEvents() {
return !isNewEvents();
}
/**
* If new event kicks and listens should be used
*/
- public static boolean isNewEvents() {
- try {
- String dbProperty = OseeInfo.getCachedValue("eventSystem");
- if (Strings.isValid(dbProperty)) {
- return dbProperty.equals("new");
- }
- } catch (OseeDataStoreException ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- if (!Strings.isValid(System.getProperty("eventSystem"))) {
- return false;
- }
- return System.getProperty("eventSystem").equals("new");
- }
-
- public static void setNewEvents(boolean enabled) {
- System.setProperty("eventSystem", enabled ? "new" : "old");
- }
-
- public static void eventLog(String output) {
- eventLog(output, null);
- }
-
- public static void eventLog(String output, Exception ex) {
- try {
- if (isEventDebugConsole()) {
- System.err.println(output + (ex != null ? " <<ERROR>> " + ex.toString() : ""));
- } else if (isEventDebugErrorLog()) {
- if (ex != null) {
- OseeLog.log(Activator.class, Level.SEVERE, output, ex);
- } else {
- OseeLog.log(Activator.class, Level.FINE, output);
- }
- }
- } catch (Exception ex1) {
- OseeLog.log(Activator.class, Level.SEVERE, ex1);
- }
+ private static boolean isNewEvents() {
+ return getPreferences().isNewEvents();
}
public static List<IEventFilter> getEventFiltersForBranch(Branch branch) {
@@ -389,5 +427,4 @@ public class OseeEventManager {
}
return commonBranchGuidEvenFilter;
}
-
}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/RemoteEventManager.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/RemoteEventManager.java
deleted file mode 100644
index c9bf7f358c7..00000000000
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/RemoteEventManager.java
+++ /dev/null
@@ -1,720 +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.skynet.core.event;
-
-import java.rmi.RemoteException;
-import java.rmi.server.ExportException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.logging.Level;
-import net.jini.core.entry.Entry;
-import net.jini.core.lookup.ServiceItem;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.osee.framework.core.client.ClientSessionManager;
-import org.eclipse.osee.framework.core.enums.BranchState;
-import org.eclipse.osee.framework.core.enums.ModificationType;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.model.Branch;
-import org.eclipse.osee.framework.core.model.cache.BranchCache;
-import org.eclipse.osee.framework.core.model.type.RelationType;
-import org.eclipse.osee.framework.jdk.core.util.GUID;
-import org.eclipse.osee.framework.jini.discovery.EclipseJiniClassloader;
-import org.eclipse.osee.framework.jini.discovery.IServiceLookupListener;
-import org.eclipse.osee.framework.jini.discovery.ServiceDataStore;
-import org.eclipse.osee.framework.jini.service.core.SimpleFormattedEntry;
-import org.eclipse.osee.framework.jini.util.OseeJini;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.messaging.event.skynet.ASkynetEventListener;
-import org.eclipse.osee.framework.messaging.event.skynet.ISkynetArtifactEvent;
-import org.eclipse.osee.framework.messaging.event.skynet.ISkynetEvent;
-import org.eclipse.osee.framework.messaging.event.skynet.ISkynetEventListener;
-import org.eclipse.osee.framework.messaging.event.skynet.ISkynetEventService;
-import org.eclipse.osee.framework.messaging.event.skynet.ISkynetRelationLinkEvent;
-import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkAccessControlArtifactsEvent;
-import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkArtifactChangeTypeEvent;
-import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkArtifactDeletedEvent;
-import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkArtifactModifiedEvent;
-import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkArtifactPurgeEvent;
-import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkBroadcastEvent;
-import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkCommitBranchEvent;
-import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkDeletedBranchEvent;
-import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkNewBranchEvent;
-import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkPurgeBranchEvent;
-import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkRelationLinkCreatedEvent;
-import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkRelationLinkDeletedEvent;
-import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkRelationLinkRationalModifiedEvent;
-import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkRenameBranchEvent;
-import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkTransactionDeletedEvent;
-import org.eclipse.osee.framework.messaging.event.skynet.event.SkynetAttributeChange;
-import org.eclipse.osee.framework.skynet.core.UserManager;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactCache;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactModType;
-import org.eclipse.osee.framework.skynet.core.artifact.Attribute;
-import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
-import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery;
-import org.eclipse.osee.framework.skynet.core.attribute.AttributeTypeManager;
-import org.eclipse.osee.framework.skynet.core.event2.AccessControlEvent;
-import org.eclipse.osee.framework.skynet.core.internal.Activator;
-import org.eclipse.osee.framework.skynet.core.relation.RelationEventType;
-import org.eclipse.osee.framework.skynet.core.relation.RelationLink;
-import org.eclipse.osee.framework.skynet.core.relation.RelationManager;
-import org.eclipse.osee.framework.skynet.core.relation.RelationTypeManager;
-import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager;
-import org.eclipse.osee.framework.skynet.core.utility.LoadedArtifacts;
-import org.eclipse.osee.framework.ui.plugin.event.UnloadedArtifact;
-import org.eclipse.osee.framework.ui.plugin.event.UnloadedRelation;
-
-/**
- * Manages remote events from the SkynetEventService.
- *
- * @author Jeff C. Phillips
- * @author Donald G. Dunne
- */
-public class RemoteEventManager {
- private static String ACCEPTABLE_SERVICE;
-
- private static final RemoteEventManager instance = new RemoteEventManager();
-
- private final InternalSkynetEventManager internalSkynetEventManager;
- private final ISkynetEventListener clientEventListener;
- private ISkynetEventListener clientEventListenerRemoteReference;
-
- private RemoteEventManager() {
- super();
- if (OseeEventManager.isOldEvents()) {
- OseeLog.log(Activator.class, Level.INFO, "REM1 Enabled");
- internalSkynetEventManager = new InternalSkynetEventManager();
- clientEventListener = new EventListener();
- checkJiniRegistration();
- } else {
- OseeLog.log(Activator.class, Level.INFO, "REM1 Disabled");
- internalSkynetEventManager = null;
- clientEventListener = null;
- }
- }
-
- private void checkJiniRegistration() {
- if (OseeEventManager.isNewEvents()) {
- return;
- }
- if (clientEventListenerRemoteReference == null) {
- try {
- // We need to trigger authentication before attempting to get database information from client session manager.
- UserManager.getUser();
- ACCEPTABLE_SERVICE =
- ClientSessionManager.getDataStoreName() + ":" + ClientSessionManager.getDataStoreLoginName();
- clientEventListenerRemoteReference =
- (ISkynetEventListener) OseeJini.getRemoteReference(clientEventListener);
- } catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- clientEventListenerRemoteReference = null;
- }
-
- if (clientEventListenerRemoteReference != null) {
- ServiceDataStore.getEclipseInstance(EclipseJiniClassloader.getInstance()).addListener(
- internalSkynetEventManager, ISkynetEventService.class);
- }
- }
- }
-
- private static ISkynetEventListener getClientEventListenerRemoteReference() {
- instance.checkJiniRegistration();
- return instance.clientEventListenerRemoteReference;
- }
-
- private static InternalSkynetEventManager getEventServiceManager() {
- return instance.internalSkynetEventManager;
- }
-
- public static void deregisterFromRemoteEventManager() {
- if (OseeEventManager.isNewEvents()) {
- return;
- }
- ServiceDataStore.getEclipseInstance(EclipseJiniClassloader.getInstance()).removeListener(getEventServiceManager());
- getEventServiceManager().reset();
- }
-
- public static void kick(Collection<ISkynetEvent> events) {
- kick(events.toArray(new ISkynetEvent[events.size()]));
- }
-
- public static boolean isConnected() {
- return OseeEventManager.isOldEvents() && getEventServiceManager().isValid();
- }
-
- public static String getConnectionProperties() {
- StringBuilder sb = new StringBuilder();
- sb.append("osee.jini.lookup.groups [" + System.getProperty("osee.jini.lookup.groups") + "]");
- sb.append("eventSystem [" + System.getProperty("eventSystem") + "]");
-
- return sb.toString();
- }
-
- public static void kick(final ISkynetEvent... events) {
- if (OseeEventManager.isOldEvents() && isConnected()) {
- Job job = new Job("Send Event") {
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- getEventServiceManager().kick(events, getClientEventListenerRemoteReference());
- return Status.OK_STATUS;
- }
- };
-
- job.schedule();
- }
- /*
- * This will enable a testing loopback that will take the kicked remote events and loop them back as if they came
- * from an external client. It will allow for the testing of the OEM -> REM -> OEM processing. In addition, this
- * onEvent is put in a non-display thread which will test that all handling by applications is properly handled by
- * doing all processing and then kicking off display-thread when need to update ui. SessionId needs to be modified
- * so this client doesn't think the events came from itself.
- */
- if (InternalEventManager.isEnableRemoteEventLoopback()) {
- OseeEventManager.eventLog("REM: Loopback enabled - Returning events as Remote event.");
- Thread thread = new Thread() {
- @Override
- public void run() {
- try {
- String newSessionId = GUID.create();
- for (ISkynetEvent event : events) {
- event.getNetworkSender().sessionId = newSessionId;
- }
- instance.clientEventListener.onEvent(events);
- } catch (RemoteException ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
-
- }
- }
- };
- thread.start();
- }
- }
-
- private static class InternalSkynetEventManager implements IServiceLookupListener {
- private ISkynetEventService currentEventService;
-
- private InternalSkynetEventManager() {
- currentEventService = null;
- }
-
- public ISkynetEventService getReference() {
- return currentEventService;
- }
-
- public boolean isValid() {
- return isValidService(currentEventService);
- }
-
- public void reset() {
- setEventService(null);
- }
-
- public void kick(ISkynetEvent[] events, ISkynetEventListener... except) {
- try {
- getReference().kick(events, except);
- } catch (ExportException ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- } catch (RemoteException ex) {
- disconnectService(ex);
- }
- }
-
- private boolean isValidService(ISkynetEventService service) {
- boolean result = false;
- try {
- if (service != null) {
- result = service.isAlive();
- }
- } catch (Exception ex) {
- // Do Nothing
- result = false;
- }
- return result;
- }
-
- private synchronized void setEventService(ISkynetEventService service) {
- if (isValidService(currentEventService)) {
- try {
- currentEventService.deregister(getClientEventListenerRemoteReference());
- } catch (RemoteException ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- }
- currentEventService = service;
- }
-
- private void disconnectService(Exception e) {
- if (OseeEventManager.isNewEvents()) {
- return;
- }
- OseeLog.log(Activator.class, Level.WARNING, "Skynet Event Service connection lost\n" + e.toString(), e);
- setEventService(null);
- try {
- OseeEventManager.kickLocalRemEvent(instance, RemoteEventServiceEventType.Rem1_DisConnected);
- } catch (OseeCoreException ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- }
-
- private void connectToService(ISkynetEventService service) {
- if (OseeEventManager.isNewEvents()) {
- return;
- }
- try {
- ISkynetEventListener clientListener = getClientEventListenerRemoteReference();
- if (clientListener != null) {
- service.register(clientListener);
- setEventService(service);
- OseeLog.log(Activator.class, Level.INFO,
- "Skynet Event Service connection established " + ACCEPTABLE_SERVICE);
- OseeEventManager.kickLocalRemEvent(this, RemoteEventServiceEventType.Rem1_Connected);
- } else {
- OseeLog.log(Activator.class, Level.SEVERE, "Client listener reference was null");
- }
- } catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- }
-
- @Override
- public void serviceAdded(ServiceItem serviceItem) {
- if (OseeEventManager.isNewEvents()) {
- return;
- }
- if (serviceItem.service instanceof ISkynetEventService) {
- ISkynetEventService service = (ISkynetEventService) serviceItem.service;
- if (isValidService(service)) {
- // Check if the service is for the database we are using
- for (Entry entry : serviceItem.attributeSets) {
- if (entry instanceof SimpleFormattedEntry) {
- SimpleFormattedEntry simpleEntry = (SimpleFormattedEntry) entry;
- if ("db".equals(simpleEntry.name) && ACCEPTABLE_SERVICE.equals(simpleEntry.value)) {
- connectToService(service);
- break;
- }
- }
- }
- }
- }
- }
-
- @Override
- public void serviceChanged(ServiceItem serviceItem) {
- serviceAdded(serviceItem);
- }
-
- @Override
- public void serviceRemoved(ServiceItem serviceItem) {
- // do nothing
- }
- }
-
- private static class EventListener extends ASkynetEventListener {
- private static final long serialVersionUID = -3017349745450262540L;
- private static final ISchedulingRule mutexRule = new ISchedulingRule() {
-
- @Override
- public boolean contains(ISchedulingRule rule) {
- return rule == this;
- }
-
- @Override
- public boolean isConflicting(ISchedulingRule rule) {
- return rule == this;
- }
- };
-
- @Override
- public void onEvent(final ISkynetEvent[] events) {
-
- final List<ArtifactTransactionModifiedEvent> xModifiedEvents =
- new LinkedList<ArtifactTransactionModifiedEvent>();
- Job job = new Job("Receive Event") {
-
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- try {
- Sender lastArtifactRelationModChangeSender = null;
-
- for (ISkynetEvent event : events) {
-
- Sender sender = new Sender(event.getNetworkSender());
- // If the sender's sessionId is the same as this client, then this event was
- // created in this client and returned by remote event manager; ignore and continue
- if (sender.isLocal()) {
- continue;
- }
-
- if (event instanceof NetworkAccessControlArtifactsEvent) {
- try {
- AccessControlEvent accessControlEvent = new AccessControlEvent();
- AccessControlEventType accessControlModType =
- AccessControlEventType.valueOf(((NetworkAccessControlArtifactsEvent) event).getAccessControlModTypeName());
- accessControlEvent.setEventType(accessControlModType);
- NetworkAccessControlArtifactsEvent accessEvent = (NetworkAccessControlArtifactsEvent) event;
- Integer[] artIds =
- accessEvent.getArtifactIds().toArray(new Integer[accessEvent.getArtifactIds().size()]);
- Branch branch = BranchManager.getBranch(accessEvent.getId());
- for (int x = 0; x < accessEvent.getArtifactIds().size(); x++) {
- Artifact cachedArt = ArtifactQuery.getArtifactFromId(artIds[x], branch);
- if (cachedArt != null) {
- accessControlEvent.getArtifacts().add(cachedArt.getBasicGuidArtifact());
- }
- }
- LoadedArtifacts loadedArtifacts =
- new LoadedArtifacts(accessEvent.getId(), accessEvent.getArtifactIds(),
- accessEvent.getArtifactTypeIds());
- InternalEventManager.kickAccessControlArtifactsEvent(sender, accessControlEvent,
- loadedArtifacts);
- } catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- } else if (event instanceof NetworkRenameBranchEvent) {
- int branchId = ((NetworkRenameBranchEvent) event).getId();
- try {
- Branch branch = BranchManager.getBranch(branchId);
- branch.setName(((NetworkRenameBranchEvent) event).getBranchName());
- branch.clearDirty();
- try {
- InternalEventManager.kickBranchEvent(sender, BranchEventType.Renamed, branchId);
- } catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- } catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- } else if (event instanceof NetworkNewBranchEvent) {
- int branchId = ((NetworkNewBranchEvent) event).getId();
- try {
- InternalEventManager.kickBranchEvent(sender, BranchEventType.Added, branchId);
- } catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- } else if (event instanceof NetworkDeletedBranchEvent) {
- int branchId = ((NetworkDeletedBranchEvent) event).getId();
- try {
- Branch branch =
- Activator.getInstance().getOseeCacheService().getBranchCache().getById(branchId);
- if (branch != null) {
- branch.setBranchState(BranchState.DELETED);
- branch.clearDirty();
- }
- InternalEventManager.kickBranchEvent(sender, BranchEventType.Deleted, branchId);
- } catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- } else if (event instanceof NetworkPurgeBranchEvent) {
- int branchId = ((NetworkPurgeBranchEvent) event).getId();
- try {
- BranchCache cache = Activator.getInstance().getOseeCacheService().getBranchCache();
- Branch branch = cache.getById(branchId);
- if (branch != null) {
- cache.decache(branch);
- }
- InternalEventManager.kickBranchEvent(sender, BranchEventType.Purged, branchId);
- } catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- } else if (event instanceof NetworkCommitBranchEvent) {
- int branchId = ((NetworkCommitBranchEvent) event).getId();
- try {
- try {
- TransactionManager.clearCommitArtifactCacheForAssociatedArtifact(BranchManager.getAssociatedArtifact(BranchManager.getBranch(branchId)));
- } catch (OseeCoreException ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- InternalEventManager.kickBranchEvent(sender, BranchEventType.Committed, branchId);
- } catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- } else if (event instanceof NetworkBroadcastEvent) {
- try {
- final BroadcastEventType broadcastEventType =
- BroadcastEventType.valueOf(((NetworkBroadcastEvent) event).getBroadcastEventTypeName());
- if (broadcastEventType == null) {
- OseeLog.log(
- Activator.class,
- Level.SEVERE,
- "Unknown broadcast event type \"" + ((NetworkBroadcastEvent) event).getBroadcastEventTypeName() + "\"",
- new IllegalArgumentException());
- } else {
- InternalEventManager.kickBroadcastEvent(sender, broadcastEventType,
- ((NetworkBroadcastEvent) event).getUserIds(),
- ((NetworkBroadcastEvent) event).getMessage());
- }
- } catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- } else if (event instanceof ISkynetArtifactEvent) {
- try {
- updateArtifacts(sender, (ISkynetArtifactEvent) event, xModifiedEvents);
- lastArtifactRelationModChangeSender = sender;
- } catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- } else if (event instanceof ISkynetRelationLinkEvent) {
- try {
- updateRelations(sender, (ISkynetRelationLinkEvent) event, xModifiedEvents);
- lastArtifactRelationModChangeSender = sender;
- } catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- } else if (event instanceof NetworkArtifactChangeTypeEvent) {
- try {
- LoadedArtifacts loadedArtifacts =
- new LoadedArtifacts(((NetworkArtifactChangeTypeEvent) event).getId(),
- ((NetworkArtifactChangeTypeEvent) event).getArtifactIds(),
- ((NetworkArtifactChangeTypeEvent) event).getArtifactTypeIds());
- InternalEventManager.kickArtifactsChangeTypeEvent(sender,
- ((NetworkArtifactChangeTypeEvent) event).getToArtifactTypeId(), loadedArtifacts);
- } catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- } else if (event instanceof NetworkArtifactPurgeEvent) {
- try {
- LoadedArtifacts loadedArtifacts =
- new LoadedArtifacts(((NetworkArtifactPurgeEvent) event).getId(),
- ((NetworkArtifactPurgeEvent) event).getArtifactIds(),
- ((NetworkArtifactPurgeEvent) event).getArtifactTypeIds());
- for (Artifact artifact : loadedArtifacts.getLoadedArtifacts()) {
- //This is because applications may still have a reference to the artifact
- for (RelationLink link : RelationManager.getRelationsAll(artifact.getArtId(),
- artifact.getBranch().getId(), false)) {
- link.internalRemoteEventDelete();
- }
- ArtifactCache.deCache(artifact);
- artifact.internalSetDeleted();
- }
- InternalEventManager.kickArtifactsPurgedEvent(sender, loadedArtifacts);
- } catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- } else if (event instanceof NetworkTransactionDeletedEvent) {
- try {
- InternalEventManager.kickTransactionsPurgedEvent(sender,
- ((NetworkTransactionDeletedEvent) event).getTransactionIds());
- } catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- }
- }
-
- if (xModifiedEvents.size() > 0) {
- /*
- * Since transaction events are a collection of ArtifactModfied and RelationModified events, create
- * a new Sender based on the last sender for these events.
- */
- Sender transactionSender =
- new Sender("RemoteEventManager", lastArtifactRelationModChangeSender.getOseeSession());
- InternalEventManager.kickPersistEvent(transactionSender, xModifiedEvents);
- }
- } catch (Exception ex) {
- // don't want exceptions poping up; just log and return nicely
- OseeLog.log(Activator.class, Level.SEVERE, "REM Receive Event Exception", ex);
- }
- return Status.OK_STATUS;
- }
-
- };
- job.setSystem(true);
- job.setUser(false);
- job.setRule(mutexRule);
- job.schedule();
- }
-
- /**
- * Updates local cache
- *
- * @param event
- */
- private static void updateArtifacts(Sender sender, ISkynetArtifactEvent event, Collection<ArtifactTransactionModifiedEvent> xModifiedEvents) {
- if (event == null) {
- return;
- }
-
- try {
- int artId = event.getArtId();
- int artTypeId = event.getArtTypeId();
- List<String> dirtyAttributeName = new LinkedList<String>();
-
- if (event instanceof NetworkArtifactModifiedEvent) {
- int branchId = ((NetworkArtifactModifiedEvent) event).getId();
- Artifact artifact = ArtifactCache.getActive(artId, branchId);
- if (artifact == null) {
- UnloadedArtifact unloadedArtifact = new UnloadedArtifact(branchId, artId, artTypeId);
- xModifiedEvents.add(new ArtifactModifiedEvent(sender, ArtifactModType.Changed, unloadedArtifact));
- } else if (!artifact.isHistorical()) {
- for (SkynetAttributeChange skynetAttributeChange : ((NetworkArtifactModifiedEvent) event).getAttributeChanges()) {
- if (!InternalEventManager.isEnableRemoteEventLoopback()) {
- try {
- Attribute<?> attribute =
- artifact.getAttributeById(skynetAttributeChange.getAttributeId(), true);
- // Attribute already exists (but may be deleted), process update
- // Process MODIFIED / DELETED attribute
- if (attribute != null) {
- if (attribute.isDirty()) {
- dirtyAttributeName.add(attribute.getNameValueDescription());
- OseeEventManager.eventLog(String.format(
- "%s's attribute %d [/n%s/n] has been overwritten.", artifact.getSafeName(),
- attribute.getId(), attribute.toString()));
- }
- try {
- ModificationType modificationType = skynetAttributeChange.getModificationType();
- if (modificationType == null) {
- OseeLog.log(
- Activator.class,
- Level.SEVERE,
- String.format("MOD1: Can't get mod type for %s's attribute %d.",
- artifact.getArtifactTypeName(), skynetAttributeChange.getAttributeId()));
- continue;
- }
- if (modificationType.isDeleted()) {
- attribute.internalSetModificationType(modificationType);
- } else {
- attribute.getAttributeDataProvider().loadData(skynetAttributeChange.getData());
- }
- attribute.internalSetGammaId(skynetAttributeChange.getGammaId());
- attribute.setNotDirty();
- } catch (OseeCoreException ex) {
- OseeEventManager.eventLog(
- String.format("Exception updating %s's attribute %d [/n%s/n].",
- artifact.getSafeName(), attribute.getId(), attribute.toString()), ex);
- }
- }
- // Otherwise, attribute needs creation
- // Process NEW attribute
- else {
- ModificationType modificationType = skynetAttributeChange.getModificationType();
- if (modificationType == null) {
- OseeLog.log(
- Activator.class,
- Level.SEVERE,
- String.format("MOD2: Can't get mod type for %s's attribute %d.",
- artifact.getArtifactTypeName(), skynetAttributeChange.getAttributeId()));
- continue;
- }
- artifact.internalInitializeAttribute(
- AttributeTypeManager.getType(skynetAttributeChange.getTypeId()),
- skynetAttributeChange.getAttributeId(), skynetAttributeChange.getGammaId(),
- modificationType, false, skynetAttributeChange.getData());
- }
- } catch (OseeCoreException ex) {
- OseeEventManager.eventLog(String.format(
- "Exception updating %s's attribute change for attributeTypeId %d.",
- artifact.getSafeName(), skynetAttributeChange.getTypeId()), ex);
- }
- }
- }
-
- xModifiedEvents.add(new ArtifactModifiedEvent(sender, ArtifactModType.Changed, artifact,
- ((NetworkArtifactModifiedEvent) event).getTransactionId(),
- ((NetworkArtifactModifiedEvent) event).getAttributeChanges()));
-
- }
- } else if (event instanceof NetworkArtifactDeletedEvent) {
- int branchId = ((NetworkArtifactDeletedEvent) event).getId();
- Artifact artifact = ArtifactCache.getActive(artId, branchId);
- if (artifact == null) {
- UnloadedArtifact unloadedArtifact = new UnloadedArtifact(branchId, artId, artTypeId);
- xModifiedEvents.add(new ArtifactModifiedEvent(sender, ArtifactModType.Deleted, unloadedArtifact));
- } else if (!artifact.isHistorical()) {
- internalHandleRemoteArtifactDeleted(artifact);
-
- xModifiedEvents.add(new ArtifactModifiedEvent(sender, ArtifactModType.Deleted, artifact,
- ((NetworkArtifactDeletedEvent) event).getTransactionId(), new ArrayList<SkynetAttributeChange>()));
- }
- }
- } catch (OseeCoreException ex) {
- OseeEventManager.eventLog("Update Artifacts", ex);
- }
- }
-
- private static void updateRelations(Sender sender, ISkynetRelationLinkEvent event, Collection<ArtifactTransactionModifiedEvent> xModifiedEvents) {
- if (event == null) {
- return;
- }
-
- try {
- RelationType relationType = RelationTypeManager.getType(event.getRelTypeId());
- Branch branch = BranchManager.getBranch(event.getId());
- Artifact aArtifact = ArtifactCache.getActive(event.getArtAId(), branch.getId());
- Artifact bArtifact = ArtifactCache.getActive(event.getArtBId(), branch.getId());
- boolean aArtifactLoaded = aArtifact != null;
- boolean bArtifactLoaded = bArtifact != null;
-
- if (!aArtifactLoaded && !bArtifactLoaded) {
- if (event instanceof NetworkRelationLinkDeletedEvent) {
- UnloadedRelation unloadedRelation =
- new UnloadedRelation(branch.getId(), event.getArtAId(), event.getArtATypeId(), event.getArtBId(),
- event.getArtBTypeId(), event.getRelTypeId());
- xModifiedEvents.add(new RelationModifiedEvent(sender, RelationEventType.Deleted, unloadedRelation));
- } else if (event instanceof NetworkRelationLinkRationalModifiedEvent) {
- UnloadedRelation unloadedRelation =
- new UnloadedRelation(branch.getId(), event.getArtAId(), event.getArtATypeId(), event.getArtBId(),
- event.getArtBTypeId(), event.getRelTypeId());
- xModifiedEvents.add(new RelationModifiedEvent(sender, RelationEventType.ModifiedRationale,
- unloadedRelation));
- } else if (event instanceof NetworkRelationLinkCreatedEvent) {
- UnloadedRelation unloadedRelation =
- new UnloadedRelation(branch.getId(), event.getArtAId(), event.getArtATypeId(), event.getArtBId(),
- event.getArtBTypeId(), event.getRelTypeId());
- xModifiedEvents.add(new RelationModifiedEvent(sender, RelationEventType.Added, unloadedRelation));
- }
- }
- if (aArtifactLoaded || bArtifactLoaded) {
- if (event instanceof NetworkRelationLinkDeletedEvent) {
- RelationLink relation =
- RelationManager.getLoadedRelationById(event.getRelId(), event.getArtAId(), event.getArtBId(),
- branch, branch);
- if (relation != null) {
- relation.internalRemoteEventDelete();
-
- xModifiedEvents.add(new RelationModifiedEvent(sender, RelationEventType.Deleted, relation,
- relation.getBranch(), relation.getRelationType().getName()));
- }
- } else if (event instanceof NetworkRelationLinkCreatedEvent) {
- RelationLink relation =
- RelationManager.getLoadedRelationById(event.getRelId(), event.getArtAId(), event.getArtBId(),
- branch, branch);
-
- if (relation == null || relation.getModificationType() == ModificationType.DELETED) {
- relation =
- RelationLink.getOrCreate(event.getArtAId(), event.getArtBId(), branch, branch, relationType,
- event.getRelId(), event.getGammaId(),
- ((NetworkRelationLinkCreatedEvent) event).getRationale(), ModificationType.NEW);
-
- xModifiedEvents.add(new RelationModifiedEvent(sender, RelationEventType.Added, relation,
- relation.getBranch(), relation.getRelationType().getName()));
- }
- }
- }
- } catch (OseeCoreException ex) {
- OseeEventManager.eventLog("Update Relations", ex);
- }
- }
- }
-
- public static void internalHandleRemoteArtifactDeleted(Artifact artifact) throws OseeCoreException {
- if (artifact == null) {
- return;
- } else {
- artifact.internalSetDeletedFromRemoteEvent();
- }
- }
-
-}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/Sender.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/Sender.java
index 3446f73c420..68ab29a244d 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/Sender.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/Sender.java
@@ -25,7 +25,7 @@ public class Sender {
private final OseeClientSession oseeSession;
public Sender(Object sourceObject, OseeClientSession oseeSession) {
- this.sourceObject = InternalEventManager.getObjectSafeName(sourceObject);
+ this.sourceObject = EventUtil.getObjectSafeName(sourceObject);
this.oseeSession = oseeSession;
}
@@ -41,7 +41,7 @@ public class Sender {
}
public Sender(Object sourceObject) throws OseeAuthenticationRequiredException {
- this.sourceObject = InternalEventManager.getObjectSafeName(sourceObject);
+ this.sourceObject = EventUtil.getObjectSafeName(sourceObject);
this.oseeSession = ClientSessionManager.getSession();
}
@@ -81,7 +81,7 @@ public class Sender {
* @param sender the sender to set
*/
public void setSourceObject(Object sourceObject) {
- this.sourceObject = InternalEventManager.getObjectSafeName(sourceObject);
+ this.sourceObject = EventUtil.getObjectSafeName(sourceObject);
}
public NetworkSender getNetworkSender() {
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/ArtifactModifiedEvent.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/ArtifactModifiedEvent.java
index 5ddc3dd9a37..f093c28b046 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/ArtifactModifiedEvent.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/ArtifactModifiedEvent.java
@@ -8,7 +8,7 @@
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
-package org.eclipse.osee.framework.skynet.core.event;
+package org.eclipse.osee.framework.skynet.core.event.systems;
import java.util.Collection;
import java.util.Collections;
@@ -20,6 +20,8 @@ import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.skynet.core.artifact.ArtifactCache;
import org.eclipse.osee.framework.skynet.core.artifact.ArtifactModType;
import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
+import org.eclipse.osee.framework.skynet.core.event.ArtifactTransactionModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.event.Sender;
import org.eclipse.osee.framework.skynet.core.event2.artifact.EventBasicGuidArtifact;
import org.eclipse.osee.framework.skynet.core.event2.artifact.EventModType;
import org.eclipse.osee.framework.ui.plugin.event.UnloadedArtifact;
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/EventManagerData.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/EventManagerData.java
new file mode 100644
index 00000000000..5a23d7e64ea
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/EventManagerData.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * 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.skynet.core.event.systems;
+
+import java.util.Collection;
+import java.util.concurrent.CopyOnWriteArrayList;
+import org.eclipse.osee.framework.skynet.core.event.EventSystemPreferences;
+import org.eclipse.osee.framework.skynet.core.event.IEventListener;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class EventManagerData {
+
+ private final Collection<IEventListener> priorityListeners = new CopyOnWriteArrayList<IEventListener>();
+ private final Collection<IEventListener> listeners = new CopyOnWriteArrayList<IEventListener>();
+ private final EventSystemPreferences preferences = new EventSystemPreferences();
+
+ private LegacyEventManager legacyEventManager;
+ private InternalEventManager2 messageEventManager;
+
+ public void setLegacyEventManager(LegacyEventManager legacyEventManager) {
+ this.legacyEventManager = legacyEventManager;
+ }
+
+ public void setMessageEventManager(InternalEventManager2 messageEventManager) {
+ this.messageEventManager = messageEventManager;
+ }
+
+ public Collection<IEventListener> getPriorityListeners() {
+ return priorityListeners;
+ }
+
+ public Collection<IEventListener> getListeners() {
+ return listeners;
+ }
+
+ public EventSystemPreferences getPreferences() {
+ return preferences;
+ }
+
+ public LegacyEventManager getLegacyEventManager() {
+ return legacyEventManager;
+ }
+
+ public InternalEventManager2 getMessageEventManager() {
+ return messageEventManager;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/EventManagerFactory.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/EventManagerFactory.java
new file mode 100644
index 00000000000..3e0dc061050
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/EventManagerFactory.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * 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.skynet.core.event.systems;
+
+import java.util.Collection;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadFactory;
+import org.eclipse.osee.framework.messaging.event.res.IOseeCoreModelEventService;
+import org.eclipse.osee.framework.skynet.core.event.EventSystemPreferences;
+import org.eclipse.osee.framework.skynet.core.event.IEventListener;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventThreadFactory;
+import org.eclipse.osee.framework.skynet.core.event.systems.InternalEventManager2.ConnectionStatus;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class EventManagerFactory {
+
+ public LegacyEventManager createLegacyEventManager(EventSystemPreferences preferences, Collection<IEventListener> listeners, Collection<IEventListener> priorityListeners) {
+ LegacyRemoteEventReceiver clientEventListener = new LegacyRemoteEventReceiver();
+ JiniSkynetEventServiceLookup serviceLookup = new JiniSkynetEventServiceLookup(preferences, clientEventListener);
+ ExecutorService executorService = createExecutor("Osee Events");
+ LegacyEventManager manager =
+ new LegacyEventManager(listeners, priorityListeners, executorService, preferences, serviceLookup,
+ clientEventListener);
+ clientEventListener.setInternalEventManager(manager);
+ return manager;
+ }
+
+ public InternalEventManager2 createNewEventManager(IOseeCoreModelEventService coreModelEventService, EventSystemPreferences preferences, Collection<IEventListener> listeners, Collection<IEventListener> priorityListeners, ConnectionStatus connectionStatus) {
+ ExecutorService executorService = createExecutor("Osee Events2");
+ InternalEventManager2 eventManager =
+ new InternalEventManager2(coreModelEventService, listeners, priorityListeners, executorService, preferences,
+ connectionStatus);
+ return eventManager;
+ }
+
+ private ExecutorService createExecutor(String threadPrefix) {
+ int numberOfProcessors = Runtime.getRuntime().availableProcessors();
+ ThreadFactory threadFactory = new OseeEventThreadFactory(threadPrefix);
+ return Executors.newFixedThreadPool(numberOfProcessors, threadFactory);
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/RemoteEventManager2.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/FrameworkEventToRemoteEvent2Listener.java
index 0243cd45028..8a2d8d7172c 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/RemoteEventManager2.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/FrameworkEventToRemoteEvent2Listener.java
@@ -1,468 +1,354 @@
-/*******************************************************************************
- * 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.skynet.core.event;
-
-import java.util.logging.Level;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.osee.framework.core.enums.ModificationType;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.model.Branch;
-import org.eclipse.osee.framework.core.model.event.DefaultBasicGuidArtifact;
-import org.eclipse.osee.framework.core.model.type.AttributeType;
-import org.eclipse.osee.framework.core.model.type.RelationType;
-import org.eclipse.osee.framework.jdk.core.util.GUID;
-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.event.res.AttributeEventModificationType;
-import org.eclipse.osee.framework.messaging.event.res.IFrameworkEventListener;
-import org.eclipse.osee.framework.messaging.event.res.RemoteEvent;
-import org.eclipse.osee.framework.messaging.event.res.ResEventManager;
-import org.eclipse.osee.framework.messaging.event.res.msgs.RemoteBranchEvent1;
-import org.eclipse.osee.framework.messaging.event.res.msgs.RemotePersistEvent1;
-import org.eclipse.osee.framework.messaging.event.res.msgs.RemoteTransactionEvent1;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactCache;
-import org.eclipse.osee.framework.skynet.core.artifact.Attribute;
-import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
-import org.eclipse.osee.framework.skynet.core.artifact.ChangeArtifactType;
-import org.eclipse.osee.framework.skynet.core.artifact.PurgeTransactionOperation;
-import org.eclipse.osee.framework.skynet.core.attribute.AttributeTypeManager;
-import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
-import org.eclipse.osee.framework.skynet.core.event2.BranchEvent;
-import org.eclipse.osee.framework.skynet.core.event2.FrameworkEventUtil;
-import org.eclipse.osee.framework.skynet.core.event2.TransactionEvent;
-import org.eclipse.osee.framework.skynet.core.event2.TransactionEventType;
-import org.eclipse.osee.framework.skynet.core.event2.artifact.AttributeChange;
-import org.eclipse.osee.framework.skynet.core.event2.artifact.EventBasicGuidArtifact;
-import org.eclipse.osee.framework.skynet.core.event2.artifact.EventBasicGuidRelation;
-import org.eclipse.osee.framework.skynet.core.event2.artifact.EventChangeTypeBasicGuidArtifact;
-import org.eclipse.osee.framework.skynet.core.event2.artifact.EventModType;
-import org.eclipse.osee.framework.skynet.core.event2.artifact.EventModifiedBasicGuidArtifact;
-import org.eclipse.osee.framework.skynet.core.internal.Activator;
-import org.eclipse.osee.framework.skynet.core.relation.RelationEventType;
-import org.eclipse.osee.framework.skynet.core.relation.RelationLink;
-import org.eclipse.osee.framework.skynet.core.relation.RelationManager;
-import org.eclipse.osee.framework.skynet.core.relation.RelationTypeManager;
-import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager;
-
-/**
- * Manages remote events from the SkynetEventService.
- *
- * @author Donald G Dunne
- */
-public class RemoteEventManager2 implements IFrameworkEventListener {
- private static final RemoteEventManager2 instance = new RemoteEventManager2();
- private static ResConnectionListener connectionListener;
-
- private RemoteEventManager2() {
- super();
- connectionListener = new ResConnectionListener();
- ResEventManager.getInstance().setConnectionListener(connectionListener);
- }
-
- public static RemoteEventManager2 getInstance() {
- return instance;
- }
-
- private static class ResConnectionListener implements ConnectionListener {
-
- private boolean isConnected = false;
-
- @Override
- public void connected(ConnectionNode node) {
- isConnected = System.getProperty("osee.default.broker.uri") != null;
- try {
- OseeEventManager.kickLocalRemEvent(this, RemoteEventServiceEventType.Rem2_Connected);
- OseeLog.log(Activator.class, Level.INFO, "RES2 Connected");
- } catch (OseeCoreException ex) {
- OseeEventManager.eventLog("REM2: ResConnectionListener", ex);
- }
- }
-
- public boolean isConnected() {
- return isConnected;
- }
-
- @Override
- public void notConnected(ConnectionNode node) {
- isConnected = false;
- try {
- OseeEventManager.kickLocalRemEvent(this, RemoteEventServiceEventType.Rem2_DisConnected);
- OseeLog.log(Activator.class, Level.INFO, "RES2 Dis-Connected");
- } catch (OseeCoreException ex) {
- OseeEventManager.eventLog("REM2: ResConnectionListener", ex);
- }
- }
- }
- private static final ISchedulingRule mutexRule = new ISchedulingRule() {
-
- @Override
- public boolean contains(ISchedulingRule rule) {
- return rule == this;
- }
-
- @Override
- public boolean isConflicting(ISchedulingRule rule) {
- return rule == this;
- }
- };
-
- @Override
- public void onEvent(final RemoteEvent remoteEvent) {
- final Runnable runnable = new Runnable() {
-
- @Override
- public void run() {
- Sender sender = new Sender(remoteEvent.getNetworkSender());
- // If the sender's sessionId is the same as this client, then this event was
- // created in this client and returned by remote event manager; ignore and continue
- if (sender.isLocal()) {
- return;
- }
- // Handles TransactionEvents, ArtifactChangeTypeEvents, ArtifactPurgeEvents
- if (remoteEvent instanceof RemotePersistEvent1) {
- try {
- RemotePersistEvent1 event1 = (RemotePersistEvent1) remoteEvent;
- ArtifactEvent transEvent = FrameworkEventUtil.getPersistEvent(event1);
- updateArtifacts(sender, transEvent);
- updateRelations(sender, transEvent);
- InternalEventManager2.kickArtifactEvent(sender, transEvent);
- } catch (Exception ex) {
- OseeEventManager.eventLog("REM2: RemoteTransactionEvent1", ex);
- }
- } else if (remoteEvent instanceof RemoteBranchEvent1) {
- try {
- BranchEvent branchEvent = FrameworkEventUtil.getBranchEvent((RemoteBranchEvent1) remoteEvent);
- updateBranches(sender, branchEvent);
- InternalEventManager2.kickBranchEvent(sender, branchEvent);
- } catch (Exception ex) {
- OseeEventManager.eventLog("REM2: RemoteBranchEvent1", ex);
- }
- } else if (remoteEvent instanceof RemoteTransactionEvent1) {
- try {
- TransactionEvent transEvent =
- FrameworkEventUtil.getTransactionEvent((RemoteTransactionEvent1) remoteEvent);
- handleTransactionEvent(sender, transEvent);
- } catch (Exception ex) {
- OseeEventManager.eventLog("REM2: RemoteBranchEvent1", ex);
- }
- }
- }
- };
-
- if (InternalEventManager2.isPendRunning()) {
- runnable.run();
- } else {
- Job job =
- new Job(String.format("[%s] - receiving [%s]", getClass().getSimpleName(),
- remoteEvent.getClass().getSimpleName())) {
-
- @Override
- protected IStatus run(IProgressMonitor monitor) {
-
- try {
- runnable.run();
- } catch (Exception ex) {
- // don't want exceptions poping up; just log and return nicely
- OseeLog.log(Activator.class, Level.SEVERE, "REM2 Receive Event Exception", ex);
- }
- monitor.done();
- return Status.OK_STATUS;
- }
- };
- job.setSystem(true);
- job.setRule(mutexRule);
- job.setUser(false);
- job.schedule();
- }
- }
-
- private void handleTransactionEvent(Sender sender, TransactionEvent transEvent) {
- try {
- if (transEvent.getEventType() == TransactionEventType.Purged) {
- PurgeTransactionOperation.handleRemotePurgeTransactionEvent(transEvent);
- InternalEventManager2.kickTransactionEvent(sender, transEvent);
- } else {
- OseeEventManager.eventLog("REM2: handleTransactionEvent - unhandled mod type " + transEvent.getEventType());
- }
- } catch (Exception ex) {
- OseeEventManager.eventLog("REM2: handleTransactionEvent", ex);
- }
- }
-
- /**
- * Updates local cache
- */
- private static void updateBranches(Sender sender, BranchEvent branchEvent) {
- BranchEventType eventType = branchEvent.getEventType();
- try {
- if (eventType == BranchEventType.Committed) {
- TransactionManager.clearCommitArtifactCacheForAssociatedArtifact(BranchManager.getAssociatedArtifact(BranchManager.getBranchByGuid(branchEvent.getBranchGuid())));
- }
- BranchManager.refreshBranches();
- } catch (Exception ex) {
- OseeEventManager.eventLog("REM2: updateBranches", ex);
- }
- }
-
- /**
- * Updates local cache
- **/
- private static void updateArtifacts(Sender sender, ArtifactEvent transEvent) {
- // Don't crash on any one artifact update problem (no update method throughs exceptions)
- for (EventBasicGuidArtifact guidArt : transEvent.getArtifacts()) {
- OseeEventManager.eventLog(String.format("REM2: updateArtifact -> [%s]", guidArt));
- // Handle Added Artifacts
- // Nothing to do for added cause they're not in cache yet. Apps will load if they need them.
- if (guidArt.getModType() == EventModType.Added) {
- // do nothing cause not in cache
- }
- // Handle Deleted Artifacts
- else if (guidArt.getModType() == EventModType.Deleted || guidArt.getModType() == EventModType.Purged) {
- updateDeletedArtifact(guidArt);
- }
- // Handle Modified Artifacts
- else if (guidArt.getModType() == EventModType.Modified) {
- updateModifiedArtifact((EventModifiedBasicGuidArtifact) guidArt);
- }
- // Handle Change Type Artifacts
- else if (guidArt.getModType() == EventModType.ChangeType) {
- ChangeArtifactType.handleRemoteChangeType((EventChangeTypeBasicGuidArtifact) guidArt);
- }
- // Unknown mod type
- else {
- OseeEventManager.eventLog(String.format("REM2: updateArtifacts - Unhandled mod type [%s]",
- guidArt.getModType()));
- }
- }
- }
-
- private static void updateRelations(Sender sender, ArtifactEvent transEvent) {
- for (EventBasicGuidRelation guidArt : transEvent.getRelations()) {
- // Don't crash on any one relation update problem
- try {
- OseeEventManager.eventLog(String.format("REM2: updateRelation -> [%s]", guidArt));
- RelationEventType eventType = guidArt.getModType();
- Branch branch = BranchManager.getBranch(guidArt.getArtA());
- RelationType relationType = RelationTypeManager.getTypeByGuid(guidArt.getRelTypeGuid());
- Artifact aArtifact = ArtifactCache.getActive(guidArt.getArtA());
- Artifact bArtifact = ArtifactCache.getActive(guidArt.getArtB());
- // Nothing in cache, ignore
- if (aArtifact == null && bArtifact == null) {
- return;
- }
- boolean aArtifactLoaded = aArtifact != null;
- boolean bArtifactLoaded = bArtifact != null;
-
- if (aArtifactLoaded || bArtifactLoaded) {
- if (eventType == RelationEventType.Added) {
- RelationLink relation =
- RelationManager.getLoadedRelationById(guidArt.getRelationId(), guidArt.getArtAId(),
- guidArt.getArtBId(), branch, branch);
-
- if (relation == null || relation.getModificationType() == ModificationType.DELETED || relation.getModificationType() == ModificationType.ARTIFACT_DELETED) {
- relation =
- RelationLink.getOrCreate(guidArt.getArtAId(), guidArt.getArtBId(), branch, branch,
- relationType, guidArt.getRelationId(), guidArt.getGammaId(), guidArt.getRationale(),
- ModificationType.NEW);
-
- }
- } else if (eventType == RelationEventType.Deleted || eventType == RelationEventType.Purged) {
- RelationLink relation =
- RelationManager.getLoadedRelationById(guidArt.getRelationId(), guidArt.getArtAId(),
- guidArt.getArtBId(), branch, branch);
- if (relation != null) {
- relation.internalRemoteEventDelete();
- }
- } else if (eventType == RelationEventType.ModifiedRationale) {
- RelationLink relation =
- RelationManager.getLoadedRelationById(guidArt.getRelationId(), guidArt.getArtAId(),
- guidArt.getArtBId(), branch, branch);
- if (relation != null) {
- relation.internalSetRationale(guidArt.getRationale());
- relation.setNotDirty();
- }
- } else if (eventType == RelationEventType.Undeleted) {
- RelationLink relation =
- RelationManager.getLoadedRelationById(guidArt.getRelationId(), guidArt.getArtAId(),
- guidArt.getArtBId(), branch, branch);
- if (relation != null) {
- relation.undelete();
- relation.setNotDirty();
- }
- } else {
- OseeEventManager.eventLog(String.format("REM2: updateRelations - Unhandled mod type [%s]", eventType));
- }
- }
- } catch (OseeCoreException ex) {
- OseeEventManager.eventLog("REM2: updateRelations", ex);
- }
- }
- }
-
- private static void updateDeletedArtifact(DefaultBasicGuidArtifact guidArt) {
- try {
- Artifact artifact = ArtifactCache.getActive(guidArt);
- if (artifact == null) {
- // do nothing, artifact not in cache, so don't need to update
- } else if (!artifact.isHistorical()) {
- RemoteEventManager.internalHandleRemoteArtifactDeleted(artifact);
- }
- } catch (OseeCoreException ex) {
- OseeEventManager.eventLog("REM2: updateDeletedArtifact", ex);
- }
- }
-
- private static void updateModifiedArtifact(EventModifiedBasicGuidArtifact guidArt) {
- try {
- Artifact artifact = ArtifactCache.getActive(guidArt);
- if (artifact == null) {
- // do nothing, artifact not in cache, so don't need to update
- } else if (!artifact.isHistorical()) {
- for (AttributeChange attrChange : guidArt.getAttributeChanges()) {
- if (!InternalEventManager.isEnableRemoteEventLoopback()) {
- ModificationType modificationType =
- AttributeEventModificationType.getType(attrChange.getModTypeGuid()).getModificationType();
- AttributeType attributeType = AttributeTypeManager.getTypeByGuid(attrChange.getAttrTypeGuid());
- try {
- Attribute<?> attribute = artifact.getAttributeById(attrChange.getAttributeId(), true);
- // Attribute already exists (but may be deleted), process update
- // Process MODIFIED / DELETED attribute
- if (attribute != null) {
- if (attribute.isDirty()) {
- OseeEventManager.eventLog(String.format("%s's attribute %d [/n%s/n] has been overwritten.",
- artifact.getSafeName(), attribute.getId(), attribute.toString()));
- }
- try {
- if (modificationType == null) {
- OseeEventManager.eventLog(String.format(
- "REM2: updateModifiedArtifact - Can't get mod type for %s's attribute %d.",
- artifact.getArtifactTypeName(), attrChange.getAttributeId()));
- continue;
- }
- if (modificationType.isDeleted()) {
- attribute.internalSetModificationType(modificationType);
- } else {
- attribute.getAttributeDataProvider().loadData(
- attrChange.getData().toArray(new Object[attrChange.getData().size()]));
- }
- attribute.internalSetGammaId(attrChange.getGammaId());
- attribute.setNotDirty();
- } catch (OseeCoreException ex) {
- OseeEventManager.eventLog(
- String.format("REM2: Exception updating %s's attribute %d [/n%s/n].",
- artifact.getSafeName(), attribute.getId(), attribute.toString()), ex);
- }
- }
- // Otherwise, attribute needs creation
- // Process NEW attribute
- else {
- if (modificationType == null) {
- OseeEventManager.eventLog(String.format("REM2: Can't get mod type for %s's attribute %d.",
- artifact.getArtifactTypeName(), attrChange.getAttributeId()));
- continue;
- }
- artifact.internalInitializeAttribute(attributeType, attrChange.getAttributeId(),
- attrChange.getGammaId(), modificationType, false,
- attrChange.getData().toArray(new Object[attrChange.getData().size()]));
- }
- } catch (OseeCoreException ex) {
- OseeEventManager.eventLog(String.format(
- "REM2: Exception updating %s's attribute change for attributeTypeId %d.",
- artifact.getSafeName(), attributeType.getId()), ex);
- }
- }
- }
- }
- } catch (OseeCoreException ex) {
- OseeEventManager.eventLog("REM2: updateModifiedArtifact", ex);
- }
- }
-
- public void deregisterForRemoteEvents() throws OseeCoreException {
- ResEventManager.getInstance().stop();
- OseeEventManager.kickLocalRemEvent(this, RemoteEventServiceEventType.Rem2_DisConnected);
- }
-
- public void registerForRemoteEvents() throws OseeCoreException {
- if (OseeEventManager.isNewEvents()) {
- ResEventManager.getInstance().start(this);
- OseeEventManager.kickLocalRemEvent(this, RemoteEventServiceEventType.Rem2_Connected);
- OseeLog.log(Activator.class, Level.INFO, "REM2: Enabled");
- } else {
- OseeLog.log(Activator.class, Level.INFO, "REM2: Disabled");
- }
- }
-
- public static boolean isConnected() {
- return OseeEventManager.isNewEvents() && connectionListener.isConnected();
- }
-
- public String getConnectionProperties() {
- StringBuilder sb = new StringBuilder();
- sb.append("osee.default.broker.uri [" + System.getProperty("osee.default.broker.uri") + "]");
- sb.append("eventDebug [" + System.getProperty("eventDebug") + "]");
- sb.append("eventSystem [" + System.getProperty("eventSystem") + "]");
- return sb.toString();
- }
-
- /**
- * InternalEventManager.enableRemoteEventLoopback will enable a testing loopback that will take the kicked remote
- * events and loop them back as if they came from an external client. It will allow for the testing of the OEM -> REM
- * -> OEM processing. In addition, this onEvent is put in a non-display thread which will test that all handling by
- * applications is properly handled by doing all processing and then kicking off display-thread when need to update
- * ui. SessionId needs to be modified so this client doesn't think the events came from itself.
- */
- public void kick(final RemoteEvent remoteEvent) {
- if (OseeEventManager.isNewEvents() && isConnected()) {
- OseeEventManager.eventLog(String.format("REM2: kick - [%s]", remoteEvent));
- Job job =
- new Job(String.format("[%s] - sending [%s]", getClass().getSimpleName(),
- remoteEvent.getClass().getSimpleName())) {
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- try {
- ResEventManager.getInstance().kick(remoteEvent);
- } catch (Exception ex) {
- OseeEventManager.eventLog("REM2: kick", ex);
- return new Status(IStatus.ERROR, Activator.PLUGIN_ID, -1, ex.getLocalizedMessage(), ex);
- }
- return Status.OK_STATUS;
- }
- };
-
- job.schedule();
- }
-
- if (InternalEventManager2.isEnableRemoteEventLoopback()) {
- OseeEventManager.eventLog("REM2: Loopback enabled - Returning events as Remote event.");
- String newSessionId = GUID.create();
- remoteEvent.getNetworkSender().setSessionId(newSessionId);
- instance.onEvent(remoteEvent);
- }
- }
-
- public String getConnectionInfo() {
- if (!OseeEventManager.isNewEvents()) {
- return "New Events == OFF";
- }
- if (connectionListener == null || !connectionListener.isConnected()) {
- return "ActiveMQ JMS Service is down";
- }
- return "Connected";
- }
-
-}
+/*******************************************************************************
+ * 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.skynet.core.event.systems;
+
+import java.util.logging.Level;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.ISchedulingRule;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.osee.framework.core.enums.ModificationType;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.core.model.event.DefaultBasicGuidArtifact;
+import org.eclipse.osee.framework.core.model.type.AttributeType;
+import org.eclipse.osee.framework.core.model.type.RelationType;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.messaging.event.res.AttributeEventModificationType;
+import org.eclipse.osee.framework.messaging.event.res.IFrameworkEventListener;
+import org.eclipse.osee.framework.messaging.event.res.RemoteEvent;
+import org.eclipse.osee.framework.messaging.event.res.msgs.RemoteBranchEvent1;
+import org.eclipse.osee.framework.messaging.event.res.msgs.RemotePersistEvent1;
+import org.eclipse.osee.framework.messaging.event.res.msgs.RemoteTransactionEvent1;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactCache;
+import org.eclipse.osee.framework.skynet.core.artifact.Attribute;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
+import org.eclipse.osee.framework.skynet.core.artifact.ChangeArtifactType;
+import org.eclipse.osee.framework.skynet.core.artifact.PurgeTransactionOperation;
+import org.eclipse.osee.framework.skynet.core.attribute.AttributeTypeManager;
+import org.eclipse.osee.framework.skynet.core.event.BranchEventType;
+import org.eclipse.osee.framework.skynet.core.event.EventUtil;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
+import org.eclipse.osee.framework.skynet.core.event.Sender;
+import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
+import org.eclipse.osee.framework.skynet.core.event2.BranchEvent;
+import org.eclipse.osee.framework.skynet.core.event2.FrameworkEventUtil;
+import org.eclipse.osee.framework.skynet.core.event2.TransactionEvent;
+import org.eclipse.osee.framework.skynet.core.event2.TransactionEventType;
+import org.eclipse.osee.framework.skynet.core.event2.artifact.AttributeChange;
+import org.eclipse.osee.framework.skynet.core.event2.artifact.EventBasicGuidArtifact;
+import org.eclipse.osee.framework.skynet.core.event2.artifact.EventBasicGuidRelation;
+import org.eclipse.osee.framework.skynet.core.event2.artifact.EventChangeTypeBasicGuidArtifact;
+import org.eclipse.osee.framework.skynet.core.event2.artifact.EventModType;
+import org.eclipse.osee.framework.skynet.core.event2.artifact.EventModifiedBasicGuidArtifact;
+import org.eclipse.osee.framework.skynet.core.internal.Activator;
+import org.eclipse.osee.framework.skynet.core.relation.RelationEventType;
+import org.eclipse.osee.framework.skynet.core.relation.RelationLink;
+import org.eclipse.osee.framework.skynet.core.relation.RelationManager;
+import org.eclipse.osee.framework.skynet.core.relation.RelationTypeManager;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager;
+
+/**
+ * @author Donald G. Dunne
+ */
+public final class FrameworkEventToRemoteEvent2Listener implements IFrameworkEventListener {
+
+ private final ISchedulingRule mutexRule;
+ private InternalEventManager2 eventManager;
+
+ public FrameworkEventToRemoteEvent2Listener(InternalEventManager2 eventManager) {
+ this.eventManager = eventManager;
+ this.mutexRule = new ISchedulingRule() {
+
+ @Override
+ public boolean contains(ISchedulingRule rule) {
+ return rule == this;
+ }
+
+ @Override
+ public boolean isConflicting(ISchedulingRule rule) {
+ return rule == this;
+ }
+ };
+ }
+
+ @Override
+ public void onEvent(final RemoteEvent remoteEvent) {
+ final Runnable runnable = new Runnable() {
+ private void handleTransactionEvent(Sender sender, TransactionEvent transEvent) {
+ try {
+ if (transEvent.getEventType() == TransactionEventType.Purged) {
+ PurgeTransactionOperation.handleRemotePurgeTransactionEvent(transEvent);
+ eventManager.kickTransactionEvent(sender, transEvent);
+ } else {
+ EventUtil.eventLog("REM2: handleTransactionEvent - unhandled mod type " + transEvent.getEventType());
+ }
+ } catch (Exception ex) {
+ EventUtil.eventLog("REM2: handleTransactionEvent", ex);
+ }
+ }
+
+ @Override
+ public void run() {
+ Sender sender = new Sender(remoteEvent.getNetworkSender());
+ // If the sender's sessionId is the same as this client, then this event was
+ // created in this client and returned by remote event manager; ignore and continue
+ if (sender.isLocal()) {
+ return;
+ }
+ // Handles TransactionEvents, ArtifactChangeTypeEvents, ArtifactPurgeEvents
+ if (remoteEvent instanceof RemotePersistEvent1) {
+ try {
+ RemotePersistEvent1 event1 = (RemotePersistEvent1) remoteEvent;
+ ArtifactEvent transEvent = FrameworkEventUtil.getPersistEvent(event1);
+ updateArtifacts(sender, transEvent);
+ updateRelations(sender, transEvent);
+ eventManager.kickArtifactEvent(sender, transEvent);
+ } catch (Exception ex) {
+ EventUtil.eventLog("REM2: RemoteTransactionEvent1", ex);
+ }
+ } else if (remoteEvent instanceof RemoteBranchEvent1) {
+ try {
+ BranchEvent branchEvent = FrameworkEventUtil.getBranchEvent((RemoteBranchEvent1) remoteEvent);
+ updateBranches(sender, branchEvent);
+ eventManager.kickBranchEvent(sender, branchEvent);
+ } catch (Exception ex) {
+ EventUtil.eventLog("REM2: RemoteBranchEvent1", ex);
+ }
+ } else if (remoteEvent instanceof RemoteTransactionEvent1) {
+ try {
+ TransactionEvent transEvent =
+ FrameworkEventUtil.getTransactionEvent((RemoteTransactionEvent1) remoteEvent);
+ handleTransactionEvent(sender, transEvent);
+ } catch (Exception ex) {
+ EventUtil.eventLog("REM2: RemoteBranchEvent1", ex);
+ }
+ }
+ }
+ };
+
+ if (OseeEventManager.getPreferences().isPendRunning()) {
+ runnable.run();
+ } else {
+ Job job =
+ new Job(String.format("[%s] - receiving [%s]", getClass().getSimpleName(),
+ remoteEvent.getClass().getSimpleName())) {
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+
+ try {
+ runnable.run();
+ } catch (Exception ex) {
+ // don't want exceptions poping up; just log and return nicely
+ OseeLog.log(Activator.class, Level.SEVERE, "REM2 Receive Event Exception", ex);
+ }
+ monitor.done();
+ return Status.OK_STATUS;
+ }
+ };
+ job.setSystem(true);
+ job.setRule(mutexRule);
+ job.setUser(false);
+ job.schedule();
+ }
+ }
+
+ /**
+ * Updates local cache
+ **/
+ private void updateArtifacts(Sender sender, ArtifactEvent transEvent) {
+ // Don't crash on any one artifact update problem (no update method throughs exceptions)
+ for (EventBasicGuidArtifact guidArt : transEvent.getArtifacts()) {
+ EventUtil.eventLog(String.format("REM2: updateArtifact -> [%s]", guidArt));
+ // Handle Added Artifacts
+ // Nothing to do for added cause they're not in cache yet. Apps will load if they need them.
+ if (guidArt.getModType() == EventModType.Added) {
+ // do nothing cause not in cache
+ }
+ // Handle Deleted Artifacts
+ else if (guidArt.getModType() == EventModType.Deleted || guidArt.getModType() == EventModType.Purged) {
+ updateDeletedArtifact(guidArt);
+ }
+ // Handle Modified Artifacts
+ else if (guidArt.getModType() == EventModType.Modified) {
+ updateModifiedArtifact((EventModifiedBasicGuidArtifact) guidArt);
+ }
+ // Handle Change Type Artifacts
+ else if (guidArt.getModType() == EventModType.ChangeType) {
+ ChangeArtifactType.handleRemoteChangeType((EventChangeTypeBasicGuidArtifact) guidArt);
+ }
+ // Unknown mod type
+ else {
+ EventUtil.eventLog(String.format("REM2: updateArtifacts - Unhandled mod type [%s]", guidArt.getModType()));
+ }
+ }
+ }
+
+ /**
+ * Updates local cache
+ */
+ private void updateBranches(Sender sender, BranchEvent branchEvent) {
+ BranchEventType eventType = branchEvent.getEventType();
+ try {
+ if (eventType == BranchEventType.Committed) {
+ TransactionManager.clearCommitArtifactCacheForAssociatedArtifact(BranchManager.getAssociatedArtifact(BranchManager.getBranchByGuid(branchEvent.getBranchGuid())));
+ }
+ BranchManager.refreshBranches();
+ } catch (Exception ex) {
+ EventUtil.eventLog("REM2: updateBranches", ex);
+ }
+ }
+
+ private void updateRelations(Sender sender, ArtifactEvent transEvent) {
+ for (EventBasicGuidRelation guidArt : transEvent.getRelations()) {
+ // Don't crash on any one relation update problem
+ try {
+ EventUtil.eventLog(String.format("REM2: updateRelation -> [%s]", guidArt));
+ RelationEventType eventType = guidArt.getModType();
+ Branch branch = BranchManager.getBranch(guidArt.getArtA());
+ RelationType relationType = RelationTypeManager.getTypeByGuid(guidArt.getRelTypeGuid());
+ Artifact aArtifact = ArtifactCache.getActive(guidArt.getArtA());
+ Artifact bArtifact = ArtifactCache.getActive(guidArt.getArtB());
+ // Nothing in cache, ignore
+ if (aArtifact == null && bArtifact == null) {
+ return;
+ }
+ boolean aArtifactLoaded = aArtifact != null;
+ boolean bArtifactLoaded = bArtifact != null;
+
+ if (aArtifactLoaded || bArtifactLoaded) {
+ if (eventType == RelationEventType.Added) {
+ RelationLink relation =
+ RelationManager.getLoadedRelationById(guidArt.getRelationId(), guidArt.getArtAId(),
+ guidArt.getArtBId(), branch, branch);
+
+ if (relation == null || relation.getModificationType() == ModificationType.DELETED || relation.getModificationType() == ModificationType.ARTIFACT_DELETED) {
+ relation =
+ RelationLink.getOrCreate(guidArt.getArtAId(), guidArt.getArtBId(), branch, branch,
+ relationType, guidArt.getRelationId(), guidArt.getGammaId(), guidArt.getRationale(),
+ ModificationType.NEW);
+
+ }
+ } else if (eventType == RelationEventType.Deleted || eventType == RelationEventType.Purged) {
+ RelationLink relation =
+ RelationManager.getLoadedRelationById(guidArt.getRelationId(), guidArt.getArtAId(),
+ guidArt.getArtBId(), branch, branch);
+ if (relation != null) {
+ relation.internalRemoteEventDelete();
+ }
+ } else if (eventType == RelationEventType.ModifiedRationale) {
+ RelationLink relation =
+ RelationManager.getLoadedRelationById(guidArt.getRelationId(), guidArt.getArtAId(),
+ guidArt.getArtBId(), branch, branch);
+ if (relation != null) {
+ relation.internalSetRationale(guidArt.getRationale());
+ relation.setNotDirty();
+ }
+ } else if (eventType == RelationEventType.Undeleted) {
+ RelationLink relation =
+ RelationManager.getLoadedRelationById(guidArt.getRelationId(), guidArt.getArtAId(),
+ guidArt.getArtBId(), branch, branch);
+ if (relation != null) {
+ relation.undelete();
+ relation.setNotDirty();
+ }
+ } else {
+ EventUtil.eventLog(String.format("REM2: updateRelations - Unhandled mod type [%s]", eventType));
+ }
+ }
+ } catch (OseeCoreException ex) {
+ EventUtil.eventLog("REM2: updateRelations", ex);
+ }
+ }
+ }
+
+ private void updateDeletedArtifact(DefaultBasicGuidArtifact guidArt) {
+ try {
+ Artifact artifact = ArtifactCache.getActive(guidArt);
+ if (artifact == null) {
+ // do nothing, artifact not in cache, so don't need to update
+ } else if (!artifact.isHistorical()) {
+ artifact.internalSetDeletedFromRemoteEvent();
+ }
+ } catch (OseeCoreException ex) {
+ EventUtil.eventLog("REM2: updateDeletedArtifact", ex);
+ }
+ }
+
+ private void updateModifiedArtifact(EventModifiedBasicGuidArtifact guidArt) {
+ try {
+ Artifact artifact = ArtifactCache.getActive(guidArt);
+ if (artifact == null) {
+ // do nothing, artifact not in cache, so don't need to update
+ } else if (!artifact.isHistorical()) {
+ for (AttributeChange attrChange : guidArt.getAttributeChanges()) {
+ if (!OseeEventManager.getPreferences().isEnableRemoteEventLoopback()) {
+ ModificationType modificationType =
+ AttributeEventModificationType.getType(attrChange.getModTypeGuid()).getModificationType();
+ AttributeType attributeType = AttributeTypeManager.getTypeByGuid(attrChange.getAttrTypeGuid());
+ try {
+ Attribute<?> attribute = artifact.getAttributeById(attrChange.getAttributeId(), true);
+ // Attribute already exists (but may be deleted), process update
+ // Process MODIFIED / DELETED attribute
+ if (attribute != null) {
+ if (attribute.isDirty()) {
+ EventUtil.eventLog(String.format("%s's attribute %d [/n%s/n] has been overwritten.",
+ artifact.getSafeName(), attribute.getId(), attribute.toString()));
+ }
+ try {
+ if (modificationType == null) {
+ EventUtil.eventLog(String.format(
+ "REM2: updateModifiedArtifact - Can't get mod type for %s's attribute %d.",
+ artifact.getArtifactTypeName(), attrChange.getAttributeId()));
+ continue;
+ }
+ if (modificationType.isDeleted()) {
+ attribute.internalSetModificationType(modificationType);
+ } else {
+ attribute.getAttributeDataProvider().loadData(
+ attrChange.getData().toArray(new Object[attrChange.getData().size()]));
+ }
+ attribute.internalSetGammaId(attrChange.getGammaId());
+ attribute.setNotDirty();
+ } catch (OseeCoreException ex) {
+ EventUtil.eventLog(
+ String.format("REM2: Exception updating %s's attribute %d [/n%s/n].",
+ artifact.getSafeName(), attribute.getId(), attribute.toString()), ex);
+ }
+ }
+ // Otherwise, attribute needs creation
+ // Process NEW attribute
+ else {
+ if (modificationType == null) {
+ EventUtil.eventLog(String.format("REM2: Can't get mod type for %s's attribute %d.",
+ artifact.getArtifactTypeName(), attrChange.getAttributeId()));
+ continue;
+ }
+ artifact.internalInitializeAttribute(attributeType, attrChange.getAttributeId(),
+ attrChange.getGammaId(), modificationType, false,
+ attrChange.getData().toArray(new Object[attrChange.getData().size()]));
+ }
+ } catch (OseeCoreException ex) {
+ EventUtil.eventLog(String.format(
+ "REM2: Exception updating %s's attribute change for attributeTypeId %d.",
+ artifact.getSafeName(), attributeType.getId()), ex);
+ }
+ }
+ }
+ }
+ } catch (OseeCoreException ex) {
+ EventUtil.eventLog("REM2: updateModifiedArtifact", ex);
+ }
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/FrameworkTransationDataCompacter.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/FrameworkTransationDataCompacter.java
new file mode 100644
index 00000000000..385ac65c18c
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/FrameworkTransationDataCompacter.java
@@ -0,0 +1,184 @@
+/*******************************************************************************
+ * 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.skynet.core.event.systems;
+
+import java.util.logging.Level;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactCache;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactModType;
+import org.eclipse.osee.framework.skynet.core.event.ArtifactTransactionModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.event.FrameworkTransactionData;
+import org.eclipse.osee.framework.skynet.core.event.LoadedRelation;
+import org.eclipse.osee.framework.skynet.core.internal.Activator;
+import org.eclipse.osee.framework.skynet.core.relation.RelationEventType;
+import org.eclipse.osee.framework.skynet.core.relation.RelationLink;
+import org.eclipse.osee.framework.skynet.core.relation.RelationTypeManager;
+import org.eclipse.osee.framework.ui.plugin.event.UnloadedRelation;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class FrameworkTransationDataCompacter {
+
+ public static void compact(FrameworkTransactionData data) {
+ // Roll-up change information
+
+ for (ArtifactTransactionModifiedEvent xModifiedEvent : data.getXModifiedEvents()) {
+ if (xModifiedEvent instanceof ArtifactModifiedEvent) {
+ ArtifactModifiedEvent xArtifactModifiedEvent = (ArtifactModifiedEvent) xModifiedEvent;
+ if (xArtifactModifiedEvent.artifactModType == ArtifactModType.Added) {
+ if (xArtifactModifiedEvent.artifact != null) {
+ data.cacheAddedArtifacts.add(xArtifactModifiedEvent.artifact);
+ if (data.branchId == -1) {
+ data.branchId = xArtifactModifiedEvent.artifact.getBranch().getId();
+ }
+ } else {
+ data.unloadedAddedArtifacts.add(xArtifactModifiedEvent.unloadedArtifact);
+ if (data.branchId == -1) {
+ data.branchId = xArtifactModifiedEvent.unloadedArtifact.getBranchId();
+ }
+ }
+ }
+ if (xArtifactModifiedEvent.artifactModType == ArtifactModType.Deleted) {
+ if (xArtifactModifiedEvent.artifact != null) {
+ data.cacheDeletedArtifacts.add(xArtifactModifiedEvent.artifact);
+ if (data.branchId == -1) {
+ data.branchId = xArtifactModifiedEvent.artifact.getBranch().getId();
+ }
+ } else {
+ data.unloadedDeletedArtifacts.add(xArtifactModifiedEvent.unloadedArtifact);
+ if (data.branchId == -1) {
+ data.branchId = xArtifactModifiedEvent.unloadedArtifact.getBranchId();
+ }
+ }
+ }
+ if (xArtifactModifiedEvent.artifactModType == ArtifactModType.Changed) {
+ if (xArtifactModifiedEvent.artifact != null) {
+ data.cacheChangedArtifacts.add(xArtifactModifiedEvent.artifact);
+ if (data.branchId == -1) {
+ data.branchId = xArtifactModifiedEvent.artifact.getBranch().getId();
+ }
+ } else {
+ data.unloadedChangedArtifacts.add(xArtifactModifiedEvent.unloadedArtifact);
+ if (data.branchId == -1) {
+ data.branchId = xArtifactModifiedEvent.unloadedArtifact.getBranchId();
+ }
+ }
+ }
+ }
+ if (xModifiedEvent instanceof RelationModifiedEvent) {
+ RelationModifiedEvent xRelationModifiedEvent = (RelationModifiedEvent) xModifiedEvent;
+ UnloadedRelation unloadedRelation = xRelationModifiedEvent.unloadedRelation;
+ LoadedRelation loadedRelation = null;
+ // If link is loaded, get information from link
+ if (xRelationModifiedEvent.link != null) {
+ RelationLink link = xRelationModifiedEvent.link;
+ // Get artifact A/B if loaded in artifact cache
+ Artifact artA = ArtifactCache.getActive(link.getAArtifactId(), link.getABranch());
+ Artifact artB = ArtifactCache.getActive(link.getBArtifactId(), link.getBBranch());
+ try {
+ loadedRelation =
+ new LoadedRelation(artA, artB, xRelationModifiedEvent.link.getRelationType(),
+ xRelationModifiedEvent.branch, unloadedRelation);
+ } catch (Exception ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ }
+ // Else, get information from unloadedRelation (if != null)
+ else if (unloadedRelation != null) {
+ Artifact artA = ArtifactCache.getActive(unloadedRelation.getArtifactAId(), unloadedRelation.getId());
+ Artifact artB = ArtifactCache.getActive(unloadedRelation.getArtifactBId(), unloadedRelation.getId());
+ if (artA != null || artB != null) {
+ try {
+ loadedRelation =
+ new LoadedRelation(artA, artB, RelationTypeManager.getType(unloadedRelation.getTypeId()),
+ artA != null ? artA.getBranch() : artB.getBranch(), unloadedRelation);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ }
+ }
+ if (xRelationModifiedEvent.relationEventType == RelationEventType.Added) {
+ if (loadedRelation != null) {
+ data.cacheAddedRelations.add(loadedRelation);
+ if (loadedRelation.getArtifactA() != null) {
+ data.cacheRelationAddedArtifacts.add(loadedRelation.getArtifactA());
+ if (data.branchId == -1) {
+ data.branchId = loadedRelation.getArtifactA().getBranch().getId();
+ }
+ }
+ if (loadedRelation.getArtifactB() != null) {
+ data.cacheRelationAddedArtifacts.add(loadedRelation.getArtifactB());
+ if (data.branchId == -1) {
+ data.branchId = loadedRelation.getArtifactB().getBranch().getId();
+ }
+ }
+ }
+ if (unloadedRelation != null) {
+ data.unloadedAddedRelations.add(unloadedRelation);
+ }
+ }
+ if (xRelationModifiedEvent.relationEventType == RelationEventType.Deleted) {
+ if (loadedRelation != null) {
+ data.cacheDeletedRelations.add(loadedRelation);
+ if (loadedRelation.getArtifactA() != null) {
+ data.cacheRelationDeletedArtifacts.add(loadedRelation.getArtifactA());
+ if (data.branchId == -1) {
+ data.branchId = loadedRelation.getArtifactA().getBranch().getId();
+ loadedRelation.getBranch();
+ }
+ }
+ if (loadedRelation.getArtifactB() != null) {
+ data.cacheRelationDeletedArtifacts.add(loadedRelation.getArtifactB());
+ if (data.branchId == -1) {
+ data.branchId = loadedRelation.getArtifactB().getBranch().getId();
+ }
+ }
+ }
+ if (unloadedRelation != null) {
+ data.unloadedDeletedRelations.add(unloadedRelation);
+ if (data.branchId == -1) {
+ data.branchId = unloadedRelation.getId();
+ }
+ }
+ }
+ if (xRelationModifiedEvent.relationEventType == RelationEventType.ModifiedRationale) {
+ if (loadedRelation != null) {
+ data.cacheChangedRelations.add(loadedRelation);
+ if (loadedRelation.getArtifactA() != null) {
+ data.cacheRelationChangedArtifacts.add(loadedRelation.getArtifactA());
+ if (data.branchId == -1) {
+ data.branchId = loadedRelation.getArtifactA().getBranch().getId();
+ }
+ }
+ if (loadedRelation.getArtifactB() != null) {
+ data.cacheRelationChangedArtifacts.add(loadedRelation.getArtifactB());
+ if (data.branchId == -1) {
+ data.branchId = loadedRelation.getArtifactB().getBranch().getId();
+ }
+ }
+ }
+ if (unloadedRelation != null) {
+ data.unloadedChangedRelations.add(unloadedRelation);
+ if (data.branchId == -1) {
+ data.branchId = unloadedRelation.getId();
+ }
+ }
+ }
+ }
+ }
+ // Clean out known duplicates
+ data.cacheChangedArtifacts.removeAll(data.cacheDeletedArtifacts);
+ data.cacheAddedArtifacts.removeAll(data.cacheDeletedArtifacts);
+ }
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/InternalEventManager2.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/InternalEventManager2.java
index 51ba42785b8..fa6afe363cf 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/InternalEventManager2.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/InternalEventManager2.java
@@ -8,19 +8,32 @@
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
-package org.eclipse.osee.framework.skynet.core.event;
+package org.eclipse.osee.framework.skynet.core.event.systems;
-import java.util.ArrayList;
-import java.util.Arrays;
+import java.rmi.RemoteException;
import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ThreadFactory;
import java.util.logging.Level;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.osee.framework.jdk.core.util.GUID;
import org.eclipse.osee.framework.logging.OseeLog;
+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;
+import org.eclipse.osee.framework.skynet.core.event.BranchEventType;
+import org.eclipse.osee.framework.skynet.core.event.EventSystemPreferences;
+import org.eclipse.osee.framework.skynet.core.event.EventUtil;
+import org.eclipse.osee.framework.skynet.core.event.IAccessControlEventListener;
+import org.eclipse.osee.framework.skynet.core.event.IBranchEventListener;
+import org.eclipse.osee.framework.skynet.core.event.IBroadcastEventListener;
+import org.eclipse.osee.framework.skynet.core.event.IEventFilteredListener;
+import org.eclipse.osee.framework.skynet.core.event.IEventListener;
+import org.eclipse.osee.framework.skynet.core.event.IRemoteEventManagerEventListener;
+import org.eclipse.osee.framework.skynet.core.event.RemoteEventServiceEventType;
+import org.eclipse.osee.framework.skynet.core.event.Sender;
import org.eclipse.osee.framework.skynet.core.event2.AccessControlEvent;
import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
import org.eclipse.osee.framework.skynet.core.event2.BranchEvent;
@@ -33,97 +46,67 @@ import org.eclipse.osee.framework.skynet.core.event2.artifact.EventBasicGuidRela
import org.eclipse.osee.framework.skynet.core.event2.artifact.IArtifactEventListener;
import org.eclipse.osee.framework.skynet.core.event2.filter.IEventFilter;
import org.eclipse.osee.framework.skynet.core.internal.Activator;
-import org.eclipse.osee.framework.ui.plugin.event.UnloadedArtifact;
/**
- * Internal implementation of OSEE Event Manager that should only be accessed from RemoteEventManager and
- * OseeEventManager classes.
+ * Internal implementation of OSEE Event Manager that should only be accessed from OseeEventManager classes.
*
* @author Donald G. Dunne
*/
public class InternalEventManager2 {
-
- public static final Collection<UnloadedArtifact> EMPTY_UNLOADED_ARTIFACTS = Collections.emptyList();
- private static boolean disableEvents = false;
- private static final ThreadFactory threadFactory = new OseeEventThreadFactory("Osee Events2");
- private static final ExecutorService executorService = Executors.newFixedThreadPool(
- Runtime.getRuntime().availableProcessors(), threadFactory);
- private static final List<IEventListener> priorityListeners = new CopyOnWriteArrayList<IEventListener>();
- private static final List<IEventListener> listeners = new CopyOnWriteArrayList<IEventListener>();
- private static boolean pendRunning = false;
-
- // This will disable all Local TransactionEvents and enable loopback routing of Remote TransactionEvents back
- // through the RemoteEventService as if they came from another client. This is for testing purposes only and
- // should be reset to false before release.
- private static boolean enableRemoteEventLoopback = false;
-
- private static void execute(Runnable runnable) {
- if (pendRunning) {
- runnable.run();
- } else {
- executorService.submit(runnable);
- }
+ public static interface ConnectionStatus {
+ boolean isConnected();
}
- public static void addListener(IEventListener listener) {
- if (listener == null) {
- throw new IllegalArgumentException("listener can not be null");
- }
- if (!listeners.contains(listener)) {
- listeners.add(listener);
- OseeEventManager.eventLog("IEM2: addListener (" + priorityListeners.size() + ") " + listener);
- }
- }
-
- /**
- * Add a priority listener. This should only be done for caches where they need to be updated before all other
- * listeners are called.
- */
- public static void addPriorityListener(IEventListener listener) {
- if (listener == null) {
- throw new IllegalArgumentException("listener can not be null");
- }
- if (!priorityListeners.contains(listener)) {
- priorityListeners.add(listener);
- }
- OseeEventManager.eventLog("IEM2: addPriorityListener (" + priorityListeners.size() + ") " + listener);
+ private final Collection<IEventListener> priorityListeners;
+ private final Collection<IEventListener> listeners;
+ private final IOseeCoreModelEventService coreModelEventService;
+ private final ExecutorService executorService;
+ private final EventSystemPreferences preferences;
+ private final IFrameworkEventListener frameworkListener;
+ private final ConnectionStatus connectionStatus;
+
+ public InternalEventManager2(IOseeCoreModelEventService coreModelEventService, Collection<IEventListener> listeners, Collection<IEventListener> priorityListeners, ExecutorService executorService, EventSystemPreferences preferences, ConnectionStatus connectionStatus) {
+ this.coreModelEventService = coreModelEventService;
+ this.listeners = listeners;
+ this.priorityListeners = priorityListeners;
+ this.executorService = executorService;
+ this.preferences = preferences;
+ this.frameworkListener = new FrameworkEventToRemoteEvent2Listener(this);
+ this.connectionStatus = connectionStatus;
}
- public static void removeListener(IEventListener listener) {
- listeners.remove(listener);
- priorityListeners.remove(listener);
+ public void start() {
+ coreModelEventService.addFrameworkListener(frameworkListener);
}
- public static void removeListeners(IEventListener listener) {
- OseeEventManager.eventLog("IEM2: removeListener: (" + listeners.size() + ") " + listener);
- listeners.remove(listener);
- priorityListeners.remove(listener);
+ public void stop() {
+ coreModelEventService.removeFrameworkListener(frameworkListener);
}
- /**
- * Clear all registered listeners. Should be used for testing purposes only.
- */
- public static void internalRemoveAllListeners() {
- listeners.clear();
- priorityListeners.clear();
+ public boolean isConnected() {
+ return preferences.isNewEvents() && connectionStatus.isConnected();
}
- public static int getNumberOfListeners() {
- return listeners.size();
+ private void execute(Runnable runnable) {
+ if (preferences.isPendRunning()) {
+ runnable.run();
+ } else {
+ executorService.submit(runnable);
+ }
}
/**
* For all IBranchEventListener, process priorityListeners, then normal listeners
*/
- public static void processBranchEvent(Sender sender, BranchEvent branchEvent) {
- OseeEventManager.eventLog(String.format("IEM2: processBranchEvent [%s]", branchEvent));
+ public void processBranchEvent(Sender sender, BranchEvent branchEvent) {
+ EventUtil.eventLog(String.format("IEM2: processBranchEvent [%s]", branchEvent));
for (IEventListener listener : priorityListeners) {
try {
if (listener instanceof IBranchEventListener) {
processBranchEventListener((IBranchEventListener) listener, sender, branchEvent);
}
} catch (Exception ex) {
- OseeEventManager.eventLog(
+ EventUtil.eventLog(
String.format("IEM2: processBranchEvent [%s] error processing priorityListeners", branchEvent), ex);
}
}
@@ -133,13 +116,13 @@ public class InternalEventManager2 {
processBranchEventListener((IBranchEventListener) listener, sender, branchEvent);
}
} catch (Exception ex) {
- OseeEventManager.eventLog(
- String.format("IEM2: processBranchEvent [%s] error processing listeners", branchEvent), ex);
+ EventUtil.eventLog(String.format("IEM2: processBranchEvent [%s] error processing listeners", branchEvent),
+ ex);
}
}
}
- private static void processBranchEventListener(IBranchEventListener listener, Sender sender, BranchEvent branchEvent) {
+ private void processBranchEventListener(IBranchEventListener listener, Sender sender, BranchEvent branchEvent) {
// If any filter doesn't match, don't call listener
if (((IEventFilteredListener) listener).getEventFilters() != null) {
for (IEventFilter eventFilter : ((IEventFilteredListener) listener).getEventFilters()) {
@@ -156,14 +139,14 @@ public class InternalEventManager2 {
/**
* For all IBranchEventListener, process priorityListeners, then normal listeners
*/
- public static void processEventArtifactsAndRelations(Sender sender, ArtifactEvent artifactEvent) {
+ public void processEventArtifactsAndRelations(Sender sender, ArtifactEvent artifactEvent) {
for (IEventListener listener : priorityListeners) {
try {
if (listener instanceof IArtifactEventListener) {
processEventArtifactsAndRelationsListener((IArtifactEventListener) listener, artifactEvent, sender);
}
} catch (Exception ex) {
- OseeEventManager.eventLog(
+ EventUtil.eventLog(
String.format("IEM2: processArtsAndRels [%s] error processing priorityListeners", artifactEvent), ex);
}
}
@@ -173,14 +156,14 @@ public class InternalEventManager2 {
processEventArtifactsAndRelationsListener((IArtifactEventListener) listener, artifactEvent, sender);
}
} catch (Exception ex) {
- OseeEventManager.eventLog(
+ EventUtil.eventLog(
String.format("IEM2: processArtsAndRels [%s] error processing listeners", artifactEvent), ex);
}
}
}
- private static void processEventArtifactsAndRelationsListener(IArtifactEventListener listener, ArtifactEvent artifactEvent, Sender sender) {
- OseeEventManager.eventLog(String.format("IEM2: processArtsAndRels [%s]", artifactEvent));
+ private void processEventArtifactsAndRelationsListener(IArtifactEventListener listener, ArtifactEvent artifactEvent, Sender sender) {
+ EventUtil.eventLog(String.format("IEM2: processArtsAndRels [%s]", artifactEvent));
// If any filter doesn't match, don't call listener
if (((IEventFilteredListener) listener).getEventFilters() != null) {
for (IEventFilter eventFilter : ((IEventFilteredListener) listener).getEventFilters()) {
@@ -204,16 +187,16 @@ public class InternalEventManager2 {
listener.handleArtifactEvent(artifactEvent, sender);
}
- public static void processAccessControlEvent(Sender sender, AccessControlEvent accessControlEvent) {
- OseeEventManager.eventLog(String.format("IEM2: processAccessControlEvent [%s]", accessControlEvent));
+ public void processAccessControlEvent(Sender sender, AccessControlEvent accessControlEvent) {
+ EventUtil.eventLog(String.format("IEM2: processAccessControlEvent [%s]", accessControlEvent));
for (IEventListener listener : priorityListeners) {
try {
if (listener instanceof IAccessControlEventListener) {
((IAccessControlEventListener) listener).handleAccessControlArtifactsEvent(sender, accessControlEvent);
}
} catch (Exception ex) {
- OseeEventManager.eventLog(String.format(
- "IEM2: processAccessControlEvent [%s] error processing priorityListeners", accessControlEvent), ex);
+ EventUtil.eventLog(String.format("IEM2: processAccessControlEvent [%s] error processing priorityListeners",
+ accessControlEvent), ex);
}
}
for (IEventListener listener : listeners) {
@@ -222,14 +205,14 @@ public class InternalEventManager2 {
((IAccessControlEventListener) listener).handleAccessControlArtifactsEvent(sender, accessControlEvent);
}
} catch (Exception ex) {
- OseeEventManager.eventLog(
+ EventUtil.eventLog(
String.format("IEM2: processAccessControlEvent [%s] error processing listeners", accessControlEvent), ex);
}
}
}
- public static void processEventBroadcastEvent(Sender sender, BroadcastEvent broadcastEvent) {
- OseeEventManager.eventLog(String.format("IEM2: processEventBroadcastEvent [%s]", broadcastEvent));
+ public void processEventBroadcastEvent(Sender sender, BroadcastEvent broadcastEvent) {
+ EventUtil.eventLog(String.format("IEM2: processEventBroadcastEvent [%s]", broadcastEvent));
if (broadcastEvent.getUsers().size() == 0) {
return;
}
@@ -239,7 +222,7 @@ public class InternalEventManager2 {
((IBroadcastEventListener) listener).handleBroadcastEvent(sender, broadcastEvent);
}
} catch (Exception ex) {
- OseeEventManager.eventLog(
+ EventUtil.eventLog(
String.format("IEM2: processEventBroadcastEvent [%s] error processing priorityListeners", broadcastEvent),
ex);
}
@@ -250,14 +233,14 @@ public class InternalEventManager2 {
((IBroadcastEventListener) listener).handleBroadcastEvent(sender, broadcastEvent);
}
} catch (Exception ex) {
- OseeEventManager.eventLog(
+ EventUtil.eventLog(
String.format("IEM2: processEventBroadcastEvent [%s] error processing listeners", broadcastEvent), ex);
}
}
}
- public static void processRemoteEventManagerEvent(Sender sender, RemoteEventServiceEventType remoteEventServiceEvent) {
- OseeEventManager.eventLog(String.format("IEM2: processRemoteEventManagerEvent [%s]", remoteEventServiceEvent));
+ public void processRemoteEventManagerEvent(Sender sender, RemoteEventServiceEventType remoteEventServiceEvent) {
+ EventUtil.eventLog(String.format("IEM2: processRemoteEventManagerEvent [%s]", remoteEventServiceEvent));
for (IEventListener listener : priorityListeners) {
try {
if (listener instanceof IRemoteEventManagerEventListener) {
@@ -265,7 +248,7 @@ public class InternalEventManager2 {
remoteEventServiceEvent);
}
} catch (Exception ex) {
- OseeEventManager.eventLog(
+ EventUtil.eventLog(
String.format("IEM2: processRemoteEventManagerEvent [%s] error processing priorityListeners",
remoteEventServiceEvent), ex);
}
@@ -277,21 +260,21 @@ public class InternalEventManager2 {
remoteEventServiceEvent);
}
} catch (Exception ex) {
- OseeEventManager.eventLog(String.format(
- "IEM2: processRemoteEventManagerEvent [%s] error processing listeners", remoteEventServiceEvent), ex);
+ EventUtil.eventLog(String.format("IEM2: processRemoteEventManagerEvent [%s] error processing listeners",
+ remoteEventServiceEvent), ex);
}
}
}
- public static void processTransactionEvent(Sender sender, TransactionEvent transactionEvent) {
- OseeEventManager.eventLog(String.format("IEM2: processTransactionEvent [%s]", transactionEvent));
+ public void processTransactionEvent(Sender sender, TransactionEvent transactionEvent) {
+ EventUtil.eventLog(String.format("IEM2: processTransactionEvent [%s]", transactionEvent));
for (IEventListener listener : priorityListeners) {
try {
if (listener instanceof ITransactionEventListener) {
((ITransactionEventListener) listener).handleTransactionEvent(sender, transactionEvent);
}
} catch (Exception ex) {
- OseeEventManager.eventLog(
+ EventUtil.eventLog(
String.format("IEM2: processTransactionEvent [%s] error processing priorityListeners", transactionEvent),
ex);
}
@@ -302,64 +285,47 @@ public class InternalEventManager2 {
((ITransactionEventListener) listener).handleTransactionEvent(sender, transactionEvent);
}
} catch (Exception ex) {
- OseeEventManager.eventLog(
+ EventUtil.eventLog(
String.format("IEM2: processTransactionEvent [%s] error processing listeners", transactionEvent), ex);
}
}
}
- public static String getListenerReport() {
- List<String> listenerStrs = new ArrayList<String>();
- for (IEventListener listener : priorityListeners) {
- listenerStrs.add("Priority: " + getObjectSafeName(listener));
- }
- for (IEventListener listener : listeners) {
- listenerStrs.add(getObjectSafeName(listener));
- }
- String[] listArr = listenerStrs.toArray(new String[listenerStrs.size()]);
- Arrays.sort(listArr);
- return org.eclipse.osee.framework.jdk.core.util.Collections.toString("\n", (Object[]) listArr);
- }
-
- public static String getObjectSafeName(Object object) {
- try {
- return object.toString();
- } catch (Exception ex) {
- return object.getClass().getSimpleName() + " - exception on toString: " + ex.getLocalizedMessage();
- }
- }
+ // public String getListenerReport() {
+ // return EventUtil.getListenerReport(listeners, priorityListeners);
+ // }
/*
* Kick LOCAL and REMOTE access control events
*/
- static void kickAccessControlArtifactsEvent(final Sender sender, final AccessControlEvent accessControlEvent) {
+ public void kickAccessControlArtifactsEvent(final Sender sender, final AccessControlEvent accessControlEvent) {
if (sender == null) {
throw new IllegalArgumentException("sender can not be null");
}
if (accessControlEvent.getEventType() == null) {
throw new IllegalArgumentException("accessControlEventType can not be null");
}
- if (isDisableEvents()) {
+ if (preferences.isDisableEvents()) {
return;
}
- OseeEventManager.eventLog("IEM2: kickAccessControlEvent - type: " + accessControlEvent + sender + " artifacts: " + accessControlEvent.getArtifacts());
+ EventUtil.eventLog("IEM2: kickAccessControlEvent - type: " + accessControlEvent + sender + " artifacts: " + accessControlEvent.getArtifacts());
Runnable runnable = new Runnable() {
@Override
public void run() {
try {
// Kick LOCAL
- boolean normalOperation = !enableRemoteEventLoopback;
- boolean loopbackTestEnabledAndRemoteEventReturned = enableRemoteEventLoopback && sender.isRemote();
+ boolean normalOperation = !preferences.isEnableRemoteEventLoopback();
+ boolean loopbackTestEnabledAndRemoteEventReturned =
+ preferences.isEnableRemoteEventLoopback() && sender.isRemote();
if (normalOperation && sender.isLocal() || loopbackTestEnabledAndRemoteEventReturned) {
processAccessControlEvent(sender, accessControlEvent);
}
// Kick REMOTE
if (sender.isLocal() && accessControlEvent.getEventType().isRemoteEventType()) {
- RemoteEventManager2.getInstance().kick(
- FrameworkEventUtil.getRemoteAccessControlEvent(accessControlEvent));
+ sendRemoteEvent(FrameworkEventUtil.getRemoteAccessControlEvent(accessControlEvent));
}
} catch (Exception ex) {
- OseeEventManager.eventLog("IEM2 kickAccessControlEvent", ex);
+ EventUtil.eventLog("IEM2 kickAccessControlEvent", ex);
}
}
};
@@ -367,11 +333,11 @@ public class InternalEventManager2 {
}
// Kick LOCAL "remote event manager" event
- static void kickLocalRemEvent(final Sender sender, final RemoteEventServiceEventType remoteEventServiceEventType) {
- if (isDisableEvents()) {
+ public void kickLocalRemEvent(final Sender sender, final RemoteEventServiceEventType remoteEventServiceEventType) {
+ if (preferences.isDisableEvents()) {
return;
}
- OseeEventManager.eventLog("IEM2: kickLocalRemEvent: type: " + remoteEventServiceEventType + " - " + sender);
+ EventUtil.eventLog("IEM2: kickLocalRemEvent: type: " + remoteEventServiceEventType + " - " + sender);
Runnable runnable = new Runnable() {
@Override
public void run() {
@@ -389,25 +355,26 @@ public class InternalEventManager2 {
}
// Kick LOCAL ArtifactReloadEvent
- static void kickLocalArtifactReloadEvent(final Sender sender, final ArtifactEvent artifactEvent) {
- if (isDisableEvents()) {
+ public void kickLocalArtifactReloadEvent(final Sender sender, final ArtifactEvent artifactEvent) {
+ if (preferences.isDisableEvents()) {
return;
}
- OseeEventManager.eventLog("IEM2: kickArtifactReloadEvent [" + artifactEvent + "] - " + sender);
+ EventUtil.eventLog("IEM2: kickArtifactReloadEvent [" + artifactEvent + "] - " + sender);
Runnable runnable = new Runnable() {
@Override
public void run() {
try {
// Kick LOCAL
- boolean normalOperation = !enableRemoteEventLoopback;
- boolean loopbackTestEnabledAndRemoteEventReturned = enableRemoteEventLoopback && sender.isRemote();
+ boolean normalOperation = !preferences.isEnableRemoteEventLoopback();
+ boolean loopbackTestEnabledAndRemoteEventReturned =
+ preferences.isEnableRemoteEventLoopback() && sender.isRemote();
if (normalOperation && sender.isLocal() || loopbackTestEnabledAndRemoteEventReturned) {
processEventArtifactsAndRelations(sender, artifactEvent);
}
// NO REMOTE KICK
} catch (Exception ex) {
- OseeEventManager.eventLog("IEM2 kickArtifactReloadEvent", ex);
+ EventUtil.eventLog("IEM2 kickArtifactReloadEvent", ex);
}
}
};
@@ -417,34 +384,35 @@ public class InternalEventManager2 {
/*
* Kick LOCAL and REMOTE branch events
*/
- static void kickBranchEvent(final Sender sender, final BranchEvent branchEvent) {
+ public void kickBranchEvent(final Sender sender, final BranchEvent branchEvent) {
if (branchEvent.getNetworkSender() == null) {
- OseeEventManager.eventLog("IEM2: kickBranchEvent - ERROR networkSender can't be null.");
+ EventUtil.eventLog("IEM2: kickBranchEvent - ERROR networkSender can't be null.");
return;
}
- if (isDisableEvents()) {
+ if (preferences.isDisableEvents()) {
return;
}
- OseeEventManager.eventLog("IEM2: kickBranchEvent: type: " + branchEvent.getEventType() + " guid: " + branchEvent.getBranchGuid() + " - " + sender);
+ EventUtil.eventLog("IEM2: kickBranchEvent: type: " + branchEvent.getEventType() + " guid: " + branchEvent.getBranchGuid() + " - " + sender);
Runnable runnable = new Runnable() {
@Override
public void run() {
// Log if this is a loopback and what is happening
- if (enableRemoteEventLoopback) {
- OseeEventManager.eventLog("IEM2: BranchEvent Loopback enabled" + (sender.isLocal() ? " - Ignoring Local Kick" : " - Kicking Local from Loopback"));
+ if (preferences.isEnableRemoteEventLoopback()) {
+ EventUtil.eventLog("IEM2: BranchEvent Loopback enabled" + (sender.isLocal() ? " - Ignoring Local Kick" : " - Kicking Local from Loopback"));
}
BranchEventType branchEventType = branchEvent.getEventType();
// Kick LOCAL
- boolean normalOperation = !enableRemoteEventLoopback;
- boolean loopbackTestEnabledAndRemoteEventReturned = enableRemoteEventLoopback && sender.isRemote();
+ boolean normalOperation = !preferences.isEnableRemoteEventLoopback();
+ boolean loopbackTestEnabledAndRemoteEventReturned =
+ preferences.isEnableRemoteEventLoopback() && sender.isRemote();
if (normalOperation || loopbackTestEnabledAndRemoteEventReturned) {
processBranchEvent(sender, branchEvent);
}
// Kick REMOTE (If source was Local and this was not a default branch changed event
if (sender.isLocal() && branchEventType.isRemoteEventType()) {
- RemoteEventManager2.getInstance().kick(FrameworkEventUtil.getRemoteBranchEvent(branchEvent));
+ sendRemoteEvent(FrameworkEventUtil.getRemoteBranchEvent(branchEvent));
}
}
};
@@ -452,38 +420,39 @@ public class InternalEventManager2 {
}
// Kick LOCAL and REMOTE ArtifactEvent
- static void kickArtifactEvent(final Sender sender, final ArtifactEvent artifactEvent) {
+ public void kickArtifactEvent(final Sender sender, final ArtifactEvent artifactEvent) {
if (artifactEvent.getNetworkSender() == null) {
- OseeEventManager.eventLog("IEM2: kickArtifactEvent - ERROR networkSender can't be null.");
+ EventUtil.eventLog("IEM2: kickArtifactEvent - ERROR networkSender can't be null.");
return;
}
- if (isDisableEvents()) {
+ if (preferences.isDisableEvents()) {
return;
}
- OseeEventManager.eventLog("IEM2: kickArtifactEvent [" + artifactEvent + "] - " + sender);
+ EventUtil.eventLog("IEM2: kickArtifactEvent [" + artifactEvent + "] - " + sender);
Runnable runnable = new Runnable() {
@Override
public void run() {
// Roll-up change information
try {
// Log if this is a loopback and what is happening
- if (enableRemoteEventLoopback) {
- OseeEventManager.eventLog("IEM2: ArtifactEvent Loopback enabled" + (sender.isLocal() ? " - Ignoring Local Kick" : " - Kicking Local from Loopback"));
+ if (preferences.isEnableRemoteEventLoopback()) {
+ EventUtil.eventLog("IEM2: ArtifactEvent Loopback enabled" + (sender.isLocal() ? " - Ignoring Local Kick" : " - Kicking Local from Loopback"));
}
// Kick LOCAL
- boolean normalOperation = !enableRemoteEventLoopback;
- boolean loopbackTestEnabledAndRemoteEventReturned = enableRemoteEventLoopback && sender.isRemote();
+ boolean normalOperation = !preferences.isEnableRemoteEventLoopback();
+ boolean loopbackTestEnabledAndRemoteEventReturned =
+ preferences.isEnableRemoteEventLoopback() && sender.isRemote();
if (normalOperation || loopbackTestEnabledAndRemoteEventReturned) {
processEventArtifactsAndRelations(sender, artifactEvent);
}
// Kick REMOTE (If source was Local and this was not a default branch changed event
if (sender.isLocal()) {
- RemoteEventManager2.getInstance().kick(FrameworkEventUtil.getRemotePersistEvent(artifactEvent));
+ sendRemoteEvent(FrameworkEventUtil.getRemotePersistEvent(artifactEvent));
}
} catch (Exception ex) {
- OseeEventManager.eventLog("IEM2 kickArtifactEvent", ex);
+ EventUtil.eventLog("IEM2 kickArtifactEvent", ex);
}
}
};
@@ -491,28 +460,29 @@ public class InternalEventManager2 {
}
// Kick LOCAL and REMOTE ArtifactEvent
- static void kickTransactionEvent(final Sender sender, final TransactionEvent transEvent) {
+ public void kickTransactionEvent(final Sender sender, final TransactionEvent transEvent) {
if (transEvent.getNetworkSender() == null) {
- OseeEventManager.eventLog("IEM2: kickTransactionEvent - ERROR networkSender can't be null.");
+ EventUtil.eventLog("IEM2: kickTransactionEvent - ERROR networkSender can't be null.");
return;
}
- if (isDisableEvents()) {
+ if (preferences.isDisableEvents()) {
return;
}
- OseeEventManager.eventLog("IEM2: kickTransactionEvent [" + transEvent + "] - " + sender);
+ EventUtil.eventLog("IEM2: kickTransactionEvent [" + transEvent + "] - " + sender);
Runnable runnable = new Runnable() {
@Override
public void run() {
// Roll-up change information
try {
// Log if this is a loopback and what is happening
- if (!enableRemoteEventLoopback) {
- OseeEventManager.eventLog("IEM2: TransactionEvent Loopback enabled" + (sender.isLocal() ? " - Ignoring Local Kick" : " - Kicking Local from Loopback"));
+ if (!preferences.isEnableRemoteEventLoopback()) {
+ EventUtil.eventLog("IEM2: TransactionEvent Loopback enabled" + (sender.isLocal() ? " - Ignoring Local Kick" : " - Kicking Local from Loopback"));
}
// Kick LOCAL
- boolean normalOperation = !enableRemoteEventLoopback;
- boolean loopbackTestEnabledAndRemoteEventReturned = enableRemoteEventLoopback && sender.isRemote();
+ boolean normalOperation = !preferences.isEnableRemoteEventLoopback();
+ boolean loopbackTestEnabledAndRemoteEventReturned =
+ preferences.isEnableRemoteEventLoopback() && sender.isRemote();
if (normalOperation || loopbackTestEnabledAndRemoteEventReturned) {
processTransactionEvent(sender, transEvent);
}
@@ -520,10 +490,10 @@ public class InternalEventManager2 {
// Kick REMOTE (If source was Local and this was not a default branch changed event
if (sender.isLocal()) {
// Kick REMOTE
- RemoteEventManager2.getInstance().kick(FrameworkEventUtil.getRemoteTransactionEvent(transEvent));
+ sendRemoteEvent(FrameworkEventUtil.getRemoteTransactionEvent(transEvent));
}
} catch (Exception ex) {
- OseeEventManager.eventLog("IEM2: kickTransactionEvent", ex);
+ EventUtil.eventLog("IEM2: kickTransactionEvent", ex);
}
}
};
@@ -533,13 +503,13 @@ public class InternalEventManager2 {
/*
* Kick LOCAL and REMOTE broadcast event
*/
- static void kickBroadcastEvent(final Sender sender, final BroadcastEvent broadcastEvent) {
- if (isDisableEvents()) {
+ public void kickBroadcastEvent(final Sender sender, final BroadcastEvent broadcastEvent) {
+ if (preferences.isDisableEvents()) {
return;
}
if (!broadcastEvent.getBroadcastEventType().isPingOrPong()) {
- OseeEventManager.eventLog("IEM2: kickBroadcastEvent: type: " + broadcastEvent.getBroadcastEventType().name() + " message: " + broadcastEvent.getMessage() + " - " + sender);
+ EventUtil.eventLog("IEM2: kickBroadcastEvent: type: " + broadcastEvent.getBroadcastEventType().name() + " message: " + broadcastEvent.getMessage() + " - " + sender);
}
Runnable runnable = new Runnable() {
@Override
@@ -552,7 +522,7 @@ public class InternalEventManager2 {
// Kick REMOTE (If source was Local and this was not a default branch changed event
if (sender.isLocal() && broadcastEvent.getBroadcastEventType().isRemoteEventType()) {
- RemoteEventManager2.getInstance().kick(FrameworkEventUtil.getRemoteBroadcastEvent(broadcastEvent));
+ sendRemoteEvent(FrameworkEventUtil.getRemoteBroadcastEvent(broadcastEvent));
}
} catch (Exception ex) {
OseeLog.log(Activator.class, Level.SEVERE, ex);
@@ -562,30 +532,47 @@ public class InternalEventManager2 {
execute(runnable);
}
- static boolean isDisableEvents() {
- return disableEvents;
- }
-
- public static void setDisableEvents(boolean disableEvents) {
- InternalEventManager2.disableEvents = disableEvents;
- }
-
- public static boolean isEnableRemoteEventLoopback() {
- return enableRemoteEventLoopback;
- }
-
- public static void setEnableRemoteEventLoopback(boolean enableRemoteEventLoopback) {
- InternalEventManager2.enableRemoteEventLoopback = enableRemoteEventLoopback;
- }
-
/**
- * If true, all listeners will be called back in main thread. For testing purposes only.
+ * InternalEventManager.enableRemoteEventLoopback will enable a testing loopback that will take the kicked remote
+ * events and loop them back as if they came from an external client. It will allow for the testing of the OEM -> REM
+ * -> OEM processing. In addition, this onEvent is put in a non-display thread which will test that all handling by
+ * applications is properly handled by doing all processing and then kicking off display-thread when need to update
+ * ui. SessionId needs to be modified so this client doesn't think the events came from itself.
*/
- public static void internalSetPendRunning(boolean pendRunning) {
- InternalEventManager2.pendRunning = pendRunning;
+ private void sendRemoteEvent(final RemoteEvent remoteEvent) {
+ if (preferences.isNewEvents() && isConnected()) {
+ EventUtil.eventLog(String.format("REM2: kick - [%s]", remoteEvent));
+ Job job =
+ new Job(String.format("[%s] - sending [%s]", getClass().getSimpleName(),
+ remoteEvent.getClass().getSimpleName())) {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ coreModelEventService.sendRemoteEvent(remoteEvent);
+ } catch (Exception ex) {
+ EventUtil.eventLog("REM2: kick", ex);
+ return new Status(IStatus.ERROR, Activator.PLUGIN_ID, -1, ex.getLocalizedMessage(), ex);
+ }
+ return Status.OK_STATUS;
+ }
+ };
+
+ job.schedule();
+ }
+
+ if (preferences.isEnableRemoteEventLoopback()) {
+ EventUtil.eventLog("REM2: Loopback enabled - Returning events as Remote event.");
+ String newSessionId = GUID.create();
+ remoteEvent.getNetworkSender().setSessionId(newSessionId);
+ try {
+ frameworkListener.onEvent(remoteEvent);
+ } catch (RemoteException ex) {
+ EventUtil.eventLog("REM2: RemoteEvent - onEvent", ex);
+ }
+ }
}
- public static boolean isPendRunning() {
- return pendRunning;
+ public void testSendRemoteEventThroughFrameworkListener(final RemoteEvent remoteEvent) throws RemoteException {
+ frameworkListener.onEvent(remoteEvent);
}
}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/JiniSkynetEventServiceLookup.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/JiniSkynetEventServiceLookup.java
new file mode 100644
index 00000000000..e3bca76dfee
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/JiniSkynetEventServiceLookup.java
@@ -0,0 +1,208 @@
+/*******************************************************************************
+ * 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.skynet.core.event.systems;
+
+import java.rmi.RemoteException;
+import java.rmi.server.ExportException;
+import java.util.logging.Level;
+import net.jini.core.entry.Entry;
+import net.jini.core.lookup.ServiceItem;
+import org.eclipse.osee.framework.core.client.ClientSessionManager;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.jini.discovery.EclipseJiniClassloader;
+import org.eclipse.osee.framework.jini.discovery.IServiceLookupListener;
+import org.eclipse.osee.framework.jini.discovery.ServiceDataStore;
+import org.eclipse.osee.framework.jini.service.core.SimpleFormattedEntry;
+import org.eclipse.osee.framework.jini.util.OseeJini;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.messaging.event.skynet.ISkynetEvent;
+import org.eclipse.osee.framework.messaging.event.skynet.ISkynetEventListener;
+import org.eclipse.osee.framework.messaging.event.skynet.ISkynetEventService;
+import org.eclipse.osee.framework.skynet.core.UserManager;
+import org.eclipse.osee.framework.skynet.core.event.EventSystemPreferences;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
+import org.eclipse.osee.framework.skynet.core.event.RemoteEventServiceEventType;
+import org.eclipse.osee.framework.skynet.core.internal.Activator;
+
+/**
+ * @author Donald G. Dunne
+ */
+public final class JiniSkynetEventServiceLookup implements IServiceLookupListener {
+
+ private final ISkynetEventListener clientEventListener;
+ private String acceptableServiceName;
+ private ISkynetEventService currentEventService;
+ private ISkynetEventListener clientEventListenerRemoteReference;
+ private final EventSystemPreferences preferences;
+
+ public JiniSkynetEventServiceLookup(EventSystemPreferences preferences, ISkynetEventListener clientEventListener) {
+ this.preferences = preferences;
+ this.clientEventListener = clientEventListener;
+ clear();
+ }
+
+ private void clear() {
+ currentEventService = null;
+ clientEventListenerRemoteReference = null;
+ acceptableServiceName = null;
+ }
+
+ public void start() {
+ getClientEventListenerRemoteReference();
+ }
+
+ public void stop() {
+ if (clientEventListenerRemoteReference != null) {
+ ServiceDataStore.getEclipseInstance(EclipseJiniClassloader.getInstance()).removeListener(this);
+ }
+ reset();
+ }
+
+ public ISkynetEventListener getClientEventListenerRemoteReference() {
+ checkJiniRegistration();
+ return clientEventListenerRemoteReference;
+ }
+
+ public void checkJiniRegistration() {
+ if (preferences.isNewEvents()) {
+ return;
+ }
+ if (clientEventListenerRemoteReference == null) {
+ try {
+ // We need to trigger authentication before attempting to get database information from client session manager.
+ UserManager.getUser();
+ acceptableServiceName =
+ ClientSessionManager.getDataStoreName() + ":" + ClientSessionManager.getDataStoreLoginName();
+ clientEventListenerRemoteReference =
+ (ISkynetEventListener) OseeJini.getRemoteReference(clientEventListener);
+ } catch (Exception ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ clientEventListenerRemoteReference = null;
+ }
+
+ if (clientEventListenerRemoteReference != null) {
+ ServiceDataStore.getEclipseInstance(EclipseJiniClassloader.getInstance()).addListener(this,
+ ISkynetEventService.class);
+ }
+ }
+ }
+
+ private ISkynetEventService getReference() {
+ return currentEventService;
+ }
+
+ public boolean isValid() {
+ return isValidService(currentEventService);
+ }
+
+ public void reset() {
+ setEventService(null);
+ }
+
+ public void kick(ISkynetEvent[] events, ISkynetEventListener... except) {
+ try {
+ getReference().kick(events, except);
+ } catch (ExportException ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ } catch (RemoteException ex) {
+ disconnectService(ex);
+ }
+ }
+
+ private boolean isValidService(ISkynetEventService service) {
+ boolean result = false;
+ try {
+ if (service != null) {
+ result = service.isAlive();
+ }
+ } catch (Exception ex) {
+ // Do Nothing
+ result = false;
+ }
+ return result;
+ }
+
+ private synchronized void setEventService(ISkynetEventService service) {
+ if (isValidService(currentEventService)) {
+ try {
+ currentEventService.deregister(getClientEventListenerRemoteReference());
+ } catch (RemoteException ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ }
+ currentEventService = service;
+ }
+
+ private void disconnectService(Exception e) {
+ if (preferences.isNewEvents()) {
+ return;
+ }
+ OseeLog.log(Activator.class, Level.WARNING, "Skynet Event Service connection lost\n" + e.toString(), e);
+ setEventService(null);
+ try {
+ OseeEventManager.kickLocalRemEvent(this, RemoteEventServiceEventType.Rem1_DisConnected);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ }
+
+ private void connectToService(ISkynetEventService service) {
+ if (preferences.isNewEvents()) {
+ return;
+ }
+ try {
+ ISkynetEventListener clientListener = getClientEventListenerRemoteReference();
+ if (clientListener != null) {
+ service.register(clientListener);
+ setEventService(service);
+ OseeLog.log(Activator.class, Level.INFO,
+ "Skynet Event Service connection established " + acceptableServiceName);
+ OseeEventManager.kickLocalRemEvent(this, RemoteEventServiceEventType.Rem1_Connected);
+ } else {
+ OseeLog.log(Activator.class, Level.SEVERE, "Client listener reference was null");
+ }
+ } catch (Exception ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ }
+
+ @Override
+ public void serviceAdded(ServiceItem serviceItem) {
+ if (preferences.isNewEvents()) {
+ return;
+ }
+ if (serviceItem.service instanceof ISkynetEventService) {
+ ISkynetEventService service = (ISkynetEventService) serviceItem.service;
+ if (isValidService(service)) {
+ // Check if the service is for the database we are using
+ for (Entry entry : serviceItem.attributeSets) {
+ if (entry instanceof SimpleFormattedEntry) {
+ SimpleFormattedEntry simpleEntry = (SimpleFormattedEntry) entry;
+ if ("db".equals(simpleEntry.name) && acceptableServiceName.equals(simpleEntry.value)) {
+ connectToService(service);
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ public void serviceChanged(ServiceItem serviceItem) {
+ serviceAdded(serviceItem);
+ }
+
+ @Override
+ public void serviceRemoved(ServiceItem serviceItem) {
+ // do nothing
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/InternalEventManager.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/LegacyEventManager.java
index 275a3b13132..7793aff64ed 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/InternalEventManager.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/LegacyEventManager.java
@@ -8,24 +8,26 @@
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
-package org.eclipse.osee.framework.skynet.core.event;
+package org.eclipse.osee.framework.skynet.core.event.systems;
import java.lang.reflect.Method;
+import java.rmi.RemoteException;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collection;
-import java.util.Collections;
import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ThreadFactory;
import java.util.logging.Level;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.osee.framework.core.enums.RelationSide;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.jdk.core.util.GUID;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.messaging.event.skynet.ISkynetEvent;
+import org.eclipse.osee.framework.messaging.event.skynet.ISkynetEventListener;
import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkAccessControlArtifactsEvent;
import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkArtifactAddedEvent;
import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkArtifactChangeTypeEvent;
@@ -49,43 +51,78 @@ import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.skynet.core.artifact.ArtifactCache;
import org.eclipse.osee.framework.skynet.core.artifact.ArtifactModType;
import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
+import org.eclipse.osee.framework.skynet.core.event.ArtifactTransactionModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.event.BranchEventType;
+import org.eclipse.osee.framework.skynet.core.event.BroadcastEventType;
+import org.eclipse.osee.framework.skynet.core.event.EventSystemPreferences;
+import org.eclipse.osee.framework.skynet.core.event.EventUtil;
+import org.eclipse.osee.framework.skynet.core.event.FrameworkTransactionData;
+import org.eclipse.osee.framework.skynet.core.event.IAccessControlEventListener;
+import org.eclipse.osee.framework.skynet.core.event.IArtifactModifiedEventListener;
+import org.eclipse.osee.framework.skynet.core.event.IArtifactReloadEventListener;
+import org.eclipse.osee.framework.skynet.core.event.IArtifactsChangeTypeEventListener;
+import org.eclipse.osee.framework.skynet.core.event.IArtifactsPurgedEventListener;
+import org.eclipse.osee.framework.skynet.core.event.IBranchEventListener;
+import org.eclipse.osee.framework.skynet.core.event.IBroadcastEventListener;
+import org.eclipse.osee.framework.skynet.core.event.IEventListener;
+import org.eclipse.osee.framework.skynet.core.event.IFrameworkTransactionEventListener;
+import org.eclipse.osee.framework.skynet.core.event.IMergeBranchEventListener;
+import org.eclipse.osee.framework.skynet.core.event.IRelationModifiedEventListener;
+import org.eclipse.osee.framework.skynet.core.event.IRemoteEventManagerEventListener;
+import org.eclipse.osee.framework.skynet.core.event.ITransactionsDeletedEventListener;
+import org.eclipse.osee.framework.skynet.core.event.LoadedRelation;
+import org.eclipse.osee.framework.skynet.core.event.MergeBranchEventType;
+import org.eclipse.osee.framework.skynet.core.event.RemoteEventServiceEventType;
+import org.eclipse.osee.framework.skynet.core.event.Sender;
import org.eclipse.osee.framework.skynet.core.event2.AccessControlEvent;
import org.eclipse.osee.framework.skynet.core.internal.Activator;
import org.eclipse.osee.framework.skynet.core.relation.RelationEventType;
import org.eclipse.osee.framework.skynet.core.relation.RelationLink;
import org.eclipse.osee.framework.skynet.core.relation.RelationTypeManager;
import org.eclipse.osee.framework.skynet.core.utility.LoadedArtifacts;
-import org.eclipse.osee.framework.ui.plugin.event.UnloadedArtifact;
import org.eclipse.osee.framework.ui.plugin.event.UnloadedRelation;
/**
- * Internal implementation of OSEE Event Manager that should only be accessed from RemoteEventManager and
- * OseeEventManager classes.
+ * Internal implementation of OSEE Event Manager that should only be accessed from OseeEventManager classes.
*
* @author Donald G. Dunne
*/
-public class InternalEventManager {
+public class LegacyEventManager {
+
+ private final Collection<IEventListener> priorityListeners;
+ private final Collection<IEventListener> listeners;
+ private final ExecutorService executorService;
+ private final EventSystemPreferences preferences;
+ private final JiniSkynetEventServiceLookup serviceLookup;
+ private final ISkynetEventListener remoteEventReceiver;
+
+ public LegacyEventManager(Collection<IEventListener> listeners, Collection<IEventListener> priorityListeners, ExecutorService executorService, EventSystemPreferences preferences, JiniSkynetEventServiceLookup serviceLookup, ISkynetEventListener remoteEventReceiver) {
+ this.listeners = listeners;
+ this.priorityListeners = priorityListeners;
+ this.executorService = executorService;
+ this.preferences = preferences;
+ this.serviceLookup = serviceLookup;
+ this.remoteEventReceiver = remoteEventReceiver;
+ }
- private static final List<IEventListener> priorityListeners = new CopyOnWriteArrayList<IEventListener>();
- private static final List<IEventListener> listeners = new CopyOnWriteArrayList<IEventListener>();
- public static final Collection<UnloadedArtifact> EMPTY_UNLOADED_ARTIFACTS = Collections.emptyList();
- private static boolean disableEvents = false;
+ public void start() {
+ serviceLookup.start();
+ }
- private static final ThreadFactory threadFactory = new OseeEventThreadFactory("Osee Events");
- private static final ExecutorService executorService = Executors.newFixedThreadPool(
- Runtime.getRuntime().availableProcessors(), threadFactory);
+ public void stop() {
+ serviceLookup.stop();
+ }
- // This will disable all Local TransactionEvents and enable loopback routing of Remote TransactionEvents back
- // through the RemoteEventService as if they came from another client. This is for testing purposes only and
- // should be reset to false before release.
- private static boolean enableRemoteEventLoopback = false;
+ public boolean isConnected() {
+ return preferences.isOldEvents() && serviceLookup.isValid();
+ }
// Kick LOCAL "remote event manager" event
- static void kickRemoteEventManagerEvent(final Sender sender, final RemoteEventServiceEventType remoteEventServiceEventType) {
- if (isDisableEvents()) {
+ public void kickRemoteEventManagerEvent(final Sender sender, final RemoteEventServiceEventType remoteEventServiceEventType) {
+ if (preferences.isDisableEvents()) {
return;
}
- OseeEventManager.eventLog("IEM1: kickRemoteEventManagerEvent: type: " + remoteEventServiceEventType + " - " + sender);
+ EventUtil.eventLog("IEM1: kickRemoteEventManagerEvent: type: " + remoteEventServiceEventType + " - " + sender);
Runnable runnable = new Runnable() {
@Override
public void run() {
@@ -106,13 +143,13 @@ public class InternalEventManager {
/*
* Kick LOCAL and REMOTE broadcast event
*/
- static void kickBroadcastEvent(final Sender sender, final BroadcastEventType broadcastEventType, final String[] userIds, final String message) {
- if (isDisableEvents()) {
+ public void kickBroadcastEvent(final Sender sender, final BroadcastEventType broadcastEventType, final String[] userIds, final String message) {
+ if (preferences.isDisableEvents()) {
return;
}
if (!broadcastEventType.isPingOrPong()) {
- OseeEventManager.eventLog("IEM1: kickBroadcastEvent: type: " + broadcastEventType.name() + " message: " + message + " - " + sender);
+ EventUtil.eventLog("IEM1: kickBroadcastEvent: type: " + broadcastEventType.name() + " message: " + message + " - " + sender);
}
Runnable runnable = new Runnable() {
@Override
@@ -126,7 +163,7 @@ public class InternalEventManager {
// Kick REMOTE (If source was Local and this was not a default branch changed event
if (sender.isLocal() && broadcastEventType.isRemoteEventType()) {
- RemoteEventManager.kick(new NetworkBroadcastEvent(broadcastEventType.name(), message,
+ sendRemoteEvent(new NetworkBroadcastEvent(broadcastEventType.name(), message,
sender.getNetworkSender()));
}
} catch (Exception ex) {
@@ -140,24 +177,24 @@ public class InternalEventManager {
/*
* Kick LOCAL and REMOTE branch events
*/
- static void kickBranchEvent(final Sender sender, final BranchEventType branchEventType, final int branchId) {
- if (isDisableEvents()) {
+ public void kickBranchEvent(final Sender sender, final BranchEventType branchEventType, final int branchId) {
+ if (preferences.isDisableEvents()) {
return;
}
- OseeEventManager.eventLog("IEM1: kickBranchEvent: type: " + branchEventType + " id: " + branchId + " - " + sender);
+ EventUtil.eventLog("IEM1: kickBranchEvent: type: " + branchEventType + " id: " + branchId + " - " + sender);
Runnable runnable = new Runnable() {
@Override
public void run() {
// Log if this is a loopback and what is happening
- if (enableRemoteEventLoopback) {
+ if (preferences.isEnableRemoteEventLoopback()) {
OseeLog.log(
- InternalEventManager.class,
+ LegacyEventManager.class,
Level.WARNING,
"IEM1: BranchEvent Loopback enabled" + (sender.isLocal() ? " - Ignoring Local Kick" : " - Kicking Local from Loopback"));
}
// Kick LOCAL
- if (!enableRemoteEventLoopback || enableRemoteEventLoopback && branchEventType.isRemoteEventType() && sender.isRemote()) {
+ if (!preferences.isEnableRemoteEventLoopback() || preferences.isEnableRemoteEventLoopback() && branchEventType.isRemoteEventType() && sender.isRemote()) {
if (sender.isRemote() || sender.isLocal() && branchEventType.isLocalEventType()) {
safelyInvokeListeners(IBranchEventListener.class, "handleBranchEventREM1", sender, branchEventType,
branchId);
@@ -167,18 +204,18 @@ public class InternalEventManager {
if (sender.isLocal() && branchEventType.isRemoteEventType()) {
if (branchEventType == BranchEventType.Added) {
- RemoteEventManager.kick(new NetworkNewBranchEvent(branchId, sender.getNetworkSender()));
+ sendRemoteEvent(new NetworkNewBranchEvent(branchId, sender.getNetworkSender()));
} else if (branchEventType == BranchEventType.Deleted) {
- RemoteEventManager.kick(new NetworkDeletedBranchEvent(branchId, sender.getNetworkSender()));
+ sendRemoteEvent(new NetworkDeletedBranchEvent(branchId, sender.getNetworkSender()));
} else if (branchEventType == BranchEventType.Purged) {
- RemoteEventManager.kick(new NetworkPurgeBranchEvent(branchId, sender.getNetworkSender()));
+ sendRemoteEvent(new NetworkPurgeBranchEvent(branchId, sender.getNetworkSender()));
} else if (branchEventType == BranchEventType.Committed) {
- RemoteEventManager.kick(new NetworkCommitBranchEvent(branchId, sender.getNetworkSender()));
+ sendRemoteEvent(new NetworkCommitBranchEvent(branchId, sender.getNetworkSender()));
} else if (branchEventType == BranchEventType.Renamed) {
Branch branch = null;
try {
branch = BranchManager.getBranch(branchId);
- RemoteEventManager.kick(new NetworkRenameBranchEvent(branchId, sender.getNetworkSender(),
+ sendRemoteEvent(new NetworkRenameBranchEvent(branchId, sender.getNetworkSender(),
branch.getName(), branch.getShortName()));
} catch (OseeCoreException ex) {
// do nothing
@@ -191,22 +228,22 @@ public class InternalEventManager {
}
// Kick LOCAL and REMOTE branch events
- static void kickMergeBranchEvent(final Sender sender, final MergeBranchEventType branchEventType, final int branchId) {
- OseeEventManager.eventLog("IEM1: kickMergeBranchEvent: type: " + branchEventType + " id: " + branchId + " - " + sender);
+ public void kickMergeBranchEvent(final Sender sender, final MergeBranchEventType branchEventType, final int branchId) {
+ EventUtil.eventLog("IEM1: kickMergeBranchEvent: type: " + branchEventType + " id: " + branchId + " - " + sender);
Runnable runnable = new Runnable() {
@Override
public void run() {
try {
// Log if this is a loopback and what is happening
- if (enableRemoteEventLoopback) {
+ if (preferences.isEnableRemoteEventLoopback()) {
OseeLog.log(
- InternalEventManager.class,
+ LegacyEventManager.class,
Level.WARNING,
"IEM1: MergeBranchEvent Loopback enabled" + (sender.isLocal() ? " - Ignoring Local Kick" : " - Kicking Local from Loopback"));
}
// Kick LOCAL
- if (!enableRemoteEventLoopback || enableRemoteEventLoopback && branchEventType.isRemoteEventType() && sender.isRemote()) {
+ if (!preferences.isEnableRemoteEventLoopback() || preferences.isEnableRemoteEventLoopback() && branchEventType.isRemoteEventType() && sender.isRemote()) {
if (sender.isRemote() || sender.isLocal() && branchEventType.isLocalEventType()) {
safelyInvokeListeners(IMergeBranchEventListener.class, "handleMergeBranchEvent", sender,
branchEventType, branchId);
@@ -216,8 +253,7 @@ public class InternalEventManager {
if (sender.isLocal() && branchEventType.isRemoteEventType()) {
if (branchEventType == MergeBranchEventType.ConflictResolved) {
- RemoteEventManager.kick(new NetworkMergeBranchConflictResolvedEvent(branchId,
- sender.getNetworkSender()));
+ sendRemoteEvent(new NetworkMergeBranchConflictResolvedEvent(branchId, sender.getNetworkSender()));
}
}
} catch (Exception ex) {
@@ -228,14 +264,14 @@ public class InternalEventManager {
execute(runnable);
}
- private static void execute(Runnable runnable) {
+ private void execute(Runnable runnable) {
executorService.submit(runnable);
}
/*
* Kick LOCAL and REMOTE access control events
*/
- static void kickAccessControlArtifactsEvent(final Sender sender, final AccessControlEvent accessControlEvent, final LoadedArtifacts loadedArtifacts) {
+ public void kickAccessControlArtifactsEvent(final Sender sender, final AccessControlEvent accessControlEvent, final LoadedArtifacts loadedArtifacts) {
if (sender == null) {
throw new IllegalArgumentException("sender can not be null");
}
@@ -245,10 +281,10 @@ public class InternalEventManager {
if (loadedArtifacts == null) {
throw new IllegalArgumentException("loadedArtifacts can not be null");
}
- if (isDisableEvents()) {
+ if (preferences.isDisableEvents()) {
return;
}
- OseeEventManager.eventLog("IEM1: kickAccessControlEvent - type: " + accessControlEvent.getEventType() + sender + " loadedArtifacts: " + loadedArtifacts);
+ EventUtil.eventLog("IEM1: kickAccessControlEvent - type: " + accessControlEvent.getEventType() + sender + " loadedArtifacts: " + loadedArtifacts);
Runnable runnable = new Runnable() {
@Override
public void run() {
@@ -267,9 +303,8 @@ public class InternalEventManager {
Collection<Integer> artifactIds = loadedArtifacts.getAllArtifactIds();
Collection<Integer> artifactTypeIds = loadedArtifacts.getAllArtifactTypeIds();
- RemoteEventManager.kick(new NetworkAccessControlArtifactsEvent(
- accessControlEvent.getEventType().name(), branchId == null ? -1 : branchId, artifactIds,
- artifactTypeIds, sender.getNetworkSender()));
+ sendRemoteEvent(new NetworkAccessControlArtifactsEvent(accessControlEvent.getEventType().name(),
+ branchId == null ? -1 : branchId, artifactIds, artifactTypeIds, sender.getNetworkSender()));
}
} catch (OseeCoreException ex) {
OseeLog.log(Activator.class, Level.SEVERE, ex);
@@ -280,7 +315,7 @@ public class InternalEventManager {
}
// Kick LOCAL artifact modified event; This event does NOT go external
- static void kickArtifactModifiedEvent(final Sender sender, final ArtifactModType artifactModType, final Artifact artifact) {
+ public void kickArtifactModifiedEvent(final Sender sender, final ArtifactModType artifactModType, final Artifact artifact) {
// OseeEventManager.eventLog("IEM1: kickArtifactModifiedEvent - " + artifactModType + " - " + artifact.getGuid() + " - " + sender + " - " + artifact.getDirtySkynetAttributeChanges());
Runnable runnable = new Runnable() {
@Override
@@ -294,7 +329,7 @@ public class InternalEventManager {
}
// Kick LOCAL relation modified event; This event does NOT go external
- static void kickRelationModifiedEvent(final Sender sender, final RelationEventType relationEventType, final RelationLink link, final Branch branch, final String relationType) {
+ public void kickRelationModifiedEvent(final Sender sender, final RelationEventType relationEventType, final RelationLink link, final Branch branch, final String relationType) {
// OseeEventManager.eventLog("IEM1: kickRelationModifiedEvent - " + relationEventType + " - " + link + " - " + sender);
Runnable runnable = new Runnable() {
@Override
@@ -308,11 +343,11 @@ public class InternalEventManager {
}
// Kick LOCAL and REMOTE purged event depending on sender
- static void kickArtifactsPurgedEvent(final Sender sender, final LoadedArtifacts loadedArtifacts) {
- if (isDisableEvents()) {
+ public void kickArtifactsPurgedEvent(final Sender sender, final LoadedArtifacts loadedArtifacts) {
+ if (preferences.isDisableEvents()) {
return;
}
- OseeEventManager.eventLog("IEM1: kickArtifactsPurgedEvent " + sender + " - " + loadedArtifacts);
+ EventUtil.eventLog("IEM1: kickArtifactsPurgedEvent " + sender + " - " + loadedArtifacts);
Runnable runnable = new Runnable() {
@Override
public void run() {
@@ -322,7 +357,7 @@ public class InternalEventManager {
// Kick REMOTE (If source was Local and this was not a default branch changed event
try {
if (sender.isLocal()) {
- RemoteEventManager.kick(new NetworkArtifactPurgeEvent(
+ sendRemoteEvent(new NetworkArtifactPurgeEvent(
loadedArtifacts.getLoadedArtifacts().iterator().next().getBranch().getId(),
loadedArtifacts.getAllArtifactIds(), loadedArtifacts.getAllArtifactTypeIds(),
sender.getNetworkSender()));
@@ -336,11 +371,11 @@ public class InternalEventManager {
}
// Kick LOCAL and REMOTE artifact change type depending on sender
- static void kickArtifactsChangeTypeEvent(final Sender sender, final int toArtifactTypeId, final LoadedArtifacts loadedArtifacts) {
- if (isDisableEvents()) {
+ public void kickArtifactsChangeTypeEvent(final Sender sender, final int toArtifactTypeId, final LoadedArtifacts loadedArtifacts) {
+ if (preferences.isDisableEvents()) {
return;
}
- OseeEventManager.eventLog("IEM1: kickArtifactsChangeTypeEvent " + sender + " - " + loadedArtifacts);
+ EventUtil.eventLog("IEM1: kickArtifactsChangeTypeEvent " + sender + " - " + loadedArtifacts);
Runnable runnable = new Runnable() {
@Override
public void run() {
@@ -350,7 +385,7 @@ public class InternalEventManager {
// Kick REMOTE (If source was Local and this was not a default branch changed event
try {
if (sender.isLocal()) {
- RemoteEventManager.kick(new NetworkArtifactChangeTypeEvent(
+ sendRemoteEvent(new NetworkArtifactChangeTypeEvent(
loadedArtifacts.getLoadedArtifacts().iterator().next().getBranch().getId(),
loadedArtifacts.getAllArtifactIds(), loadedArtifacts.getAllArtifactTypeIds(), toArtifactTypeId,
sender.getNetworkSender()));
@@ -364,12 +399,12 @@ public class InternalEventManager {
}
// Kick LOCAL and remote transaction deleted event
- static void kickTransactionsPurgedEvent(final Sender sender, final int[] transactionIds) {
+ public void kickTransactionsPurgedEvent(final Sender sender, final int[] transactionIds) {
//TODO This needs to be converted into the individual artifacts and relations that were deleted/modified
- if (isDisableEvents()) {
+ if (preferences.isDisableEvents()) {
return;
}
- OseeEventManager.eventLog("IEM1: kickTransactionsDeletedEvent " + sender + " - " + transactionIds.length);
+ EventUtil.eventLog("IEM1: kickTransactionsDeletedEvent " + sender + " - " + transactionIds.length);
Runnable runnable = new Runnable() {
@Override
public void run() {
@@ -379,7 +414,7 @@ public class InternalEventManager {
// Kick REMOTE (If source was Local and this was not a default branch changed event
try {
if (sender.isLocal()) {
- RemoteEventManager.kick(new NetworkTransactionDeletedEvent(sender.getNetworkSender(), transactionIds));
+ sendRemoteEvent(new NetworkTransactionDeletedEvent(sender.getNetworkSender(), transactionIds));
}
} catch (Exception ex) {
OseeLog.log(Activator.class, Level.SEVERE, ex);
@@ -390,11 +425,11 @@ public class InternalEventManager {
}
// Kick LOCAL and REMOTE ArtifactEvent
- static void kickPersistEvent(final Sender sender, Collection<ArtifactTransactionModifiedEvent> xModifiedEvents) {
- if (isDisableEvents()) {
+ public void kickPersistEvent(final Sender sender, Collection<ArtifactTransactionModifiedEvent> xModifiedEvents) {
+ if (preferences.isDisableEvents()) {
return;
}
- OseeEventManager.eventLog("IEM1: kickPersistEvent #ModEvents: " + xModifiedEvents.size() + " - " + sender);
+ EventUtil.eventLog("IEM1: kickPersistEvent #ModEvents: " + xModifiedEvents.size() + " - " + sender);
final Collection<ArtifactTransactionModifiedEvent> xModifiedEventsCopy =
new ArrayList<ArtifactTransactionModifiedEvent>();
xModifiedEventsCopy.addAll(xModifiedEvents);
@@ -405,15 +440,15 @@ public class InternalEventManager {
FrameworkTransactionData transData = createTransactionDataRollup(xModifiedEventsCopy);
try {
// Log if this is a loopback and what is happening
- if (enableRemoteEventLoopback) {
+ if (preferences.isEnableRemoteEventLoopback()) {
OseeLog.log(
- InternalEventManager.class,
+ LegacyEventManager.class,
Level.WARNING,
"IEM1: ArtifactEvent Loopback enabled" + (sender.isLocal() ? " - Ignoring Local Kick" : " - Kicking Local from Loopback"));
}
// Kick LOCAL
- if (!enableRemoteEventLoopback || enableRemoteEventLoopback && sender.isRemote()) {
+ if (!preferences.isEnableRemoteEventLoopback() || preferences.isEnableRemoteEventLoopback() && sender.isRemote()) {
safelyInvokeListeners(IFrameworkTransactionEventListener.class, "handleFrameworkTransactionEvent",
sender, transData);
}
@@ -421,7 +456,7 @@ public class InternalEventManager {
// Kick REMOTE (If source was Local and this was not a default branch changed event
if (sender.isLocal()) {
List<ISkynetEvent> events = generateNetworkSkynetEvents(sender, xModifiedEventsCopy);
- RemoteEventManager.kick(events);
+ sendRemoteEvent(events);
}
} catch (Exception ex) {
OseeLog.log(Activator.class, Level.SEVERE, ex);
@@ -432,25 +467,25 @@ public class InternalEventManager {
}
// Kick LOCAL ArtifactReloadEvent
- static void kickArtifactReloadEvent(final Sender sender, final Collection<? extends Artifact> artifacts) {
- if (isDisableEvents()) {
+ public void kickArtifactReloadEvent(final Sender sender, final Collection<? extends Artifact> artifacts) {
+ if (preferences.isDisableEvents()) {
return;
}
- OseeEventManager.eventLog("IEM1: kickArtifactReloadEvent #Reloads: " + artifacts.size() + " - " + sender);
+ EventUtil.eventLog("IEM1: kickArtifactReloadEvent #Reloads: " + artifacts.size() + " - " + sender);
Runnable runnable = new Runnable() {
@Override
public void run() {
try {
// Log if this is a loopback and what is happening
- if (enableRemoteEventLoopback) {
+ if (preferences.isEnableRemoteEventLoopback()) {
OseeLog.log(
- InternalEventManager.class,
+ LegacyEventManager.class,
Level.WARNING,
"IEM1: kickArtifactReloadEvent Loopback enabled" + (sender.isLocal() ? " - Ignoring Local Kick" : " - Kicking Local from Loopback"));
}
// Kick LOCAL
- if (!enableRemoteEventLoopback) {
+ if (!preferences.isEnableRemoteEventLoopback()) {
safelyInvokeListeners(IArtifactReloadEventListener.class, "handleReloadEvent", sender, artifacts);
}
} catch (Exception ex) {
@@ -461,72 +496,7 @@ public class InternalEventManager {
execute(runnable);
}
- /**
- * Add a priority listener. This should only be done for caches where they need to be updated before all other
- * listeners are called.
- */
- static void addPriorityListener(IEventListener listener) {
- if (listener == null) {
- throw new IllegalArgumentException("listener can not be null");
- }
- if (!priorityListeners.contains(listener)) {
- priorityListeners.add(listener);
- }
- OseeEventManager.eventLog("IEM1: addPriorityListener (" + priorityListeners.size() + ") " + listener);
- }
-
- static void addListener(IEventListener listener) {
- if (listener == null) {
- throw new IllegalArgumentException("listener can not be null");
- }
- if (!listeners.contains(listener)) {
- listeners.add(listener);
- }
- OseeEventManager.eventLog("IEM1: addListener (" + listeners.size() + ") " + listener);
- }
-
- static void removeListeners(IEventListener listener) {
- OseeEventManager.eventLog("IEM1: removeListener: (" + listeners.size() + ") " + listener);
- listeners.remove(listener);
- priorityListeners.remove(listener);
- }
-
- // This method clears all listeners. Should only be used for testing purposes.
- public static void removeAllListeners() {
- listeners.clear();
- priorityListeners.clear();
- }
-
- public static String getObjectSafeName(Object object) {
- try {
- return object.toString();
- } catch (Exception ex) {
- return object.getClass().getSimpleName() + " - exception on toString: " + ex.getLocalizedMessage();
- }
- }
-
- static boolean isDisableEvents() {
- return disableEvents;
- }
-
- static void setDisableEvents(boolean disableEvents) {
- InternalEventManager.disableEvents = disableEvents;
- }
-
- static String getListenerReport() {
- List<String> listenerStrs = new ArrayList<String>();
- for (IEventListener listener : priorityListeners) {
- listenerStrs.add("Priority: " + getObjectSafeName(listener));
- }
- for (IEventListener listener : listeners) {
- listenerStrs.add(getObjectSafeName(listener));
- }
- String[] listArr = listenerStrs.toArray(new String[listenerStrs.size()]);
- Arrays.sort(listArr);
- return org.eclipse.osee.framework.jdk.core.util.Collections.toString("\n", (Object[]) listArr);
- }
-
- private static List<ISkynetEvent> generateNetworkSkynetEvents(Sender sender, Collection<ArtifactTransactionModifiedEvent> xModifiedEvents) {
+ private List<ISkynetEvent> generateNetworkSkynetEvents(Sender sender, Collection<ArtifactTransactionModifiedEvent> xModifiedEvents) {
List<ISkynetEvent> events = new ArrayList<ISkynetEvent>();
for (ArtifactTransactionModifiedEvent xModifiedEvent : xModifiedEvents) {
events.add(generateNetworkSkynetEvent(xModifiedEvent, sender));
@@ -534,7 +504,7 @@ public class InternalEventManager {
return events;
}
- private static ISkynetEvent generateNetworkSkynetEvent(ArtifactTransactionModifiedEvent xModifiedEvent, Sender sender) {
+ private ISkynetEvent generateNetworkSkynetEvent(ArtifactTransactionModifiedEvent xModifiedEvent, Sender sender) {
ISkynetEvent ret = null;
if (xModifiedEvent instanceof ArtifactModifiedEvent) {
ret = generateNetworkSkynetArtifactEvent((ArtifactModifiedEvent) xModifiedEvent, sender);
@@ -544,7 +514,7 @@ public class InternalEventManager {
return ret;
}
- private static ISkynetEvent generateNetworkSkynetArtifactEvent(ArtifactModifiedEvent artEvent, Sender sender) {
+ private ISkynetEvent generateNetworkSkynetArtifactEvent(ArtifactModifiedEvent artEvent, Sender sender) {
SkynetArtifactEventBase eventBase = getArtifactEventBase(artEvent, sender);
ISkynetEvent ret;
if (artEvent.artifactModType == ArtifactModType.Changed) {
@@ -554,13 +524,13 @@ public class InternalEventManager {
} else if (artEvent.artifactModType == ArtifactModType.Deleted) {
ret = new NetworkArtifactDeletedEvent(eventBase);
} else {
- OseeLog.log(InternalEventManager.class, Level.SEVERE, "Unhandled xArtifactModifiedEvent event: " + artEvent);
+ OseeLog.log(LegacyEventManager.class, Level.SEVERE, "Unhandled xArtifactModifiedEvent event: " + artEvent);
ret = null;
}
return ret;
}
- private static SkynetArtifactEventBase getArtifactEventBase(ArtifactModifiedEvent artEvent, Sender sender) {
+ private SkynetArtifactEventBase getArtifactEventBase(ArtifactModifiedEvent artEvent, Sender sender) {
Artifact artifact = artEvent.artifact;
SkynetArtifactEventBase eventBase =
new SkynetArtifactEventBase(artifact.getBranch().getId(), artEvent.transactionNumber, artifact.getArtId(),
@@ -585,7 +555,7 @@ public class InternalEventManager {
} else if (relEvent.relationEventType == RelationEventType.Added) {
networkEvent = new NetworkRelationLinkCreatedEvent(eventBase, rationale, descriptorName);
} else {
- OseeLog.log(InternalEventManager.class, Level.SEVERE, "Unhandled xRelationModifiedEvent event: " + relEvent);
+ OseeLog.log(LegacyEventManager.class, Level.SEVERE, "Unhandled xRelationModifiedEvent event: " + relEvent);
networkEvent = null;
}
return networkEvent;
@@ -759,7 +729,7 @@ public class InternalEventManager {
return transData;
}
- public static void safelyInvokeListeners(Class<? extends IEventListener> c, String methodName, Object... args) {
+ public void safelyInvokeListeners(Class<? extends IEventListener> c, String methodName, Object... args) {
for (IEventListener listener : priorityListeners) {
try {
if (c.isInstance(listener)) {
@@ -788,11 +758,48 @@ public class InternalEventManager {
}
}
- public static boolean isEnableRemoteEventLoopback() {
- return enableRemoteEventLoopback;
+ public void sendRemoteEvent(Collection<ISkynetEvent> events) {
+ sendRemoteEvent(events.toArray(new ISkynetEvent[events.size()]));
}
- public static void setEnableRemoteEventLoopback(boolean enableRemoteEventLoopback) {
- InternalEventManager.enableRemoteEventLoopback = enableRemoteEventLoopback;
+ private void sendRemoteEvent(final ISkynetEvent... events) {
+ if (preferences.isOldEvents() && isConnected()) {
+ Job job = new Job("Send Event") {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ serviceLookup.kick(events, serviceLookup.getClientEventListenerRemoteReference());
+ return Status.OK_STATUS;
+ }
+ };
+
+ job.schedule();
+ }
+ /*
+ * This will enable a testing loopback that will take the kicked remote events and loop them back as if they came
+ * from an external client. It will allow for the testing of the OEM -> REM -> OEM processing. In addition, this
+ * onEvent is put in a non-display thread which will test that all handling by applications is properly handled by
+ * doing all processing and then kicking off display-thread when need to update ui. SessionId needs to be modified
+ * so this client doesn't think the events came from itself.
+ */
+ if (preferences.isEnableRemoteEventLoopback()) {
+ EventUtil.eventLog("REM: Loopback enabled - Returning events as Remote event.");
+ Thread thread = new Thread() {
+ @Override
+ public void run() {
+ try {
+ String newSessionId = GUID.create();
+ for (ISkynetEvent event : events) {
+ event.getNetworkSender().sessionId = newSessionId;
+ }
+ remoteEventReceiver.onEvent(events);
+ } catch (RemoteException ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+
+ }
+ }
+ };
+ thread.start();
+ }
}
+
}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/LegacyRemoteEventReceiver.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/LegacyRemoteEventReceiver.java
new file mode 100644
index 00000000000..fef0f35c4bf
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/LegacyRemoteEventReceiver.java
@@ -0,0 +1,476 @@
+/*******************************************************************************
+ * 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.skynet.core.event.systems;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.logging.Level;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.ISchedulingRule;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.osee.framework.core.enums.BranchState;
+import org.eclipse.osee.framework.core.enums.ModificationType;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.core.model.cache.BranchCache;
+import org.eclipse.osee.framework.core.model.type.RelationType;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.messaging.event.skynet.ASkynetEventListener;
+import org.eclipse.osee.framework.messaging.event.skynet.ISkynetArtifactEvent;
+import org.eclipse.osee.framework.messaging.event.skynet.ISkynetEvent;
+import org.eclipse.osee.framework.messaging.event.skynet.ISkynetRelationLinkEvent;
+import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkAccessControlArtifactsEvent;
+import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkArtifactChangeTypeEvent;
+import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkArtifactDeletedEvent;
+import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkArtifactModifiedEvent;
+import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkArtifactPurgeEvent;
+import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkBroadcastEvent;
+import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkCommitBranchEvent;
+import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkDeletedBranchEvent;
+import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkNewBranchEvent;
+import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkPurgeBranchEvent;
+import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkRelationLinkCreatedEvent;
+import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkRelationLinkDeletedEvent;
+import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkRelationLinkRationalModifiedEvent;
+import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkRenameBranchEvent;
+import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkTransactionDeletedEvent;
+import org.eclipse.osee.framework.messaging.event.skynet.event.SkynetAttributeChange;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactCache;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactModType;
+import org.eclipse.osee.framework.skynet.core.artifact.Attribute;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery;
+import org.eclipse.osee.framework.skynet.core.attribute.AttributeTypeManager;
+import org.eclipse.osee.framework.skynet.core.event.AccessControlEventType;
+import org.eclipse.osee.framework.skynet.core.event.ArtifactTransactionModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.event.BranchEventType;
+import org.eclipse.osee.framework.skynet.core.event.BroadcastEventType;
+import org.eclipse.osee.framework.skynet.core.event.EventUtil;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
+import org.eclipse.osee.framework.skynet.core.event.Sender;
+import org.eclipse.osee.framework.skynet.core.event2.AccessControlEvent;
+import org.eclipse.osee.framework.skynet.core.internal.Activator;
+import org.eclipse.osee.framework.skynet.core.relation.RelationEventType;
+import org.eclipse.osee.framework.skynet.core.relation.RelationLink;
+import org.eclipse.osee.framework.skynet.core.relation.RelationManager;
+import org.eclipse.osee.framework.skynet.core.relation.RelationTypeManager;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager;
+import org.eclipse.osee.framework.skynet.core.utility.LoadedArtifacts;
+import org.eclipse.osee.framework.ui.plugin.event.UnloadedArtifact;
+import org.eclipse.osee.framework.ui.plugin.event.UnloadedRelation;
+
+/**
+ * @author Donald G. Dunne
+ */
+public final class LegacyRemoteEventReceiver extends ASkynetEventListener {
+ private static final long serialVersionUID = -3017349745450262540L;
+
+ private static final ISchedulingRule mutexRule = new ISchedulingRule() {
+
+ @Override
+ public boolean contains(ISchedulingRule rule) {
+ return rule == this;
+ }
+
+ @Override
+ public boolean isConflicting(ISchedulingRule rule) {
+ return rule == this;
+ }
+ };
+
+ private LegacyEventManager legacyEventManager;
+
+ public LegacyRemoteEventReceiver() {
+ super();
+ }
+
+ public void setInternalEventManager(LegacyEventManager legacyEventManager) {
+ this.legacyEventManager = legacyEventManager;
+ }
+
+ @Override
+ public void onEvent(final ISkynetEvent[] events) {
+ final List<ArtifactTransactionModifiedEvent> xModifiedEvents = new LinkedList<ArtifactTransactionModifiedEvent>();
+ Job job = new Job("Receive Event") {
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ Sender lastArtifactRelationModChangeSender = null;
+
+ for (ISkynetEvent event : events) {
+
+ Sender sender = new Sender(event.getNetworkSender());
+ // If the sender's sessionId is the same as this client, then this event was
+ // created in this client and returned by remote event manager; ignore and continue
+ if (sender.isLocal()) {
+ continue;
+ }
+
+ if (event instanceof NetworkAccessControlArtifactsEvent) {
+ try {
+ AccessControlEvent accessControlEvent = new AccessControlEvent();
+ AccessControlEventType accessControlModType =
+ AccessControlEventType.valueOf(((NetworkAccessControlArtifactsEvent) event).getAccessControlModTypeName());
+ accessControlEvent.setEventType(accessControlModType);
+ NetworkAccessControlArtifactsEvent accessEvent = (NetworkAccessControlArtifactsEvent) event;
+ Integer[] artIds =
+ accessEvent.getArtifactIds().toArray(new Integer[accessEvent.getArtifactIds().size()]);
+ Branch branch = BranchManager.getBranch(accessEvent.getId());
+ for (int x = 0; x < accessEvent.getArtifactIds().size(); x++) {
+ Artifact cachedArt = ArtifactQuery.getArtifactFromId(artIds[x], branch);
+ if (cachedArt != null) {
+ accessControlEvent.getArtifacts().add(cachedArt.getBasicGuidArtifact());
+ }
+ }
+ LoadedArtifacts loadedArtifacts =
+ new LoadedArtifacts(accessEvent.getId(), accessEvent.getArtifactIds(),
+ accessEvent.getArtifactTypeIds());
+ OseeEventManager.kickAccessControlArtifactsEvent(sender, accessControlEvent, loadedArtifacts);
+ } catch (Exception ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ } else if (event instanceof NetworkRenameBranchEvent) {
+ int branchId = ((NetworkRenameBranchEvent) event).getId();
+ try {
+ Branch branch = BranchManager.getBranch(branchId);
+ branch.setName(((NetworkRenameBranchEvent) event).getBranchName());
+ branch.clearDirty();
+ try {
+ legacyEventManager.kickBranchEvent(sender, BranchEventType.Renamed, branchId);
+ } catch (Exception ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ } catch (Exception ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ } else if (event instanceof NetworkNewBranchEvent) {
+ int branchId = ((NetworkNewBranchEvent) event).getId();
+ try {
+ legacyEventManager.kickBranchEvent(sender, BranchEventType.Added, branchId);
+ } catch (Exception ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ } else if (event instanceof NetworkDeletedBranchEvent) {
+ int branchId = ((NetworkDeletedBranchEvent) event).getId();
+ try {
+ Branch branch =
+ Activator.getInstance().getOseeCacheService().getBranchCache().getById(branchId);
+ if (branch != null) {
+ branch.setBranchState(BranchState.DELETED);
+ branch.clearDirty();
+ }
+ legacyEventManager.kickBranchEvent(sender, BranchEventType.Deleted, branchId);
+ } catch (Exception ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ } else if (event instanceof NetworkPurgeBranchEvent) {
+ int branchId = ((NetworkPurgeBranchEvent) event).getId();
+ try {
+ BranchCache cache = Activator.getInstance().getOseeCacheService().getBranchCache();
+ Branch branch = cache.getById(branchId);
+ if (branch != null) {
+ cache.decache(branch);
+ }
+ legacyEventManager.kickBranchEvent(sender, BranchEventType.Purged, branchId);
+ } catch (Exception ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ } else if (event instanceof NetworkCommitBranchEvent) {
+ int branchId = ((NetworkCommitBranchEvent) event).getId();
+ try {
+ try {
+ TransactionManager.clearCommitArtifactCacheForAssociatedArtifact(BranchManager.getAssociatedArtifact(BranchManager.getBranch(branchId)));
+ } catch (OseeCoreException ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ legacyEventManager.kickBranchEvent(sender, BranchEventType.Committed, branchId);
+ } catch (Exception ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ } else if (event instanceof NetworkBroadcastEvent) {
+ try {
+ final BroadcastEventType broadcastEventType =
+ BroadcastEventType.valueOf(((NetworkBroadcastEvent) event).getBroadcastEventTypeName());
+ if (broadcastEventType == null) {
+ OseeLog.log(
+ Activator.class,
+ Level.SEVERE,
+ "Unknown broadcast event type \"" + ((NetworkBroadcastEvent) event).getBroadcastEventTypeName() + "\"",
+ new IllegalArgumentException());
+ } else {
+ legacyEventManager.kickBroadcastEvent(sender, broadcastEventType,
+ ((NetworkBroadcastEvent) event).getUserIds(),
+ ((NetworkBroadcastEvent) event).getMessage());
+ }
+ } catch (Exception ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ } else if (event instanceof ISkynetArtifactEvent) {
+ try {
+ updateArtifacts(sender, (ISkynetArtifactEvent) event, xModifiedEvents);
+ lastArtifactRelationModChangeSender = sender;
+ } catch (Exception ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ } else if (event instanceof ISkynetRelationLinkEvent) {
+ try {
+ updateRelations(sender, (ISkynetRelationLinkEvent) event, xModifiedEvents);
+ lastArtifactRelationModChangeSender = sender;
+ } catch (Exception ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ } else if (event instanceof NetworkArtifactChangeTypeEvent) {
+ try {
+ LoadedArtifacts loadedArtifacts =
+ new LoadedArtifacts(((NetworkArtifactChangeTypeEvent) event).getId(),
+ ((NetworkArtifactChangeTypeEvent) event).getArtifactIds(),
+ ((NetworkArtifactChangeTypeEvent) event).getArtifactTypeIds());
+ legacyEventManager.kickArtifactsChangeTypeEvent(sender,
+ ((NetworkArtifactChangeTypeEvent) event).getToArtifactTypeId(), loadedArtifacts);
+ } catch (Exception ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ } else if (event instanceof NetworkArtifactPurgeEvent) {
+ try {
+ LoadedArtifacts loadedArtifacts =
+ new LoadedArtifacts(((NetworkArtifactPurgeEvent) event).getId(),
+ ((NetworkArtifactPurgeEvent) event).getArtifactIds(),
+ ((NetworkArtifactPurgeEvent) event).getArtifactTypeIds());
+ for (Artifact artifact : loadedArtifacts.getLoadedArtifacts()) {
+ //This is because applications may still have a reference to the artifact
+ for (RelationLink link : RelationManager.getRelationsAll(artifact.getArtId(),
+ artifact.getBranch().getId(), false)) {
+ link.internalRemoteEventDelete();
+ }
+ ArtifactCache.deCache(artifact);
+ artifact.internalSetDeleted();
+ }
+ legacyEventManager.kickArtifactsPurgedEvent(sender, loadedArtifacts);
+ } catch (Exception ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ } else if (event instanceof NetworkTransactionDeletedEvent) {
+ try {
+ legacyEventManager.kickTransactionsPurgedEvent(sender,
+ ((NetworkTransactionDeletedEvent) event).getTransactionIds());
+ } catch (Exception ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ }
+ }
+
+ if (xModifiedEvents.size() > 0) {
+ /*
+ * Since transaction events are a collection of ArtifactModfied and RelationModified events, create a
+ * new Sender based on the last sender for these events.
+ */
+ Sender transactionSender =
+ new Sender("RemoteEventManager", lastArtifactRelationModChangeSender.getOseeSession());
+ legacyEventManager.kickPersistEvent(transactionSender, xModifiedEvents);
+ }
+ } catch (Exception ex) {
+ // don't want exceptions poping up; just log and return nicely
+ OseeLog.log(Activator.class, Level.SEVERE, "REM Receive Event Exception", ex);
+ }
+ return Status.OK_STATUS;
+ }
+
+ };
+ job.setSystem(true);
+ job.setUser(false);
+ job.setRule(mutexRule);
+ job.schedule();
+ }
+
+ /**
+ * Updates local cache
+ *
+ * @param event
+ */
+ private void updateArtifacts(Sender sender, ISkynetArtifactEvent event, Collection<ArtifactTransactionModifiedEvent> xModifiedEvents) {
+ if (event == null) {
+ return;
+ }
+
+ try {
+ int artId = event.getArtId();
+ int artTypeId = event.getArtTypeId();
+ List<String> dirtyAttributeName = new LinkedList<String>();
+
+ if (event instanceof NetworkArtifactModifiedEvent) {
+ int branchId = ((NetworkArtifactModifiedEvent) event).getId();
+ Artifact artifact = ArtifactCache.getActive(artId, branchId);
+ if (artifact == null) {
+ UnloadedArtifact unloadedArtifact = new UnloadedArtifact(branchId, artId, artTypeId);
+ xModifiedEvents.add(new ArtifactModifiedEvent(sender, ArtifactModType.Changed, unloadedArtifact));
+ } else if (!artifact.isHistorical()) {
+ for (SkynetAttributeChange skynetAttributeChange : ((NetworkArtifactModifiedEvent) event).getAttributeChanges()) {
+ if (!OseeEventManager.getPreferences().isEnableRemoteEventLoopback()) {
+ try {
+ Attribute<?> attribute =
+ artifact.getAttributeById(skynetAttributeChange.getAttributeId(), true);
+ // Attribute already exists (but may be deleted), process update
+ // Process MODIFIED / DELETED attribute
+ if (attribute != null) {
+ if (attribute.isDirty()) {
+ dirtyAttributeName.add(attribute.getNameValueDescription());
+ EventUtil.eventLog(String.format("%s's attribute %d [/n%s/n] has been overwritten.",
+ artifact.getSafeName(), attribute.getId(), attribute.toString()));
+ }
+ try {
+ ModificationType modificationType = skynetAttributeChange.getModificationType();
+ if (modificationType == null) {
+ OseeLog.log(
+ Activator.class,
+ Level.SEVERE,
+ String.format("MOD1: Can't get mod type for %s's attribute %d.",
+ artifact.getArtifactTypeName(), skynetAttributeChange.getAttributeId()));
+ continue;
+ }
+ if (modificationType.isDeleted()) {
+ attribute.internalSetModificationType(modificationType);
+ } else {
+ attribute.getAttributeDataProvider().loadData(skynetAttributeChange.getData());
+ }
+ attribute.internalSetGammaId(skynetAttributeChange.getGammaId());
+ attribute.setNotDirty();
+ } catch (OseeCoreException ex) {
+ EventUtil.eventLog(String.format("Exception updating %s's attribute %d [/n%s/n].",
+ artifact.getSafeName(), attribute.getId(), attribute.toString()), ex);
+ }
+ }
+ // Otherwise, attribute needs creation
+ // Process NEW attribute
+ else {
+ ModificationType modificationType = skynetAttributeChange.getModificationType();
+ if (modificationType == null) {
+ OseeLog.log(
+ Activator.class,
+ Level.SEVERE,
+ String.format("MOD2: Can't get mod type for %s's attribute %d.",
+ artifact.getArtifactTypeName(), skynetAttributeChange.getAttributeId()));
+ continue;
+ }
+ artifact.internalInitializeAttribute(
+ AttributeTypeManager.getType(skynetAttributeChange.getTypeId()),
+ skynetAttributeChange.getAttributeId(), skynetAttributeChange.getGammaId(),
+ modificationType, false, skynetAttributeChange.getData());
+ }
+ } catch (OseeCoreException ex) {
+ EventUtil.eventLog(
+ String.format("Exception updating %s's attribute change for attributeTypeId %d.",
+ artifact.getSafeName(), skynetAttributeChange.getTypeId()), ex);
+ }
+ }
+ }
+
+ xModifiedEvents.add(new ArtifactModifiedEvent(sender, ArtifactModType.Changed, artifact,
+ ((NetworkArtifactModifiedEvent) event).getTransactionId(),
+ ((NetworkArtifactModifiedEvent) event).getAttributeChanges()));
+
+ }
+ } else if (event instanceof NetworkArtifactDeletedEvent) {
+ int branchId = ((NetworkArtifactDeletedEvent) event).getId();
+ Artifact artifact = ArtifactCache.getActive(artId, branchId);
+ if (artifact == null) {
+ UnloadedArtifact unloadedArtifact = new UnloadedArtifact(branchId, artId, artTypeId);
+ xModifiedEvents.add(new ArtifactModifiedEvent(sender, ArtifactModType.Deleted, unloadedArtifact));
+ } else if (!artifact.isHistorical()) {
+ internalHandleRemoteArtifactDeleted(artifact);
+
+ xModifiedEvents.add(new ArtifactModifiedEvent(sender, ArtifactModType.Deleted, artifact,
+ ((NetworkArtifactDeletedEvent) event).getTransactionId(), new ArrayList<SkynetAttributeChange>()));
+ }
+ }
+ } catch (OseeCoreException ex) {
+ EventUtil.eventLog("Update Artifacts", ex);
+ }
+ }
+
+ private void updateRelations(Sender sender, ISkynetRelationLinkEvent event, Collection<ArtifactTransactionModifiedEvent> xModifiedEvents) {
+ if (event == null) {
+ return;
+ }
+
+ try {
+ RelationType relationType = RelationTypeManager.getType(event.getRelTypeId());
+ Branch branch = BranchManager.getBranch(event.getId());
+ Artifact aArtifact = ArtifactCache.getActive(event.getArtAId(), branch.getId());
+ Artifact bArtifact = ArtifactCache.getActive(event.getArtBId(), branch.getId());
+ boolean aArtifactLoaded = aArtifact != null;
+ boolean bArtifactLoaded = bArtifact != null;
+
+ if (!aArtifactLoaded && !bArtifactLoaded) {
+ if (event instanceof NetworkRelationLinkDeletedEvent) {
+ UnloadedRelation unloadedRelation =
+ new UnloadedRelation(branch.getId(), event.getArtAId(), event.getArtATypeId(), event.getArtBId(),
+ event.getArtBTypeId(), event.getRelTypeId());
+ xModifiedEvents.add(new RelationModifiedEvent(sender, RelationEventType.Deleted, unloadedRelation));
+ } else if (event instanceof NetworkRelationLinkRationalModifiedEvent) {
+ UnloadedRelation unloadedRelation =
+ new UnloadedRelation(branch.getId(), event.getArtAId(), event.getArtATypeId(), event.getArtBId(),
+ event.getArtBTypeId(), event.getRelTypeId());
+ xModifiedEvents.add(new RelationModifiedEvent(sender, RelationEventType.ModifiedRationale,
+ unloadedRelation));
+ } else if (event instanceof NetworkRelationLinkCreatedEvent) {
+ UnloadedRelation unloadedRelation =
+ new UnloadedRelation(branch.getId(), event.getArtAId(), event.getArtATypeId(), event.getArtBId(),
+ event.getArtBTypeId(), event.getRelTypeId());
+ xModifiedEvents.add(new RelationModifiedEvent(sender, RelationEventType.Added, unloadedRelation));
+ }
+ }
+ if (aArtifactLoaded || bArtifactLoaded) {
+ if (event instanceof NetworkRelationLinkDeletedEvent) {
+ RelationLink relation =
+ RelationManager.getLoadedRelationById(event.getRelId(), event.getArtAId(), event.getArtBId(), branch,
+ branch);
+ if (relation != null) {
+ relation.internalRemoteEventDelete();
+
+ xModifiedEvents.add(new RelationModifiedEvent(sender, RelationEventType.Deleted, relation,
+ relation.getBranch(), relation.getRelationType().getName()));
+ }
+ } else if (event instanceof NetworkRelationLinkCreatedEvent) {
+ RelationLink relation =
+ RelationManager.getLoadedRelationById(event.getRelId(), event.getArtAId(), event.getArtBId(), branch,
+ branch);
+
+ if (relation == null || relation.getModificationType() == ModificationType.DELETED) {
+ relation =
+ RelationLink.getOrCreate(event.getArtAId(), event.getArtBId(), branch, branch, relationType,
+ event.getRelId(), event.getGammaId(), ((NetworkRelationLinkCreatedEvent) event).getRationale(),
+ ModificationType.NEW);
+
+ xModifiedEvents.add(new RelationModifiedEvent(sender, RelationEventType.Added, relation,
+ relation.getBranch(), relation.getRelationType().getName()));
+ }
+ }
+ }
+ } catch (OseeCoreException ex) {
+ EventUtil.eventLog("Update Relations", ex);
+ }
+ }
+
+ private void internalHandleRemoteArtifactDeleted(Artifact artifact) throws OseeCoreException {
+ if (artifact == null) {
+ return;
+ } else {
+ artifact.internalSetDeletedFromRemoteEvent();
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/RelationModifiedEvent.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/RelationModifiedEvent.java
index 7408d6e8282..672d337113b 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/RelationModifiedEvent.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/RelationModifiedEvent.java
@@ -8,10 +8,12 @@
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
-package org.eclipse.osee.framework.skynet.core.event;
+package org.eclipse.osee.framework.skynet.core.event.systems;
import java.util.Set;
import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.skynet.core.event.ArtifactTransactionModifiedEvent;
+import org.eclipse.osee.framework.skynet.core.event.Sender;
import org.eclipse.osee.framework.skynet.core.event2.artifact.EventBasicGuidArtifact;
import org.eclipse.osee.framework.skynet.core.relation.RelationEventType;
import org.eclipse.osee.framework.skynet.core.relation.RelationLink;
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/ResMessagingConnectionListener.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/ResMessagingConnectionListener.java
new file mode 100644
index 00000000000..ac504ede2a6
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/ResMessagingConnectionListener.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * 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.skynet.core.event.systems;
+
+import java.util.logging.Level;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+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.skynet.core.event.EventSystemPreferences;
+import org.eclipse.osee.framework.skynet.core.event.EventUtil;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
+import org.eclipse.osee.framework.skynet.core.event.RemoteEventServiceEventType;
+import org.eclipse.osee.framework.skynet.core.event.systems.InternalEventManager2.ConnectionStatus;
+import org.eclipse.osee.framework.skynet.core.internal.Activator;
+
+/**
+ * @author Donald G. Dunne
+ */
+public final class ResMessagingConnectionListener implements ConnectionListener, ConnectionStatus {
+
+ private final EventSystemPreferences preferences;
+ private boolean connectionStatus;
+
+ public ResMessagingConnectionListener(EventSystemPreferences preferences) {
+ this.preferences = preferences;
+ }
+
+ @Override
+ public void connected(ConnectionNode node) {
+ connectionStatus = preferences.isOseeEventBrokerValid();
+ try {
+ OseeEventManager.kickLocalRemEvent(this, RemoteEventServiceEventType.Rem2_Connected);
+ OseeLog.log(Activator.class, Level.INFO, "RES2 Connected");
+ } catch (OseeCoreException ex) {
+ EventUtil.eventLog("REM2: ResConnectionListener", ex);
+ }
+ }
+
+ @Override
+ public void notConnected(ConnectionNode node) {
+ connectionStatus = false;
+ try {
+ OseeEventManager.kickLocalRemEvent(this, RemoteEventServiceEventType.Rem2_DisConnected);
+ OseeLog.log(Activator.class, Level.INFO, "RES2 Dis-Connected");
+ } catch (OseeCoreException ex) {
+ EventUtil.eventLog("REM2: ResConnectionListener", ex);
+ }
+ }
+
+ @Override
+ public boolean isConnected() {
+ return connectionStatus;
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event2/ArtifactEvent.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event2/ArtifactEvent.java
index 9aef70cd029..232ebd8f03e 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event2/ArtifactEvent.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event2/ArtifactEvent.java
@@ -25,7 +25,6 @@ import org.eclipse.osee.framework.core.model.event.DefaultBasicGuidRelationReord
import org.eclipse.osee.framework.core.model.event.IBasicGuidArtifact;
import org.eclipse.osee.framework.jdk.core.util.Collections;
import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.messaging.event.res.Activator;
import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkSender;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.skynet.core.artifact.ArtifactCache;
@@ -36,6 +35,7 @@ import org.eclipse.osee.framework.skynet.core.event2.artifact.EventBasicGuidRela
import org.eclipse.osee.framework.skynet.core.event2.artifact.EventModType;
import org.eclipse.osee.framework.skynet.core.event2.filter.BranchGuidEventFilter;
import org.eclipse.osee.framework.skynet.core.event2.filter.IEventFilter;
+import org.eclipse.osee.framework.skynet.core.internal.Activator;
import org.eclipse.osee.framework.skynet.core.relation.RelationEventType;
public class ArtifactEvent extends FrameworkEvent {
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/httpRequests/ClientDashboardRequestHandler.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/httpRequests/ClientDashboardRequestHandler.java
index 3bd896bb5dc..4b81c73a004 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/httpRequests/ClientDashboardRequestHandler.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/httpRequests/ClientDashboardRequestHandler.java
@@ -33,7 +33,6 @@ import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.plugin.core.util.OseeData;
import org.eclipse.osee.framework.skynet.core.UserManager;
import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
-import org.eclipse.osee.framework.skynet.core.event.RemoteEventManager;
import org.eclipse.osee.framework.skynet.core.internal.Activator;
/**
@@ -94,10 +93,10 @@ public class ClientDashboardRequestHandler implements IHttpServerRequest {
for (IHealthStatus status : OseeLog.getStatus()) {
sb.append("\n" + status.getSourceName() + ": [" + status.getMessage() + "]");
}
- sb.append("\nRemote Event Service - Old Connected: [" + RemoteEventManager.isConnected() + "]");
- sb.append("\nRemote Event Service - Old Active: [" + OseeEventManager.isOldEvents() + "]");
- sb.append("\nRemote Event Service - New Connected: [" + RemoteEventManager.isConnected() + "]");
- sb.append("\nRemote Event Service - New Active: [" + OseeEventManager.isNewEvents() + "]");
+ sb.append("\nRemote Event Service - Old Connected: [" + OseeEventManager.isLegacyEventManagerConnected() + "]");
+ sb.append("\nRemote Event Service - Old Active: [" + OseeEventManager.getPreferences().isOldEvents() + "]");
+ sb.append("\nRemote Event Service - New Connected: [" + OseeEventManager.isEventManagerConnected() + "]");
+ sb.append("\nRemote Event Service - New Active: [" + OseeEventManager.getPreferences().isNewEvents() + "]");
return sb.toString();
}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/Activator.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/Activator.java
index daeeea35377..69653fa0fbe 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/Activator.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/Activator.java
@@ -11,73 +11,59 @@
package org.eclipse.osee.framework.skynet.core.internal;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import org.eclipse.core.runtime.Platform;
import org.eclipse.osee.framework.core.client.ClientSessionManager;
import org.eclipse.osee.framework.core.enums.OseeServiceTrackerId;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.model.TransactionRecordFactory;
import org.eclipse.osee.framework.core.services.IAccessControlService;
import org.eclipse.osee.framework.core.services.IOseeCachingService;
import org.eclipse.osee.framework.core.services.IOseeModelFactoryService;
-import org.eclipse.osee.framework.core.services.IOseeModelFactoryServiceProvider;
import org.eclipse.osee.framework.core.translation.IDataTranslationService;
-import org.eclipse.osee.framework.core.util.AbstractTrackingHandler;
import org.eclipse.osee.framework.core.util.ServiceDependencyTracker;
import org.eclipse.osee.framework.database.IOseeDatabaseService;
import org.eclipse.osee.framework.database.IOseeDatabaseServiceProvider;
import org.eclipse.osee.framework.lifecycle.ILifecycleService;
import org.eclipse.osee.framework.lifecycle.ILifecycleServiceProvider;
import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.plugin.core.IWorkbenchUserService;
-import org.eclipse.osee.framework.skynet.core.WorkbenchUserService;
-import org.eclipse.osee.framework.skynet.core.attribute.HttpAttributeTagger;
import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
-import org.eclipse.osee.framework.skynet.core.event.RemoteEventManager2;
-import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransactionAccessHandler;
-import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransactionCheckPoint;
-import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransactionHandler;
+import org.eclipse.osee.framework.skynet.core.event.systems.EventManagerData;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleException;
-import org.osgi.framework.ServiceRegistration;
import org.osgi.util.tracker.ServiceTracker;
/**
* @author Ryan D. Brooks
*/
-public class Activator implements BundleActivator, IOseeModelFactoryServiceProvider, IOseeDatabaseServiceProvider, ILifecycleServiceProvider {
+public class Activator implements BundleActivator, IOseeDatabaseServiceProvider, ILifecycleServiceProvider {
public static final String PLUGIN_ID = "org.eclipse.osee.framework.skynet.core";
private static Activator instance;
private final Map<OseeServiceTrackerId, ServiceTracker> mappedTrackers;
- private final List<ServiceRegistration> services;
- private BundleContext context;
- private ServiceDependencyTracker dependencyTracker;
+ private final Collection<ServiceDependencyTracker> trackers = new ArrayList<ServiceDependencyTracker>();
public Activator() {
this.mappedTrackers = new HashMap<OseeServiceTrackerId, ServiceTracker>();
- this.services = new ArrayList<ServiceRegistration>();
- }
-
- public Bundle getBundle() {
- return instance.context.getBundle();
}
@Override
public void start(BundleContext context) throws Exception {
instance = this;
- this.context = context;
- ClientSessionManager.class.getCanonicalName();
- HttpAttributeTagger.getInstance();
- IOseeCachingService cachingService = new ClientCachingServiceFactory().createService(this);
+ trackers.add(new ServiceDependencyTracker(context, new SkynetTransactionAccessServiceHandler()));
+ trackers.add(new ServiceDependencyTracker(context, new ClientCachingServiceRegHandler()));
+ trackers.add(new ServiceDependencyTracker(context, new ClientWorkbenchUserRegHandler()));
- createService(context, IOseeCachingService.class, cachingService);
- createService(context, IWorkbenchUserService.class, new WorkbenchUserService());
+ EventManagerData eventManagerData = new EventManagerData();
+ OseeEventManager.setEventManagerData(eventManagerData);
+ trackers.add(new ServiceDependencyTracker(context, new OseeEventSystemServiceRegHandler(eventManagerData)));
+
+ ClientSessionManager.class.getCanonicalName();
createServiceTracker(context, IOseeCachingService.class, OseeServiceTrackerId.OSEE_CACHING_SERVICE);
createServiceTracker(context, IDataTranslationService.class, OseeServiceTrackerId.TRANSLATION_SERVICE);
@@ -86,32 +72,21 @@ public class Activator implements BundleActivator, IOseeModelFactoryServiceProvi
createServiceTracker(context, ILifecycleService.class, OseeServiceTrackerId.LIFECYCLE_SERVER);
createServiceTracker(context, IAccessControlService.class, OseeServiceTrackerId.OSEE_ACCESS_CONTROL_SERVICE);
- dependencyTracker = new ServiceDependencyTracker(context, new TrackingHandler());
- dependencyTracker.open();
-
- RemoteEventManager2.getInstance().registerForRemoteEvents();
- if (!OseeEventManager.isNewEvents() && !OseeEventManager.isOldEvents()) {
- OseeLog.log(Activator.class, Level.SEVERE, "Neither Event System Enabled - This is a problem.");
+ for (ServiceDependencyTracker dependencyTracker : trackers) {
+ dependencyTracker.open();
}
}
@Override
public void stop(BundleContext context) throws Exception {
- HttpAttributeTagger.getInstance().deregisterFromEventManager();
- // RemoteEventManager.deregisterFromRemoteEventManager();
-
- if (dependencyTracker != null) {
+ for (ServiceDependencyTracker dependencyTracker : trackers) {
dependencyTracker.close();
}
-
- for (ServiceRegistration service : services) {
- service.unregister();
- }
+ trackers.clear();
for (ServiceTracker tracker : mappedTrackers.values()) {
tracker.close();
}
- services.clear();
mappedTrackers.clear();
instance = null;
@@ -129,13 +104,10 @@ public class Activator implements BundleActivator, IOseeModelFactoryServiceProvi
return getTracker(OseeServiceTrackerId.TRANSLATION_SERVICE, IDataTranslationService.class);
}
- @Override
- public IOseeModelFactoryService getOseeFactoryService() {
- return getTracker(OseeServiceTrackerId.OSEE_FACTORY_SERVICE, IOseeModelFactoryService.class);
- }
-
- private void createService(BundleContext context, Class<?> serviceInterface, Object serviceImplementation) {
- services.add(context.registerService(serviceInterface.getName(), serviceImplementation, null));
+ public TransactionRecordFactory getTransactionFactory() {
+ IOseeModelFactoryService service =
+ getTracker(OseeServiceTrackerId.OSEE_FACTORY_SERVICE, IOseeModelFactoryService.class);
+ return service != null ? service.getTransactionFactory() : null;
}
private void createServiceTracker(BundleContext context, Class<?> clazz, OseeServiceTrackerId trackerId) {
@@ -171,41 +143,4 @@ public class Activator implements BundleActivator, IOseeModelFactoryServiceProvi
}
return getTracker(OseeServiceTrackerId.OSEE_ACCESS_CONTROL_SERVICE, IAccessControlService.class);
}
-
- private static final class TrackingHandler extends AbstractTrackingHandler {
-
- private static final Class<?>[] DEPENDENCIES = new Class[] {ILifecycleService.class, IAccessControlService.class};
-
- private SkynetTransactionHandler handler;
- private ILifecycleService lifecycleService;
- private IAccessControlService accessService;
-
- @Override
- public Class<?>[] getDependencies() {
- return DEPENDENCIES;
- }
-
- @Override
- public void onActivate(BundleContext context, Map<Class<?>, Object> services) {
- lifecycleService = (ILifecycleService) services.get(ILifecycleService.class);
- accessService = (IAccessControlService) services.get(IAccessControlService.class);
- try {
- handler = new SkynetTransactionAccessHandler(accessService);
- lifecycleService.addHandler(SkynetTransactionCheckPoint.TYPE, handler);
- } catch (OseeCoreException ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- }
-
- @Override
- public void onDeActivate() {
- if (handler != null) {
- try {
- lifecycleService.removeHandler(SkynetTransactionCheckPoint.TYPE, handler);
- } catch (OseeCoreException ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- }
- }
- }
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/ClientCachingServiceFactory.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/ClientCachingServiceRegHandler.java
index 888a18d2901..d6cb9f296cf 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/ClientCachingServiceFactory.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/ClientCachingServiceRegHandler.java
@@ -10,7 +10,9 @@
*******************************************************************************/
package org.eclipse.osee.framework.skynet.core.internal;
+import java.util.Map;
import org.eclipse.osee.framework.core.model.OseeCachingService;
+import org.eclipse.osee.framework.core.model.TransactionRecordFactory;
import org.eclipse.osee.framework.core.model.cache.ArtifactTypeCache;
import org.eclipse.osee.framework.core.model.cache.AttributeTypeCache;
import org.eclipse.osee.framework.core.model.cache.BranchCache;
@@ -18,35 +20,68 @@ import org.eclipse.osee.framework.core.model.cache.OseeEnumTypeCache;
import org.eclipse.osee.framework.core.model.cache.RelationTypeCache;
import org.eclipse.osee.framework.core.model.cache.TransactionCache;
import org.eclipse.osee.framework.core.services.IOseeCachingService;
-import org.eclipse.osee.framework.core.services.IOseeModelFactoryServiceProvider;
+import org.eclipse.osee.framework.core.services.IOseeModelFactoryService;
+import org.eclipse.osee.framework.core.util.AbstractTrackingHandler;
import org.eclipse.osee.framework.skynet.core.internal.accessors.ClientArtifactTypeAccessor;
import org.eclipse.osee.framework.skynet.core.internal.accessors.ClientAttributeTypeAccessor;
import org.eclipse.osee.framework.skynet.core.internal.accessors.ClientBranchAccessor;
import org.eclipse.osee.framework.skynet.core.internal.accessors.ClientOseeEnumTypeAccessor;
import org.eclipse.osee.framework.skynet.core.internal.accessors.ClientRelationTypeAccessor;
import org.eclipse.osee.framework.skynet.core.internal.accessors.ClientTransactionAccessor;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
/**
* @author Roberto E. Escobar
*/
-public class ClientCachingServiceFactory {
+public class ClientCachingServiceRegHandler extends AbstractTrackingHandler {
- public IOseeCachingService createService(IOseeModelFactoryServiceProvider factoryProvider) {
+ private static final Class<?>[] DEPENDENCIES = new Class<?>[] {IOseeModelFactoryService.class};
+
+ private ServiceRegistration serviceRegistration;
+
+ @Override
+ public Class<?>[] getDependencies() {
+ return DEPENDENCIES;
+ }
+
+ @Override
+ public void onActivate(BundleContext context, Map<Class<?>, Object> services) {
+ IOseeModelFactoryService modelFactory = getService(IOseeModelFactoryService.class, services);
+ IOseeCachingService cachingService = createService(modelFactory);
+
+ serviceRegistration = context.registerService(IOseeCachingService.class.getName(), cachingService, null);
+ }
+
+ @Override
+ public void onDeActivate() {
+ if (serviceRegistration != null) {
+ serviceRegistration.unregister();
+ }
+ }
+
+ private IOseeCachingService createService(IOseeModelFactoryService factory) {
TransactionCache transactionCache = new TransactionCache();
- ClientBranchAccessor clientBranchAccessor = new ClientBranchAccessor(factoryProvider, transactionCache);
+ ClientBranchAccessor clientBranchAccessor =
+ new ClientBranchAccessor(factory.getBranchFactory(), transactionCache);
BranchCache branchCache = new BranchCache(clientBranchAccessor);
clientBranchAccessor.setBranchCache(branchCache);
- transactionCache.setAccessor(new ClientTransactionAccessor(factoryProvider, branchCache));
- OseeEnumTypeCache oseeEnumTypeCache = new OseeEnumTypeCache(new ClientOseeEnumTypeAccessor(factoryProvider));
+
+ TransactionRecordFactory txFactory = factory.getTransactionFactory();
+
+ transactionCache.setAccessor(new ClientTransactionAccessor(txFactory, branchCache));
+ OseeEnumTypeCache oseeEnumTypeCache =
+ new OseeEnumTypeCache(new ClientOseeEnumTypeAccessor(factory.getOseeEnumTypeFactory()));
AttributeTypeCache attributeTypeCache =
- new AttributeTypeCache(new ClientAttributeTypeAccessor(factoryProvider, oseeEnumTypeCache));
+ new AttributeTypeCache(new ClientAttributeTypeAccessor(factory.getAttributeTypeFactory(), oseeEnumTypeCache));
ArtifactTypeCache artifactTypeCache =
- new ArtifactTypeCache(new ClientArtifactTypeAccessor(factoryProvider, attributeTypeCache, branchCache));
+ new ArtifactTypeCache(new ClientArtifactTypeAccessor(factory.getArtifactTypeFactory(), attributeTypeCache,
+ branchCache));
RelationTypeCache relationTypeCache =
- new RelationTypeCache(new ClientRelationTypeAccessor(factoryProvider, artifactTypeCache));
+ new RelationTypeCache(new ClientRelationTypeAccessor(factory.getRelationTypeFactory(), artifactTypeCache));
return new OseeCachingService(branchCache, transactionCache, artifactTypeCache, attributeTypeCache,
relationTypeCache, oseeEnumTypeCache);
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/ClientWorkbenchUserRegHandler.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/ClientWorkbenchUserRegHandler.java
new file mode 100644
index 00000000000..6d573e10c11
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/ClientWorkbenchUserRegHandler.java
@@ -0,0 +1,40 @@
+/*
+ * Created on Aug 19, 2010
+ *
+ * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE
+ */
+package org.eclipse.osee.framework.skynet.core.internal;
+
+import java.util.Map;
+import org.eclipse.osee.framework.core.services.IOseeCachingService;
+import org.eclipse.osee.framework.core.util.AbstractTrackingHandler;
+import org.eclipse.osee.framework.plugin.core.IWorkbenchUserService;
+import org.eclipse.osee.framework.skynet.core.WorkbenchUserService;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
+
+public class ClientWorkbenchUserRegHandler extends AbstractTrackingHandler {
+
+ private static final Class<?>[] DEPENDENCIES = new Class<?>[] {IOseeCachingService.class};
+
+ private ServiceRegistration serviceRegistration;
+
+ @Override
+ public Class<?>[] getDependencies() {
+ return DEPENDENCIES;
+ }
+
+ @Override
+ public void onActivate(BundleContext context, Map<Class<?>, Object> services) {
+ serviceRegistration =
+ context.registerService(IWorkbenchUserService.class.getName(), new WorkbenchUserService(), null);
+ }
+
+ @Override
+ public void onDeActivate() {
+ if (serviceRegistration != null) {
+ serviceRegistration.unregister();
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/OseeEventSystemServiceRegHandler.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/OseeEventSystemServiceRegHandler.java
new file mode 100644
index 00000000000..60a0d381f8d
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/OseeEventSystemServiceRegHandler.java
@@ -0,0 +1,135 @@
+/*******************************************************************************
+ * Copyright (c) 2009 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.skynet.core.internal;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Map;
+import java.util.logging.Level;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.services.IOseeCachingService;
+import org.eclipse.osee.framework.core.util.AbstractTrackingHandler;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.messaging.event.res.IOseeCoreModelEventService;
+import org.eclipse.osee.framework.skynet.core.attribute.HttpAttributeTaggingListener;
+import org.eclipse.osee.framework.skynet.core.event.IEventListener;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
+import org.eclipse.osee.framework.skynet.core.event.RemoteEventServiceEventType;
+import org.eclipse.osee.framework.skynet.core.event.systems.EventManagerData;
+import org.eclipse.osee.framework.skynet.core.event.systems.EventManagerFactory;
+import org.eclipse.osee.framework.skynet.core.event.systems.InternalEventManager2;
+import org.eclipse.osee.framework.skynet.core.event.systems.LegacyEventManager;
+import org.eclipse.osee.framework.skynet.core.event.systems.ResMessagingConnectionListener;
+import org.osgi.framework.BundleContext;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class OseeEventSystemServiceRegHandler extends AbstractTrackingHandler {
+
+ private static final Class<?>[] DEPENDENCIES = new Class<?>[] {IOseeCachingService.class,
+ IOseeCoreModelEventService.class};
+
+ @Override
+ public Class<?>[] getDependencies() {
+ return DEPENDENCIES;
+ }
+
+ private final EventManagerData eventManagerData;
+
+ private ResMessagingConnectionListener connectionStatusListener;
+ private IOseeCoreModelEventService coreModelEventService;
+ private final Collection<IEventListener> coreListeners = new ArrayList<IEventListener>();
+
+ public OseeEventSystemServiceRegHandler(EventManagerData eventManagerData) {
+ this.eventManagerData = eventManagerData;
+ }
+
+ @Override
+ public void onActivate(BundleContext context, Map<Class<?>, Object> services) {
+ coreModelEventService = getService(IOseeCoreModelEventService.class, services);
+
+ EventManagerFactory factory = new EventManagerFactory();
+
+ LegacyEventManager legacyEventManager = null;
+ InternalEventManager2 eventManager = null;
+ if (eventManagerData.getPreferences().isOldEvents()) {
+ legacyEventManager =
+ factory.createLegacyEventManager(eventManagerData.getPreferences(), eventManagerData.getListeners(),
+ eventManagerData.getPriorityListeners());
+ } else if (eventManagerData.getPreferences().isNewEvents()) {
+ connectionStatusListener = new ResMessagingConnectionListener(eventManagerData.getPreferences());
+ eventManager =
+ factory.createNewEventManager(coreModelEventService, eventManagerData.getPreferences(),
+ eventManagerData.getListeners(), eventManagerData.getPriorityListeners(), connectionStatusListener);
+ }
+
+ if (legacyEventManager == null && eventManager == null) {
+ OseeLog.log(Activator.class, Level.SEVERE, "Neither Event System Enabled - This is a problem.");
+ } else {
+ if (eventManager != null) {
+ eventManagerData.setMessageEventManager(eventManager);
+ coreModelEventService.addConnectionListener(connectionStatusListener);
+ eventManager.start();
+ try {
+ OseeEventManager.kickLocalRemEvent(eventManager, RemoteEventServiceEventType.Rem2_Connected);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(Activator.class, Level.INFO, ex);
+ }
+ OseeLog.log(Activator.class, Level.INFO, "REM2: Enabled");
+ } else {
+ OseeLog.log(Activator.class, Level.INFO, "REM2: Disabled");
+ }
+
+ if (legacyEventManager != null) {
+ eventManagerData.setLegacyEventManager(legacyEventManager);
+ legacyEventManager.start();
+ OseeLog.log(Activator.class, Level.INFO, "REM1 Enabled");
+ } else {
+ OseeLog.log(Activator.class, Level.INFO, "REM1 Disabled");
+ }
+ addCoreListeners();
+ }
+ }
+
+ private void addCoreListeners() {
+ coreListeners.add(new HttpAttributeTaggingListener());
+
+ for (IEventListener listener : coreListeners) {
+ OseeEventManager.addListener(listener);
+ }
+ }
+
+ private void removeCoreListeners() {
+ for (IEventListener listener : coreListeners) {
+ OseeEventManager.removeListener(listener);
+ }
+ coreListeners.clear();
+ }
+
+ @Override
+ public void onDeActivate() {
+ removeCoreListeners();
+
+ InternalEventManager2 eventManager = eventManagerData.getMessageEventManager();
+ if (eventManager != null) {
+ coreModelEventService.removeConnectionListener(connectionStatusListener);
+ eventManager.stop();
+ // OseeEventManager.kickLocalRemEvent(eventManager, RemoteEventServiceEventType.Rem2_DisConnected);
+ eventManagerData.setMessageEventManager(null);
+ }
+ LegacyEventManager legacyEventManager = eventManagerData.getLegacyEventManager();
+ if (legacyEventManager != null) {
+ legacyEventManager.stop();
+ eventManagerData.setLegacyEventManager(null);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/SkynetTransactionAccessServiceHandler.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/SkynetTransactionAccessServiceHandler.java
new file mode 100644
index 00000000000..464a6bddb49
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/SkynetTransactionAccessServiceHandler.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2009 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.skynet.core.internal;
+
+import java.util.Map;
+import java.util.logging.Level;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.services.IAccessControlService;
+import org.eclipse.osee.framework.core.util.AbstractTrackingHandler;
+import org.eclipse.osee.framework.lifecycle.ILifecycleService;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransactionAccessHandler;
+import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransactionCheckPoint;
+import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransactionHandler;
+import org.osgi.framework.BundleContext;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public final class SkynetTransactionAccessServiceHandler extends AbstractTrackingHandler {
+
+ private static final Class<?>[] DEPENDENCIES = new Class[] {//
+ ILifecycleService.class, //
+ IAccessControlService.class,//
+ };
+
+ private SkynetTransactionHandler handler;
+ private ILifecycleService lifecycleService;
+
+ @Override
+ public Class<?>[] getDependencies() {
+ return DEPENDENCIES;
+ }
+
+ @Override
+ public void onActivate(BundleContext context, Map<Class<?>, Object> services) {
+ IAccessControlService accessService = getService(IAccessControlService.class, services);
+ lifecycleService = getService(ILifecycleService.class, services);
+ try {
+ handler = new SkynetTransactionAccessHandler(accessService);
+ lifecycleService.addHandler(SkynetTransactionCheckPoint.TYPE, handler);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ }
+
+ @Override
+ public void onDeActivate() {
+ if (handler != null) {
+ try {
+ lifecycleService.removeHandler(SkynetTransactionCheckPoint.TYPE, handler);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/relation/RelationTransactionData.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/relation/RelationTransactionData.java
index 6911f4240fa..6761765dfc2 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/relation/RelationTransactionData.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/relation/RelationTransactionData.java
@@ -16,8 +16,8 @@ import org.eclipse.osee.framework.core.model.TransactionRecord;
import org.eclipse.osee.framework.core.model.event.DefaultBasicGuidRelation;
import org.eclipse.osee.framework.database.core.ConnectionHandler;
import org.eclipse.osee.framework.database.core.OseeSql;
-import org.eclipse.osee.framework.skynet.core.event.RelationModifiedEvent;
import org.eclipse.osee.framework.skynet.core.event.Sender;
+import org.eclipse.osee.framework.skynet.core.event.systems.RelationModifiedEvent;
import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
import org.eclipse.osee.framework.skynet.core.event2.artifact.EventBasicGuidRelation;
import org.eclipse.osee.framework.skynet.core.transaction.BaseTransactionData;
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/transaction/StoreSkynetTransactionOperation.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/transaction/StoreSkynetTransactionOperation.java
index c70cd3b6184..424e47f1333 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/transaction/StoreSkynetTransactionOperation.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/transaction/StoreSkynetTransactionOperation.java
@@ -37,9 +37,9 @@ import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.skynet.core.artifact.ArtifactModType;
import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
-import org.eclipse.osee.framework.skynet.core.event.ArtifactModifiedEvent;
import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
import org.eclipse.osee.framework.skynet.core.event.Sender;
+import org.eclipse.osee.framework.skynet.core.event.systems.ArtifactModifiedEvent;
import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
import org.eclipse.osee.framework.skynet.core.event2.artifact.EventModifiedBasicGuidArtifact;
import org.eclipse.osee.framework.skynet.core.internal.Activator;
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactExplorerEventManager.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactExplorerEventManager.java
index 0abde11f1b7..6a4946a6677 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactExplorerEventManager.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ArtifactExplorerEventManager.java
@@ -8,121 +8,122 @@
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
-package org.eclipse.osee.framework.ui.skynet;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.logging.Level;
-import org.eclipse.osee.framework.core.model.event.DefaultBasicGuidArtifact;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.skynet.core.artifact.ArtifactCache;
-import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
-import org.eclipse.osee.framework.skynet.core.event.Sender;
-import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
-import org.eclipse.osee.framework.skynet.core.event2.artifact.EventBasicGuidArtifact;
-import org.eclipse.osee.framework.skynet.core.event2.artifact.EventModType;
-import org.eclipse.osee.framework.skynet.core.event2.artifact.IArtifactEventListener;
-import org.eclipse.osee.framework.skynet.core.event2.filter.IEventFilter;
-import org.eclipse.osee.framework.ui.swt.Displays;
-
-/**
- * Common location for event handling for ArtifactExplorers in order to keep number of registrations and processing to a
- * minimum.
- *
- * @author Donald G. Dunne
- */
-public class ArtifactExplorerEventManager implements IArtifactEventListener {
-
- List<IArtifactExplorerEventHandler> handlers = new ArrayList<IArtifactExplorerEventHandler>();
- static ArtifactExplorerEventManager instance;
-
- public static void add(IArtifactExplorerEventHandler iWorldEventHandler) {
- if (instance == null) {
- instance = new ArtifactExplorerEventManager();
- OseeEventManager.addListener(instance);
- }
- instance.handlers.add(iWorldEventHandler);
- }
-
- public static void remove(IArtifactExplorerEventHandler iWorldEventHandler) {
- if (instance != null) {
- instance.handlers.remove(iWorldEventHandler);
- }
- }
-
- @Override
- public List<? extends IEventFilter> getEventFilters() {
- // Can't filter cause this class handles all artifact explorers which can care about different branches
- return null;
- }
-
- @Override
- public void handleArtifactEvent(final ArtifactEvent artifactEvent, Sender sender) {
- for (IArtifactExplorerEventHandler handler : new CopyOnWriteArrayList<IArtifactExplorerEventHandler>(handlers)) {
- if (handler.isDisposed()) {
- handlers.remove(handler);
- }
- }
- OseeEventManager.eventLog("ArtifacExplorer: handleArtifactEvent called [" + artifactEvent + "] - sender " + sender + "");
- final Collection<Artifact> modifiedArts =
- artifactEvent.getCacheArtifacts(EventModType.Modified, EventModType.Reloaded);
- final Collection<Artifact> relModifiedArts = artifactEvent.getRelCacheArtifacts();
- final Collection<EventBasicGuidArtifact> deletedPurgedArts =
- artifactEvent.get(EventModType.Deleted, EventModType.Purged);
- final Collection<DefaultBasicGuidArtifact> relOrderChangedArtifacts = artifactEvent.getRelOrderChangedArtifacts();
-
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- if (!deletedPurgedArts.isEmpty()) {
- for (IArtifactExplorerEventHandler handler : handlers) {
- if (!handler.isDisposed()) {
- handler.getArtifactExplorer().getTreeViewer().remove(
- deletedPurgedArts.toArray(new Object[deletedPurgedArts.size()]));
- }
- }
- }
- for (IArtifactExplorerEventHandler handler : handlers) {
- if (!handler.isDisposed()) {
- for (Artifact artifact : modifiedArts) {
- // Don't refresh deleted artifacts
- if (artifact.isDeleted()) {
- continue;
- }
- handler.getArtifactExplorer().getTreeViewer().update(artifact, null);
- }
-
- for (Artifact art : relModifiedArts) {
- try {
- // Don't refresh deleted artifacts
- if (art.isDeleted()) {
- continue;
- }
- handler.getArtifactExplorer().getTreeViewer().refresh(art);
- if (art.getParent() != null) {
- handler.getArtifactExplorer().getTreeViewer().refresh(art.getParent());
- }
- } catch (Exception ex) {
- OseeLog.log(SkynetGuiPlugin.class, Level.SEVERE, ex);
- }
- }
-
- for (DefaultBasicGuidArtifact guidArt : relOrderChangedArtifacts) {
- try {
- Artifact artifact = ArtifactCache.getActive(guidArt);
- if (artifact != null) {
- handler.getArtifactExplorer().getTreeViewer().refresh(artifact);
- }
- } catch (Exception ex) {
- OseeLog.log(SkynetGuiPlugin.class, Level.SEVERE, ex);
- }
- }
- }
- }
- }
- });
- }
-}
+package org.eclipse.osee.framework.ui.skynet;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.logging.Level;
+import org.eclipse.osee.framework.core.model.event.DefaultBasicGuidArtifact;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactCache;
+import org.eclipse.osee.framework.skynet.core.event.EventUtil;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
+import org.eclipse.osee.framework.skynet.core.event.Sender;
+import org.eclipse.osee.framework.skynet.core.event2.ArtifactEvent;
+import org.eclipse.osee.framework.skynet.core.event2.artifact.EventBasicGuidArtifact;
+import org.eclipse.osee.framework.skynet.core.event2.artifact.EventModType;
+import org.eclipse.osee.framework.skynet.core.event2.artifact.IArtifactEventListener;
+import org.eclipse.osee.framework.skynet.core.event2.filter.IEventFilter;
+import org.eclipse.osee.framework.ui.swt.Displays;
+
+/**
+ * Common location for event handling for ArtifactExplorers in order to keep number of registrations and processing to a
+ * minimum.
+ *
+ * @author Donald G. Dunne
+ */
+public class ArtifactExplorerEventManager implements IArtifactEventListener {
+
+ List<IArtifactExplorerEventHandler> handlers = new ArrayList<IArtifactExplorerEventHandler>();
+ static ArtifactExplorerEventManager instance;
+
+ public static void add(IArtifactExplorerEventHandler iWorldEventHandler) {
+ if (instance == null) {
+ instance = new ArtifactExplorerEventManager();
+ OseeEventManager.addListener(instance);
+ }
+ instance.handlers.add(iWorldEventHandler);
+ }
+
+ public static void remove(IArtifactExplorerEventHandler iWorldEventHandler) {
+ if (instance != null) {
+ instance.handlers.remove(iWorldEventHandler);
+ }
+ }
+
+ @Override
+ public List<? extends IEventFilter> getEventFilters() {
+ // Can't filter cause this class handles all artifact explorers which can care about different branches
+ return null;
+ }
+
+ @Override
+ public void handleArtifactEvent(final ArtifactEvent artifactEvent, Sender sender) {
+ for (IArtifactExplorerEventHandler handler : new CopyOnWriteArrayList<IArtifactExplorerEventHandler>(handlers)) {
+ if (handler.isDisposed()) {
+ handlers.remove(handler);
+ }
+ }
+ EventUtil.eventLog("ArtifacExplorer: handleArtifactEvent called [" + artifactEvent + "] - sender " + sender + "");
+ final Collection<Artifact> modifiedArts =
+ artifactEvent.getCacheArtifacts(EventModType.Modified, EventModType.Reloaded);
+ final Collection<Artifact> relModifiedArts = artifactEvent.getRelCacheArtifacts();
+ final Collection<EventBasicGuidArtifact> deletedPurgedArts =
+ artifactEvent.get(EventModType.Deleted, EventModType.Purged);
+ final Collection<DefaultBasicGuidArtifact> relOrderChangedArtifacts = artifactEvent.getRelOrderChangedArtifacts();
+
+ Displays.ensureInDisplayThread(new Runnable() {
+ @Override
+ public void run() {
+ if (!deletedPurgedArts.isEmpty()) {
+ for (IArtifactExplorerEventHandler handler : handlers) {
+ if (!handler.isDisposed()) {
+ handler.getArtifactExplorer().getTreeViewer().remove(
+ deletedPurgedArts.toArray(new Object[deletedPurgedArts.size()]));
+ }
+ }
+ }
+ for (IArtifactExplorerEventHandler handler : handlers) {
+ if (!handler.isDisposed()) {
+ for (Artifact artifact : modifiedArts) {
+ // Don't refresh deleted artifacts
+ if (artifact.isDeleted()) {
+ continue;
+ }
+ handler.getArtifactExplorer().getTreeViewer().update(artifact, null);
+ }
+
+ for (Artifact art : relModifiedArts) {
+ try {
+ // Don't refresh deleted artifacts
+ if (art.isDeleted()) {
+ continue;
+ }
+ handler.getArtifactExplorer().getTreeViewer().refresh(art);
+ if (art.getParent() != null) {
+ handler.getArtifactExplorer().getTreeViewer().refresh(art.getParent());
+ }
+ } catch (Exception ex) {
+ OseeLog.log(SkynetGuiPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+ for (DefaultBasicGuidArtifact guidArt : relOrderChangedArtifacts) {
+ try {
+ Artifact artifact = ArtifactCache.getActive(guidArt);
+ if (artifact != null) {
+ handler.getArtifactExplorer().getTreeViewer().refresh(artifact);
+ }
+ } catch (Exception ex) {
+ OseeLog.log(SkynetGuiPlugin.class, Level.SEVERE, ex);
+ }
+ }
+ }
+ }
+ }
+ });
+ }
+}
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/OseeContributionItem.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/OseeContributionItem.java
index 82183529805..fe8820a299e 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/OseeContributionItem.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/OseeContributionItem.java
@@ -11,7 +11,7 @@
package org.eclipse.osee.framework.ui.skynet;
import org.eclipse.jface.action.IStatusLineManager;
-import org.eclipse.osee.framework.skynet.core.event.RemoteEventManager2;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
import org.eclipse.osee.framework.ui.skynet.ats.IOseeAtsService;
import org.eclipse.osee.framework.ui.skynet.ats.OseeAts;
import org.eclipse.osee.framework.ui.swt.Displays;
@@ -66,7 +66,7 @@ public abstract class OseeContributionItem extends StatusLineContributionItem {
if (atsService != null && atsService.isAtsAdmin()) {
AdminContributionItem.addTo(manager);
}
- if (!RemoteEventManager2.isConnected()) {
+ if (!OseeEventManager.isEventManagerConnected()) {
SkynetServiceContributionItem.addTo(manager);
}
OseeServicesStatusContributionItem.addTo(manager);
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ResServiceContributionItem.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ResServiceContributionItem.java
index 3beede0aa56..c46f2c2bc64 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ResServiceContributionItem.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/ResServiceContributionItem.java
@@ -15,7 +15,6 @@ import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.action.IStatusLineManager;
import org.eclipse.osee.framework.skynet.core.event.IRemoteEventManagerEventListener;
import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
-import org.eclipse.osee.framework.skynet.core.event.RemoteEventManager2;
import org.eclipse.osee.framework.skynet.core.event.RemoteEventServiceEventType;
import org.eclipse.osee.framework.skynet.core.event.Sender;
import org.eclipse.osee.framework.ui.skynet.OseeBuildTypeContributionItem.OpenConfigDetailsAction;
@@ -42,8 +41,7 @@ public class ResServiceContributionItem extends OseeContributionItem implements
@Override
public void run() {
do {
- RemoteEventManager2.getInstance();
- boolean status = RemoteEventManager2.isConnected();
+ boolean status = OseeEventManager.isEventManagerConnected();
for (ResServiceContributionItem icon : icons) {
icon.updateStatus(status);
}
@@ -58,7 +56,7 @@ public class ResServiceContributionItem extends OseeContributionItem implements
public ResServiceContributionItem() {
super(ID);
- updateStatus(RemoteEventManager2.isConnected());
+ updateStatus(OseeEventManager.isEventManagerConnected());
OseeEventManager.addListener(this);
setActionHandler(new OpenConfigDetailsAction());
icons.add(this);
@@ -97,7 +95,7 @@ public class ResServiceContributionItem extends OseeContributionItem implements
Displays.ensureInDisplayThread(new Runnable() {
@Override
public void run() {
- updateStatus(RemoteEventManager2.isConnected());
+ updateStatus(OseeEventManager.isEventManagerConnected());
}
});
}
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetServiceContributionItem.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetServiceContributionItem.java
index 1c6a61c9f26..ca432ca7bc0 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetServiceContributionItem.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/SkynetServiceContributionItem.java
@@ -15,7 +15,6 @@ import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.action.IStatusLineManager;
import org.eclipse.osee.framework.skynet.core.event.IRemoteEventManagerEventListener;
import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
-import org.eclipse.osee.framework.skynet.core.event.RemoteEventManager;
import org.eclipse.osee.framework.skynet.core.event.RemoteEventServiceEventType;
import org.eclipse.osee.framework.skynet.core.event.Sender;
import org.eclipse.osee.framework.ui.swt.Displays;
@@ -42,7 +41,7 @@ public class SkynetServiceContributionItem extends OseeContributionItem implemen
@Override
public void run() {
do {
- boolean status = RemoteEventManager.isConnected();
+ boolean status = OseeEventManager.isLegacyEventManagerConnected();
for (SkynetServiceContributionItem icon : icons) {
icon.updateStatus(status);
}
@@ -57,7 +56,7 @@ public class SkynetServiceContributionItem extends OseeContributionItem implemen
public SkynetServiceContributionItem() {
super(ID);
- updateStatus(RemoteEventManager.isConnected());
+ updateStatus(OseeEventManager.isLegacyEventManagerConnected());
OseeEventManager.addListener(this);
icons.add(this);
createUpdateThread();
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/AbstractEventArtifactEditor.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/AbstractEventArtifactEditor.java
index 14d4daee697..664d03a1967 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/AbstractEventArtifactEditor.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/AbstractEventArtifactEditor.java
@@ -43,7 +43,7 @@ public abstract class AbstractEventArtifactEditor extends AbstractArtifactEditor
public AbstractEventArtifactEditor() {
super();
- if (OseeEventManager.isOldEvents()) {
+ if (OseeEventManager.getPreferences().isOldEvents()) {
internalEventHandler = new InternalEventHandler();
OseeEventManager.addListener(internalEventHandler);
} else {
@@ -88,7 +88,7 @@ public abstract class AbstractEventArtifactEditor extends AbstractArtifactEditor
@Override
public void dispose() {
super.dispose();
- if (OseeEventManager.isOldEvents()) {
+ if (OseeEventManager.getPreferences().isOldEvents()) {
OseeEventManager.removeListener(internalEventHandler);
}
}
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/ArtifactEditorEventManager.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/ArtifactEditorEventManager.java
index abfe1fae342..b7a6d6adbfe 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/ArtifactEditorEventManager.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/editor/ArtifactEditorEventManager.java
@@ -18,6 +18,7 @@ import org.eclipse.osee.framework.core.model.event.DefaultBasicGuidArtifact;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.skynet.core.event.AccessControlEventType;
import org.eclipse.osee.framework.skynet.core.event.BranchEventType;
+import org.eclipse.osee.framework.skynet.core.event.EventUtil;
import org.eclipse.osee.framework.skynet.core.event.IAccessControlEventListener;
import org.eclipse.osee.framework.skynet.core.event.IBranchEventListener;
import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
@@ -70,7 +71,7 @@ public class ArtifactEditorEventManager implements IArtifactEventListener, IBran
handlers.remove(handler);
}
}
- OseeEventManager.eventLog("ArtifactEditorEventManager: handleArtifactEvent called [" + artifactEvent + "] - sender " + sender + "");
+ EventUtil.eventLog("ArtifactEditorEventManager: handleArtifactEvent called [" + artifactEvent + "] - sender " + sender + "");
final Collection<Artifact> modifiedArts =
artifactEvent.getCacheArtifacts(EventModType.Modified, EventModType.Reloaded);
final Collection<Artifact> relModifiedArts = artifactEvent.getRelCacheArtifacts();
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/preferences/ConfigurationDetails.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/preferences/ConfigurationDetails.java
index 2203227bd85..31606bce758 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/preferences/ConfigurationDetails.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/preferences/ConfigurationDetails.java
@@ -17,8 +17,7 @@ import org.eclipse.osee.framework.core.exception.OseeCoreException;
import org.eclipse.osee.framework.jdk.core.util.AHTML;
import org.eclipse.osee.framework.logging.IHealthStatus;
import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.skynet.core.event.RemoteEventManager;
-import org.eclipse.osee.framework.skynet.core.event.RemoteEventManager2;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
import org.eclipse.osee.framework.ui.swt.Displays;
import org.eclipse.swt.SWT;
@@ -112,16 +111,29 @@ public class ConfigurationDetails extends PreferencePage implements IWorkbenchPr
status.getMessage().replaceAll("]", "]<br/>"),
status.isOk() ? "<font color=\"green\"><b>Ok</b></font>" : "<font color=\"red\"><b>Unavailable</b></font>"));
}
+
builder.append(AHTML.addRowMultiColumnTable(
"<b>Remote Event Service</b>",
- RemoteEventManager2.getInstance().getConnectionProperties().replaceAll("]", "]<br/>"),
- RemoteEventManager2.isConnected() ? "<font color=\"green\"><b>Ok</b></font>" : "<font color=\"red\"><b>Unavailable - " + RemoteEventManager2.getInstance().getConnectionInfo() + "</b></font>"));
+ OseeEventManager.getConnectionDetails().replaceAll("]", "]<br/>"),
+ OseeEventManager.isEventManagerConnected() ? "<font color=\"green\"><b>Ok</b></font>" : "<font color=\"red\"><b>Unavailable - " + getEventServiceDetails() + "</b></font>"));
builder.append(AHTML.addRowMultiColumnTable(
"<b>Old Remote Event Service</b>",
- RemoteEventManager.getConnectionProperties().replaceAll("]", "]<br/>"),
- RemoteEventManager.isConnected() ? "<font color=\"green\"><b>Ok</b></font>" : "<font color=\"red\"><b>Unavailable</b></font>"));
+ OseeEventManager.getLegacyConnectionDetails().replaceAll("]", "]<br/>"),
+ OseeEventManager.isLegacyEventManagerConnected() ? "<font color=\"green\"><b>Ok</b></font>" : "<font color=\"red\"><b>Unavailable</b></font>"));
builder.append(AHTML.endMultiColumnTable());
browser.setText(String.format(PAGE_TEMPLATE, builder.toString()));
}
+
+ public String getEventServiceDetails() {
+ String toReturn;
+ if (!OseeEventManager.getPreferences().isNewEvents()) {
+ toReturn = "New Events == OFF";
+ } else if (OseeEventManager.isEventManagerConnected()) {
+ toReturn = "Connected";
+ } else {
+ toReturn = "ActiveMQ JMS Service is down";
+ }
+ return toReturn;
+ }
}

Back to the top