Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoberto E. Escobar2012-04-28 05:03:25 +0000
committerRoberto E. Escobar2012-04-28 05:03:25 +0000
commit65f6159a5fdc57fb788c992d8be81636a9ad0351 (patch)
tree15d9a64d7c32fec05a3d2cb8b171a1636d475f91
parentbf9c5e0efcf32fcbeca4f871f4f12203c53e3d31 (diff)
downloadorg.eclipse.osee-65f6159a5fdc57fb788c992d8be81636a9ad0351.tar.gz
org.eclipse.osee-65f6159a5fdc57fb788c992d8be81636a9ad0351.tar.xz
org.eclipse.osee-65f6159a5fdc57fb788c992d8be81636a9ad0351.zip
feature[ats_VGR8B]: Redesign InternalOseeEventManager to fix initialization
Redesign OseeEventManager Make OseeEventManagerService Fix access control service initialization Re-enable skynet core tests
-rw-r--r--plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsCacheManager.java3
-rw-r--r--plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsUtilCore.java4
-rw-r--r--plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/access/AtsBranchAccessManagerTest.java34
-rw-r--r--plugins/org.eclipse.osee.ats/OSGI-INF/ats.cm.access.xml3
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsBranchAccessManager.java36
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADetailsSection.java2
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/AtsCmAccessControlProxy.java14
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/XDefectViewer.java12
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/XUserRoleViewer.java9
-rw-r--r--plugins/org.eclipse.osee.client.integration.tests/MasterTestSuite_Demo.launch2
-rw-r--r--plugins/org.eclipse.osee.framework.access.provider/OSGI-INF/framework.access.control.xml1
-rw-r--r--plugins/org.eclipse.osee.framework.access.provider/src/org/eclipse/osee/framework/access/provider/internal/FrameworkAccessControlProxy.java12
-rw-r--r--plugins/org.eclipse.osee.framework.access/OSGI-INF/access.control.service.xml3
-rw-r--r--plugins/org.eclipse.osee.framework.access/OSGI-INF/object.access.provider.xml1
-rw-r--r--plugins/org.eclipse.osee.framework.access/OSGI-INF/static.access.control.helper.xml5
-rw-r--r--plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/AccessControlManager.java17
-rw-r--r--plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/AccessControlHelper.java40
-rw-r--r--plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/AccessControlService.java38
-rw-r--r--plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/AccessControlServiceProxy.java37
-rw-r--r--plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/ObjectAccessProvider.java77
-rw-r--r--plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/ObjectAccessProviderProxy.java84
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/FrameworkCore_Demo_Suite.java122
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/event/filter/ArtifactEventFiltersTest.java9
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/event/filter/BranchEventFiltersTest.java6
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/event/model/BranchEventTest.java14
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/event/systems/FrameworkEventToRemoteEventListenerTest.java8
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/internal/event/EventHandlersTest.java84
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/internal/event/EventListenerRegistryTest.java133
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/internal/event/EventTestSuite.java23
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/OSGI-INF/attribute.tagger.event.listener.xml8
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/OSGI-INF/osee.event.system.service.xml11
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/EventUtil.java75
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/FrameworkEventUtil.java6
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/OseeEventManager.java189
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/OseeEventService.java36
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/listener/EventQosType.java19
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/AccessControlEvent.java5
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/ArtifactEvent.java22
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/AttributeChange.java2
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/BranchEvent.java4
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/BroadcastEvent.java4
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/FrameworkEvent.java2
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/HasEventType.java12
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/HasNetworkSender.java15
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/RemoteEventServiceEventType.java2
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/Sender.java32
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/TransactionChange.java2
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/TransactionEvent.java4
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/EventManagerData.java49
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/EventManagerFactory.java45
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/FrameworkEventToRemoteEventListener.java346
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/InternalEventManager.java583
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/Activator.java16
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/OseeEventAdmin.java118
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/OseeEventServiceImpl.java271
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/ServiceUtil.java5
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/ConnectionListenerImpl.java (renamed from plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/ResMessagingConnectionListener.java)23
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/ConnectionStatus.java20
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/EventHandlerLocal.java27
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/EventHandlerRemote.java23
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/EventHandlers.java64
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/EventListenerRegistry.java211
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/EventTransport.java238
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/OseeEventThreadFactory.java (renamed from plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/OseeEventThreadFactory.java)2
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/Transport.java36
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/AccessControlEventHandler.java40
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/AccessControlRemoteEventHandler.java31
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/ArtifactEventHandler.java72
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/ArtifactRemoteEventHandler.java229
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/BranchEventHandler.java55
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/BranchRemoteEventHandler.java63
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/BroadcastEventHandler.java49
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/BroadcastRemoteEventHandler.java31
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/RemoteServiceEventHandler.java36
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/TransactionEventHandler.java40
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/TransactionRemoteEventHandler.java39
-rw-r--r--plugins/org.eclipse.osee.framework.ui.skynet/OSGI-INF/artifact.prompt.change.xml2
-rw-r--r--plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/skynet/SkynetCustomizations.java4
-rw-r--r--plugins/org.eclipse.osee.support.config/launchConfig/OSEE Demo Application Server [H2].launch2
79 files changed, 2457 insertions, 1596 deletions
diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsCacheManager.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsCacheManager.java
index 9d1829c60bf..2fc98535540 100644
--- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsCacheManager.java
+++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsCacheManager.java
@@ -30,6 +30,7 @@ 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.event.EventUtil;
import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
import org.eclipse.osee.framework.skynet.core.event.filter.IEventFilter;
import org.eclipse.osee.framework.skynet.core.event.listener.IArtifactEventListener;
@@ -181,6 +182,6 @@ public class AtsCacheManager implements IArtifactEventListener {
@Override
public List<? extends IEventFilter> getEventFilters() {
- return Arrays.asList(OseeEventManager.getCommonBranchFilter());
+ return Arrays.asList(EventUtil.getCommonBranchFilter());
}
}
diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsUtilCore.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsUtilCore.java
index 57313e3dfbe..69452b12a25 100644
--- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsUtilCore.java
+++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsUtilCore.java
@@ -28,7 +28,7 @@ import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
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.event.OseeEventManager;
+import org.eclipse.osee.framework.skynet.core.event.EventUtil;
import org.eclipse.osee.framework.skynet.core.event.filter.ArtifactTypeEventFilter;
import org.eclipse.osee.framework.skynet.core.event.filter.IEventFilter;
import org.eclipse.osee.framework.skynet.core.utility.DbUtil;
@@ -139,7 +139,7 @@ public class AtsUtilCore {
public synchronized static List<IEventFilter> getAtsObjectEventFilters() {
try {
if (atsObjectEventFilter.isEmpty()) {
- atsObjectEventFilter.add(OseeEventManager.getCommonBranchFilter());
+ atsObjectEventFilter.add(EventUtil.getCommonBranchFilter());
atsObjectEventFilter.add(getAtsObjectArtifactTypeEventFilter());
}
} catch (Exception ex) {
diff --git a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/access/AtsBranchAccessManagerTest.java b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/access/AtsBranchAccessManagerTest.java
index a075ebefd34..57066887005 100644
--- a/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/access/AtsBranchAccessManagerTest.java
+++ b/plugins/org.eclipse.osee.ats.test/src/org/eclipse/osee/ats/access/AtsBranchAccessManagerTest.java
@@ -27,6 +27,7 @@ import org.eclipse.osee.framework.core.model.Branch;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventService;
import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager;
import org.eclipse.osee.support.test.util.DemoActionableItems;
@@ -36,19 +37,39 @@ import org.eclipse.osee.support.test.util.TestUtil;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
/**
* @author Donald G. Dunne
*/
public class AtsBranchAccessManagerTest {
+ private static <T> T getService(Class<T> clazz) {
+ Bundle bundle = FrameworkUtil.getBundle(AtsBranchAccessManager.class);
+ Assert.assertNotNull(bundle);
+ BundleContext context = bundle.getBundleContext();
+ Assert.assertNotNull(context);
+ ServiceReference<T> reference = context.getServiceReference(clazz);
+ Assert.assertNotNull(reference);
+ T service = context.getService(reference);
+ Assert.assertNotNull(service);
+ return service;
+ }
+
+ public static OseeEventService getEventService() {
+ return getService(OseeEventService.class);
+ }
+
/**
* Test method for {@link org.eclipse.osee.ats.access.AtsBranchAccessManager#AtsBranchAccessManager()}.
*/
@Test
public void testAtsBranchAccessManager() {
int numListeners = OseeEventManager.getNumberOfListeners();
- new AtsBranchAccessManager();
+ new AtsBranchAccessManager(getEventService());
Assert.assertEquals(numListeners + 1, OseeEventManager.getNumberOfListeners());
}
@@ -57,7 +78,7 @@ public class AtsBranchAccessManagerTest {
*/
@Test
public void testDispose() {
- AtsBranchAccessManager mgr = new AtsBranchAccessManager();
+ AtsBranchAccessManager mgr = new AtsBranchAccessManager(getEventService());
int numListeners = OseeEventManager.getNumberOfListeners();
mgr.dispose();
Assert.assertEquals(numListeners - 1, OseeEventManager.getNumberOfListeners());
@@ -71,7 +92,7 @@ public class AtsBranchAccessManagerTest {
*/
@Test
public void testIsApplicable() throws OseeCoreException {
- AtsBranchAccessManager mgr = new AtsBranchAccessManager();
+ AtsBranchAccessManager mgr = new AtsBranchAccessManager(getEventService());
Assert.assertFalse(mgr.isApplicable(AtsUtil.getAtsBranch()));
Assert.assertFalse(mgr.isApplicable(DemoSawBuilds.SAW_Bld_1));
@@ -90,7 +111,8 @@ public class AtsBranchAccessManagerTest {
public void cleanup() throws OseeCoreException {
TeamWorkFlowArtifact teamArt =
(TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Requirements);
- SkynetTransaction transaction = TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "testGetContextIdArtifact cleanup");
+ SkynetTransaction transaction =
+ TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "testGetContextIdArtifact cleanup");
teamArt.getTeamDefinition().deleteAttributes(CoreAttributeTypes.AccessContextId);
teamArt.getTeamDefinition().persist(transaction);
for (Artifact art : teamArt.getTeamDefinition().getRelatedArtifacts(
@@ -113,7 +135,7 @@ public class AtsBranchAccessManagerTest {
*/
@Test
public void testGetContextIdBranch() throws OseeCoreException {
- AtsBranchAccessManager mgr = new AtsBranchAccessManager();
+ AtsBranchAccessManager mgr = new AtsBranchAccessManager(getEventService());
TeamWorkFlowArtifact teamArt =
(TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Requirements);
@@ -171,7 +193,7 @@ public class AtsBranchAccessManagerTest {
*/
@Test
public void testConvertAccessAttributeToGuid() throws OseeCoreException {
- AtsBranchAccessManager mgr = new AtsBranchAccessManager();
+ AtsBranchAccessManager mgr = new AtsBranchAccessManager(getEventService());
TeamWorkFlowArtifact teamArt =
(TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Requirements);
diff --git a/plugins/org.eclipse.osee.ats/OSGI-INF/ats.cm.access.xml b/plugins/org.eclipse.osee.ats/OSGI-INF/ats.cm.access.xml
index 363888e0528..9cf386136f1 100644
--- a/plugins/org.eclipse.osee.ats/OSGI-INF/ats.cm.access.xml
+++ b/plugins/org.eclipse.osee.ats/OSGI-INF/ats.cm.access.xml
@@ -6,4 +6,5 @@
<provide interface="org.eclipse.osee.framework.core.model.access.HasAccessModel"/>
</service>
<reference bind="setAccessModelInterpreter" cardinality="1..1" interface="org.eclipse.osee.framework.core.dsl.integration.AccessModelInterpreter" name="AccessModelInterpreter" policy="static"/>
-</scr:component> \ No newline at end of file
+ <reference bind="setEventService" cardinality="1..1" interface="org.eclipse.osee.framework.skynet.core.event.OseeEventService" name="OseeEventService" policy="static"/>
+</scr:component>
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsBranchAccessManager.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsBranchAccessManager.java
index 0882f0eb8cf..750bc85f65c 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsBranchAccessManager.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsBranchAccessManager.java
@@ -41,9 +41,11 @@ import org.eclipse.osee.framework.skynet.core.artifact.ArtifactCache;
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.search.ArtifactQuery;
-import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
+import org.eclipse.osee.framework.skynet.core.event.EventUtil;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventService;
import org.eclipse.osee.framework.skynet.core.event.filter.ArtifactTypeEventFilter;
import org.eclipse.osee.framework.skynet.core.event.filter.IEventFilter;
+import org.eclipse.osee.framework.skynet.core.event.listener.EventQosType;
import org.eclipse.osee.framework.skynet.core.event.listener.IAccessControlEventListener;
import org.eclipse.osee.framework.skynet.core.event.listener.IArtifactEventListener;
import org.eclipse.osee.framework.skynet.core.event.model.AccessControlEvent;
@@ -67,23 +69,28 @@ public class AtsBranchAccessManager implements IArtifactEventListener, IAccessCo
// Cache to store artifact guid to context id list so don't have to re-compute
private final Map<String, Collection<IAccessContextId>> branchGuidToContextIdCache =
new HashMap<String, Collection<IAccessContextId>>(50);
- long cacheUpdated = 0;
- private static List<Long> atsConfigArtifactTypes = Arrays.asList(AtsArtifactTypes.ActionableItem.getGuid(),
+
+ private static final List<Long> atsConfigArtifactTypes = Arrays.asList(AtsArtifactTypes.ActionableItem.getGuid(),
AtsArtifactTypes.TeamDefinition.getGuid());
private final RoleContextProvider roleContextProvider;
+ private volatile long cacheUpdated = 0;
+
+ private final OseeEventService eventService;
+
+ public AtsBranchAccessManager(OseeEventService eventService) {
+ this(eventService, null);
- public AtsBranchAccessManager() {
- this(null);
}
- public AtsBranchAccessManager(RoleContextProvider roleContextProvider) {
- OseeEventManager.addListener(this);
+ public AtsBranchAccessManager(OseeEventService eventService, RoleContextProvider roleContextProvider) {
+ this.eventService = eventService;
this.roleContextProvider = roleContextProvider;
+ eventService.addListener(EventQosType.NORMAL, this);
}
public void dispose() {
- OseeEventManager.removeListener(this);
+ eventService.removeListener(EventQosType.NORMAL, this);
}
private Artifact getAssociatedArtifact(IOseeBranch branch) throws OseeCoreException {
@@ -152,7 +159,7 @@ public class AtsBranchAccessManager implements IArtifactEventListener, IAccessCo
* TODO Convert to protected once .test package is removed from ats.test bundle and tests have visibility of this
* method without making public.
*/
- public Collection<IAccessContextId> internalGetFromWorkflow(TeamWorkFlowArtifact teamArt) {
+ public static Collection<IAccessContextId> internalGetFromWorkflow(TeamWorkFlowArtifact teamArt) {
Set<IAccessContextId> contextIds = new HashSet<IAccessContextId>();
try {
contextIds.addAll(getFromArtifact(teamArt));
@@ -177,7 +184,7 @@ public class AtsBranchAccessManager implements IArtifactEventListener, IAccessCo
/**
* Recursively check artifact and all default hierarchy parents
*/
- private Collection<IAccessContextId> getFromArtifact(Artifact artifact) {
+ private static Collection<IAccessContextId> getFromArtifact(Artifact artifact) {
Set<IAccessContextId> contextIds = new HashSet<IAccessContextId>();
try {
for (String guid : artifact.getAttributesToStringList(CoreAttributeTypes.AccessContextId)) {
@@ -199,7 +206,7 @@ public class AtsBranchAccessManager implements IArtifactEventListener, IAccessCo
* ATS "Access Context Id" attribute value can be stored as "guid" or "guid,name" for easy reading. This method
* strips ,name out so only guid is returned.
*/
- private String convertAccessAttributeToGuid(String value) {
+ private static String convertAccessAttributeToGuid(String value) {
return value.split(",")[0];
}
@@ -212,14 +219,14 @@ public class AtsBranchAccessManager implements IArtifactEventListener, IAccessCo
return getAtsObjectEventFilters();
}
- private static List<IEventFilter> atsObjectEventFilter = new ArrayList<IEventFilter>(2);
- private static ArtifactTypeEventFilter atsArtifactTypesFilter = new ArtifactTypeEventFilter(
+ private static final List<IEventFilter> atsObjectEventFilter = new ArrayList<IEventFilter>(2);
+ private static final ArtifactTypeEventFilter atsArtifactTypesFilter = new ArtifactTypeEventFilter(
AtsArtifactTypes.TeamWorkflow, AtsArtifactTypes.TeamDefinition, AtsArtifactTypes.ActionableItem);
private synchronized static List<IEventFilter> getAtsObjectEventFilters() {
try {
if (atsObjectEventFilter.isEmpty()) {
- atsObjectEventFilter.add(OseeEventManager.getCommonBranchFilter());
+ atsObjectEventFilter.add(EventUtil.getCommonBranchFilter());
atsObjectEventFilter.add(atsArtifactTypesFilter);
}
} catch (Exception ex) {
@@ -264,4 +271,5 @@ public class AtsBranchAccessManager implements IArtifactEventListener, IAccessCo
}
}
}
+
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADetailsSection.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADetailsSection.java
index 70c0be56856..81de9734142 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADetailsSection.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMADetailsSection.java
@@ -138,7 +138,7 @@ public class SMADetailsSection extends SectionPart {
if (workingBranch == null) {
try {
// get what would be if branch created
- ids = new AtsBranchAccessManager().internalGetFromWorkflow(workflow);
+ ids = AtsBranchAccessManager.internalGetFromWorkflow(workflow);
message = ids.toString();
} catch (Exception ex) {
OseeLog.log(Activator.class, Level.SEVERE, ex);
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/AtsCmAccessControlProxy.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/AtsCmAccessControlProxy.java
index b427ca59850..e9ace735800 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/AtsCmAccessControlProxy.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/AtsCmAccessControlProxy.java
@@ -23,7 +23,8 @@ import org.eclipse.osee.framework.core.model.IBasicArtifact;
import org.eclipse.osee.framework.core.model.access.AccessModel;
import org.eclipse.osee.framework.core.model.access.HasAccessModel;
import org.eclipse.osee.framework.core.services.CmAccessControl;
-import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventService;
+import org.eclipse.osee.framework.skynet.core.event.listener.EventQosType;
import org.eclipse.osee.framework.skynet.core.event.listener.IEventListener;
/**
@@ -36,26 +37,31 @@ public class AtsCmAccessControlProxy implements CmAccessControl, HasAccessModel
private AccessModelInterpreter accessModelInterpreter;
private CmAccessControl cmService;
private AccessModel accessModel;
+ private OseeEventService eventService;
public void setAccessModelInterpreter(AccessModelInterpreter accessModelInterpreter) {
this.accessModelInterpreter = accessModelInterpreter;
}
+ public void setEventService(OseeEventService eventService) {
+ this.eventService = eventService;
+ }
+
public void start() {
OseeDslProvider dslProvider = new AtsAccessOseeDslProvider("ats:/xtext/cm.access.osee");
accessModel = new OseeDslAccessModel(accessModelInterpreter, dslProvider);
RoleContextProvider roleAccessProvider = new OseeDslRoleContextProvider(dslProvider);
- atsBranchObjectManager = new AtsBranchAccessManager(roleAccessProvider);
+ atsBranchObjectManager = new AtsBranchAccessManager(eventService, roleAccessProvider);
cmService = new AtsCmAccessControl(atsBranchObjectManager);
listener = new AtsDslProviderUpdateListener(dslProvider);
- OseeEventManager.addListener(listener);
+ eventService.addListener(EventQosType.NORMAL, listener);
}
public void stop() {
if (listener != null) {
- OseeEventManager.removeListener(listener);
+ eventService.removeListener(EventQosType.NORMAL, listener);
listener = null;
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/XDefectViewer.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/XDefectViewer.java
index bdc39d4af17..71e091abd9f 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/XDefectViewer.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/defect/XDefectViewer.java
@@ -40,6 +40,7 @@ import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.framework.logging.OseeLevel;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+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.filter.IEventFilter;
import org.eclipse.osee.framework.skynet.core.event.listener.IArtifactEventListener;
@@ -328,7 +329,8 @@ public class XDefectViewer extends GenericXWidget implements IArtifactWidget, IA
MessageDialog.QUESTION, new String[] {"OK", "Cancel"}, 0);
ed.setFillVertically(true);
if (ed.open() == 0) {
- SkynetTransaction transaction = TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "Import Review Defects");
+ SkynetTransaction transaction =
+ TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "Import Review Defects");
for (String str : ed.getEntry().split("\n")) {
str = str.replaceAll("\r", "");
if (!str.equals("")) {
@@ -360,7 +362,8 @@ public class XDefectViewer extends GenericXWidget implements IArtifactWidget, IA
"Are You Sure You Wish to Delete the Defects(s):\n\n" + builder.toString());
if (delete) {
try {
- SkynetTransaction transaction = TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "Delete Review Defects");
+ SkynetTransaction transaction =
+ TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "Delete Review Defects");
deleteDefectHelper(items, persist, transaction);
transaction.execute();
} catch (Exception ex) {
@@ -387,7 +390,8 @@ public class XDefectViewer extends GenericXWidget implements IArtifactWidget, IA
ed.setFillVertically(true);
if (ed.open() == 0) {
try {
- SkynetTransaction transaction = TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "Add Review Defect");
+ SkynetTransaction transaction =
+ TransactionManager.createTransaction(AtsUtil.getAtsBranch(), "Add Review Defect");
ReviewDefectItem item = new ReviewDefectItem();
item.setDescription(ed.getEntry());
if (ed.getSeverity() != null) {
@@ -566,7 +570,7 @@ public class XDefectViewer extends GenericXWidget implements IArtifactWidget, IA
@Override
public List<? extends IEventFilter> getEventFilters() {
- return Arrays.asList(OseeEventManager.getCommonBranchFilter(), AtsUtilCore.getReviewArtifactTypeEventFilter());
+ return Arrays.asList(EventUtil.getCommonBranchFilter(), AtsUtilCore.getReviewArtifactTypeEventFilter());
}
@Override
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/XUserRoleViewer.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/XUserRoleViewer.java
index c298e7c5f4d..6acb39e67b8 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/XUserRoleViewer.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/role/XUserRoleViewer.java
@@ -39,6 +39,7 @@ import org.eclipse.osee.framework.jdk.core.util.AHTML;
import org.eclipse.osee.framework.logging.OseeLevel;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+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.filter.IEventFilter;
import org.eclipse.osee.framework.skynet.core.event.listener.IArtifactEventListener;
@@ -295,7 +296,8 @@ public class XUserRoleViewer extends GenericXWidget implements IArtifactWidget,
"Are You Sure You Wish to Delete the Roles(s):\n\n" + builder.toString());
if (delete) {
try {
- SkynetTransaction transaction = TransactionManager.createTransaction(reviewArt.getBranch(), "Delete Review Roles");
+ SkynetTransaction transaction =
+ TransactionManager.createTransaction(reviewArt.getBranch(), "Delete Review Roles");
removeUserRoleHelper(items, transaction);
transaction.execute();
} catch (Exception ex) {
@@ -316,7 +318,8 @@ public class XUserRoleViewer extends GenericXWidget implements IArtifactWidget,
public void handleNewUserRole() {
try {
- SkynetTransaction transaction = TransactionManager.createTransaction(reviewArt.getArtifact().getBranch(), "Add Review Roles");
+ SkynetTransaction transaction =
+ TransactionManager.createTransaction(reviewArt.getArtifact().getBranch(), "Add Review Roles");
roleMgr.addOrUpdateUserRole(new UserRole());
roleMgr.saveToArtifact(transaction);
transaction.execute();
@@ -486,7 +489,7 @@ public class XUserRoleViewer extends GenericXWidget implements IArtifactWidget,
@Override
public List<? extends IEventFilter> getEventFilters() {
- return Arrays.asList(OseeEventManager.getCommonBranchFilter(), AtsUtilCore.getReviewArtifactTypeEventFilter());
+ return Arrays.asList(EventUtil.getCommonBranchFilter(), AtsUtilCore.getReviewArtifactTypeEventFilter());
}
@Override
diff --git a/plugins/org.eclipse.osee.client.integration.tests/MasterTestSuite_Demo.launch b/plugins/org.eclipse.osee.client.integration.tests/MasterTestSuite_Demo.launch
index 1c542f1ebdf..4d480075b8f 100644
--- a/plugins/org.eclipse.osee.client.integration.tests/MasterTestSuite_Demo.launch
+++ b/plugins/org.eclipse.osee.client.integration.tests/MasterTestSuite_Demo.launch
@@ -38,7 +38,7 @@
<stringAttribute key="selected_target_plugins" value="ch.qos.logback.classic@default:default,ch.qos.logback.core@default:default,ch.qos.logback.slf4j@default:false,com.google.collect@default:default,com.google.inject@default:default,com.ibm.icu@default:default,com.jcraft.jsch@default:default,com.lowagie.text@default:default,de.itemis.xtext.antlr@default:default,javax.activation@default:default,javax.mail.glassfish@default:default,javax.servlet.jsp@default:default,javax.servlet@default:default,javax.xml@default:default,org.antlr.generator@default:default,org.antlr.runtime@default:default,org.aopalliance@default:default,org.apache.ant@default:default,org.apache.commons.cli@default:default,org.apache.commons.codec@default:default,org.apache.commons.el@default:default,org.apache.commons.httpclient@default:default,org.apache.commons.lang@default:default,org.apache.commons.logging*1.0.4.v201101211617@default:default,org.apache.commons.logging*1.1.1.v201101211721@default:default,org.apache.commons.net@default:default,org.apache.jasper@default:default,org.apache.log4j@default:default,org.apache.lucene.analysis@default:default,org.apache.lucene.core@default:default,org.apache.lucene.highlighter@default:default,org.apache.lucene.memory@default:default,org.apache.lucene.misc@default:default,org.apache.lucene.queries@default:default,org.apache.lucene.snowball@default:default,org.apache.lucene.spellchecker@default:default,org.apache.lucene@default:default,org.apache.oro@default:default,org.apache.xerces@default:default,org.apache.xml.resolver@default:default,org.apache.xml.serializer@default:default,org.eclipse.ant.core@default:default,org.eclipse.ant.launching@default:default,org.eclipse.ant.ui@default:default,org.eclipse.birt.chart.engine@default:default,org.eclipse.birt.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.compare@default:default,org.eclipse.core.boot@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.beans@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.externaltools@default:default,org.eclipse.core.filebuffers@default:default,org.eclipse.core.filesystem.win32.x86_64@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86_64@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.auth@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime.compatibility@default:default,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.cvs@default:default,org.eclipse.debug.core@default:default,org.eclipse.debug.ui@default:default,org.eclipse.draw2d@default:default,org.eclipse.ecf.filetransfer@default:default,org.eclipse.ecf.identity@default:default,org.eclipse.ecf.provider.filetransfer.ssl@default:false,org.eclipse.ecf.provider.filetransfer@default:default,org.eclipse.ecf.ssl@default:false,org.eclipse.ecf@default:default,org.eclipse.emf.codegen.ecore@default:default,org.eclipse.emf.codegen@default:default,org.eclipse.emf.common.ui@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.compare.diff@default:default,org.eclipse.emf.compare.match@default:default,org.eclipse.emf.compare.ui@default:default,org.eclipse.emf.compare@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.edit@default:default,org.eclipse.emf.ecore.editor@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit.ui@default:default,org.eclipse.emf.edit@default:default,org.eclipse.emf.mwe.core@default:default,org.eclipse.emf.mwe.utils@default:default,org.eclipse.emf.mwe2.language@default:default,org.eclipse.emf.mwe2.launch@default:default,org.eclipse.emf.mwe2.lib@default:default,org.eclipse.emf.mwe2.runtime@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.frameworkadmin.equinox@default:default,org.eclipse.equinox.frameworkadmin@default:default,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.http.registry@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.jsp.jasper.registry@default:default,org.eclipse.equinox.jsp.jasper@default:default,org.eclipse.equinox.launcher.win32.win32.x86_64@default:false,org.eclipse.equinox.launcher@default:default,org.eclipse.equinox.p2.artifact.repository@default:default,org.eclipse.equinox.p2.console@default:default,org.eclipse.equinox.p2.core@default:default,org.eclipse.equinox.p2.director.app@default:default,org.eclipse.equinox.p2.director@default:default,org.eclipse.equinox.p2.engine@default:default,org.eclipse.equinox.p2.garbagecollector@default:default,org.eclipse.equinox.p2.jarprocessor@default:default,org.eclipse.equinox.p2.metadata.repository@default:default,org.eclipse.equinox.p2.metadata@default:default,org.eclipse.equinox.p2.operations@default:default,org.eclipse.equinox.p2.publisher.eclipse@default:default,org.eclipse.equinox.p2.publisher@default:default,org.eclipse.equinox.p2.repository.tools@default:default,org.eclipse.equinox.p2.repository@default:default,org.eclipse.equinox.p2.touchpoint.eclipse@default:default,org.eclipse.equinox.p2.ui@default:default,org.eclipse.equinox.p2.updatesite@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.ui@default:default,org.eclipse.equinox.security.win32.x86_64@default:false,org.eclipse.equinox.security@default:default,org.eclipse.equinox.servletbridge.extensionbundle@default:false,org.eclipse.equinox.simpleconfigurator.manipulator@default:default,org.eclipse.equinox.simpleconfigurator@1:true,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.util@default:default,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.gef@default:default,org.eclipse.help.appserver@default:default,org.eclipse.help.base@default:default,org.eclipse.help.ui@default:default,org.eclipse.help.webapp@default:default,org.eclipse.help@default:default,org.eclipse.jdt.apt.core@default:default,org.eclipse.jdt.apt.pluggable.core@default:default,org.eclipse.jdt.apt.ui@default:default,org.eclipse.jdt.compiler.apt@default:false,org.eclipse.jdt.compiler.tool@default:false,org.eclipse.jdt.core.manipulation@default:default,org.eclipse.jdt.core@default:default,org.eclipse.jdt.debug.ui@default:default,org.eclipse.jdt.debug@default:default,org.eclipse.jdt.doc.isv@default:default,org.eclipse.jdt.doc.user@default:default,org.eclipse.jdt.junit.core@default:default,org.eclipse.jdt.junit.runtime@default:default,org.eclipse.jdt.junit4.runtime@default:default,org.eclipse.jdt.junit@default:default,org.eclipse.jdt.launching@default:default,org.eclipse.jdt.ui@default:default,org.eclipse.jdt@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.jsch.core@default:default,org.eclipse.jsch.ui@default:default,org.eclipse.ltk.core.refactoring@default:default,org.eclipse.ltk.ui.refactoring@default:default,org.eclipse.nebula.widgets.calendarcombo@default:default,org.eclipse.nebula.widgets.xviewer@default:default,org.eclipse.osee.framework.svn@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.pde.build@default:default,org.eclipse.pde.core@default:default,org.eclipse.pde.doc.user@default:default,org.eclipse.pde.junit.runtime@default:default,org.eclipse.pde.launching@default:default,org.eclipse.pde.runtime@default:default,org.eclipse.pde.ui.templates@default:default,org.eclipse.pde.ui@default:default,org.eclipse.pde@default:default,org.eclipse.platform.doc.isv@default:default,org.eclipse.platform.doc.user@default:default,org.eclipse.platform@default:default,org.eclipse.rcp@default:default,org.eclipse.sdk@default:default,org.eclipse.search@default:default,org.eclipse.swt.win32.win32.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.team.cvs.core@default:default,org.eclipse.team.cvs.ssh2@default:default,org.eclipse.team.cvs.ui@default:default,org.eclipse.team.svn.core@default:default,org.eclipse.team.svn.ui@default:default,org.eclipse.team.ui@default:default,org.eclipse.text@default:default,org.eclipse.ui.browser@default:default,org.eclipse.ui.cheatsheets@default:default,org.eclipse.ui.console@default:default,org.eclipse.ui.editors@default:default,org.eclipse.ui.externaltools@default:default,org.eclipse.ui.forms@default:default,org.eclipse.ui.ide.application@default:default,org.eclipse.ui.ide@default:default,org.eclipse.ui.intro.universal@default:default,org.eclipse.ui.intro@default:default,org.eclipse.ui.navigator.resources@default:default,org.eclipse.ui.navigator@default:default,org.eclipse.ui.net@default:default,org.eclipse.ui.presentations.r21@default:default,org.eclipse.ui.views.log@default:default,org.eclipse.ui.views.properties.tabbed@default:default,org.eclipse.ui.views@default:default,org.eclipse.ui.win32@default:false,org.eclipse.ui.workbench.compatibility@default:false,org.eclipse.ui.workbench.texteditor@default:default,org.eclipse.ui.workbench@default:default,org.eclipse.ui@default:default,org.eclipse.update.configurator@3:true,org.eclipse.update.core.win32@default:false,org.eclipse.update.core@default:default,org.eclipse.update.scheduler@default:default,org.eclipse.update.ui@default:default,org.eclipse.xpand@default:default,org.eclipse.xtend.typesystem.emf@default:default,org.eclipse.xtend@default:default,org.eclipse.xtext.builder@default:default,org.eclipse.xtext.common.types.ui@default:default,org.eclipse.xtext.common.types@default:default,org.eclipse.xtext.generator@default:default,org.eclipse.xtext.logging@default:false,org.eclipse.xtext.ui.shared@default:default,org.eclipse.xtext.ui@default:default,org.eclipse.xtext.util@default:default,org.eclipse.xtext.xbase.lib@default:default,org.eclipse.xtext.xtend2.lib@default:default,org.eclipse.xtext@default:default,org.eclipse.zest.core@default:default,org.eclipse.zest.layouts@default:default,org.h2@default:default,org.hamcrest.core@default:default,org.junit*4.8.2.v4_8_2_v20110321-1705@default:default,org.mortbay.jetty.server@default:default,org.mortbay.jetty.util@default:default,org.mozilla.javascript@default:default,org.polarion.eclipse.team.svn.connector.svnkit16@default:default,org.sat4j.core@default:default,org.sat4j.pb@default:default,org.slf4j.api@default:default,org.slf4j.jcl@default:default"/>
<stringAttribute key="selected_workspace_plugins" value="jms.activemq.launch@default:default,jms.libraries@default:default,net.jini@default:default,org.eclipse.osee.ats.config.demo.test@default:false,org.eclipse.osee.ats.config.demo@default:default,org.eclipse.osee.ats.core.test@default:false,org.eclipse.osee.ats.core@default:default,org.eclipse.osee.ats.dsl.ui@default:default,org.eclipse.osee.ats.dsl@default:default,org.eclipse.osee.ats.help.ui@default:default,org.eclipse.osee.ats.test@default:false,org.eclipse.osee.ats@default:default,org.eclipse.osee.client.integration.tests@default:default,org.eclipse.osee.coverage.help.ui@default:default,org.eclipse.osee.coverage.test@default:false,org.eclipse.osee.coverage@default:default,org.eclipse.osee.define.test@default:false,org.eclipse.osee.define@default:default,org.eclipse.osee.demo.db.connection@default:default,org.eclipse.osee.framework.access.provider@default:default,org.eclipse.osee.framework.access.test@default:false,org.eclipse.osee.framework.access@default:default,org.eclipse.osee.framework.core.client@default:default,org.eclipse.osee.framework.core.dsl.edit@default:default,org.eclipse.osee.framework.core.dsl.integration.test@default:false,org.eclipse.osee.framework.core.dsl.integration@default:default,org.eclipse.osee.framework.core.dsl.ui.integration.test@default:false,org.eclipse.osee.framework.core.dsl.ui.integration@default:default,org.eclipse.osee.framework.core.dsl.ui@default:default,org.eclipse.osee.framework.core.dsl@default:default,org.eclipse.osee.framework.core.message.test@default:false,org.eclipse.osee.framework.core.message@default:default,org.eclipse.osee.framework.core.model.test@default:false,org.eclipse.osee.framework.core.model@default:default,org.eclipse.osee.framework.core.test@default:false,org.eclipse.osee.framework.core@default:default,org.eclipse.osee.framework.database.init@default:default,org.eclipse.osee.framework.database.test@default:false,org.eclipse.osee.framework.database@default:default,org.eclipse.osee.framework.h2@default:default,org.eclipse.osee.framework.help.ui@default:default,org.eclipse.osee.framework.jdk.core.test@default:false,org.eclipse.osee.framework.jdk.core@default:default,org.eclipse.osee.framework.jini@default:default,org.eclipse.osee.framework.lifecycle.test@default:false,org.eclipse.osee.framework.lifecycle@default:default,org.eclipse.osee.framework.logging.test@default:false,org.eclipse.osee.framework.logging@default:default,org.eclipse.osee.framework.messaging.event.res.test@default:false,org.eclipse.osee.framework.messaging.event.res@default:default,org.eclipse.osee.framework.messaging.event.skynet@default:default,org.eclipse.osee.framework.messaging.test@default:false,org.eclipse.osee.framework.messaging@default:default,org.eclipse.osee.framework.plugin.core@default:default,org.eclipse.osee.framework.skynet.core.test@default:false,org.eclipse.osee.framework.skynet.core@default:default,org.eclipse.osee.framework.templates@default:default,org.eclipse.osee.framework.ui.admin@default:default,org.eclipse.osee.framework.ui.branch.graph@default:default,org.eclipse.osee.framework.ui.data.model.editor@default:default,org.eclipse.osee.framework.ui.jdk@default:default,org.eclipse.osee.framework.ui.plugin@default:default,org.eclipse.osee.framework.ui.product@default:default,org.eclipse.osee.framework.ui.service.control@default:default,org.eclipse.osee.framework.ui.skynet.test@default:false,org.eclipse.osee.framework.ui.skynet@default:default,org.eclipse.osee.framework.ui.swt@default:default,org.eclipse.osee.framework.ui.workspacebundleloader@default:default,org.eclipse.osee.framework.ui.ws@default:default,org.eclipse.osee.logback.config@default:false,org.eclipse.osee.ote.client.msg@default:default,org.eclipse.osee.ote.client@default:default,org.eclipse.osee.ote.connection.jini@default:default,org.eclipse.osee.ote.connection.service@default:default,org.eclipse.osee.ote.core.test@default:false,org.eclipse.osee.ote.core@default:default,org.eclipse.osee.ote.define@default:default,org.eclipse.osee.ote.message.test@default:false,org.eclipse.osee.ote.message@default:default,org.eclipse.osee.ote.messaging.dds@default:default,org.eclipse.osee.ote.runtimeManager@default:default,org.eclipse.osee.ote.ui.define@default:default,org.eclipse.osee.ote.ui.markers@default:default,org.eclipse.osee.ote.ui.test.manager@default:default,org.eclipse.osee.ote.ui@default:default,org.eclipse.osee.support.test.util@default:default,org.postgresql.driver@default:default"/>
<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="timestamp" value="1331763847781"/>
+<stringAttribute key="timestamp" value="1335588896076"/>
<booleanAttribute key="tracing" value="false"/>
<booleanAttribute key="useCustomFeatures" value="false"/>
<booleanAttribute key="useDefaultConfig" value="true"/>
diff --git a/plugins/org.eclipse.osee.framework.access.provider/OSGI-INF/framework.access.control.xml b/plugins/org.eclipse.osee.framework.access.provider/OSGI-INF/framework.access.control.xml
index 08d31ec85d8..942a69aceab 100644
--- a/plugins/org.eclipse.osee.framework.access.provider/OSGI-INF/framework.access.control.xml
+++ b/plugins/org.eclipse.osee.framework.access.provider/OSGI-INF/framework.access.control.xml
@@ -7,4 +7,5 @@
</service>
<property name="default" type="Boolean" value="true"/>
<reference bind="setAccessModelInterpreter" cardinality="1..1" interface="org.eclipse.osee.framework.core.dsl.integration.AccessModelInterpreter" name="AccessModelInterpreter" policy="static"/>
+ <reference bind="setEventService" cardinality="1..1" interface="org.eclipse.osee.framework.skynet.core.event.OseeEventService" name="OseeEventService" policy="static"/>
</scr:component>
diff --git a/plugins/org.eclipse.osee.framework.access.provider/src/org/eclipse/osee/framework/access/provider/internal/FrameworkAccessControlProxy.java b/plugins/org.eclipse.osee.framework.access.provider/src/org/eclipse/osee/framework/access/provider/internal/FrameworkAccessControlProxy.java
index faf79d9c9d4..76840c6398d 100644
--- a/plugins/org.eclipse.osee.framework.access.provider/src/org/eclipse/osee/framework/access/provider/internal/FrameworkAccessControlProxy.java
+++ b/plugins/org.eclipse.osee.framework.access.provider/src/org/eclipse/osee/framework/access/provider/internal/FrameworkAccessControlProxy.java
@@ -29,11 +29,12 @@ import org.eclipse.osee.framework.core.services.CmAccessControl;
import org.eclipse.osee.framework.core.util.Conditions;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventService;
import org.eclipse.osee.framework.skynet.core.event.filter.ArtifactEventFilter;
import org.eclipse.osee.framework.skynet.core.event.filter.ArtifactTypeEventFilter;
import org.eclipse.osee.framework.skynet.core.event.filter.BranchGuidEventFilter;
import org.eclipse.osee.framework.skynet.core.event.filter.IEventFilter;
+import org.eclipse.osee.framework.skynet.core.event.listener.EventQosType;
import org.eclipse.osee.framework.skynet.core.event.listener.IArtifactEventListener;
import org.eclipse.osee.framework.skynet.core.event.listener.IEventListener;
import org.eclipse.osee.framework.skynet.core.event.model.ArtifactEvent;
@@ -48,11 +49,16 @@ public class FrameworkAccessControlProxy implements CmAccessControl, HasAccessMo
private CmAccessControl frameworkAccessControl;
private AccessModel accessModel;
private IEventListener listener;
+ private OseeEventService eventService;
public void setAccessModelInterpreter(AccessModelInterpreter interpreter) {
this.interpreter = interpreter;
}
+ public void setEventService(OseeEventService eventService) {
+ this.eventService = eventService;
+ }
+
public void start() {
FrameworkDslProvider frameworkDslProvider = new FrameworkDslProvider("osee:/xtext/framework.access.osee");
RoleContextProvider roleProvider = new OseeDslRoleContextProvider(frameworkDslProvider);
@@ -61,12 +67,12 @@ public class FrameworkAccessControlProxy implements CmAccessControl, HasAccessMo
frameworkAccessControl = new FrameworkAccessControl(roleProvider);
listener = new DslUpdateListener(frameworkDslProvider);
- OseeEventManager.addListener(listener);
+ eventService.addListener(EventQosType.NORMAL, listener);
}
public void stop() {
if (listener != null) {
- OseeEventManager.removeListener(listener);
+ eventService.removeListener(EventQosType.NORMAL, listener);
listener = null;
}
frameworkAccessControl = null;
diff --git a/plugins/org.eclipse.osee.framework.access/OSGI-INF/access.control.service.xml b/plugins/org.eclipse.osee.framework.access/OSGI-INF/access.control.service.xml
index 8ac54f9891a..fc7b8e278f8 100644
--- a/plugins/org.eclipse.osee.framework.access/OSGI-INF/access.control.service.xml
+++ b/plugins/org.eclipse.osee.framework.access/OSGI-INF/access.control.service.xml
@@ -7,4 +7,5 @@
<reference bind="setDbService" cardinality="1..1" interface="org.eclipse.osee.framework.database.IOseeDatabaseService" name="IOseeDatabaseService" policy="static"/>
<reference bind="setCachingService" cardinality="1..1" interface="org.eclipse.osee.framework.core.services.IOseeCachingService" name="IOseeCachingService" policy="static"/>
<reference bind="setIdentityService" cardinality="1..1" interface="org.eclipse.osee.framework.core.services.IdentityService" name="IdentityService" policy="static"/>
-</scr:component> \ No newline at end of file
+ <reference bind="setEventService" cardinality="1..1" interface="org.eclipse.osee.framework.skynet.core.event.OseeEventService" name="OseeEventService" policy="static"/>
+</scr:component>
diff --git a/plugins/org.eclipse.osee.framework.access/OSGI-INF/object.access.provider.xml b/plugins/org.eclipse.osee.framework.access/OSGI-INF/object.access.provider.xml
index f1bd825d7ed..930f58a61de 100644
--- a/plugins/org.eclipse.osee.framework.access/OSGI-INF/object.access.provider.xml
+++ b/plugins/org.eclipse.osee.framework.access/OSGI-INF/object.access.provider.xml
@@ -4,5 +4,4 @@
<service>
<provide interface="org.eclipse.osee.framework.access.IAccessProvider"/>
</service>
- <reference bind="setAccessControlService" cardinality="1..1" interface="org.eclipse.osee.framework.core.services.IAccessControlService" name="IAccessControlService" policy="static"/>
</scr:component>
diff --git a/plugins/org.eclipse.osee.framework.access/OSGI-INF/static.access.control.helper.xml b/plugins/org.eclipse.osee.framework.access/OSGI-INF/static.access.control.helper.xml
deleted file mode 100644
index 6190fd28d33..00000000000
--- a/plugins/org.eclipse.osee.framework.access/OSGI-INF/static.access.control.helper.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osee.framework.access.internal.AccessControlHelper">
- <implementation class="org.eclipse.osee.framework.access.internal.AccessControlHelper"/>
- <reference bind="setAccessControlService" cardinality="1..1" interface="org.eclipse.osee.framework.core.services.IAccessControlService" name="IAccessControlService" policy="static"/>
-</scr:component>
diff --git a/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/AccessControlManager.java b/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/AccessControlManager.java
index 677f156faeb..3a2efdb8e74 100644
--- a/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/AccessControlManager.java
+++ b/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/AccessControlManager.java
@@ -13,8 +13,8 @@ package org.eclipse.osee.framework.access;
import java.util.Collection;
import java.util.logging.Level;
-import org.eclipse.osee.framework.access.internal.AccessControlService;
import org.eclipse.osee.framework.access.internal.AccessControlHelper;
+import org.eclipse.osee.framework.access.internal.AccessControlService;
import org.eclipse.osee.framework.core.enums.PermissionEnum;
import org.eclipse.osee.framework.core.exception.OseeAuthenticationRequiredException;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
@@ -34,7 +34,12 @@ public final class AccessControlManager {
}
public static AccessControlService getService() {
- AccessControlService accessService = AccessControlHelper.getAccessControlService();
+ AccessControlService accessService = null;
+ try {
+ accessService = AccessControlHelper.getAccessControlService();
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AccessControlHelper.class, Level.SEVERE, "Acquiring Access Control Service", ex);
+ }
if (accessService == null) {
OseeLog.log(AccessControlHelper.class, Level.SEVERE, "Access Service was null");
}
@@ -70,7 +75,13 @@ public final class AccessControlManager {
}
public static boolean isOseeAdmin() throws OseeCoreException {
- return getService().isOseeAdmin();
+ AccessControlService service = null;
+ try {
+ service = AccessControlHelper.getAccessControlService();
+ } catch (Exception ex) {
+ // Do nothing;
+ }
+ return service != null ? service.isOseeAdmin() : false;
}
public static Collection<AccessControlData> getAccessControlList(Object object) {
diff --git a/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/AccessControlHelper.java b/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/AccessControlHelper.java
index 11f2d4cd21f..eadc6b11863 100644
--- a/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/AccessControlHelper.java
+++ b/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/AccessControlHelper.java
@@ -10,26 +10,46 @@
*******************************************************************************/
package org.eclipse.osee.framework.access.internal;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
import org.eclipse.osee.framework.core.services.IAccessControlService;
+import org.eclipse.osee.framework.core.util.Conditions;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
public final class AccessControlHelper {
public static final String PLUGIN_ID = "org.eclipse.osee.framework.access";
- private static AccessControlService accessControlService;
+ private AccessControlHelper() {
+ // Utility class
+ }
- public void setAccessControlService(IAccessControlService accessControlService) {
- if (accessControlService instanceof AccessControlServiceProxy) {
- AccessControlHelper.accessControlService =
- ((AccessControlServiceProxy) accessControlService).getProxiedObject();
- } else {
- AccessControlHelper.accessControlService = null;
- }
+ private static BundleContext getBundleContext() throws OseeCoreException {
+ Bundle bundle = FrameworkUtil.getBundle(AccessControlHelper.class);
+ Conditions.checkNotNull(bundle, "bundle");
+ return bundle.getBundleContext();
+ }
+
+ private static <T> T getService(Class<T> clazz) throws OseeCoreException {
+ BundleContext context = getBundleContext();
+ Conditions.checkNotNull(context, "bundleContext");
+ ServiceReference<T> reference = context.getServiceReference(clazz);
+ Conditions.checkNotNull(reference, "serviceReference");
+ T service = context.getService(reference);
+ Conditions.checkNotNull(service, "service");
+ return service;
}
@Deprecated
- public static AccessControlService getAccessControlService() {
- return accessControlService;
+ public static AccessControlService getAccessControlService() throws OseeCoreException {
+ IAccessControlService service = getService(IAccessControlService.class);
+ AccessControlService toReturn = null;
+ if (service instanceof AccessControlServiceProxy) {
+ toReturn = ((AccessControlServiceProxy) service).getProxiedObject();
+ }
+ return toReturn;
}
}
diff --git a/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/AccessControlService.java b/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/AccessControlService.java
index 1a04b349271..0a1eef7517b 100644
--- a/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/AccessControlService.java
+++ b/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/AccessControlService.java
@@ -61,11 +61,12 @@ 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.BranchManager;
import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQuery;
-import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventService;
import org.eclipse.osee.framework.skynet.core.event.filter.ArtifactEventFilter;
import org.eclipse.osee.framework.skynet.core.event.filter.ArtifactTypeEventFilter;
import org.eclipse.osee.framework.skynet.core.event.filter.BranchGuidEventFilter;
import org.eclipse.osee.framework.skynet.core.event.filter.IEventFilter;
+import org.eclipse.osee.framework.skynet.core.event.listener.EventQosType;
import org.eclipse.osee.framework.skynet.core.event.listener.IArtifactEventListener;
import org.eclipse.osee.framework.skynet.core.event.model.AccessControlEvent;
import org.eclipse.osee.framework.skynet.core.event.model.AccessControlEventType;
@@ -121,14 +122,22 @@ public class AccessControlService implements IAccessControlService {
private final IOseeCachingService cachingService;
private final IOseeDatabaseService databaseService;
private final IdentityService identityService;
- private AccessControlUpdateListener eventListener;
+ private final OseeEventService eventService;
- public AccessControlService(IOseeDatabaseService databaseService, IOseeCachingService cachingService, IdentityService identityService) {
+ private IArtifactEventListener listener1;
+ private IArtifactEventListener listener2;
+
+ public AccessControlService(IOseeDatabaseService databaseService, IOseeCachingService cachingService, IdentityService identityService, OseeEventService eventService) {
super();
this.databaseService = databaseService;
this.cachingService = cachingService;
this.identityService = identityService;
- OseeEventManager.addListener(new AccessControlUpdateListener());
+ this.eventService = eventService;
+ }
+
+ public void start() {
+ listener1 = new AccessControlUpdateListener();
+ eventService.addListener(EventQosType.NORMAL, listener1);
if (!DbUtil.isDbInit()) {
try {
@@ -139,6 +148,17 @@ public class AccessControlService implements IAccessControlService {
}
}
+ public void stop() {
+ if (listener1 != null) {
+ eventService.removeListener(EventQosType.NORMAL, listener1);
+ listener1 = null;
+ }
+ if (listener2 != null) {
+ eventService.removeListener(EventQosType.NORMAL, listener2);
+ listener2 = null;
+ }
+ }
+
private ArtifactTypeCache getArtifactTypeCache() {
return cachingService.getArtifactTypeCache();
}
@@ -308,9 +328,9 @@ public class AccessControlService implements IAccessControlService {
}
}
- if (eventListener == null) {
- eventListener = new AccessControlUpdateListener((Artifact) userArtifact.getFullArtifact());
- OseeEventManager.addListener(eventListener);
+ if (listener2 == null) {
+ listener2 = new AccessControlUpdateListener((Artifact) userArtifact.getFullArtifact());
+ eventService.addListener(EventQosType.NORMAL, listener2);
}
if (!accessDataCache.containsKey(key)) {
@@ -616,7 +636,7 @@ public class AccessControlService implements IAccessControlService {
}
}
try {
- OseeEventManager.kickAccessControlArtifactsEvent(this, event);
+ eventService.send(this, event);
} catch (Exception ex) {
OseeLog.log(AccessControlHelper.class, Level.SEVERE, ex);
}
@@ -645,7 +665,7 @@ public class AccessControlService implements IAccessControlService {
}
}
try {
- OseeEventManager.kickAccessControlArtifactsEvent(this, event);
+ eventService.send(this, event);
} catch (Exception ex) {
OseeLog.log(AccessControlHelper.class, Level.SEVERE, ex);
}
diff --git a/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/AccessControlServiceProxy.java b/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/AccessControlServiceProxy.java
index f4604f4c700..62723c241d3 100644
--- a/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/AccessControlServiceProxy.java
+++ b/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/AccessControlServiceProxy.java
@@ -23,16 +23,19 @@ import org.eclipse.osee.framework.core.services.IdentityService;
import org.eclipse.osee.framework.core.util.Conditions;
import org.eclipse.osee.framework.database.IOseeDatabaseService;
import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventService;
+import org.eclipse.osee.framework.skynet.core.event.listener.EventQosType;
public final class AccessControlServiceProxy implements IAccessControlService {
private IOseeDatabaseService dbService;
private IOseeCachingService cachingService;
private IdentityService identityService;
+ private OseeEventService eventService;
private AccessControlService accessService;
private AccessEventListener accessEventListener;
+ private Thread thread;
public void setDbService(IOseeDatabaseService dbService) {
this.dbService = dbService;
@@ -46,6 +49,10 @@ public final class AccessControlServiceProxy implements IAccessControlService {
this.identityService = identityService;
}
+ public void setEventService(OseeEventService eventService) {
+ this.eventService = eventService;
+ }
+
public AccessControlService getProxiedObject() {
return accessService;
}
@@ -59,23 +66,41 @@ public final class AccessControlServiceProxy implements IAccessControlService {
}
public void start() {
- accessService = new AccessControlService(dbService, cachingService, identityService);
+ accessService = new AccessControlService(dbService, cachingService, identityService, eventService);
accessEventListener = new AccessEventListener(accessService, new AccessControlCacheHandler());
- OseeEventManager.addPriorityListener(accessEventListener);
+ eventService.addListener(EventQosType.PRIORITY, accessEventListener);
+
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ accessService.start();
+ }
+ };
+
+ thread = new Thread(runnable);
+ thread.start();
}
public void stop() {
+ if (thread != null) {
+ thread.interrupt();
+ thread = null;
+ }
+
if (accessEventListener != null) {
- OseeEventManager.removeListener(accessEventListener);
+ eventService.removeListener(EventQosType.PRIORITY, accessEventListener);
accessEventListener = null;
}
- accessService = null;
+
+ if (accessService != null) {
+ accessService.stop();
+ accessService = null;
+ }
}
private void checkInitialized() throws OseeCoreException {
Conditions.checkNotNull(accessService, "accessService", "Access Service not properly initialized");
- Conditions.checkNotNull(accessEventListener, "accessEventListener", "Access Service not properly initialized");
}
@Override
diff --git a/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/ObjectAccessProvider.java b/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/ObjectAccessProvider.java
deleted file mode 100644
index 91b75704d22..00000000000
--- a/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/ObjectAccessProvider.java
+++ /dev/null
@@ -1,77 +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.access.internal;
-
-import java.util.Collection;
-import org.eclipse.osee.framework.access.IAccessProvider;
-import org.eclipse.osee.framework.core.data.IOseeBranch;
-import org.eclipse.osee.framework.core.enums.PermissionEnum;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.core.model.Branch;
-import org.eclipse.osee.framework.core.model.IBasicArtifact;
-import org.eclipse.osee.framework.core.model.access.AccessData;
-import org.eclipse.osee.framework.core.model.access.AccessDetail;
-import org.eclipse.osee.framework.core.model.access.Scope;
-import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
-import org.eclipse.osee.framework.skynet.core.relation.RelationLink;
-
-public class ObjectAccessProvider implements IAccessProvider {
-
- private final AccessControlService accessService;
-
- public ObjectAccessProvider(AccessControlService accessService) {
- this.accessService = accessService;
- }
-
- @Override
- public void computeAccess(IBasicArtifact<?> userArtifact, Collection<?> objToCheck, AccessData accessData) throws OseeCoreException {
- for (Object object : objToCheck) {
- if (object instanceof Artifact) {
- setArtifactAccessData(userArtifact, (Artifact) object, accessData);
- } else if (object instanceof Branch) {
- setBranchAccessData(userArtifact, (Branch) object, accessData);
- } else if (object instanceof RelationLink) {
- RelationLink relation = (RelationLink) object;
- Artifact artifactA = relation.getArtifactA();
- Artifact artifactB = relation.getArtifactB();
- setArtifactAccessData(userArtifact, artifactA, accessData);
- setArtifactAccessData(userArtifact, artifactB, accessData);
- }
- }
- }
-
- private void setArtifactAccessData(IBasicArtifact<?> userArtifact, Artifact artifact, AccessData accessData) throws OseeCoreException {
- setBranchAccessData(userArtifact, artifact.getBranch(), accessData);
- String reason = "Legacy Artifact Permission";
- PermissionEnum userPermission = accessService.getArtifactPermission(userArtifact, artifact);
-
- if (userPermission == null) {
- reason = "User Permission was null in setArtifactAccessData - artifact is read only";
- userPermission = PermissionEnum.READ;
- } else if (artifact.isHistorical()) {
- userPermission = PermissionEnum.READ;
- reason = "User Permission set to Read - artifact is historical - artifact is read only";
- } else if (!artifact.getFullBranch().isEditable()) {
- userPermission = PermissionEnum.READ;
- reason = "User Permission set to Read - artifact's branch is not editable - artifact is read only";
- }
- //artifact.isDeleted()
- accessData.add(artifact,
- new AccessDetail<IBasicArtifact<Artifact>>(artifact, userPermission, Scope.createLegacyScope(), reason));
- }
-
- private void setBranchAccessData(IBasicArtifact<?> userArtifact, IOseeBranch branch, AccessData accessData) throws OseeCoreException {
- String reason = "Legacy Branch Permission";
- PermissionEnum userPermission = accessService.getBranchPermission(userArtifact, branch);
- accessData.add(branch, new AccessDetail<IOseeBranch>(branch, userPermission, Scope.createLegacyScope(), reason));
- }
-
-}
diff --git a/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/ObjectAccessProviderProxy.java b/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/ObjectAccessProviderProxy.java
index 76f11701450..4f7c6a8eee8 100644
--- a/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/ObjectAccessProviderProxy.java
+++ b/plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/ObjectAccessProviderProxy.java
@@ -13,47 +13,89 @@ package org.eclipse.osee.framework.access.internal;
import java.util.Collection;
import java.util.logging.Level;
import org.eclipse.osee.framework.access.IAccessProvider;
+import org.eclipse.osee.framework.core.data.IOseeBranch;
+import org.eclipse.osee.framework.core.enums.PermissionEnum;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.model.Branch;
import org.eclipse.osee.framework.core.model.IBasicArtifact;
import org.eclipse.osee.framework.core.model.access.AccessData;
+import org.eclipse.osee.framework.core.model.access.AccessDetail;
+import org.eclipse.osee.framework.core.model.access.Scope;
import org.eclipse.osee.framework.core.services.IAccessControlService;
-import org.eclipse.osee.framework.core.util.Conditions;
import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.relation.RelationLink;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
public final class ObjectAccessProviderProxy implements IAccessProvider {
- private IAccessProvider accessProvider;
- private IAccessControlService accessControlService;
+ private BundleContext bundleContext;
- public void setAccessControlService(IAccessControlService accessControlService) {
- this.accessControlService = accessControlService;
+ public void start(BundleContext bundleContext) {
+ this.bundleContext = bundleContext;
}
- public void start() {
- if (accessControlService instanceof AccessControlServiceProxy) {
- AccessControlServiceProxy proxy = (AccessControlServiceProxy) accessControlService;
- accessProvider = new ObjectAccessProvider(proxy.getProxiedObject());
+ public void stop() {
+ bundleContext = null;
+ }
+
+ private AccessControlService getAccessService() {
+ AccessControlService toReturn = null;
+
+ ServiceReference<IAccessControlService> reference =
+ bundleContext.getServiceReference(IAccessControlService.class);
+ IAccessControlService service = bundleContext.getService(reference);
+ if (service instanceof AccessControlServiceProxy) {
+ AccessControlServiceProxy proxy = (AccessControlServiceProxy) service;
+ toReturn = proxy.getProxiedObject();
} else {
OseeLog.log(AccessControlHelper.class, Level.SEVERE, "Error initializing ObjectAccessProvider");
}
+ return toReturn;
}
- public void stop() {
- accessProvider = null;
+ @Override
+ public void computeAccess(IBasicArtifact<?> userArtifact, Collection<?> objToCheck, AccessData accessData) throws OseeCoreException {
+ for (Object object : objToCheck) {
+ if (object instanceof Artifact) {
+ setArtifactAccessData(userArtifact, (Artifact) object, accessData);
+ } else if (object instanceof Branch) {
+ setBranchAccessData(userArtifact, (Branch) object, accessData);
+ } else if (object instanceof RelationLink) {
+ RelationLink relation = (RelationLink) object;
+ Artifact artifactA = relation.getArtifactA();
+ Artifact artifactB = relation.getArtifactB();
+ setArtifactAccessData(userArtifact, artifactA, accessData);
+ setArtifactAccessData(userArtifact, artifactB, accessData);
+ }
+ }
}
- public IAccessProvider getAccessProvider() {
- return accessProvider;
- }
+ private void setArtifactAccessData(IBasicArtifact<?> userArtifact, Artifact artifact, AccessData accessData) throws OseeCoreException {
+ setBranchAccessData(userArtifact, artifact.getBranch(), accessData);
+ String reason = "Legacy Artifact Permission";
+ PermissionEnum userPermission = getAccessService().getArtifactPermission(userArtifact, artifact);
- private void checkInitialized() throws OseeCoreException {
- Conditions.checkNotNull(getAccessProvider(), "object access provider",
- "Object Access Provider not properly initialized");
+ if (userPermission == null) {
+ reason = "User Permission was null in setArtifactAccessData - artifact is read only";
+ userPermission = PermissionEnum.READ;
+ } else if (artifact.isHistorical()) {
+ userPermission = PermissionEnum.READ;
+ reason = "User Permission set to Read - artifact is historical - artifact is read only";
+ } else if (!artifact.getFullBranch().isEditable()) {
+ userPermission = PermissionEnum.READ;
+ reason = "User Permission set to Read - artifact's branch is not editable - artifact is read only";
+ }
+ //artifact.isDeleted()
+ accessData.add(artifact,
+ new AccessDetail<IBasicArtifact<Artifact>>(artifact, userPermission, Scope.createLegacyScope(), reason));
}
- @Override
- public void computeAccess(IBasicArtifact<?> userArtifact, Collection<?> objToCheck, AccessData accessData) throws OseeCoreException {
- checkInitialized();
- getAccessProvider().computeAccess(userArtifact, objToCheck, accessData);
+ private void setBranchAccessData(IBasicArtifact<?> userArtifact, IOseeBranch branch, AccessData accessData) throws OseeCoreException {
+ String reason = "Legacy Branch Permission";
+ PermissionEnum userPermission = getAccessService().getBranchPermission(userArtifact, branch);
+ accessData.add(branch, new AccessDetail<IOseeBranch>(branch, userPermission, Scope.createLegacyScope(), reason));
}
+
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/FrameworkCore_Demo_Suite.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/FrameworkCore_Demo_Suite.java
index 505a9c334c7..529537188ac 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/FrameworkCore_Demo_Suite.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/FrameworkCore_Demo_Suite.java
@@ -13,54 +13,94 @@ package org.eclipse.osee.framework.skynet.core;
import static org.junit.Assert.assertTrue;
import org.eclipse.osee.framework.core.client.ClientSessionManager;
import org.eclipse.osee.framework.jdk.core.util.OseeProperties;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactCacheQueryTest;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactPurgeTest;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTestSuite;
+import org.eclipse.osee.framework.skynet.core.artifact.ArtifactTypeInheritanceTest;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact_getLastModified;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact_setAttributeValues;
+import org.eclipse.osee.framework.skynet.core.artifact.AttributePurgeTest;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchPurgeTest;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchStateTest;
+import org.eclipse.osee.framework.skynet.core.artifact.ChangeManagerTest;
+import org.eclipse.osee.framework.skynet.core.artifact.DuplicateHridTest;
+import org.eclipse.osee.framework.skynet.core.artifact.NativeArtifactTest;
+import org.eclipse.osee.framework.skynet.core.artifact.PurgeTransactionTest;
+import org.eclipse.osee.framework.skynet.core.artifact.RelationDeletionTest;
+import org.eclipse.osee.framework.skynet.core.artifact.RelationOrderingTest;
+import org.eclipse.osee.framework.skynet.core.artifact.ReplaceAttributeWithTest;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactLoaderTest;
+import org.eclipse.osee.framework.skynet.core.artifact.search.ArtifactQueryTestDemo;
+import org.eclipse.osee.framework.skynet.core.branch.BranchSuite;
+import org.eclipse.osee.framework.skynet.core.event.filter.ArtifactEventFiltersTest;
+import org.eclipse.osee.framework.skynet.core.event.filter.BranchEventFiltersTest;
+import org.eclipse.osee.framework.skynet.core.event.model.ArtifactEventLoopbackTest;
+import org.eclipse.osee.framework.skynet.core.event.model.ArtifactEventTest;
+import org.eclipse.osee.framework.skynet.core.event.model.BranchEventLoopbackTest;
+import org.eclipse.osee.framework.skynet.core.event.model.BranchEventTest;
+import org.eclipse.osee.framework.skynet.core.event.model.EventBasicGuidArtifactTest;
+import org.eclipse.osee.framework.skynet.core.event.model.EventBasicGuidRelationTest;
+import org.eclipse.osee.framework.skynet.core.event.model.EventChangeTypeBasicGuidArtifactTest;
+import org.eclipse.osee.framework.skynet.core.event.model.TransactionEventLocalTest;
+import org.eclipse.osee.framework.skynet.core.event.model.TransactionEventRemoteTest;
import org.eclipse.osee.framework.skynet.core.event.systems.FrameworkEventToRemoteEventListenerTest;
+import org.eclipse.osee.framework.skynet.core.importing.ImportingSuite;
+import org.eclipse.osee.framework.skynet.core.importing.parsers.ParsersSuite;
+import org.eclipse.osee.framework.skynet.core.internal.event.EventTestSuite;
+import org.eclipse.osee.framework.skynet.core.relation.CrossBranchLinkTest;
+import org.eclipse.osee.framework.skynet.core.relation.RelationTestSuite;
+import org.eclipse.osee.framework.skynet.core.revision.ConflictTest;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionTestSuite;
+import org.eclipse.osee.framework.skynet.core.utility.CsvArtifactTest;
+import org.eclipse.osee.framework.skynet.core.word.UpdateBookmarkIdTest;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
-@Suite.SuiteClasses({FrameworkEventToRemoteEventListenerTest.class,
-// BranchSuite.class,
-// UserManagerTest.class,
-// ReplaceAttributeWithTest.class,
-// AttributePurgeTest.class,
-// CrossBranchLinkTest.class,
-// UpdateBookmarkIdTest.class,
-// ArtifactEventFiltersTest.class,
-// BranchEventFiltersTest.class,
-// BranchEventTest.class,
-// BranchEventLoopbackTest.class,
-// ArtifactLoaderTest.class,
-// ArtifactEventTest.class,
-// ArtifactEventLoopbackTest.class,
-// TransactionEventLocalTest.class,
-// TransactionEventRemoteTest.class,
-// EventBasicGuidArtifactTest.class,
-// EventBasicGuidRelationTest.class,
-// EventChangeTypeBasicGuidArtifactTest.class,
-// ArtifactQueryTestDemo.class,
-// TransactionTestSuite.class,
-// ArtifactTestSuite.class,
-// RelationTestSuite.class,
-// ArtifactTypeInheritanceTest.class,
-// ArtifactPurgeTest.class,
-// BranchPurgeTest.class,
-// PurgeTransactionTest.class,
-// Artifact_setAttributeValues.class,
-// Artifact_getLastModified.class,
-// CsvArtifactTest.class,
-// NativeArtifactTest.class,
-// ConflictTest.class,
-// ChangeManagerTest.class,
-// RelationDeletionTest.class,
-// ArtifactCacheQueryTest.class,
-// BranchStateTest.class,
-// DuplicateHridTest.class,
-// RelationOrderingTest.class,
-// ImportingSuite.class,
-// ParsersSuite.class
-})
+@Suite.SuiteClasses({
+ EventTestSuite.class,
+ FrameworkEventToRemoteEventListenerTest.class,
+ BranchSuite.class,
+ UserManagerTest.class,
+ ReplaceAttributeWithTest.class,
+ AttributePurgeTest.class,
+ CrossBranchLinkTest.class,
+ UpdateBookmarkIdTest.class,
+ ArtifactEventFiltersTest.class,
+ BranchEventFiltersTest.class,
+ BranchEventTest.class,
+ BranchEventLoopbackTest.class,
+ ArtifactLoaderTest.class,
+ ArtifactEventTest.class,
+ ArtifactEventLoopbackTest.class,
+ TransactionEventLocalTest.class,
+ TransactionEventRemoteTest.class,
+ EventBasicGuidArtifactTest.class,
+ EventBasicGuidRelationTest.class,
+ EventChangeTypeBasicGuidArtifactTest.class,
+ ArtifactQueryTestDemo.class,
+ TransactionTestSuite.class,
+ ArtifactTestSuite.class,
+ RelationTestSuite.class,
+ ArtifactTypeInheritanceTest.class,
+ ArtifactPurgeTest.class,
+ BranchPurgeTest.class,
+ PurgeTransactionTest.class,
+ Artifact_setAttributeValues.class,
+ Artifact_getLastModified.class,
+ CsvArtifactTest.class,
+ NativeArtifactTest.class,
+ ConflictTest.class,
+ ChangeManagerTest.class,
+ RelationDeletionTest.class,
+ ArtifactCacheQueryTest.class,
+ BranchStateTest.class,
+ DuplicateHridTest.class,
+ RelationOrderingTest.class,
+ ImportingSuite.class,
+ ParsersSuite.class})
/**
* @author Donald G. Dunne
*/
diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/event/filter/ArtifactEventFiltersTest.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/event/filter/ArtifactEventFiltersTest.java
index b06ac363267..a5f72eb2133 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/event/filter/ArtifactEventFiltersTest.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/event/filter/ArtifactEventFiltersTest.java
@@ -17,6 +17,7 @@ import junit.framework.Assert;
import org.eclipse.osee.framework.core.data.IOseeBranch;
import org.eclipse.osee.framework.core.data.TokenFactory;
import org.eclipse.osee.framework.core.enums.CoreArtifactTypes;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
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;
@@ -99,7 +100,8 @@ public class ArtifactEventFiltersTest {
resultSender = null;
// Send dummy event
- Sender sender = new Sender(new NetworkSender(this, GUID.create(), "PC", "12345", "123.234.345.456", 34, "1.0.0"));
+ Sender sender =
+ Sender.createSender(new NetworkSender(this, GUID.create(), "PC", "12345", "123.234.345.456", 34, "1.0.0"));
processEventArtifactsAndRelations(sender, testArtifactEvent);
// Test that event DID come through
@@ -155,7 +157,8 @@ public class ArtifactEventFiltersTest {
resultSender = null;
// Send dummy event
- Sender sender = new Sender(new NetworkSender(this, GUID.create(), "PC", "12345", "123.234.345.456", 34, "1.0.0"));
+ Sender sender =
+ Sender.createSender(new NetworkSender(this, GUID.create(), "PC", "12345", "123.234.345.456", 34, "1.0.0"));
processEventArtifactsAndRelations(sender, testArtifactEvent);
// Test that event DID come through
@@ -190,7 +193,7 @@ public class ArtifactEventFiltersTest {
}
- private static void processEventArtifactsAndRelations(Sender sender, ArtifactEvent artifactEvent) {
+ private static void processEventArtifactsAndRelations(Sender sender, ArtifactEvent artifactEvent) throws OseeCoreException {
OseeEventManager.internalTestProcessEventArtifactsAndRelations(sender, artifactEvent);
}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/event/filter/BranchEventFiltersTest.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/event/filter/BranchEventFiltersTest.java
index 4a4d199e56e..e0c176a1a39 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/event/filter/BranchEventFiltersTest.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/event/filter/BranchEventFiltersTest.java
@@ -14,6 +14,7 @@ import java.util.Arrays;
import java.util.List;
import org.eclipse.osee.framework.core.data.IOseeBranch;
import org.eclipse.osee.framework.core.data.TokenFactory;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
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;
@@ -64,7 +65,8 @@ public class BranchEventFiltersTest {
resultSender = null;
// Send dummy event
- Sender sender = new Sender(new NetworkSender(this, GUID.create(), "PC", "12345", "123.234.345.456", 34, "1.0.0"));
+ Sender sender =
+ Sender.createSender(new NetworkSender(this, GUID.create(), "PC", "12345", "123.234.345.456", 34, "1.0.0"));
processBranchEvent(sender, testBranchEvent);
// Test that event did come through
@@ -104,7 +106,7 @@ public class BranchEventFiltersTest {
TestUtil.severeLoggingEnd(monitorLog);
}
- private static void processBranchEvent(Sender sender, BranchEvent branchEvent) {
+ private static void processBranchEvent(Sender sender, BranchEvent branchEvent) throws OseeCoreException {
OseeEventManager.internalTestProcessBranchEvent(sender, branchEvent);
}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/event/model/BranchEventTest.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/event/model/BranchEventTest.java
index c605e64e40d..5fbe30c1f1d 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/event/model/BranchEventTest.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/event/model/BranchEventTest.java
@@ -39,7 +39,9 @@ import org.eclipse.osee.framework.skynet.core.event.filter.IEventFilter;
import org.eclipse.osee.framework.skynet.core.event.listener.IBranchEventListener;
import org.eclipse.osee.framework.skynet.core.httpRequests.PurgeBranchHttpRequestOperation;
import org.eclipse.osee.support.test.util.TestUtil;
+import org.junit.After;
import org.junit.AfterClass;
+import org.junit.Before;
/**
* @author Donald G. Dunne
@@ -51,7 +53,17 @@ public class BranchEventTest {
private static String TOP_LEVEL_BRANCH_NAME = String.format("%s - top level branch", BRANCH_NAME_PREFIX);
private static Branch topLevel;
- private final BranchEventListener branchEventListener = new BranchEventListener();
+ private BranchEventListener branchEventListener;
+
+ @Before
+ public void setup() {
+ branchEventListener = new BranchEventListener();
+ }
+
+ @After
+ public void tearDown() {
+ branchEventListener = new BranchEventListener();
+ }
@AfterClass
public static void cleanUp() throws OseeCoreException {
diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/event/systems/FrameworkEventToRemoteEventListenerTest.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/event/systems/FrameworkEventToRemoteEventListenerTest.java
index 4b5498939c0..fa914e4073a 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/event/systems/FrameworkEventToRemoteEventListenerTest.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/event/systems/FrameworkEventToRemoteEventListenerTest.java
@@ -10,10 +10,8 @@
*******************************************************************************/
package org.eclipse.osee.framework.skynet.core.event.systems;
-import java.rmi.RemoteException;
import java.util.Collections;
import java.util.List;
-import org.eclipse.core.runtime.CoreException;
import org.eclipse.osee.framework.core.data.IOseeBranch;
import org.eclipse.osee.framework.core.enums.CoreArtifactTypes;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
@@ -66,13 +64,9 @@ public class FrameworkEventToRemoteEventListenerTest {
* which already has a convenience method for passing in a sample RemoteEvent to the
* FrameworkEventToRemoteEventListener. The test needed here is to verify that the Artifact.transactionId field is
* updated by the recipient of a remote event.
- *
- * @throws CoreException
- * @throws InterruptedException
- * @throws RemoteException
*/
@Test
- public void testUpdateModifiedArtifact() throws CoreException, InterruptedException, RemoteException {
+ public void testUpdateModifiedArtifact() throws Exception {
Artifact artifact = createArtifact(branch, ARTIFACT_NAME_1);
artifact.persist(getClass().getSimpleName());
diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/internal/event/EventHandlersTest.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/internal/event/EventHandlersTest.java
new file mode 100644
index 00000000000..b14f84a6da7
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/internal/event/EventHandlersTest.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * 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.internal.event;
+
+import junit.framework.Assert;
+import org.eclipse.osee.framework.core.enums.CoreBranches;
+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.skynet.core.event.model.AccessControlEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.ArtifactEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.TransactionEvent;
+import org.eclipse.osee.framework.skynet.core.internal.event.handlers.AccessControlEventHandler;
+import org.eclipse.osee.framework.skynet.core.internal.event.handlers.AccessControlRemoteEventHandler;
+import org.eclipse.osee.framework.skynet.core.internal.event.handlers.ArtifactEventHandler;
+import org.eclipse.osee.framework.skynet.core.internal.event.handlers.BranchRemoteEventHandler;
+import org.junit.Test;
+
+/**
+ * Test Case for @{link EventHandlers}
+ *
+ * @author Roberto E. Escobar
+ */
+public class EventHandlersTest {
+
+ @Test
+ public void test() {
+ EventHandlers handlers = new EventHandlers();
+
+ EventHandlerLocal<?, ?> local1 = new AccessControlEventHandler();
+ EventHandlerLocal<?, ?> local2 = new ArtifactEventHandler();
+
+ EventHandlerRemote<?> remote1 = new AccessControlRemoteEventHandler();
+ EventHandlerRemote<?> remote2 = new BranchRemoteEventHandler();
+
+ handlers.addLocalHandler(AccessControlEvent.class, local1);
+ Assert.assertEquals(1, handlers.sizeLocal());
+ Assert.assertEquals(0, handlers.sizeRemote());
+
+ handlers.addLocalHandler(ArtifactEvent.class, local2);
+ Assert.assertEquals(2, handlers.sizeLocal());
+ Assert.assertEquals(0, handlers.sizeRemote());
+
+ handlers.addRemoteHandler(RemoteAccessControlEvent1.class, remote1);
+ Assert.assertEquals(2, handlers.sizeLocal());
+ Assert.assertEquals(1, handlers.sizeRemote());
+
+ handlers.addRemoteHandler(RemoteBranchEvent1.class, remote2);
+ Assert.assertEquals(2, handlers.sizeLocal());
+ Assert.assertEquals(2, handlers.sizeRemote());
+
+ Assert.assertEquals(local1, handlers.getLocalHandler(new AccessControlEvent()));
+ Assert.assertEquals(local2, handlers.getLocalHandler(new ArtifactEvent(CoreBranches.COMMON)));
+ Assert.assertNull(handlers.getLocalHandler(new TransactionEvent()));
+
+ Assert.assertEquals(remote1, handlers.getRemoteHandler(new RemoteAccessControlEvent1()));
+ Assert.assertEquals(remote2, handlers.getRemoteHandler(new RemoteBranchEvent1()));
+ Assert.assertNull(handlers.getRemoteHandler(new RemoteBroadcastEvent1()));
+
+ handlers.removeLocalHandler(AccessControlEvent.class);
+ Assert.assertEquals(1, handlers.sizeLocal());
+ Assert.assertEquals(2, handlers.sizeRemote());
+
+ handlers.removeLocalHandler(ArtifactEvent.class);
+ Assert.assertEquals(0, handlers.sizeLocal());
+ Assert.assertEquals(2, handlers.sizeRemote());
+
+ handlers.removeRemoteHandler(RemoteAccessControlEvent1.class);
+ Assert.assertEquals(0, handlers.sizeLocal());
+ Assert.assertEquals(1, handlers.sizeRemote());
+
+ handlers.removeRemoteHandler(RemoteBranchEvent1.class);
+ Assert.assertEquals(0, handlers.sizeLocal());
+ Assert.assertEquals(0, handlers.sizeRemote());
+ }
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/internal/event/EventListenerRegistryTest.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/internal/event/EventListenerRegistryTest.java
new file mode 100644
index 00000000000..c2d63b6ae09
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/internal/event/EventListenerRegistryTest.java
@@ -0,0 +1,133 @@
+/*******************************************************************************
+ * 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.internal.event;
+
+import java.util.Collection;
+import java.util.List;
+import junit.framework.Assert;
+import org.eclipse.osee.framework.core.enums.CoreBranches;
+import org.eclipse.osee.framework.skynet.core.event.filter.IEventFilter;
+import org.eclipse.osee.framework.skynet.core.event.listener.EventQosType;
+import org.eclipse.osee.framework.skynet.core.event.listener.IAccessControlEventListener;
+import org.eclipse.osee.framework.skynet.core.event.listener.IArtifactEventListener;
+import org.eclipse.osee.framework.skynet.core.event.listener.IBranchEventListener;
+import org.eclipse.osee.framework.skynet.core.event.listener.IEventListener;
+import org.eclipse.osee.framework.skynet.core.event.listener.ITransactionEventListener;
+import org.eclipse.osee.framework.skynet.core.event.model.AccessControlEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.ArtifactEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.BranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.BranchEventType;
+import org.eclipse.osee.framework.skynet.core.event.model.Sender;
+import org.eclipse.osee.framework.skynet.core.event.model.TransactionEvent;
+import org.junit.Test;
+
+/**
+ * Test Case for @{link EventListenerRegistry}
+ *
+ * @author Roberto E. Escobar
+ */
+public class EventListenerRegistryTest {
+
+ @Test
+ public void testRegistration() {
+ EventListenerRegistry registry = new EventListenerRegistry();
+ Delegate1 delegate1 = new Delegate1();
+ Delegate2 delegate2 = new Delegate2();
+
+ Assert.assertEquals(0, registry.size());
+
+ registry.addListener(EventQosType.PRIORITY, delegate1);
+ Assert.assertEquals(1, registry.size());
+ Assert.assertEquals(2, registry.size(EventQosType.PRIORITY));
+ Assert.assertEquals(0, registry.size(EventQosType.NORMAL));
+
+ registry.addListener(EventQosType.NORMAL, delegate2);
+ Assert.assertEquals(2, registry.size());
+ Assert.assertEquals(2, registry.size(EventQosType.PRIORITY));
+ Assert.assertEquals(2, registry.size(EventQosType.NORMAL));
+
+ Collection<IEventListener> listener0 = registry.getListeners(EventQosType.PRIORITY, new TransactionEvent());
+ Assert.assertEquals(0, listener0.size());
+
+ Collection<IEventListener> listener = registry.getListeners(EventQosType.PRIORITY, new AccessControlEvent());
+ Assert.assertEquals(1, listener.size());
+ Assert.assertEquals(delegate1, listener.iterator().next());
+
+ Collection<IEventListener> listener2 =
+ registry.getListeners(EventQosType.PRIORITY, new ArtifactEvent(CoreBranches.COMMON));
+ Assert.assertEquals(1, listener2.size());
+ Assert.assertEquals(delegate1, listener2.iterator().next());
+
+ Collection<IEventListener> listener3 =
+ registry.getListeners(EventQosType.NORMAL, new BranchEvent(BranchEventType.Added, "x"));
+ Assert.assertEquals(1, listener3.size());
+ Assert.assertEquals(delegate2, listener3.iterator().next());
+
+ Collection<IEventListener> listener4 = registry.getListeners(EventQosType.NORMAL, new TransactionEvent());
+ Assert.assertEquals(1, listener4.size());
+ Assert.assertEquals(delegate2, listener4.iterator().next());
+
+ registry.removeListener(delegate2);
+ Assert.assertEquals(1, registry.size());
+ Assert.assertEquals(2, registry.size(EventQosType.PRIORITY));
+ Assert.assertEquals(0, registry.size(EventQosType.NORMAL));
+
+ Collection<IEventListener> listener5 = registry.getListeners(EventQosType.NORMAL, new TransactionEvent());
+ Assert.assertEquals(0, listener5.size());
+
+ Collection<IEventListener> listener6 = registry.getListeners(EventQosType.PRIORITY, new AccessControlEvent());
+ Assert.assertEquals(1, listener6.size());
+ Assert.assertEquals(delegate1, listener6.iterator().next());
+
+ registry.removeListener(delegate1);
+ Assert.assertEquals(0, registry.size());
+ Assert.assertEquals(0, registry.size(EventQosType.PRIORITY));
+ Assert.assertEquals(0, registry.size(EventQosType.NORMAL));
+ }
+
+ private static final class Delegate2 implements ITransactionEventListener, IBranchEventListener {
+
+ @Override
+ public List<? extends IEventFilter> getEventFilters() {
+ return null;
+ }
+
+ @Override
+ public void handleBranchEvent(Sender sender, BranchEvent branchEvent) {
+ //
+ }
+
+ @Override
+ public void handleTransactionEvent(Sender sender, TransactionEvent transEvent) {
+ //
+ }
+
+ }
+
+ private static final class Delegate1 implements IArtifactEventListener, IAccessControlEventListener {
+
+ @Override
+ public List<? extends IEventFilter> getEventFilters() {
+ return null;
+ }
+
+ @Override
+ public void handleAccessControlArtifactsEvent(Sender sender, AccessControlEvent accessControlEvent) {
+ //
+ }
+
+ @Override
+ public void handleArtifactEvent(ArtifactEvent artifactEvent, Sender sender) {
+ //
+ }
+
+ }
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/internal/event/EventTestSuite.java b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/internal/event/EventTestSuite.java
new file mode 100644
index 00000000000..7f5856b3e5d
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core.test/src/org/eclipse/osee/framework/skynet/core/internal/event/EventTestSuite.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * 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.internal.event;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({EventHandlersTest.class, EventListenerRegistryTest.class,})
+/**
+ * @author Roberto E. Escobar
+ */
+public class EventTestSuite {
+ // Test Suite
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/OSGI-INF/attribute.tagger.event.listener.xml b/plugins/org.eclipse.osee.framework.skynet.core/OSGI-INF/attribute.tagger.event.listener.xml
new file mode 100644
index 00000000000..d99d37363e6
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/OSGI-INF/attribute.tagger.event.listener.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osee.framework.skynet.core.attribute.HttpAttributeTaggingListener">
+ <implementation class="org.eclipse.osee.framework.skynet.core.attribute.HttpAttributeTaggingListener"/>
+ <service>
+ <provide interface="org.eclipse.osee.framework.skynet.core.event.listener.IEventListener"/>
+ </service>
+ <property name="qos" type="String" value="normal"/>
+</scr:component>
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/OSGI-INF/osee.event.system.service.xml b/plugins/org.eclipse.osee.framework.skynet.core/OSGI-INF/osee.event.system.service.xml
index 0b8b6153151..0b78790f1f4 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/OSGI-INF/osee.event.system.service.xml
+++ b/plugins/org.eclipse.osee.framework.skynet.core/OSGI-INF/osee.event.system.service.xml
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="start" deactivate="stop" name="org.eclipse.osee.framework.skynet.core.internal.OseeEventAdmin">
- <implementation class="org.eclipse.osee.framework.skynet.core.internal.OseeEventAdmin"/>
- <reference bind="addEventListener" cardinality="0..n" interface="org.eclipse.osee.framework.skynet.core.event.listener.IEventListener" name="IEventListener" policy="dynamic" unbind="removeEventListener"/>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="start" deactivate="stop" name="org.eclipse.osee.framework.skynet.core.internal.OseeEventServiceImpl">
+ <implementation class="org.eclipse.osee.framework.skynet.core.internal.OseeEventServiceImpl"/>
+ <reference bind="addListener" cardinality="0..n" interface="org.eclipse.osee.framework.skynet.core.event.listener.IEventListener" name="IEventListener" policy="dynamic" unbind="removeListener"/>
<reference bind="setOseeCoreModelEventService" cardinality="1..1" interface="org.eclipse.osee.framework.messaging.event.res.IOseeCoreModelEventService" name="IOseeCoreModelEventService" policy="static"/>
-</scr:component>
+ <service>
+ <provide interface="org.eclipse.osee.framework.skynet.core.event.OseeEventService"/>
+ </service>
+</scr:component> \ 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
index f05abaac21a..b9d710f3465 100644
--- 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
@@ -10,26 +10,28 @@
*******************************************************************************/
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.core.enums.CoreBranches;
+import org.eclipse.osee.framework.jdk.core.util.Collections;
import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.skynet.core.event.listener.IEventListener;
+import org.eclipse.osee.framework.skynet.core.event.filter.BranchGuidEventFilter;
import org.eclipse.osee.framework.skynet.core.internal.Activator;
/**
* @author Roberto E. Escobar
*/
public final class EventUtil {
+ private static BranchGuidEventFilter commonBranchGuidEvenFilter = new BranchGuidEventFilter(CoreBranches.COMMON);
private EventUtil() {
// Utility Class
}
+ public static BranchGuidEventFilter getCommonBranchFilter() {
+ return EventUtil.commonBranchGuidEvenFilter;
+ }
+
public static String getObjectSafeName(Object object) {
try {
return object.toString();
@@ -38,51 +40,54 @@ public final class EventUtil {
}
}
- 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 message, Throwable ex) {
+ eventLog(ex, message);
}
- public static void eventLog(String output, Exception ex) {
+ public static void eventLog(Throwable ex, String message, Object... args) {
try {
if (isEventDebugConsole()) {
- System.err.println(output + (ex != null ? " <<ERROR>> " + ex.toString() : ""));
+ StringBuilder builder = new StringBuilder();
+ builder.append(formatMessage(message, args));
+ if (ex != null) {
+ builder.append(" <<ERROR>> ");
+ builder.append(ex.toString());
+ }
+ System.err.println(builder.toString());
} else if (isEventDebugErrorLog()) {
if (ex != null) {
- OseeLog.log(Activator.class, Level.SEVERE, output, ex);
+ OseeLog.log(Activator.class, Level.SEVERE, formatMessage(message, args), ex);
} else {
- OseeLog.log(Activator.class, Level.FINE, output);
+ OseeLog.log(Activator.class, Level.FINE, formatMessage(message, args));
}
}
- } catch (Exception ex1) {
- OseeLog.log(Activator.class, Level.SEVERE, ex1);
+ } catch (Throwable th) {
+ OseeLog.log(Activator.class, Level.SEVERE, th);
}
}
- private static boolean isEventDebugConsole() {
- if (!Strings.isValid(System.getProperty("eventDebug"))) {
- return false;
+ public static void eventLog(String output, Object... args) {
+ eventLog(null, output, args);
+ }
+
+ private static String formatMessage(String message, Object... args) {
+ try {
+ return String.format(message, args);
+ } catch (RuntimeException ex) {
+ return String.format(
+ "Exception message could not be formatted: [%s] with the following arguments [%s]. Cause [%s]", message,
+ Collections.toString(",", args), ex.toString());
}
- return System.getProperty("eventDebug").equals("console");
+ }
+
+ private static boolean isEventDebugConsole() {
+ String debugConsole = System.getProperty("eventDebug", "");
+ return "console".equals(debugConsole);
}
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"));
+ String debugConsole = System.getProperty("eventDebug", "");
+ return "log".equals(debugConsole) || "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/FrameworkEventUtil.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/FrameworkEventUtil.java
index 9c5846c882a..4cbd6017709 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/FrameworkEventUtil.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/FrameworkEventUtil.java
@@ -58,7 +58,11 @@ import org.eclipse.osee.framework.skynet.core.relation.RelationEventType;
/**
* @author Donald G. Dunne
*/
-public class FrameworkEventUtil {
+public final class FrameworkEventUtil {
+
+ private FrameworkEventUtil() {
+ // Utility Class
+ }
public static RemoteAccessControlEvent1 getRemoteAccessControlEvent(AccessControlEvent accessControlEvent) {
RemoteAccessControlEvent1 event = new RemoteAccessControlEvent1();
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 afef6195917..3ea203ea16c 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,22 @@
*******************************************************************************/
package org.eclipse.osee.framework.skynet.core.event;
-import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.logging.Level;
-import org.eclipse.osee.framework.core.client.ClientSessionManager;
import org.eclipse.osee.framework.core.data.IOseeBranch;
-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.jdk.core.util.OseeProperties;
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.event.filter.BranchGuidEventFilter;
import org.eclipse.osee.framework.skynet.core.event.filter.IEventFilter;
-import org.eclipse.osee.framework.skynet.core.event.listener.IBranchEventListener;
+import org.eclipse.osee.framework.skynet.core.event.listener.EventQosType;
import org.eclipse.osee.framework.skynet.core.event.listener.IEventListener;
import org.eclipse.osee.framework.skynet.core.event.model.AccessControlEvent;
import org.eclipse.osee.framework.skynet.core.event.model.ArtifactEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.ArtifactEvent.ArtifactEventType;
import org.eclipse.osee.framework.skynet.core.event.model.BranchEvent;
import org.eclipse.osee.framework.skynet.core.event.model.BroadcastEvent;
import org.eclipse.osee.framework.skynet.core.event.model.EventBasicGuidArtifact;
@@ -37,10 +33,9 @@ import org.eclipse.osee.framework.skynet.core.event.model.EventModType;
import org.eclipse.osee.framework.skynet.core.event.model.RemoteEventServiceEventType;
import org.eclipse.osee.framework.skynet.core.event.model.Sender;
import org.eclipse.osee.framework.skynet.core.event.model.TransactionEvent;
-import org.eclipse.osee.framework.skynet.core.event.systems.EventManagerData;
-import org.eclipse.osee.framework.skynet.core.event.systems.InternalEventManager;
import org.eclipse.osee.framework.skynet.core.internal.Activator;
-import org.eclipse.osee.framework.skynet.core.utility.DbUtil;
+import org.eclipse.osee.framework.skynet.core.internal.ServiceUtil;
+import org.eclipse.osee.framework.skynet.core.internal.event.EventListenerRegistry;
/**
* Front end to OSEE events. Provides ability to add and remove different event listeners as well as the ability to kick
@@ -48,19 +43,18 @@ import org.eclipse.osee.framework.skynet.core.utility.DbUtil;
*
* @author Donald G. Dunne
*/
-public class OseeEventManager {
-
- private static List<IEventFilter> commonBranchEventFilter;
- private static BranchGuidEventFilter commonBranchGuidEvenFilter;
- private static IBranchEventListener testBranchEventListener;
- private static final EventManagerData eventManagerData = new EventManagerData();
+public final class OseeEventManager {
private OseeEventManager() {
- // Static methods only;
+ // Utility Class
+ }
+
+ private static OseeEventService getEventService() throws OseeCoreException {
+ return ServiceUtil.getEventService();
}
- public static EventManagerData getEventManagerData() {
- return eventManagerData;
+ private static EventListenerRegistry getEventListeners() {
+ return Activator.getEventListeners();
}
/**
@@ -68,41 +62,34 @@ public class OseeEventManager {
* 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();
- priorityListeners.add(listener);
+ getEventListeners().addListener(EventQosType.PRIORITY, listener);
}
public static void addListener(IEventListener listener) {
- if (listener == null) {
- throw new IllegalArgumentException("listener can not be null");
- }
- Collection<IEventListener> listeners = eventManagerData.getListeners();
- listeners.add(listener);
+ getEventListeners().addListener(EventQosType.NORMAL, listener);
}
public static void removeAllListeners() {
- eventManagerData.getListeners().clear();
- eventManagerData.getPriorityListeners().clear();
+ getEventListeners().clearAll();
}
public static void removeListener(IEventListener listener) {
- eventManagerData.getListeners().remove(listener);
- eventManagerData.getPriorityListeners().remove(listener);
- }
-
- private static InternalEventManager getEventManager() {
- return eventManagerData.getMessageEventManager();
+ getEventListeners().removeListener(listener);
}
public static EventSystemPreferences getPreferences() {
- return eventManagerData.getPreferences();
+ return Activator.getEventPreferences();
}
public static boolean isEventManagerConnected() {
- return getEventManager() != null ? getEventManager().isConnected() : false;
+ boolean result = false;
+ try {
+ OseeEventService eventService = getEventService();
+ result = eventService.isConnected();
+ } catch (Exception ex) {
+ // Do Nothing;
+ }
+ return result;
}
public static String getConnectionDetails() {
@@ -114,97 +101,37 @@ public class OseeEventManager {
}
public static int getNumberOfListeners() {
- return eventManagerData.getListeners().size();
- }
-
- 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()) {
- 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 {
- getEventManager().testSendRemoteEventThroughFrameworkListener(remoteEvent);
- }
-
- // Only Used for Testing purposes
- public static void internalTestProcessBranchEvent(Sender sender, BranchEvent branchEvent) {
- getEventManager().processBranchEvent(sender, branchEvent);
- }
-
- // Only Used for Testing purposes
- public static void internalTestProcessEventArtifactsAndRelations(Sender sender, ArtifactEvent artifactEvent) {
- getEventManager().processEventArtifactsAndRelations(sender, artifactEvent);
+ return getEventListeners().size();
}
// Kick LOCAL remote-event event
public static void kickLocalRemEvent(Object source, RemoteEventServiceEventType remoteEventServiceEventType) throws OseeCoreException {
- if (isDisableEvents()) {
- return;
- }
- if (!DbUtil.isDbInit()) {
- getEventManager().kickLocalRemEvent(createSender(source), remoteEventServiceEventType);
- }
+ getEventService().send(source, remoteEventServiceEventType);
}
// Kick LOCAL and REMOTE broadcast event
public static void kickBroadcastEvent(Object source, BroadcastEvent broadcastEvent) throws OseeCoreException {
- if (isDisableEvents()) {
- return;
- }
- getEventManager().kickBroadcastEvent(createSender(source), broadcastEvent);
+ getEventService().send(source, broadcastEvent);
}
//Kick LOCAL and REMOTE branch events
public static void kickBranchEvent(Object source, BranchEvent branchEvent, int branchId) throws OseeCoreException {
- EventUtil.eventLog("OEM: kickBranchEvent: type: " + branchEvent.getEventType() + " guid: " + branchEvent.getBranchGuid() + " - " + source);
- if (isDisableEvents()) {
- return;
- }
-
- Sender sender = createSender(source);
- if (testBranchEventListener != null) {
- testBranchEventListener.handleBranchEvent(sender, branchEvent);
- }
- branchEvent.setNetworkSender(sender.getNetworkSender());
- getEventManager().kickBranchEvent(sender, branchEvent);
+ getEventService().send(source, branchEvent);
}
// Kick LOCAL and REMOTE access control events
- public static void kickAccessControlArtifactsEvent(Object source, AccessControlEvent accessControlEvent) throws OseeAuthenticationRequiredException {
- if (isDisableEvents()) {
- return;
- }
- Sender sender = createSender(source);
- accessControlEvent.setNetworkSender(sender.getNetworkSender());
- getEventManager().kickAccessControlArtifactsEvent(sender, accessControlEvent);
+ public static void kickAccessControlArtifactsEvent(Object source, AccessControlEvent accessControlEvent) throws OseeCoreException {
+ getEventService().send(source, accessControlEvent);
}
// Kick LOCAL and REMOTE transaction deleted event
public static void kickTransactionEvent(Object source, final TransactionEvent transactionEvent) throws OseeCoreException {
- if (isDisableEvents()) {
- return;
- }
- Sender sender = createSender(source);
- transactionEvent.setNetworkSender(sender.getNetworkSender());
- getEventManager().kickTransactionEvent(sender, transactionEvent);
+ getEventService().send(source, transactionEvent);
}
// Kick LOCAL and REMOTE transaction event
- public static void kickPersistEvent(Object source, ArtifactEvent artifactEvent) throws OseeAuthenticationRequiredException {
- if (isDisableEvents()) {
- return;
- }
- Sender sender = createSender(source);
- artifactEvent.setNetworkSender(sender.getNetworkSender());
- getEventManager().kickArtifactEvent(sender, artifactEvent);
+ public static void kickPersistEvent(Object source, ArtifactEvent artifactEvent) throws OseeCoreException {
+ getEventService().send(source, artifactEvent);
}
// Kick LOCAL transaction event
@@ -212,9 +139,10 @@ public class OseeEventManager {
if (isDisableEvents()) {
return;
}
- ArtifactEvent artifactEvent = new ArtifactEvent(artifacts.iterator().next().getBranch());
+ ArtifactEvent artifactEvent =
+ new ArtifactEvent(artifacts.iterator().next().getBranch(), ArtifactEventType.RELOAD_ARTIFACTS);
artifactEvent.getArtifacts().addAll(EventBasicGuidArtifact.get(EventModType.Reloaded, artifacts));
- getEventManager().kickLocalArtifactReloadEvent(createSender(source), artifactEvent);
+ getEventService().send(source, artifactEvent);
}
public static boolean isDisableEvents() {
@@ -228,10 +156,9 @@ public class OseeEventManager {
// Return report showing all listeners registered
public static String getListenerReport() {
- String toReturn;
+ String toReturn = null;
if (OseeEventManager.isEventManagerConnected()) {
- toReturn =
- EventUtil.getListenerReport(eventManagerData.getListeners(), eventManagerData.getPriorityListeners());
+ toReturn = getEventListeners().toString();
} else {
toReturn = "Event system is NOT active";
}
@@ -249,38 +176,20 @@ public class OseeEventManager {
return null;
}
- public static List<IEventFilter> getCommonBranchEventFilters() {
- try {
- if (commonBranchEventFilter == null) {
- commonBranchEventFilter = new ArrayList<IEventFilter>(2);
- commonBranchEventFilter.add(getCommonBranchFilter());
- }
- } catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- return commonBranchEventFilter;
- }
-
- public static BranchGuidEventFilter getCommonBranchFilter() {
- if (commonBranchGuidEvenFilter == null) {
- commonBranchGuidEvenFilter = new BranchGuidEventFilter(CoreBranches.COMMON);
- }
- return commonBranchGuidEvenFilter;
+ /////////////////////////////////// LEGACY TEST API ////////////////////////////////////////////
+ // Only Used for Testing purposes
+ public static void internalTestSendRemoteEvent(final RemoteEvent remoteEvent) throws OseeCoreException {
+ getEventService().receive(remoteEvent);
}
- // Registration for branch events; for test only
- public static void registerBranchEventListenerForTest(IBranchEventListener branchEventListener) {
- if (!OseeProperties.isInTest()) {
- throw new IllegalStateException("Invalid registration for production");
- }
- testBranchEventListener = branchEventListener;
+ // Only Used for Testing purposes
+ public static void internalTestProcessBranchEvent(Sender sender, BranchEvent branchEvent) throws OseeCoreException {
+ getEventService().receive(sender, branchEvent);
}
- public static void removeBranchEventListenerForTest() {
- if (!OseeProperties.isInTest()) {
- throw new IllegalStateException("Invalid registration for production");
- }
- testBranchEventListener = null;
+ // Only Used for Testing purposes
+ public static void internalTestProcessEventArtifactsAndRelations(Sender sender, ArtifactEvent artifactEvent) throws OseeCoreException {
+ getEventService().receive(sender, artifactEvent);
}
}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/OseeEventService.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/OseeEventService.java
new file mode 100644
index 00000000000..b35ac0cdb65
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/OseeEventService.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * 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.event;
+
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.messaging.event.res.RemoteEvent;
+import org.eclipse.osee.framework.skynet.core.event.listener.EventQosType;
+import org.eclipse.osee.framework.skynet.core.event.listener.IEventListener;
+import org.eclipse.osee.framework.skynet.core.event.model.FrameworkEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.Sender;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public interface OseeEventService {
+
+ boolean isConnected();
+
+ <E extends FrameworkEvent> void send(Object object, E event) throws OseeCoreException;
+
+ <E extends RemoteEvent> void receive(E event) throws OseeCoreException;
+
+ <E extends FrameworkEvent> void receive(Sender sender, E event) throws OseeCoreException;
+
+ void addListener(EventQosType qos, IEventListener listener);
+
+ void removeListener(EventQosType qos, IEventListener listener);
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/listener/EventQosType.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/listener/EventQosType.java
new file mode 100644
index 00000000000..1034eb3c39a
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/listener/EventQosType.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2012 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.listener;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public enum EventQosType {
+ PRIORITY,
+ NORMAL;
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/AccessControlEvent.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/AccessControlEvent.java
index 7411a714bc3..dc09e4f5890 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/AccessControlEvent.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/AccessControlEvent.java
@@ -16,7 +16,7 @@ import org.eclipse.osee.framework.core.data.IOseeBranch;
import org.eclipse.osee.framework.core.model.event.DefaultBasicGuidArtifact;
import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkSender;
-public class AccessControlEvent extends FrameworkEvent {
+public class AccessControlEvent implements FrameworkEvent, HasNetworkSender, HasEventType<AccessControlEventType> {
private AccessControlEventType eventType;
private List<DefaultBasicGuidArtifact> artifacts;
@@ -49,6 +49,7 @@ public class AccessControlEvent extends FrameworkEvent {
*
* @return possible object is {@link NetworkSender }
*/
+ @Override
public NetworkSender getNetworkSender() {
return networkSender;
}
@@ -58,10 +59,12 @@ public class AccessControlEvent extends FrameworkEvent {
*
* @param value allowed object is {@link NetworkSender }
*/
+ @Override
public void setNetworkSender(NetworkSender value) {
this.networkSender = value;
}
+ @Override
public AccessControlEventType getEventType() {
return eventType;
}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/ArtifactEvent.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/ArtifactEvent.java
index 6a7af3f0100..b27e4754da7 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/ArtifactEvent.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/ArtifactEvent.java
@@ -19,7 +19,6 @@ import java.util.logging.Level;
import org.eclipse.osee.framework.core.data.IOseeBranch;
import org.eclipse.osee.framework.core.data.IRelationType;
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.event.DefaultBasicGuidRelationReorder;
import org.eclipse.osee.framework.core.model.event.IBasicGuidArtifact;
@@ -33,7 +32,12 @@ import org.eclipse.osee.framework.skynet.core.event.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 {
+public class ArtifactEvent implements FrameworkEvent, HasNetworkSender {
+
+ public static enum ArtifactEventType {
+ RELOAD_ARTIFACTS,
+ UPDATE_ARTIFACTS;
+ }
private final String branchGuid;
private int transactionId;
@@ -42,15 +46,21 @@ public class ArtifactEvent extends FrameworkEvent {
private final List<EventBasicGuidRelation> relations = new ArrayList<EventBasicGuidRelation>();
private final Set<DefaultBasicGuidRelationReorder> relationReorderRecords =
new HashSet<DefaultBasicGuidRelationReorder>();
+ private final ArtifactEventType reloadEvent;
- public ArtifactEvent(Branch branch) {
- branchGuid = branch.getGuid();
+ public ArtifactEvent(IOseeBranch branch) {
+ this(branch, ArtifactEventType.UPDATE_ARTIFACTS);
}
- public ArtifactEvent(IOseeBranch branch) {
+ public ArtifactEvent(IOseeBranch branch, ArtifactEventType reloadEvent) {
+ this.reloadEvent = reloadEvent;
branchGuid = branch.getGuid();
}
+ public boolean isReloadEvent() {
+ return ArtifactEventType.RELOAD_ARTIFACTS == reloadEvent;
+ }
+
public String getBranchGuid() {
return branchGuid;
}
@@ -79,10 +89,12 @@ public class ArtifactEvent extends FrameworkEvent {
return this.relations;
}
+ @Override
public NetworkSender getNetworkSender() {
return networkSender;
}
+ @Override
public void setNetworkSender(NetworkSender value) {
this.networkSender = value;
}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/AttributeChange.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/AttributeChange.java
index 71eb70a06c7..bc384208694 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/AttributeChange.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/AttributeChange.java
@@ -41,7 +41,7 @@ import org.eclipse.osee.framework.skynet.core.attribute.AttributeTypeManager;
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "AttributeChange", propOrder = {"attrTypeGuid", "modTypeGuid", "attributeId", "gammaId", "data"})
-public class AttributeChange extends FrameworkEvent {
+public class AttributeChange implements FrameworkEvent {
@XmlElement(required = true)
protected Long attrTypeGuid;
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/BranchEvent.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/BranchEvent.java
index f81186b4889..f6aa6deecc7 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/BranchEvent.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/BranchEvent.java
@@ -12,7 +12,7 @@ package org.eclipse.osee.framework.skynet.core.event.model;
import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkSender;
-public class BranchEvent extends FrameworkEvent {
+public class BranchEvent implements FrameworkEvent, HasNetworkSender {
private String branchGuid;
private BranchEventType eventType;
@@ -46,6 +46,7 @@ public class BranchEvent extends FrameworkEvent {
*
* @return possible object is {@link NetworkSender }
*/
+ @Override
public NetworkSender getNetworkSender() {
return networkSender;
}
@@ -55,6 +56,7 @@ public class BranchEvent extends FrameworkEvent {
*
* @param value allowed object is {@link NetworkSender }
*/
+ @Override
public void setNetworkSender(NetworkSender value) {
this.networkSender = value;
}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/BroadcastEvent.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/BroadcastEvent.java
index 32c5eb15af0..f0cebefa6de 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/BroadcastEvent.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/BroadcastEvent.java
@@ -18,7 +18,7 @@ import org.eclipse.osee.framework.skynet.core.User;
/**
* @author Donald G. Dunne
*/
-public class BroadcastEvent extends FrameworkEvent {
+public class BroadcastEvent implements FrameworkEvent, HasNetworkSender {
BroadcastEventType broadcastEventType;
Collection<User> users;
@@ -59,10 +59,12 @@ public class BroadcastEvent extends FrameworkEvent {
this.users.add(user);
}
+ @Override
public NetworkSender getNetworkSender() {
return networkSender;
}
+ @Override
public void setNetworkSender(NetworkSender networkSender) {
this.networkSender = networkSender;
}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/FrameworkEvent.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/FrameworkEvent.java
index ac763d5fc1c..7a56c9949a5 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/FrameworkEvent.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/FrameworkEvent.java
@@ -13,6 +13,6 @@ package org.eclipse.osee.framework.skynet.core.event.model;
/**
* @author Donald G. Dunne
*/
-public class FrameworkEvent {
+public interface FrameworkEvent {
// do nothing
}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/HasEventType.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/HasEventType.java
new file mode 100644
index 00000000000..4f9d4bbe974
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/HasEventType.java
@@ -0,0 +1,12 @@
+/*
+ * Created on Apr 27, 2012
+ *
+ * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE
+ */
+package org.eclipse.osee.framework.skynet.core.event.model;
+
+public interface HasEventType<T> {
+
+ T getEventType();
+
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/HasNetworkSender.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/HasNetworkSender.java
new file mode 100644
index 00000000000..0f4af5fac2f
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/HasNetworkSender.java
@@ -0,0 +1,15 @@
+/*
+ * Created on Apr 27, 2012
+ *
+ * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE
+ */
+package org.eclipse.osee.framework.skynet.core.event.model;
+
+import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkSender;
+
+public interface HasNetworkSender {
+
+ NetworkSender getNetworkSender();
+
+ void setNetworkSender(NetworkSender sender);
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/RemoteEventServiceEventType.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/RemoteEventServiceEventType.java
index 87d1df17b61..f1cbdd6d5d5 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/RemoteEventServiceEventType.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/RemoteEventServiceEventType.java
@@ -13,7 +13,7 @@ package org.eclipse.osee.framework.skynet.core.event.model;
/**
* @author Donald G. Dunne
*/
-public enum RemoteEventServiceEventType {
+public enum RemoteEventServiceEventType implements FrameworkEvent {
Rem_Connected(EventType.LocalOnly),
Rem_DisConnected(EventType.LocalOnly);
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/Sender.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/Sender.java
index 7da33feea70..2be55b18a92 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/Sender.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/Sender.java
@@ -25,25 +25,33 @@ public class Sender {
private final String sourceObject;
private final OseeClientSession oseeSession;
- public Sender(Object sourceObject, OseeClientSession oseeSession) {
- this.sourceObject = EventUtil.getObjectSafeName(sourceObject);
+ private Sender(String sourceObjectId, OseeClientSession oseeSession) {
+ this.sourceObject = sourceObjectId;
this.oseeSession = oseeSession;
}
- public Sender(NetworkSender networkSender) {
- this(networkSender.sourceObject, new OseeClientSession(networkSender.sessionId, networkSender.machineName,
- networkSender.userId, networkSender.machineIp, networkSender.port, networkSender.clientVersion, "n/a"));
+ public static Sender createSender(Object sourceObject, OseeClientSession oseeSession) {
+ String sourceId = EventUtil.getObjectSafeName(sourceObject);
+ return new Sender(sourceId, oseeSession);
}
- public Sender(RemoteNetworkSender1 networkSender) {
- this(networkSender.getSourceObject(), new OseeClientSession(networkSender.getSessionId(),
- networkSender.getMachineName(), networkSender.getUserId(), networkSender.getMachineIp(),
- networkSender.getPort(), networkSender.getClientVersion(), "n/a"));
+ public static Sender createSender(NetworkSender networkSender) {
+ OseeClientSession oseeSession =
+ new OseeClientSession(networkSender.sessionId, networkSender.machineName, networkSender.userId,
+ networkSender.machineIp, networkSender.port, networkSender.clientVersion, "n/a");
+ return createSender(networkSender.sourceObject, oseeSession);
}
- public Sender(Object sourceObject) throws OseeAuthenticationRequiredException {
- this.sourceObject = EventUtil.getObjectSafeName(sourceObject);
- this.oseeSession = ClientSessionManager.getSession();
+ public static Sender createSender(RemoteNetworkSender1 networkSender) {
+ OseeClientSession oseeSession =
+ new OseeClientSession(networkSender.getSessionId(), networkSender.getMachineName(), networkSender.getUserId(),
+ networkSender.getMachineIp(), networkSender.getPort(), networkSender.getClientVersion(), "n/a");
+ return createSender(networkSender.getSourceObject(), oseeSession);
+ }
+
+ public static Sender createSender(Object sourceObject) throws OseeAuthenticationRequiredException {
+ OseeClientSession oseeSession = ClientSessionManager.getSession();
+ return createSender(sourceObject, oseeSession);
}
public boolean isRemote() {
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/TransactionChange.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/TransactionChange.java
index 40a12659203..b16395e5149 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/TransactionChange.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/TransactionChange.java
@@ -15,7 +15,7 @@ import java.util.HashSet;
import java.util.Set;
import org.eclipse.osee.framework.core.model.event.DefaultBasicGuidArtifact;
-public class TransactionChange extends FrameworkEvent {
+public class TransactionChange implements FrameworkEvent {
private String branchGuid;
private int transactionId;
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/TransactionEvent.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/TransactionEvent.java
index ff89defb633..a8409e0e869 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/TransactionEvent.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/TransactionEvent.java
@@ -15,7 +15,7 @@ import java.util.List;
import org.eclipse.osee.framework.core.model.event.DefaultBasicGuidArtifact;
import org.eclipse.osee.framework.messaging.event.skynet.event.NetworkSender;
-public class TransactionEvent extends FrameworkEvent {
+public class TransactionEvent implements FrameworkEvent, HasNetworkSender {
private TransactionEventType eventType;
private NetworkSender networkSender;
@@ -49,6 +49,7 @@ public class TransactionEvent extends FrameworkEvent {
*
* @return possible object is {@link NetworkSender }
*/
+ @Override
public NetworkSender getNetworkSender() {
return networkSender;
}
@@ -58,6 +59,7 @@ public class TransactionEvent extends FrameworkEvent {
*
* @param value allowed object is {@link NetworkSender }
*/
+ @Override
public void setNetworkSender(NetworkSender value) {
this.networkSender = value;
}
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
deleted file mode 100644
index 42352189241..00000000000
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/EventManagerData.java
+++ /dev/null
@@ -1,49 +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.systems;
-
-import java.util.Collection;
-import java.util.concurrent.CopyOnWriteArraySet;
-import org.eclipse.osee.framework.skynet.core.event.EventSystemPreferences;
-import org.eclipse.osee.framework.skynet.core.event.listener.IEventListener;
-
-/**
- * @author Roberto E. Escobar
- */
-public class EventManagerData {
-
- private final Collection<IEventListener> priorityListeners = new CopyOnWriteArraySet<IEventListener>();
- private final Collection<IEventListener> listeners = new CopyOnWriteArraySet<IEventListener>();
- private final EventSystemPreferences preferences = new EventSystemPreferences();
-
- private InternalEventManager messageEventManager;
-
- public void setMessageEventManager(InternalEventManager messageEventManager) {
- this.messageEventManager = messageEventManager;
- }
-
- public Collection<IEventListener> getPriorityListeners() {
- return priorityListeners;
- }
-
- public Collection<IEventListener> getListeners() {
- return listeners;
- }
-
- public EventSystemPreferences getPreferences() {
- return preferences;
- }
-
- public InternalEventManager 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
deleted file mode 100644
index 326d0e0adce..00000000000
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/EventManagerFactory.java
+++ /dev/null
@@ -1,45 +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.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.OseeEventThreadFactory;
-import org.eclipse.osee.framework.skynet.core.event.listener.IEventListener;
-import org.eclipse.osee.framework.skynet.core.event.systems.InternalEventManager.ConnectionStatus;
-
-/**
- * @author Roberto E. Escobar
- */
-public class EventManagerFactory {
-
- public InternalEventManager createNewEventManager(IOseeCoreModelEventService coreModelEventService, EventSystemPreferences preferences, Collection<IEventListener> listeners, Collection<IEventListener> priorityListeners, ConnectionStatus connectionStatus) {
- ExecutorService executorService = createExecutor("Osee Client Events");
- InternalEventManager eventManager =
- new InternalEventManager(coreModelEventService, listeners, priorityListeners, executorService, preferences,
- connectionStatus);
- return eventManager;
- }
-
- private ExecutorService createExecutor(String threadPrefix) {
- int numberOfProcessors = Runtime.getRuntime().availableProcessors();
- if (numberOfProcessors > 4) {
- numberOfProcessors = 4;
- }
- 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/systems/FrameworkEventToRemoteEventListener.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/FrameworkEventToRemoteEventListener.java
deleted file mode 100644
index 80b6bb283b6..00000000000
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/FrameworkEventToRemoteEventListener.java
+++ /dev/null
@@ -1,346 +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.systems;
-
-import java.util.concurrent.ExecutorService;
-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.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.RemoteAccessControlEvent1;
-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.attribute.AttributeTypeManager;
-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.FrameworkEventUtil;
-import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
-import org.eclipse.osee.framework.skynet.core.event.PurgeTransactionEventUtil;
-import org.eclipse.osee.framework.skynet.core.event.model.AccessControlEvent;
-import org.eclipse.osee.framework.skynet.core.event.model.ArtifactEvent;
-import org.eclipse.osee.framework.skynet.core.event.model.AttributeChange;
-import org.eclipse.osee.framework.skynet.core.event.model.BranchEvent;
-import org.eclipse.osee.framework.skynet.core.event.model.BranchEventType;
-import org.eclipse.osee.framework.skynet.core.event.model.EventBasicGuidArtifact;
-import org.eclipse.osee.framework.skynet.core.event.model.EventBasicGuidRelation;
-import org.eclipse.osee.framework.skynet.core.event.model.EventChangeTypeBasicGuidArtifact;
-import org.eclipse.osee.framework.skynet.core.event.model.EventModType;
-import org.eclipse.osee.framework.skynet.core.event.model.EventModifiedBasicGuidArtifact;
-import org.eclipse.osee.framework.skynet.core.event.model.Sender;
-import org.eclipse.osee.framework.skynet.core.event.model.TransactionEvent;
-import org.eclipse.osee.framework.skynet.core.event.model.TransactionEventType;
-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 FrameworkEventToRemoteEventListener implements IFrameworkEventListener {
-
- private final EventSystemPreferences preferences;
- private final InternalEventManager eventManager;
- private final ExecutorService executorService;
-
- public FrameworkEventToRemoteEventListener(ExecutorService executorService, EventSystemPreferences preferences, InternalEventManager eventManager) {
- this.executorService = executorService;
- this.preferences = preferences;
- this.eventManager = eventManager;
- }
-
- @Override
- public void onEvent(final RemoteEvent remoteEvent) {
- Runnable runnable = new Runnable() {
- @Override
- public void run() {
- processRemoteEvents(remoteEvent);
- }
- };
- execute(runnable);
- }
-
- private void execute(Runnable runnable) {
- if (preferences.isPendRunning()) {
- runnable.run();
- } else {
- executorService.submit(runnable);
- }
- }
-
- private void processRemoteEvents(RemoteEvent remoteEvent) {
- if (remoteEvent == null) {
- return;
- }
- 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, ((RemotePersistEvent1) remoteEvent).getTransactionId());
- updateRelations(sender, transEvent);
- eventManager.kickArtifactEvent(sender, transEvent);
- } catch (Exception ex) {
- EventUtil.eventLog("REM: 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("REM: RemoteBranchEvent1", ex);
- }
- } else if (remoteEvent instanceof RemoteTransactionEvent1) {
- try {
- TransactionEvent transEvent = FrameworkEventUtil.getTransactionEvent((RemoteTransactionEvent1) remoteEvent);
- handleTransactionEvent(sender, transEvent);
- } catch (Exception ex) {
- EventUtil.eventLog("REM: RemoteBranchEvent1", ex);
- }
- } else if (remoteEvent instanceof RemoteAccessControlEvent1) {
- try {
- AccessControlEvent accessEvent =
- FrameworkEventUtil.getAccessControlEvent((RemoteAccessControlEvent1) remoteEvent);
- eventManager.kickAccessControlArtifactsEvent(sender, accessEvent);
- } catch (Exception ex) {
- EventUtil.eventLog("REM: RemoteAccessControlEvent1", ex);
- }
- }
- }
-
- private void handleTransactionEvent(Sender sender, TransactionEvent transEvent) {
- try {
- if (transEvent.getEventType() == TransactionEventType.Purged) {
- PurgeTransactionEventUtil.handleRemotePurgeTransactionEvent(transEvent);
- eventManager.kickTransactionEvent(sender, transEvent);
- } else {
- EventUtil.eventLog("REM: handleTransactionEvent - unhandled mod type " + transEvent.getEventType());
- }
- } catch (Exception ex) {
- EventUtil.eventLog("REM: handleTransactionEvent", ex);
- }
- }
-
- /**
- * Updates local cache
- **/
- private void updateArtifacts(Sender sender, ArtifactEvent transEvent, int transactionId) {
- // Don't crash on any one artifact update problem (no update method throughs exceptions)
- for (EventBasicGuidArtifact guidArt : transEvent.getArtifacts()) {
- EventUtil.eventLog(String.format("REM: 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, transactionId);
- }
- // Handle Change Type Artifacts
- else if (guidArt.getModType() == EventModType.ChangeType) {
- ChangeArtifactType.handleRemoteChangeType((EventChangeTypeBasicGuidArtifact) guidArt);
- }
- // Unknown mod type
- else {
- EventUtil.eventLog(String.format("REM: updateArtifacts - Unhandled mod type [%s]", guidArt.getModType()));
- }
- }
- }
-
- /**
- * Updates local cache
- */
- private void updateBranches(Sender sender, BranchEvent branchEvent) {
- BranchEventType eventType = branchEvent.getEventType();
- try {
- switch (eventType) {
- case Committing:
- case CommitFailed:
- case Deleting:
- case Purging:
- return;
- case Committed:
- TransactionManager.clearCommitArtifactCacheForAssociatedArtifact(BranchManager.getAssociatedArtifact(BranchManager.getBranchByGuid(branchEvent.getBranchGuid())));
- }
- // TODO Need to update only branch(s) that changed, not refresh all branches cause it will
- // clear any local flags that have not yet been persisted to the database like DELETED or COMMIT_IN_PROGRESS
- BranchManager.refreshBranches();
- } catch (Exception ex) {
- EventUtil.eventLog("REM: 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("REM: 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 this relation only
- if (aArtifact == null && bArtifact == null) {
- continue;
- }
- 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);
-
- if (relation == null || relation.getModificationType() == ModificationType.DELETED || relation.getModificationType() == ModificationType.ARTIFACT_DELETED) {
- relation =
- RelationManager.getOrCreate(guidArt.getArtAId(), guidArt.getArtBId(), 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);
- if (relation != null) {
- relation.internalRemoteEventDelete();
- }
- } else if (eventType == RelationEventType.ModifiedRationale) {
- RelationLink relation =
- RelationManager.getLoadedRelationById(guidArt.getRelationId(), guidArt.getArtAId(),
- guidArt.getArtBId(), 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);
- if (relation != null) {
- relation.undelete();
- relation.setNotDirty();
- }
- } else {
- EventUtil.eventLog(String.format("REM: updateRelations - Unhandled mod type [%s]", eventType));
- }
- }
- } catch (OseeCoreException ex) {
- EventUtil.eventLog("REM: 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("REM: updateDeletedArtifact", ex);
- }
- }
-
- private void updateModifiedArtifact(EventModifiedBasicGuidArtifact guidArt, int transactionId) {
- 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.setTransactionId(transactionId);
- 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(
- "REM: 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("REM: 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("REM: 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("REM: Exception updating %s's attribute change for attributeTypeId %d.",
- artifact.getSafeName(), attributeType.getId()), ex);
- }
- }
- }
- }
- } catch (OseeCoreException ex) {
- EventUtil.eventLog("REM: 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/InternalEventManager.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/InternalEventManager.java
deleted file mode 100644
index 94bc27665a2..00000000000
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/InternalEventManager.java
+++ /dev/null
@@ -1,583 +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.skynet.core.event.systems;
-
-import java.rmi.RemoteException;
-import java.util.Collection;
-import java.util.concurrent.ExecutorService;
-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.exception.OseeCoreException;
-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.EventSystemPreferences;
-import org.eclipse.osee.framework.skynet.core.event.EventUtil;
-import org.eclipse.osee.framework.skynet.core.event.FrameworkEventUtil;
-import org.eclipse.osee.framework.skynet.core.event.filter.IEventFilter;
-import org.eclipse.osee.framework.skynet.core.event.listener.IAccessControlEventListener;
-import org.eclipse.osee.framework.skynet.core.event.listener.IArtifactEventListener;
-import org.eclipse.osee.framework.skynet.core.event.listener.IBranchEventListener;
-import org.eclipse.osee.framework.skynet.core.event.listener.IBroadcastEventListener;
-import org.eclipse.osee.framework.skynet.core.event.listener.IEventFilteredListener;
-import org.eclipse.osee.framework.skynet.core.event.listener.IEventListener;
-import org.eclipse.osee.framework.skynet.core.event.listener.IRemoteEventManagerEventListener;
-import org.eclipse.osee.framework.skynet.core.event.listener.ITransactionEventListener;
-import org.eclipse.osee.framework.skynet.core.event.model.AccessControlEvent;
-import org.eclipse.osee.framework.skynet.core.event.model.ArtifactEvent;
-import org.eclipse.osee.framework.skynet.core.event.model.BranchEvent;
-import org.eclipse.osee.framework.skynet.core.event.model.BranchEventType;
-import org.eclipse.osee.framework.skynet.core.event.model.BroadcastEvent;
-import org.eclipse.osee.framework.skynet.core.event.model.RemoteEventServiceEventType;
-import org.eclipse.osee.framework.skynet.core.event.model.Sender;
-import org.eclipse.osee.framework.skynet.core.event.model.TransactionEvent;
-import org.eclipse.osee.framework.skynet.core.internal.Activator;
-
-/**
- * Internal implementation of OSEE Event Manager that should only be accessed from OseeEventManager classes.
- *
- * @author Donald G. Dunne
- */
-public class InternalEventManager {
- public static interface ConnectionStatus {
- boolean isConnected();
- }
-
- 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 InternalEventManager(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 FrameworkEventToRemoteEventListener(executorService, preferences, this);
- this.connectionStatus = connectionStatus;
- }
-
- public void start() throws OseeCoreException {
- coreModelEventService.addFrameworkListener(frameworkListener);
- }
-
- public void stop() throws OseeCoreException {
- coreModelEventService.removeFrameworkListener(frameworkListener);
- }
-
- public boolean isConnected() {
- return connectionStatus.isConnected();
- }
-
- private void execute(Runnable runnable) {
- if (preferences.isPendRunning()) {
- runnable.run();
- } else {
- executorService.submit(runnable);
- }
- }
-
- /**
- * For all IBranchEventListener, process priorityListeners, then normal listeners
- */
- public void processBranchEvent(Sender sender, BranchEvent branchEvent) {
- EventUtil.eventLog(String.format("IEM: processBranchEvent [%s]", branchEvent));
- for (IEventListener listener : priorityListeners) {
- try {
- if (listener instanceof IBranchEventListener) {
- processBranchEventListener((IBranchEventListener) listener, sender, branchEvent);
- }
- } catch (Exception ex) {
- EventUtil.eventLog(
- String.format("IEM: processBranchEvent [%s] error processing priorityListeners", branchEvent), ex);
- }
- }
- for (IEventListener listener : listeners) {
- try {
- if (listener instanceof IBranchEventListener) {
- processBranchEventListener((IBranchEventListener) listener, sender, branchEvent);
- }
- } catch (Exception ex) {
- EventUtil.eventLog(String.format("IEM: processBranchEvent [%s] error processing listeners", branchEvent),
- ex);
- }
- }
- }
-
- 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()) {
- // If this branch doesn't match, don't pass events through
- if (!eventFilter.isMatch(branchEvent.getBranchGuid())) {
- return;
- }
- }
- }
- // Call listener if we matched all of the filters
- listener.handleBranchEvent(sender, branchEvent);
- }
-
- /**
- * For all IBranchEventListener, process priorityListeners, then normal listeners
- */
- public void processEventArtifactsAndRelations(Sender sender, ArtifactEvent artifactEvent) {
- for (IEventListener listener : priorityListeners) {
- try {
- if (listener instanceof IArtifactEventListener) {
- processEventArtifactsAndRelationsListener((IArtifactEventListener) listener, artifactEvent, sender);
- }
- } catch (Exception ex) {
- EventUtil.eventLog(
- String.format("IEM: processArtsAndRels [%s] error processing priorityListeners", artifactEvent), ex);
- }
- }
- for (IEventListener listener : listeners) {
- try {
- if (listener instanceof IArtifactEventListener) {
- processEventArtifactsAndRelationsListener((IArtifactEventListener) listener, artifactEvent, sender);
- }
- } catch (Exception ex) {
- EventUtil.eventLog(String.format("IEM: processArtsAndRels [%s] error processing listeners", artifactEvent),
- ex);
- }
- }
- }
-
- private void processEventArtifactsAndRelationsListener(IArtifactEventListener listener, ArtifactEvent artifactEvent, Sender sender) {
- EventUtil.eventLog(String.format("IEM: processArtsAndRels [%s]", artifactEvent));
- // If any filter doesn't match, don't call listener
- if (((IEventFilteredListener) listener).getEventFilters() != null) {
- for (IEventFilter eventFilter : ((IEventFilteredListener) listener).getEventFilters()) {
- // If this branch doesn't match, don't pass events through
- if (!eventFilter.isMatch(artifactEvent.getBranchGuid())) {
- return;
- }
- // Process artifacts and relations only if there were any in this ArtifactEvent
- if (!artifactEvent.getArtifacts().isEmpty() || !artifactEvent.getRelations().isEmpty()) {
- boolean matchFound = false;
- // If artifacts are in event and one or more match, pass events through
- if (!artifactEvent.getArtifacts().isEmpty() && eventFilter.isMatchArtifacts(artifactEvent.getArtifacts())) {
- matchFound = true;
- }
- // If relations are in event and one or more artifacts of the relations match, pass events through
- if (!matchFound && !artifactEvent.getRelations().isEmpty() && eventFilter.isMatchRelationArtifacts(artifactEvent.getRelations())) {
- matchFound = true;
- }
- // If no match, don't pass events through
- if (!matchFound) {
- return;
- }
- }
- }
- }
- // Call listener if we matched all of the filters
- listener.handleArtifactEvent(artifactEvent, sender);
- }
-
- public void processAccessControlEvent(Sender sender, AccessControlEvent accessControlEvent) {
- EventUtil.eventLog(String.format("IEM: processAccessControlEvent [%s]", accessControlEvent));
- for (IEventListener listener : priorityListeners) {
- try {
- if (listener instanceof IAccessControlEventListener) {
- ((IAccessControlEventListener) listener).handleAccessControlArtifactsEvent(sender, accessControlEvent);
- }
- } catch (Exception ex) {
- EventUtil.eventLog(String.format("IEM: processAccessControlEvent [%s] error processing priorityListeners",
- accessControlEvent), ex);
- }
- }
- for (IEventListener listener : listeners) {
- try {
- if (listener instanceof IAccessControlEventListener) {
- ((IAccessControlEventListener) listener).handleAccessControlArtifactsEvent(sender, accessControlEvent);
- }
- } catch (Exception ex) {
- EventUtil.eventLog(
- String.format("IEM: processAccessControlEvent [%s] error processing listeners", accessControlEvent), ex);
- }
- }
- }
-
- public void processEventBroadcastEvent(Sender sender, BroadcastEvent broadcastEvent) {
- EventUtil.eventLog(String.format("IEM: processEventBroadcastEvent [%s]", broadcastEvent));
- if (broadcastEvent.getUsers().isEmpty()) {
- return;
- }
- for (IEventListener listener : priorityListeners) {
- try {
- if (listener instanceof IBroadcastEventListener) {
- ((IBroadcastEventListener) listener).handleBroadcastEvent(sender, broadcastEvent);
- }
- } catch (Exception ex) {
- EventUtil.eventLog(
- String.format("IEM: processEventBroadcastEvent [%s] error processing priorityListeners", broadcastEvent),
- ex);
- }
- }
- for (IEventListener listener : listeners) {
- try {
- if (listener instanceof IBroadcastEventListener) {
- ((IBroadcastEventListener) listener).handleBroadcastEvent(sender, broadcastEvent);
- }
- } catch (Exception ex) {
- EventUtil.eventLog(
- String.format("IEM: processEventBroadcastEvent [%s] error processing listeners", broadcastEvent), ex);
- }
- }
- }
-
- public void processRemoteEventManagerEvent(Sender sender, RemoteEventServiceEventType remoteEventServiceEvent) {
- EventUtil.eventLog(String.format("IEM: processRemoteEventManagerEvent [%s]", remoteEventServiceEvent));
- for (IEventListener listener : priorityListeners) {
- try {
- if (listener instanceof IRemoteEventManagerEventListener) {
- ((IRemoteEventManagerEventListener) listener).handleRemoteEventManagerEvent(sender,
- remoteEventServiceEvent);
- }
- } catch (Exception ex) {
- EventUtil.eventLog(String.format(
- "IEM: processRemoteEventManagerEvent [%s] error processing priorityListeners", remoteEventServiceEvent),
- ex);
- }
- }
- for (IEventListener listener : listeners) {
- try {
- if (listener instanceof IRemoteEventManagerEventListener) {
- ((IRemoteEventManagerEventListener) listener).handleRemoteEventManagerEvent(sender,
- remoteEventServiceEvent);
- }
- } catch (Exception ex) {
- EventUtil.eventLog(String.format("IEM: processRemoteEventManagerEvent [%s] error processing listeners",
- remoteEventServiceEvent), ex);
- }
- }
- }
-
- public void processTransactionEvent(Sender sender, TransactionEvent transactionEvent) {
- EventUtil.eventLog(String.format("IEM: processTransactionEvent [%s]", transactionEvent));
- for (IEventListener listener : priorityListeners) {
- try {
- if (listener instanceof ITransactionEventListener) {
- ((ITransactionEventListener) listener).handleTransactionEvent(sender, transactionEvent);
- }
- } catch (Exception ex) {
- EventUtil.eventLog(
- String.format("IEM: processTransactionEvent [%s] error processing priorityListeners", transactionEvent),
- ex);
- }
- }
- for (IEventListener listener : listeners) {
- try {
- if (listener instanceof ITransactionEventListener) {
- ((ITransactionEventListener) listener).handleTransactionEvent(sender, transactionEvent);
- }
- } catch (Exception ex) {
- EventUtil.eventLog(
- String.format("IEM: processTransactionEvent [%s] error processing listeners", transactionEvent), ex);
- }
- }
- }
-
- // public String getListenerReport() {
- // return EventUtil.getListenerReport(listeners, priorityListeners);
- // }
-
- /*
- * Kick LOCAL and REMOTE access control events
- */
- 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 (preferences.isDisableEvents()) {
- return;
- }
- EventUtil.eventLog("IEM: kickAccessControlEvent - type: " + accessControlEvent + sender + " artifacts: " + accessControlEvent.getArtifacts());
- Runnable runnable = new Runnable() {
- @Override
- public void run() {
- try {
- // Kick LOCAL
- boolean normalOperation = !preferences.isEnableRemoteEventLoopback();
- boolean loopbackTestEnabledAndRemoteEventReturned =
- preferences.isEnableRemoteEventLoopback() && sender.isRemote();
- if (normalOperation || loopbackTestEnabledAndRemoteEventReturned) {
- processAccessControlEvent(sender, accessControlEvent);
- }
- // Kick REMOTE
- if (sender.isLocal() && accessControlEvent.getEventType().isRemoteEventType()) {
- sendRemoteEvent(FrameworkEventUtil.getRemoteAccessControlEvent(accessControlEvent));
- }
- } catch (Exception ex) {
- EventUtil.eventLog("IEM: kickAccessControlEvent", ex);
- }
- }
- };
- execute(runnable);
- }
-
- // Kick LOCAL "remote event manager" event
- public void kickLocalRemEvent(final Sender sender, final RemoteEventServiceEventType remoteEventServiceEventType) {
- if (preferences.isDisableEvents()) {
- return;
- }
- EventUtil.eventLog("IEM: kickLocalRemEvent: type: " + remoteEventServiceEventType + " - " + sender);
- Runnable runnable = new Runnable() {
- @Override
- public void run() {
- // Kick LOCAL
- try {
- if (sender.isLocal() && remoteEventServiceEventType.isLocalEventType()) {
- processRemoteEventManagerEvent(sender, remoteEventServiceEventType);
- }
- } catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- }
- };
- execute(runnable);
- }
-
- // Kick LOCAL ArtifactReloadEvent
- public void kickLocalArtifactReloadEvent(final Sender sender, final ArtifactEvent artifactEvent) {
- if (preferences.isDisableEvents()) {
- return;
- }
- EventUtil.eventLog("IEM: kickArtifactReloadEvent [" + artifactEvent + "] - " + sender);
- Runnable runnable = new Runnable() {
- @Override
- public void run() {
- try {
- // Kick LOCAL
- boolean normalOperation = !preferences.isEnableRemoteEventLoopback();
- boolean loopbackTestEnabledAndRemoteEventReturned =
- preferences.isEnableRemoteEventLoopback() && sender.isRemote();
- if (normalOperation && sender.isLocal() || loopbackTestEnabledAndRemoteEventReturned) {
- processEventArtifactsAndRelations(sender, artifactEvent);
- }
-
- // NO REMOTE KICK
- } catch (Exception ex) {
- EventUtil.eventLog("IEM: kickArtifactReloadEvent", ex);
- }
- }
- };
- execute(runnable);
- }
-
- /*
- * Kick LOCAL and REMOTE branch events
- */
- public void kickBranchEvent(final Sender sender, final BranchEvent branchEvent) {
- if (branchEvent.getNetworkSender() == null) {
- EventUtil.eventLog("IEM: kickBranchEvent - ERROR networkSender can't be null.");
- return;
- }
- if (preferences.isDisableEvents()) {
- return;
- }
- EventUtil.eventLog("IEM: 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 (preferences.isEnableRemoteEventLoopback()) {
- EventUtil.eventLog("IEM: BranchEvent Loopback enabled" + (sender.isLocal() ? " - Ignoring Local Kick" : " - Kicking Local from Loopback"));
- }
- BranchEventType branchEventType = branchEvent.getEventType();
-
- // Kick LOCAL
- 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()) {
- sendRemoteEvent(FrameworkEventUtil.getRemoteBranchEvent(branchEvent));
- }
- }
- };
- execute(runnable);
- }
-
- // Kick LOCAL and REMOTE ArtifactEvent
- public void kickArtifactEvent(final Sender sender, final ArtifactEvent artifactEvent) {
- if (artifactEvent.getNetworkSender() == null) {
- EventUtil.eventLog("IEM: kickArtifactEvent - ERROR networkSender can't be null.");
- return;
- }
- if (preferences.isDisableEvents()) {
- return;
- }
- EventUtil.eventLog("IEM: 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 (preferences.isEnableRemoteEventLoopback()) {
- EventUtil.eventLog("IEM: ArtifactEvent Loopback enabled" + (sender.isLocal() ? " - Ignoring Local Kick" : " - Kicking Local from Loopback"));
- }
-
- // Kick LOCAL
- 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()) {
- sendRemoteEvent(FrameworkEventUtil.getRemotePersistEvent(artifactEvent));
- }
- } catch (Exception ex) {
- EventUtil.eventLog("IEM: kickArtifactEvent", ex);
- }
- }
- };
- execute(runnable);
- }
-
- // Kick LOCAL and REMOTE ArtifactEvent
- public void kickTransactionEvent(final Sender sender, final TransactionEvent transEvent) {
- if (transEvent.getNetworkSender() == null) {
- EventUtil.eventLog("IEM: kickTransactionEvent - ERROR networkSender can't be null.");
- return;
- }
- if (preferences.isDisableEvents()) {
- return;
- }
- EventUtil.eventLog("IEM: 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 (preferences.isEnableRemoteEventLoopback()) {
- EventUtil.eventLog("IEM: TransactionEvent Loopback enabled" + (sender.isLocal() ? " - Ignoring Local Kick" : " - Kicking Local from Loopback"));
- }
-
- // Kick LOCAL
- boolean normalOperation = !preferences.isEnableRemoteEventLoopback();
- boolean loopbackTestEnabledAndRemoteEventReturned =
- preferences.isEnableRemoteEventLoopback() && sender.isRemote();
- if (normalOperation || loopbackTestEnabledAndRemoteEventReturned) {
- processTransactionEvent(sender, transEvent);
- }
-
- // Kick REMOTE (If source was Local and this was not a default branch changed event
- if (sender.isLocal()) {
- // Kick REMOTE
- sendRemoteEvent(FrameworkEventUtil.getRemoteTransactionEvent(transEvent));
- }
- } catch (Exception ex) {
- EventUtil.eventLog("IEM: kickTransactionEvent", ex);
- }
- }
- };
- execute(runnable);
- }
-
- /*
- * Kick LOCAL and REMOTE broadcast event
- */
- public void kickBroadcastEvent(final Sender sender, final BroadcastEvent broadcastEvent) {
- if (preferences.isDisableEvents()) {
- return;
- }
-
- if (!broadcastEvent.getBroadcastEventType().isPingOrPong()) {
- EventUtil.eventLog("IEM: kickBroadcastEvent: type: " + broadcastEvent.getBroadcastEventType().name() + " message: " + broadcastEvent.getMessage() + " - " + sender);
- }
- Runnable runnable = new Runnable() {
- @Override
- public void run() {
- try {
- // Kick from REMOTE
- if (sender.isRemote() || sender.isLocal() && broadcastEvent.getBroadcastEventType().isLocalEventType()) {
- processEventBroadcastEvent(sender, broadcastEvent);
- }
-
- // Kick REMOTE (If source was Local and this was not a default branch changed event
- if (sender.isLocal() && broadcastEvent.getBroadcastEventType().isRemoteEventType()) {
- sendRemoteEvent(FrameworkEventUtil.getRemoteBroadcastEvent(broadcastEvent));
- }
- } catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
- }
- }
- };
- execute(runnable);
- }
-
- /**
- * 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.
- */
- private void sendRemoteEvent(final RemoteEvent remoteEvent) {
- if (isConnected()) {
- EventUtil.eventLog(String.format("IEM: 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("IEM: 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("IEM: Loopback enabled - Returning events as Remote event.");
- String newSessionId = GUID.create();
- remoteEvent.getNetworkSender().setSessionId(newSessionId);
- try {
- frameworkListener.onEvent(remoteEvent);
- } catch (RemoteException ex) {
- EventUtil.eventLog("IEM: RemoteEvent - onEvent", ex);
- }
- }
- }
-
- 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/internal/Activator.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/Activator.java
index b647f57e764..c1e9b9aa154 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,6 +11,8 @@
package org.eclipse.osee.framework.skynet.core.internal;
import org.eclipse.osee.framework.core.client.ClientSessionManager;
+import org.eclipse.osee.framework.skynet.core.event.EventSystemPreferences;
+import org.eclipse.osee.framework.skynet.core.internal.event.EventListenerRegistry;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
@@ -20,21 +22,25 @@ import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator {
public static final String PLUGIN_ID = "org.eclipse.osee.framework.skynet.core";
- private static Activator instance;
+ // To Resolve Initialization issues causes by static OseeEventManager
+ private static final EventSystemPreferences preferences = new EventSystemPreferences();
+ private static final EventListenerRegistry eventListeners = new EventListenerRegistry();
@Override
public void start(BundleContext context) throws Exception {
- instance = this;
ClientSessionManager.class.getCanonicalName();
}
@Override
public void stop(BundleContext context) throws Exception {
- instance = null;
+ //
}
- public static Activator getInstance() {
- return instance;
+ public static EventSystemPreferences getEventPreferences() {
+ return preferences;
}
+ public static EventListenerRegistry getEventListeners() {
+ return eventListeners;
+ }
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/OseeEventAdmin.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/OseeEventAdmin.java
deleted file mode 100644
index 4d0ee240e95..00000000000
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/OseeEventAdmin.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*******************************************************************************
- * 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.logging.Level;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-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.OseeEventManager;
-import org.eclipse.osee.framework.skynet.core.event.listener.IEventListener;
-import org.eclipse.osee.framework.skynet.core.event.model.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.InternalEventManager;
-import org.eclipse.osee.framework.skynet.core.event.systems.ResMessagingConnectionListener;
-
-/**
- * @author Roberto E. Escobar
- */
-public class OseeEventAdmin {
-
- private IOseeCoreModelEventService coreModelEventService;
-
- private final EventManagerFactory factory = new EventManagerFactory();
-
- private ResMessagingConnectionListener connectionStatusListener;
- private final Collection<IEventListener> coreListeners = new ArrayList<IEventListener>();
- private Thread thread;
-
- public void setOseeCoreModelEventService(IOseeCoreModelEventService coreModelEventService) {
- this.coreModelEventService = coreModelEventService;
- }
-
- public void addEventListener(IEventListener listener) {
- OseeEventManager.addListener(listener);
- }
-
- public void removeEventListener(IEventListener listener) {
- OseeEventManager.removeListener(listener);
- }
-
- public void start() {
- final EventManagerData eventManagerData = OseeEventManager.getEventManagerData();
-
- connectionStatusListener = new ResMessagingConnectionListener(eventManagerData.getPreferences());
-
- Runnable runnable = new Runnable() {
- @Override
- public void run() {
- InternalEventManager eventManager =
- factory.createNewEventManager(coreModelEventService, eventManagerData.getPreferences(),
- eventManagerData.getListeners(), eventManagerData.getPriorityListeners(), connectionStatusListener);
- if (eventManager != null) {
- try {
- eventManagerData.setMessageEventManager(eventManager);
- coreModelEventService.addConnectionListener(connectionStatusListener);
- eventManager.start();
-
- try {
- OseeEventManager.kickLocalRemEvent(eventManager, RemoteEventServiceEventType.Rem_Connected);
- } catch (OseeCoreException ex) {
- OseeLog.log(Activator.class, Level.INFO, ex);
- }
- addCoreListeners();
- } catch (Throwable th) {
- OseeLog.log(Activator.class, Level.SEVERE, th);
- }
- OseeLog.log(Activator.class, Level.INFO, "Remote Event Service - Enabled");
-
- } else {
- OseeLog.log(Activator.class, Level.INFO, "Remote Event Service - Disabled");
- }
- }
- };
- thread = new Thread(runnable);
- thread.start();
- }
-
- 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();
- }
-
- public void stop() throws OseeCoreException {
- if (thread != null) {
- thread.interrupt();
- thread = null;
- }
- removeCoreListeners();
-
- InternalEventManager eventManager = OseeEventManager.getEventManagerData().getMessageEventManager();
- if (eventManager != null) {
- coreModelEventService.removeConnectionListener(connectionStatusListener);
- eventManager.stop();
- // OseeEventManager.kickLocalRemEvent(eventManager, RemoteEventServiceEventType.Rem_DisConnected);
- }
- }
-}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/OseeEventServiceImpl.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/OseeEventServiceImpl.java
new file mode 100644
index 00000000000..e213c8dfe10
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/OseeEventServiceImpl.java
@@ -0,0 +1,271 @@
+/*******************************************************************************
+ * 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.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.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.messaging.event.res.IOseeCoreModelEventService;
+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;
+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.event.EventSystemPreferences;
+import org.eclipse.osee.framework.skynet.core.event.EventUtil;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventService;
+import org.eclipse.osee.framework.skynet.core.event.listener.EventQosType;
+import org.eclipse.osee.framework.skynet.core.event.listener.IEventListener;
+import org.eclipse.osee.framework.skynet.core.event.model.AccessControlEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.ArtifactEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.BranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.BroadcastEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.FrameworkEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.RemoteEventServiceEventType;
+import org.eclipse.osee.framework.skynet.core.event.model.Sender;
+import org.eclipse.osee.framework.skynet.core.event.model.TransactionEvent;
+import org.eclipse.osee.framework.skynet.core.internal.event.ConnectionListenerImpl;
+import org.eclipse.osee.framework.skynet.core.internal.event.EventHandlers;
+import org.eclipse.osee.framework.skynet.core.internal.event.EventListenerRegistry;
+import org.eclipse.osee.framework.skynet.core.internal.event.EventTransport;
+import org.eclipse.osee.framework.skynet.core.internal.event.OseeEventThreadFactory;
+import org.eclipse.osee.framework.skynet.core.internal.event.handlers.AccessControlEventHandler;
+import org.eclipse.osee.framework.skynet.core.internal.event.handlers.AccessControlRemoteEventHandler;
+import org.eclipse.osee.framework.skynet.core.internal.event.handlers.ArtifactEventHandler;
+import org.eclipse.osee.framework.skynet.core.internal.event.handlers.ArtifactRemoteEventHandler;
+import org.eclipse.osee.framework.skynet.core.internal.event.handlers.BranchEventHandler;
+import org.eclipse.osee.framework.skynet.core.internal.event.handlers.BranchRemoteEventHandler;
+import org.eclipse.osee.framework.skynet.core.internal.event.handlers.BroadcastEventHandler;
+import org.eclipse.osee.framework.skynet.core.internal.event.handlers.BroadcastRemoteEventHandler;
+import org.eclipse.osee.framework.skynet.core.internal.event.handlers.RemoteServiceEventHandler;
+import org.eclipse.osee.framework.skynet.core.internal.event.handlers.TransactionEventHandler;
+import org.eclipse.osee.framework.skynet.core.internal.event.handlers.TransactionRemoteEventHandler;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class OseeEventServiceImpl implements OseeEventService {
+
+ private final EventSystemPreferences preferences;
+ private final EventListenerRegistry listeners;
+ private final EventHandlers handlers;
+
+ private IOseeCoreModelEventService messagingService;
+
+ private EventTransport eventTransport;
+ private ConnectionListenerImpl connectionStatus;
+ private ExecutorService executor;
+
+ private final List<ServiceReference<IEventListener>> pendingServices =
+ new CopyOnWriteArrayList<ServiceReference<IEventListener>>();
+
+ private Thread thread;
+
+ public OseeEventServiceImpl() {
+ super();
+ this.handlers = new EventHandlers();
+
+ // TODO Fix initialization of OseeEventManager - These should not be singletons
+ this.preferences = Activator.getEventPreferences();
+ this.listeners = Activator.getEventListeners();
+ }
+
+ public void setOseeCoreModelEventService(IOseeCoreModelEventService messagingService) {
+ this.messagingService = messagingService;
+ }
+
+ public void addListener(ServiceReference<IEventListener> reference) {
+ if (isReady()) {
+ registerListener(reference);
+ } else {
+ pendingServices.add(reference);
+ }
+
+ }
+
+ public void removeListener(ServiceReference<IEventListener> reference) {
+ if (isReady()) {
+ unregisterListener(reference);
+ } else {
+ pendingServices.remove(reference);
+ }
+ }
+
+ private void registerListener(ServiceReference<IEventListener> reference) {
+ IEventListener listener = getService(reference);
+ EventQosType qos = getEventQosType(reference);
+
+ EventUtil.eventLog("registering event listener - qos[%s] name[%s]", reference.getProperty("component.name"));
+ addListener(qos, listener);
+ }
+
+ private void unregisterListener(ServiceReference<IEventListener> reference) {
+ IEventListener listener = getService(reference);
+ EventQosType qos = getEventQosType(reference);
+
+ EventUtil.eventLog("deregistering event listener - qos[%s] name[%s]", reference.getProperty("component.name"));
+ removeListener(qos, listener);
+ }
+
+ private IEventListener getService(ServiceReference<IEventListener> reference) {
+ Bundle bundle = reference.getBundle();
+ BundleContext context = bundle.getBundleContext();
+ IEventListener listener = context.getService(reference);
+ return listener;
+ }
+
+ private boolean isReady() {
+ return eventTransport != null;
+ }
+
+ public void start() {
+ registerEventHandlers(handlers);
+
+ executor = createExecutor("Osee Client Events");
+ eventTransport = new EventTransport(preferences, handlers, listeners, executor, messagingService);
+ connectionStatus = new ConnectionListenerImpl(preferences, eventTransport);
+
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ for (ServiceReference<IEventListener> reference : pendingServices) {
+ registerListener(reference);
+ }
+ pendingServices.clear();
+
+ try {
+ messagingService.addConnectionListener(connectionStatus);
+ messagingService.addFrameworkListener(eventTransport);
+ eventTransport.send(this, RemoteEventServiceEventType.Rem_Connected);
+ } catch (OseeCoreException ex) {
+ eventTransport.setConnected(false);
+ OseeLog.log(Activator.class, Level.SEVERE, ex);
+ }
+ }
+ };
+ thread = new Thread(runnable);
+ thread.start();
+ }
+
+ public void stop() throws OseeCoreException {
+ if (thread != null) {
+ thread.interrupt();
+ thread = null;
+ }
+ if (connectionStatus != null) {
+ messagingService.removeConnectionListener(connectionStatus);
+ connectionStatus = null;
+ }
+ if (eventTransport != null) {
+ eventTransport.setConnected(false);
+ messagingService.removeFrameworkListener(eventTransport);
+ }
+ if (executor != null) {
+ executor.shutdown();
+ }
+ deregisterEventHandlers(handlers);
+ eventTransport = null;
+ }
+
+ private EventQosType getEventQosType(ServiceReference<IEventListener> reference) {
+ EventQosType type = EventQosType.NORMAL;
+ String value = (String) reference.getProperty("qos");
+ if (Strings.isValid(value)) {
+ for (EventQosType qosType : EventQosType.values()) {
+ if (qosType.name().equalsIgnoreCase(value)) {
+ type = qosType;
+ break;
+ }
+ }
+ }
+ return type;
+ }
+
+ private void registerEventHandlers(EventHandlers handlers) {
+ handlers.addLocalHandler(AccessControlEvent.class, new AccessControlEventHandler());
+ handlers.addLocalHandler(ArtifactEvent.class, new ArtifactEventHandler());
+ handlers.addLocalHandler(BranchEvent.class, new BranchEventHandler());
+ handlers.addLocalHandler(BroadcastEvent.class, new BroadcastEventHandler());
+ handlers.addLocalHandler(RemoteEventServiceEventType.class, new RemoteServiceEventHandler());
+ handlers.addLocalHandler(TransactionEvent.class, new TransactionEventHandler());
+
+ handlers.addRemoteHandler(RemoteAccessControlEvent1.class, new AccessControlRemoteEventHandler());
+ handlers.addRemoteHandler(RemotePersistEvent1.class, new ArtifactRemoteEventHandler());
+ handlers.addRemoteHandler(RemoteBranchEvent1.class, new BranchRemoteEventHandler());
+ handlers.addRemoteHandler(RemoteBroadcastEvent1.class, new BroadcastRemoteEventHandler());
+ handlers.addRemoteHandler(RemoteTransactionEvent1.class, new TransactionRemoteEventHandler());
+ }
+
+ private void deregisterEventHandlers(EventHandlers handlers) {
+ handlers.removeLocalHandler(AccessControlEvent.class);
+ handlers.removeLocalHandler(ArtifactEvent.class);
+ handlers.removeLocalHandler(BranchEvent.class);
+ handlers.removeLocalHandler(BroadcastEvent.class);
+ handlers.removeLocalHandler(RemoteEventServiceEventType.class);
+ handlers.removeLocalHandler(TransactionEvent.class);
+
+ handlers.removeRemoteHandler(RemoteAccessControlEvent1.class);
+ handlers.removeRemoteHandler(RemotePersistEvent1.class);
+ handlers.removeRemoteHandler(RemoteBranchEvent1.class);
+ handlers.removeRemoteHandler(RemoteBroadcastEvent1.class);
+ handlers.removeRemoteHandler(RemoteTransactionEvent1.class);
+ }
+
+ private ExecutorService createExecutor(String threadPrefix) {
+ int numberOfProcessors = Runtime.getRuntime().availableProcessors();
+ if (numberOfProcessors > 4) {
+ numberOfProcessors = 4;
+ }
+ ThreadFactory threadFactory = new OseeEventThreadFactory(threadPrefix);
+ return Executors.newFixedThreadPool(numberOfProcessors, threadFactory);
+ }
+
+ @Override
+ public boolean isConnected() {
+ return eventTransport.isConnected();
+ }
+
+ @Override
+ public <E extends FrameworkEvent> void send(Object object, E event) throws OseeCoreException {
+ eventTransport.send(object, event);
+ }
+
+ @Override
+ public <E extends RemoteEvent> void receive(E event) {
+ eventTransport.onEvent(event);
+ }
+
+ @Override
+ public <E extends FrameworkEvent> void receive(Sender sender, E event) throws OseeCoreException {
+ eventTransport.sendLocal(sender, event);
+ }
+
+ @Override
+ public void addListener(EventQosType qos, IEventListener listener) {
+ listeners.addListener(qos, listener);
+ }
+
+ @Override
+ public void removeListener(EventQosType qos, IEventListener listener) {
+ listeners.removeListener(qos, listener);
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/ServiceUtil.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/ServiceUtil.java
index c73a800540e..0e36056b5ac 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/ServiceUtil.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/ServiceUtil.java
@@ -18,6 +18,7 @@ import org.eclipse.osee.framework.database.IOseeDatabaseService;
import org.eclipse.osee.framework.lifecycle.ILifecycleService;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.skynet.core.AccessPolicy;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventService;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.BundleException;
@@ -46,6 +47,10 @@ public final class ServiceUtil {
return service;
}
+ public static OseeEventService getEventService() throws OseeCoreException {
+ return getService(OseeEventService.class);
+ }
+
public static IdentityService getIdentityService() throws OseeCoreException {
return getService(IdentityService.class);
}
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/internal/event/ConnectionListenerImpl.java
index 493ea395257..543a2ffe36d 100644
--- 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/internal/event/ConnectionListenerImpl.java
@@ -8,7 +8,7 @@
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
-package org.eclipse.osee.framework.skynet.core.event.systems;
+package org.eclipse.osee.framework.skynet.core.internal.event;
import java.util.logging.Level;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
@@ -17,28 +17,27 @@ 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.model.RemoteEventServiceEventType;
-import org.eclipse.osee.framework.skynet.core.event.systems.InternalEventManager.ConnectionStatus;
import org.eclipse.osee.framework.skynet.core.internal.Activator;
/**
* @author Donald G. Dunne
*/
-public final class ResMessagingConnectionListener implements ConnectionListener, ConnectionStatus {
+public final class ConnectionListenerImpl implements ConnectionListener {
private final EventSystemPreferences preferences;
- private boolean connectionStatus;
+ private final Transport transport;
- public ResMessagingConnectionListener(EventSystemPreferences preferences) {
+ public ConnectionListenerImpl(EventSystemPreferences preferences, Transport transport) {
this.preferences = preferences;
+ this.transport = transport;
}
@Override
public void connected(ConnectionNode node) {
- connectionStatus = preferences.isOseeEventBrokerValid();
+ transport.setConnected(preferences.isOseeEventBrokerValid());
try {
- OseeEventManager.kickLocalRemEvent(this, RemoteEventServiceEventType.Rem_Connected);
+ transport.send(this, RemoteEventServiceEventType.Rem_Connected);
OseeLog.log(Activator.class, Level.INFO, "Remote Event Service - Connected");
} catch (OseeCoreException ex) {
EventUtil.eventLog("REM: ResConnectionListener", ex);
@@ -47,17 +46,13 @@ public final class ResMessagingConnectionListener implements ConnectionListener,
@Override
public void notConnected(ConnectionNode node) {
- connectionStatus = false;
+ transport.setConnected(false);
try {
- OseeEventManager.kickLocalRemEvent(this, RemoteEventServiceEventType.Rem_DisConnected);
+ transport.send(this, RemoteEventServiceEventType.Rem_DisConnected);
OseeLog.log(Activator.class, Level.INFO, "Remote Event Service - Dis-Connected");
} catch (OseeCoreException ex) {
EventUtil.eventLog("REM: 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/internal/event/ConnectionStatus.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/ConnectionStatus.java
new file mode 100644
index 00000000000..9bfbfb0614f
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/ConnectionStatus.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2012 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.event;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public interface ConnectionStatus {
+ boolean isConnected();
+
+ void setConnected(boolean value);
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/EventHandlerLocal.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/EventHandlerLocal.java
new file mode 100644
index 00000000000..fec0937b862
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/EventHandlerLocal.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2012 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.event;
+
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.skynet.core.event.listener.IEventListener;
+import org.eclipse.osee.framework.skynet.core.event.model.FrameworkEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.Sender;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public interface EventHandlerLocal<L extends IEventListener, E extends FrameworkEvent> {
+
+ void handle(L listener, Sender sender, E event);
+
+ void send(Transport transport, Sender sender, E event) throws OseeCoreException;
+
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/EventHandlerRemote.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/EventHandlerRemote.java
new file mode 100644
index 00000000000..1a2c0e590fd
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/EventHandlerRemote.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * 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.internal.event;
+
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.messaging.event.res.RemoteEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.Sender;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public interface EventHandlerRemote<R extends RemoteEvent> {
+
+ void handle(Transport transport, Sender sender, R remoteEvent) throws OseeCoreException;
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/EventHandlers.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/EventHandlers.java
new file mode 100644
index 00000000000..f27e2ea1145
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/EventHandlers.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * 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.internal.event;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.eclipse.osee.framework.messaging.event.res.RemoteEvent;
+import org.eclipse.osee.framework.skynet.core.event.listener.IEventListener;
+import org.eclipse.osee.framework.skynet.core.event.model.FrameworkEvent;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class EventHandlers {
+
+ private final Map<Class<? extends FrameworkEvent>, EventHandlerLocal<? extends IEventListener, ? extends FrameworkEvent>> handlers =
+ new HashMap<Class<? extends FrameworkEvent>, EventHandlerLocal<? extends IEventListener, ? extends FrameworkEvent>>();
+
+ private final Map<Class<? extends RemoteEvent>, EventHandlerRemote<? extends RemoteEvent>> remoteHandlers =
+ new HashMap<Class<? extends RemoteEvent>, EventHandlerRemote<? extends RemoteEvent>>();
+
+ public void addLocalHandler(Class<? extends FrameworkEvent> clazz, EventHandlerLocal<? extends IEventListener, ? extends FrameworkEvent> handler) {
+ handlers.put(clazz, handler);
+ }
+
+ public void removeLocalHandler(Class<? extends FrameworkEvent> clazz) {
+ handlers.remove(clazz);
+ }
+
+ public void addRemoteHandler(Class<? extends RemoteEvent> clazz, EventHandlerRemote<? extends RemoteEvent> handler) {
+ remoteHandlers.put(clazz, handler);
+ }
+
+ public void removeRemoteHandler(Class<? extends RemoteEvent> clazz) {
+ remoteHandlers.remove(clazz);
+ }
+
+ @SuppressWarnings("unchecked")
+ public <H extends EventHandlerRemote<? extends RemoteEvent>> H getRemoteHandler(RemoteEvent event) {
+ return (H) remoteHandlers.get(event.getClass());
+ }
+
+ @SuppressWarnings("unchecked")
+ public <H extends EventHandlerLocal<? extends IEventListener, ? extends FrameworkEvent>> H getLocalHandler(FrameworkEvent event) {
+ return (H) handlers.get(event.getClass());
+ }
+
+ public int sizeLocal() {
+ return handlers.size();
+ }
+
+ public int sizeRemote() {
+ return remoteHandlers.size();
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/EventListenerRegistry.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/EventListenerRegistry.java
new file mode 100644
index 00000000000..aa40a090cca
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/EventListenerRegistry.java
@@ -0,0 +1,211 @@
+/*******************************************************************************
+ * Copyright (c) 2012 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.event;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import org.eclipse.osee.framework.skynet.core.event.listener.EventQosType;
+import org.eclipse.osee.framework.skynet.core.event.listener.IEventListener;
+import org.eclipse.osee.framework.skynet.core.event.model.FrameworkEvent;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class EventListenerRegistry {
+
+ private final Map<EventQosType, EventListeners> qosToListeners =
+ new ConcurrentHashMap<EventQosType, EventListeners>();
+ private final Set<IEventListener> listenerSet = new HashSet<IEventListener>();
+
+ public void addListener(EventQosType qos, IEventListener listener) {
+ if (listener != null) {
+ EventListeners registry = qosToListeners.get(qos);
+ if (registry == null) {
+ registry = new EventListeners();
+ qosToListeners.put(qos, registry);
+ }
+ registry.addListener(listener);
+ listenerSet.add(listener);
+ }
+ }
+
+ public void removeListener(EventQosType qos, IEventListener listener) {
+ if (listener != null) {
+ EventListeners registry = qosToListeners.get(qos);
+ if (registry != null) {
+ registry.removeListener(listener);
+ if (registry.isEmpty()) {
+ qosToListeners.remove(qos);
+ }
+ }
+ listenerSet.remove(listener);
+ }
+ }
+
+ public void removeListener(IEventListener listener) {
+ if (listener != null) {
+ listenerSet.remove(listener);
+ for (EventQosType type : EventQosType.values()) {
+ removeListener(type, listener);
+ }
+ }
+ }
+
+ public int size(EventQosType type) {
+ int count = 0;
+ EventListeners registry = qosToListeners.get(type);
+ if (registry != null) {
+ count += registry.size();
+ }
+ return count;
+ }
+
+ public int size() {
+ return listenerSet.size();
+ }
+
+ public void clearAll() {
+ qosToListeners.clear();
+ listenerSet.clear();
+ }
+
+ public <D extends IEventListener> Collection<D> getListeners(EventQosType qos, FrameworkEvent event) {
+ Collection<D> listener = null;
+ EventListeners registry = qosToListeners.get(qos);
+ if (registry != null) {
+ listener = registry.getListeners(event.getClass());
+ }
+ if (listener == null) {
+ listener = Collections.emptyList();
+ }
+ return listener;
+ }
+
+ @Override
+ public String toString() {
+ List<String> values = new ArrayList<String>();
+ for (EventQosType type : EventQosType.values()) {
+ EventListeners registry = qosToListeners.get(type);
+ for (Class<? extends FrameworkEvent> clazz : registry.keySet()) {
+ Collection<IEventListener> data = registry.getListeners(clazz);
+ for (IEventListener listener : data) {
+ values.add(String.format("type[%s] - event[%s] - [%s]", type, clazz, listener));
+ }
+ }
+ }
+ String[] listArr = values.toArray(new String[values.size()]);
+ Arrays.sort(listArr);
+ return org.eclipse.osee.framework.jdk.core.util.Collections.toString("\n", (Object[]) listArr);
+ }
+ private final static class EventListeners {
+ private final Map<Class<? extends FrameworkEvent>, Set<IEventListener>> eventClassToListeners =
+ new ConcurrentHashMap<Class<? extends FrameworkEvent>, Set<IEventListener>>();
+ private int size = 0;
+
+ public void addListener(IEventListener listener) {
+ if (listener != null) {
+ Collection<Class<? extends FrameworkEvent>> events = getCompatibleEvents(listener);
+ for (Class<? extends FrameworkEvent> clazz : events) {
+ add(clazz, listener);
+ }
+ }
+ }
+
+ private void add(Class<? extends FrameworkEvent> clazz, IEventListener listener) {
+ Set<IEventListener> items = eventClassToListeners.get(clazz);
+ if (items == null) {
+ items = new HashSet<IEventListener>();
+ eventClassToListeners.put(clazz, items);
+ }
+ synchronized (items) {
+ if (items.add(listener)) {
+ size++;
+ }
+ }
+ }
+
+ public Set<Class<? extends FrameworkEvent>> keySet() {
+ return eventClassToListeners.keySet();
+ }
+
+ public int size() {
+ return size;
+ }
+
+ public boolean isEmpty() {
+ return eventClassToListeners.isEmpty();
+ }
+
+ public void removeListener(IEventListener listener) {
+ if (listener != null) {
+ Collection<Class<? extends FrameworkEvent>> events = getCompatibleEvents(listener);
+ for (Class<? extends FrameworkEvent> clazz : events) {
+ remove(clazz, listener);
+ }
+ }
+ }
+
+ private void remove(Class<? extends FrameworkEvent> clazz, IEventListener listener) {
+ Set<IEventListener> items = eventClassToListeners.get(clazz);
+ if (items != null) {
+ synchronized (items) {
+ if (items.remove(listener)) {
+ size--;
+ }
+ }
+ if (items.isEmpty()) {
+ eventClassToListeners.remove(clazz);
+ }
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ public <D extends IEventListener> Collection<D> getListeners(Class<? extends FrameworkEvent> clazz) {
+ Collection<D> items = (Collection<D>) eventClassToListeners.get(clazz);
+ if (items == null) {
+ items = Collections.emptySet();
+ } else {
+ Collection<D> copy = new HashSet<D>();
+ copy.addAll(items);
+ items = copy;
+ }
+ return items;
+ }
+
+ @SuppressWarnings("unchecked")
+ private Collection<Class<? extends FrameworkEvent>> getCompatibleEvents(IEventListener listener) {
+ Collection<Class<? extends FrameworkEvent>> events = new HashSet<Class<? extends FrameworkEvent>>();
+ Method[] methods = listener.getClass().getMethods();
+ if (methods != null) {
+ for (Method method : methods) {
+ Class<?>[] parameters = method.getParameterTypes();
+ if (parameters != null) {
+ for (Class<?> parameter : parameters) {
+ if (FrameworkEvent.class.isAssignableFrom(parameter)) {
+ events.add((Class<? extends FrameworkEvent>) parameter);
+ }
+ }
+ }
+ }
+ }
+ return events;
+ }
+
+ }
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/EventTransport.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/EventTransport.java
new file mode 100644
index 00000000000..a75d357ca59
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/EventTransport.java
@@ -0,0 +1,238 @@
+/*******************************************************************************
+ * Copyright (c) 2012 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.event;
+
+import java.util.Collection;
+import java.util.concurrent.ExecutorService;
+
+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.client.ClientSessionManager;
+import org.eclipse.osee.framework.core.exception.OseeAuthenticationRequiredException;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.util.Conditions;
+import org.eclipse.osee.framework.jdk.core.util.GUID;
+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.EventSystemPreferences;
+import org.eclipse.osee.framework.skynet.core.event.EventUtil;
+import org.eclipse.osee.framework.skynet.core.event.listener.EventQosType;
+import org.eclipse.osee.framework.skynet.core.event.listener.IEventListener;
+import org.eclipse.osee.framework.skynet.core.event.model.FrameworkEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.HasEventType;
+import org.eclipse.osee.framework.skynet.core.event.model.HasNetworkSender;
+import org.eclipse.osee.framework.skynet.core.event.model.Sender;
+import org.eclipse.osee.framework.skynet.core.internal.Activator;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class EventTransport implements Transport, IFrameworkEventListener {
+
+ private final EventSystemPreferences preferences;
+ private final EventHandlers handlers;
+ private final EventListenerRegistry listenerRegistry;
+ private final ExecutorService executorService;
+ private final IOseeCoreModelEventService messagingService;
+ private volatile boolean connectionStatus;
+
+ public EventTransport(EventSystemPreferences preferences, EventHandlers handlers, EventListenerRegistry listenerRegistry, ExecutorService executorService, IOseeCoreModelEventService messagingService) {
+ super();
+ this.preferences = preferences;
+ this.handlers = handlers;
+ this.listenerRegistry = listenerRegistry;
+ this.executorService = executorService;
+ this.messagingService = messagingService;
+ this.connectionStatus = false;
+ }
+
+ @Override
+ public void setConnected(boolean value) {
+ this.connectionStatus = value;
+ }
+
+ @Override
+ public boolean isConnected() {
+ return connectionStatus;
+ }
+
+ @Override
+ public boolean isLoopbackEnabled() {
+ return preferences.isEnableRemoteEventLoopback();
+ }
+
+ @Override
+ public boolean isDispatchToLocalAllowed(Sender sender) {
+ boolean normalOperation = !isLoopbackEnabled();
+ return normalOperation || (isLoopbackEnabled() && sender.isRemote());
+ }
+
+ private boolean areEventsAllowed() {
+ return !preferences.isDisableEvents();
+ }
+
+ private 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()) {
+ sender = (Sender) sourceObject;
+ } else {
+ // create new sender based on sourceObject
+ sender = Sender.createSender(sourceObject, ClientSessionManager.getSession());
+ }
+ return sender;
+ }
+
+ @Override
+ public <E extends FrameworkEvent> void send(final Object object, final E event) throws OseeCoreException {
+ if (areEventsAllowed()) {
+ Sender sender = createSender(object);
+ if (event instanceof HasNetworkSender) {
+ HasNetworkSender netSender = (HasNetworkSender) event;
+ netSender.setNetworkSender(sender.getNetworkSender());
+ }
+ send(sender, event);
+ }
+ }
+
+ @Override
+ public <E extends FrameworkEvent> void send(final Sender sender, final E event) throws OseeCoreException {
+ if (areEventsAllowed()) {
+ Conditions.checkNotNull(sender, "sender");
+ Conditions.checkNotNull(event, "event");
+
+ final EventHandlerLocal<? extends IEventListener, E> handler = handlers.getLocalHandler(event);
+ Conditions.checkNotNull(handler, "eventHandler", "No event handler found for [%s]", event.getClass().getName());
+
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ if (preferences.isEnableRemoteEventLoopback()) {
+ EventUtil.eventLog("IEM: Loopback enabled [%s] - %s", event.getClass().getSimpleName(),
+ sender.isLocal() ? "Ignoring Local Kick" : "Kicking Local from Loopback");
+ }
+ try {
+ if (event instanceof HasEventType) {
+ HasEventType<?> hasEventType = (HasEventType<?>) event;
+ Conditions.checkNotNull(hasEventType.getEventType(), "eventType", "for event [%s]",
+ event.getClass().getSimpleName());
+ }
+ if (event instanceof HasNetworkSender) {
+ HasNetworkSender netSender = (HasNetworkSender) event;
+ Conditions.checkNotNull(netSender.getNetworkSender(), "networkSender", "for event [%s]",
+ event.getClass().getSimpleName());
+ }
+ handler.send(EventTransport.this, sender, event);
+ } catch (Throwable th) {
+ EventUtil.eventLog(th, "IEM: Error sending event [%s] from sender [%s]",
+ event.getClass().getSimpleName(), sender);
+ }
+ }
+ };
+
+ EventUtil.eventLog("IEM: Dispatched Event - type[%s] to[%s]", event.getClass().getSimpleName(), sender);
+ execute(runnable);
+ }
+ }
+
+ @Override
+ public <E extends FrameworkEvent, L extends IEventListener, H extends EventHandlerLocal<L, E>> void sendLocal(final Sender sender, final E event) throws OseeCoreException {
+ EventHandlerLocal<L, E> handler = handlers.getLocalHandler(event);
+ Conditions.checkNotNull(handler, "localEventHandler", "No local event handler available for event [%s]",
+ event.getClass().getName());
+ EventUtil.eventLog("IEM: processing event [%s]", event);
+ for (EventQosType qos : EventQosType.values()) {
+ Collection<L> listeners = listenerRegistry.getListeners(qos, event);
+ for (L listener : listeners) {
+ try {
+ handler.handle(listener, sender, event);
+ } catch (Exception ex) {
+ EventUtil.eventLog(ex, "IEM: Error processing - qos[%s] event[%s]", qos, event);
+ }
+ }
+ }
+ EventUtil.eventLog("IEM: processed event [%s]", event);
+ }
+
+ @Override
+ public void sendRemote(final RemoteEvent remoteEvent) {
+ if (isConnected()) {
+ EventUtil.eventLog(String.format("IEM: kick - [%s]", remoteEvent));
+ Job job =
+ new Job(String.format("[%s] - sending [%s]", getClass().getSimpleName(),
+ remoteEvent.getClass().getSimpleName())) {
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ try {
+ messagingService.sendRemoteEvent(remoteEvent);
+ } catch (Exception ex) {
+ EventUtil.eventLog("IEM: 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("IEM: Loopback enabled - Returning events as Remote event.");
+ String newSessionId = GUID.create();
+ remoteEvent.getNetworkSender().setSessionId(newSessionId);
+ onEvent(remoteEvent);
+ }
+ }
+
+ @Override
+ public void onEvent(final RemoteEvent remoteEvent) {
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ try {
+ if (remoteEvent != null) {
+ Sender sender = Sender.createSender(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()) {
+ handleEvent(sender, remoteEvent);
+ }
+ }
+ } catch (Throwable th) {
+ EventUtil.eventLog("IEM: RemoteEvent - onEvent", th);
+ }
+ }
+ };
+ execute(runnable);
+ }
+
+ private <E extends RemoteEvent> void handleEvent(Sender sender, E event) throws OseeCoreException {
+ EventHandlerRemote<E> handler = handlers.getRemoteHandler(event);
+ Conditions.checkNotNull(handler, "remoteEventHandler", "No remote event handler available for event [%s]",
+ event.getClass().getName());
+ EventUtil.eventLog("IEM: processing remote event [%s]", event);
+ handler.handle(this, sender, event);
+ EventUtil.eventLog("IEM: processed remote event [%s]", event);
+ }
+
+ private void execute(Runnable runnable) {
+ if (preferences.isPendRunning()) {
+ runnable.run();
+ } else {
+ executorService.submit(runnable);
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/OseeEventThreadFactory.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/OseeEventThreadFactory.java
index 6e6661592ad..cf1704c68f8 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/OseeEventThreadFactory.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/OseeEventThreadFactory.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.internal.event;
import java.lang.ref.WeakReference;
import java.util.List;
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/Transport.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/Transport.java
new file mode 100644
index 00000000000..9ddd94ac245
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/Transport.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * 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.internal.event;
+
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.messaging.event.res.RemoteEvent;
+import org.eclipse.osee.framework.skynet.core.event.listener.IEventListener;
+import org.eclipse.osee.framework.skynet.core.event.model.FrameworkEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.Sender;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public interface Transport extends ConnectionStatus {
+
+ boolean isLoopbackEnabled();
+
+ boolean isDispatchToLocalAllowed(Sender sender);
+
+ <E extends FrameworkEvent> void send(final Object object, final E event) throws OseeCoreException;
+
+ <E extends FrameworkEvent> void send(final Sender sender, final E event) throws OseeCoreException;
+
+ <E extends FrameworkEvent, L extends IEventListener, H extends EventHandlerLocal<L, E>> void sendLocal(Sender sender, E event) throws OseeCoreException;
+
+ void sendRemote(RemoteEvent remoteEvent);
+
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/AccessControlEventHandler.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/AccessControlEventHandler.java
new file mode 100644
index 00000000000..3c2bf6b92a9
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/AccessControlEventHandler.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2012 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.event.handlers;
+
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.skynet.core.event.FrameworkEventUtil;
+import org.eclipse.osee.framework.skynet.core.event.listener.IAccessControlEventListener;
+import org.eclipse.osee.framework.skynet.core.event.model.AccessControlEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.Sender;
+import org.eclipse.osee.framework.skynet.core.internal.event.EventHandlerLocal;
+import org.eclipse.osee.framework.skynet.core.internal.event.Transport;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class AccessControlEventHandler implements EventHandlerLocal<IAccessControlEventListener, AccessControlEvent> {
+
+ @Override
+ public void handle(IAccessControlEventListener listener, Sender sender, AccessControlEvent event) {
+ listener.handleAccessControlArtifactsEvent(sender, event);
+ }
+
+ @Override
+ public void send(Transport transport, Sender sender, AccessControlEvent event) throws OseeCoreException {
+ if (transport.isDispatchToLocalAllowed(sender)) {
+ transport.sendLocal(sender, event);
+ }
+ if (sender.isLocal() && event.getEventType().isRemoteEventType()) {
+ transport.sendRemote(FrameworkEventUtil.getRemoteAccessControlEvent(event));
+ }
+ }
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/AccessControlRemoteEventHandler.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/AccessControlRemoteEventHandler.java
new file mode 100644
index 00000000000..c7dd2232435
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/AccessControlRemoteEventHandler.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2012 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.event.handlers;
+
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.messaging.event.res.msgs.RemoteAccessControlEvent1;
+import org.eclipse.osee.framework.skynet.core.event.FrameworkEventUtil;
+import org.eclipse.osee.framework.skynet.core.event.model.AccessControlEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.Sender;
+import org.eclipse.osee.framework.skynet.core.internal.event.EventHandlerRemote;
+import org.eclipse.osee.framework.skynet.core.internal.event.Transport;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class AccessControlRemoteEventHandler implements EventHandlerRemote<RemoteAccessControlEvent1> {
+
+ @Override
+ public void handle(Transport transport, Sender sender, RemoteAccessControlEvent1 remoteEvent) throws OseeCoreException {
+ AccessControlEvent accessEvent = FrameworkEventUtil.getAccessControlEvent(remoteEvent);
+ transport.send(sender, accessEvent);
+ }
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/ArtifactEventHandler.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/ArtifactEventHandler.java
new file mode 100644
index 00000000000..ec8f8e5e41e
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/ArtifactEventHandler.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2012 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.event.handlers;
+
+import java.util.List;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.skynet.core.event.EventUtil;
+import org.eclipse.osee.framework.skynet.core.event.FrameworkEventUtil;
+import org.eclipse.osee.framework.skynet.core.event.filter.IEventFilter;
+import org.eclipse.osee.framework.skynet.core.event.listener.IArtifactEventListener;
+import org.eclipse.osee.framework.skynet.core.event.listener.IEventFilteredListener;
+import org.eclipse.osee.framework.skynet.core.event.model.ArtifactEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.Sender;
+import org.eclipse.osee.framework.skynet.core.internal.event.EventHandlerLocal;
+import org.eclipse.osee.framework.skynet.core.internal.event.Transport;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class ArtifactEventHandler implements EventHandlerLocal<IArtifactEventListener, ArtifactEvent> {
+
+ @Override
+ public void handle(IArtifactEventListener listener, Sender sender, ArtifactEvent event) {
+ EventUtil.eventLog(String.format("IEM: processArtsAndRels [%s]", event));
+
+ List<? extends IEventFilter> filters = ((IEventFilteredListener) listener).getEventFilters();
+ if (filters != null) {
+ for (IEventFilter eventFilter : filters) {
+ // If this branch doesn't match, don't pass events through
+ if (!eventFilter.isMatch(event.getBranchGuid())) {
+ return;
+ }
+ // Process artifacts and relations only if there were any in this ArtifactEvent
+ if (!event.getArtifacts().isEmpty() || !event.getRelations().isEmpty()) {
+ boolean matchFound = false;
+ // If artifacts are in event and one or more match, pass events through
+ if (!event.getArtifacts().isEmpty() && eventFilter.isMatchArtifacts(event.getArtifacts())) {
+ matchFound = true;
+ }
+ // If relations are in event and one or more artifacts of the relations match, pass events through
+ if (!matchFound && !event.getRelations().isEmpty() && eventFilter.isMatchRelationArtifacts(event.getRelations())) {
+ matchFound = true;
+ }
+ // If no match, don't pass events through
+ if (!matchFound) {
+ return;
+ }
+ }
+ }
+ }
+ listener.handleArtifactEvent(event, sender);
+ }
+
+ @Override
+ public void send(Transport transport, Sender sender, ArtifactEvent event) throws OseeCoreException {
+ if (transport.isDispatchToLocalAllowed(sender)) {
+ transport.sendLocal(sender, event);
+ }
+ if (sender.isLocal() && !event.isReloadEvent()) {
+ transport.sendRemote(FrameworkEventUtil.getRemotePersistEvent(event));
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/ArtifactRemoteEventHandler.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/ArtifactRemoteEventHandler.java
new file mode 100644
index 00000000000..5834070678a
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/ArtifactRemoteEventHandler.java
@@ -0,0 +1,229 @@
+/*******************************************************************************
+ * Copyright (c) 2012 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.event.handlers;
+
+import java.util.Collection;
+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.messaging.event.res.AttributeEventModificationType;
+import org.eclipse.osee.framework.messaging.event.res.msgs.RemotePersistEvent1;
+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.attribute.AttributeTypeManager;
+import org.eclipse.osee.framework.skynet.core.event.EventUtil;
+import org.eclipse.osee.framework.skynet.core.event.FrameworkEventUtil;
+import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
+import org.eclipse.osee.framework.skynet.core.event.model.ArtifactEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.AttributeChange;
+import org.eclipse.osee.framework.skynet.core.event.model.EventBasicGuidArtifact;
+import org.eclipse.osee.framework.skynet.core.event.model.EventBasicGuidRelation;
+import org.eclipse.osee.framework.skynet.core.event.model.EventChangeTypeBasicGuidArtifact;
+import org.eclipse.osee.framework.skynet.core.event.model.EventModType;
+import org.eclipse.osee.framework.skynet.core.event.model.EventModifiedBasicGuidArtifact;
+import org.eclipse.osee.framework.skynet.core.event.model.Sender;
+import org.eclipse.osee.framework.skynet.core.internal.event.EventHandlerRemote;
+import org.eclipse.osee.framework.skynet.core.internal.event.Transport;
+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;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class ArtifactRemoteEventHandler implements EventHandlerRemote<RemotePersistEvent1> {
+
+ @Override
+ public void handle(Transport transport, Sender sender, RemotePersistEvent1 remoteEvent) throws OseeCoreException {
+ RemotePersistEvent1 event1 = remoteEvent;
+ ArtifactEvent transEvent = FrameworkEventUtil.getPersistEvent(event1);
+ updateArtifacts(sender, transEvent.getArtifacts(), remoteEvent.getTransactionId());
+ updateRelations(sender, transEvent.getRelations());
+ transport.send(sender, transEvent);
+ }
+
+ private void updateArtifacts(Sender sender, Collection<EventBasicGuidArtifact> artifacts, int transactionId) {
+ // Don't crash on any one artifact update problem (no update method throughs exceptions)
+ for (EventBasicGuidArtifact guidArt : artifacts) {
+ EventUtil.eventLog(String.format("REM: updateArtifact -> [%s]", guidArt));
+ EventModType eventModType = guidArt.getModType();
+ switch (eventModType) {
+ case Added:
+ // Handle Added Artifacts
+ // Nothing to do for added cause they're not in cache yet. Apps will load if they need them.
+ // do nothing cause not in cache
+ break;
+ case Modified:
+ updateModifiedArtifact((EventModifiedBasicGuidArtifact) guidArt, transactionId);
+ break;
+ case ChangeType:
+ ChangeArtifactType.handleRemoteChangeType((EventChangeTypeBasicGuidArtifact) guidArt);
+ break;
+ case Deleted:
+ case Purged:
+ updateDeletedArtifact(guidArt);
+ break;
+ default:
+ // Unknown mod type
+ EventUtil.eventLog(String.format("REM: updateArtifacts - Unhandled mod type [%s]", guidArt.getModType()));
+ break;
+ }
+ }
+ }
+
+ 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("REM: updateDeletedArtifact", ex);
+ }
+ }
+
+ private void updateModifiedArtifact(EventModifiedBasicGuidArtifact guidArt, int transactionId) {
+ 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.setTransactionId(transactionId);
+ 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(
+ "REM: 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("REM: 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("REM: 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("REM: Exception updating %s's attribute change for attributeTypeId %d.",
+ artifact.getSafeName(), attributeType.getId()), ex);
+ }
+ }
+ }
+ }
+ } catch (OseeCoreException ex) {
+ EventUtil.eventLog("REM: updateModifiedArtifact", ex);
+ }
+ }
+
+ private void updateRelations(Sender sender, Collection<EventBasicGuidRelation> relations) {
+ for (EventBasicGuidRelation guidArt : relations) {
+ // Don't crash on any one relation update problem
+ try {
+ EventUtil.eventLog(String.format("REM: updateRelation -> [%s]", guidArt));
+
+ 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 this relation only
+ if (aArtifact == null && bArtifact == null) {
+ continue;
+ }
+ boolean aArtifactLoaded = aArtifact != null;
+ boolean bArtifactLoaded = bArtifact != null;
+
+ if (aArtifactLoaded || bArtifactLoaded) {
+ RelationLink relation =
+ RelationManager.getLoadedRelationById(guidArt.getRelationId(), guidArt.getArtAId(),
+ guidArt.getArtBId(), branch);
+
+ RelationEventType eventType = guidArt.getModType();
+ switch (eventType) {
+ case Added:
+ if (relation == null || relation.getModificationType() == ModificationType.DELETED || relation.getModificationType() == ModificationType.ARTIFACT_DELETED) {
+ relation =
+ RelationManager.getOrCreate(guidArt.getArtAId(), guidArt.getArtBId(), branch, relationType,
+ guidArt.getRelationId(), guidArt.getGammaId(), guidArt.getRationale(),
+ ModificationType.NEW);
+ }
+ break;
+ case ModifiedRationale:
+ if (relation != null) {
+ relation.internalSetRationale(guidArt.getRationale());
+ relation.setNotDirty();
+ }
+ break;
+ case Deleted:
+ case Purged:
+ if (relation != null) {
+ relation.internalRemoteEventDelete();
+ }
+ break;
+ case Undeleted:
+ if (relation != null) {
+ relation.undelete();
+ relation.setNotDirty();
+ }
+ break;
+ default:
+ EventUtil.eventLog(String.format("REM: updateRelations - Unhandled mod type [%s]", eventType));
+ break;
+ }
+ }
+ } catch (OseeCoreException ex) {
+ EventUtil.eventLog("REM: updateRelations", ex);
+ }
+ }
+ }
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/BranchEventHandler.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/BranchEventHandler.java
new file mode 100644
index 00000000000..0ceedf1fdd5
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/BranchEventHandler.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2012 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.event.handlers;
+
+import java.util.List;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.skynet.core.event.FrameworkEventUtil;
+import org.eclipse.osee.framework.skynet.core.event.filter.IEventFilter;
+import org.eclipse.osee.framework.skynet.core.event.listener.IBranchEventListener;
+import org.eclipse.osee.framework.skynet.core.event.listener.IEventFilteredListener;
+import org.eclipse.osee.framework.skynet.core.event.model.BranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.BranchEventType;
+import org.eclipse.osee.framework.skynet.core.event.model.Sender;
+import org.eclipse.osee.framework.skynet.core.internal.event.EventHandlerLocal;
+import org.eclipse.osee.framework.skynet.core.internal.event.Transport;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class BranchEventHandler implements EventHandlerLocal<IBranchEventListener, BranchEvent> {
+
+ @Override
+ public void handle(IBranchEventListener listener, Sender sender, BranchEvent event) {
+ List<? extends IEventFilter> filters = ((IEventFilteredListener) listener).getEventFilters();
+ if (filters != null) {
+ for (IEventFilter eventFilter : filters) {
+ if (!eventFilter.isMatch(event.getBranchGuid())) {
+ return;
+ }
+ }
+ }
+ // Call listener if we matched all of the filters
+ listener.handleBranchEvent(sender, event);
+ }
+
+ @Override
+ public void send(Transport transport, Sender sender, BranchEvent event) throws OseeCoreException {
+ if (transport.isDispatchToLocalAllowed(sender)) {
+ transport.sendLocal(sender, event);
+ }
+
+ BranchEventType branchEventType = event.getEventType();
+ if (sender.isLocal() && branchEventType.isRemoteEventType()) {
+ transport.sendRemote(FrameworkEventUtil.getRemoteBranchEvent(event));
+ }
+ }
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/BranchRemoteEventHandler.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/BranchRemoteEventHandler.java
new file mode 100644
index 00000000000..99b2b015c5d
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/BranchRemoteEventHandler.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2012 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.event.handlers;
+
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.core.model.Branch;
+import org.eclipse.osee.framework.messaging.event.res.msgs.RemoteBranchEvent1;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
+import org.eclipse.osee.framework.skynet.core.event.EventUtil;
+import org.eclipse.osee.framework.skynet.core.event.FrameworkEventUtil;
+import org.eclipse.osee.framework.skynet.core.event.model.BranchEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.BranchEventType;
+import org.eclipse.osee.framework.skynet.core.event.model.Sender;
+import org.eclipse.osee.framework.skynet.core.internal.event.EventHandlerRemote;
+import org.eclipse.osee.framework.skynet.core.internal.event.Transport;
+import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class BranchRemoteEventHandler implements EventHandlerRemote<RemoteBranchEvent1> {
+
+ @Override
+ public void handle(Transport transport, Sender sender, RemoteBranchEvent1 remoteEvent) throws OseeCoreException {
+ BranchEvent branchEvent = FrameworkEventUtil.getBranchEvent(remoteEvent);
+ updateBranches(sender, branchEvent);
+ transport.send(sender, branchEvent);
+ }
+
+ private void updateBranches(Sender sender, BranchEvent branchEvent) {
+ BranchEventType eventType = branchEvent.getEventType();
+ try {
+ switch (eventType) {
+ case Committing:
+ case CommitFailed:
+ case Deleting:
+ case Purging:
+ return;
+ case Committed:
+ Branch branch = BranchManager.getBranchByGuid(branchEvent.getBranchGuid());
+ Artifact artifact = BranchManager.getAssociatedArtifact(branch);
+ TransactionManager.clearCommitArtifactCacheForAssociatedArtifact(artifact);
+ break;
+ default:
+ break;
+ }
+ // TODO Need to update only branch(s) that changed, not refresh all branches cause it will
+ // clear any local flags that have not yet been persisted to the database like DELETED or COMMIT_IN_PROGRESS
+ BranchManager.refreshBranches();
+ } catch (Exception ex) {
+ EventUtil.eventLog("REM: updateBranches", ex);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/BroadcastEventHandler.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/BroadcastEventHandler.java
new file mode 100644
index 00000000000..d7267b9f835
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/BroadcastEventHandler.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2012 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.event.handlers;
+
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.skynet.core.event.EventUtil;
+import org.eclipse.osee.framework.skynet.core.event.FrameworkEventUtil;
+import org.eclipse.osee.framework.skynet.core.event.listener.IBroadcastEventListener;
+import org.eclipse.osee.framework.skynet.core.event.model.BroadcastEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.Sender;
+import org.eclipse.osee.framework.skynet.core.internal.event.EventHandlerLocal;
+import org.eclipse.osee.framework.skynet.core.internal.event.Transport;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class BroadcastEventHandler implements EventHandlerLocal<IBroadcastEventListener, BroadcastEvent> {
+
+ @Override
+ public void handle(IBroadcastEventListener listener, Sender sender, BroadcastEvent event) {
+ if (!event.getUsers().isEmpty()) {
+ listener.handleBroadcastEvent(sender, event);
+ }
+ }
+
+ @Override
+ public void send(Transport transport, Sender sender, BroadcastEvent event) throws OseeCoreException {
+ if (!event.getBroadcastEventType().isPingOrPong()) {
+ EventUtil.eventLog("IEM: kickBroadcastEvent: type[%s] message[%s] sender[%s]",
+ event.getBroadcastEventType().name(), event.getMessage(), sender);
+ }
+ if (sender.isRemote() || sender.isLocal() && event.getBroadcastEventType().isLocalEventType()) {
+ transport.sendLocal(sender, event);
+ }
+
+ // Kick REMOTE (If source was Local and this was not a default branch changed event
+ if (sender.isLocal() && event.getBroadcastEventType().isRemoteEventType()) {
+ transport.sendRemote(FrameworkEventUtil.getRemoteBroadcastEvent(event));
+ }
+ }
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/BroadcastRemoteEventHandler.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/BroadcastRemoteEventHandler.java
new file mode 100644
index 00000000000..185ea5d871f
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/BroadcastRemoteEventHandler.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2012 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.event.handlers;
+
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.messaging.event.res.msgs.RemoteBroadcastEvent1;
+import org.eclipse.osee.framework.skynet.core.event.FrameworkEventUtil;
+import org.eclipse.osee.framework.skynet.core.event.model.BroadcastEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.Sender;
+import org.eclipse.osee.framework.skynet.core.internal.event.EventHandlerRemote;
+import org.eclipse.osee.framework.skynet.core.internal.event.Transport;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class BroadcastRemoteEventHandler implements EventHandlerRemote<RemoteBroadcastEvent1> {
+
+ @Override
+ public void handle(Transport transport, Sender sender, RemoteBroadcastEvent1 remoteEvent) throws OseeCoreException {
+ BroadcastEvent broadcastEvent = FrameworkEventUtil.getBroadcastEvent(remoteEvent);
+ transport.send(sender, broadcastEvent);
+ }
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/RemoteServiceEventHandler.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/RemoteServiceEventHandler.java
new file mode 100644
index 00000000000..ff779c6c0c9
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/RemoteServiceEventHandler.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2012 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.event.handlers;
+
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.skynet.core.event.listener.IRemoteEventManagerEventListener;
+import org.eclipse.osee.framework.skynet.core.event.model.RemoteEventServiceEventType;
+import org.eclipse.osee.framework.skynet.core.event.model.Sender;
+import org.eclipse.osee.framework.skynet.core.internal.event.EventHandlerLocal;
+import org.eclipse.osee.framework.skynet.core.internal.event.Transport;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class RemoteServiceEventHandler implements EventHandlerLocal<IRemoteEventManagerEventListener, RemoteEventServiceEventType> {
+
+ @Override
+ public void handle(IRemoteEventManagerEventListener listener, Sender sender, RemoteEventServiceEventType event) {
+ listener.handleRemoteEventManagerEvent(sender, event);
+ }
+
+ @Override
+ public void send(Transport transport, Sender sender, RemoteEventServiceEventType event) throws OseeCoreException {
+ if (sender.isLocal() && event.isLocalEventType()) {
+ transport.sendLocal(sender, event);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/TransactionEventHandler.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/TransactionEventHandler.java
new file mode 100644
index 00000000000..a3030b3b0dd
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/TransactionEventHandler.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2012 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.event.handlers;
+
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.skynet.core.event.FrameworkEventUtil;
+import org.eclipse.osee.framework.skynet.core.event.listener.ITransactionEventListener;
+import org.eclipse.osee.framework.skynet.core.event.model.Sender;
+import org.eclipse.osee.framework.skynet.core.event.model.TransactionEvent;
+import org.eclipse.osee.framework.skynet.core.internal.event.EventHandlerLocal;
+import org.eclipse.osee.framework.skynet.core.internal.event.Transport;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class TransactionEventHandler implements EventHandlerLocal<ITransactionEventListener, TransactionEvent> {
+
+ @Override
+ public void handle(ITransactionEventListener listener, Sender sender, TransactionEvent event) {
+ listener.handleTransactionEvent(sender, event);
+ }
+
+ @Override
+ public void send(Transport transport, Sender sender, TransactionEvent event) throws OseeCoreException {
+ if (transport.isDispatchToLocalAllowed(sender)) {
+ transport.sendLocal(sender, event);
+ }
+ if (sender.isLocal()) {
+ transport.sendRemote(FrameworkEventUtil.getRemoteTransactionEvent(event));
+ }
+ }
+}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/TransactionRemoteEventHandler.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/TransactionRemoteEventHandler.java
new file mode 100644
index 00000000000..1320c695ab0
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/handlers/TransactionRemoteEventHandler.java
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2012 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.event.handlers;
+
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.messaging.event.res.msgs.RemoteTransactionEvent1;
+import org.eclipse.osee.framework.skynet.core.event.EventUtil;
+import org.eclipse.osee.framework.skynet.core.event.FrameworkEventUtil;
+import org.eclipse.osee.framework.skynet.core.event.PurgeTransactionEventUtil;
+import org.eclipse.osee.framework.skynet.core.event.model.Sender;
+import org.eclipse.osee.framework.skynet.core.event.model.TransactionEvent;
+import org.eclipse.osee.framework.skynet.core.event.model.TransactionEventType;
+import org.eclipse.osee.framework.skynet.core.internal.event.EventHandlerRemote;
+import org.eclipse.osee.framework.skynet.core.internal.event.Transport;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class TransactionRemoteEventHandler implements EventHandlerRemote<RemoteTransactionEvent1> {
+
+ @Override
+ public void handle(Transport transport, Sender sender, RemoteTransactionEvent1 remoteEvent) throws OseeCoreException {
+ TransactionEvent transEvent = FrameworkEventUtil.getTransactionEvent(remoteEvent);
+ if (transEvent.getEventType() == TransactionEventType.Purged) {
+ PurgeTransactionEventUtil.handleRemotePurgeTransactionEvent(transEvent);
+ transport.send(sender, transEvent);
+ } else {
+ EventUtil.eventLog("REM: handleTransactionEvent - unhandled mod type [%s] ", transEvent.getEventType());
+ }
+ }
+}
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/OSGI-INF/artifact.prompt.change.xml b/plugins/org.eclipse.osee.framework.ui.skynet/OSGI-INF/artifact.prompt.change.xml
index 1f83b5b267a..d81b35bbdac 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/OSGI-INF/artifact.prompt.change.xml
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/OSGI-INF/artifact.prompt.change.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="start" deactivate="stop" immediate="true" name="org.eclipse.osee.framework.ui.skynet.artifact.ArtifactPromptChange">
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="start" deactivate="stop" name="org.eclipse.osee.framework.ui.skynet.artifact.ArtifactPromptChange">
<implementation class="org.eclipse.osee.framework.ui.skynet.artifact.ArtifactPromptChange"/>
<reference bind="setAccessPolicy" cardinality="1..1" interface="org.eclipse.osee.framework.skynet.core.AccessPolicy" name="AccessPolicy" policy="static"/>
</scr:component>
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/skynet/SkynetCustomizations.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/skynet/SkynetCustomizations.java
index f42642a5109..2b2127a9c21 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/skynet/SkynetCustomizations.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/xviewer/skynet/SkynetCustomizations.java
@@ -11,6 +11,7 @@
package org.eclipse.osee.framework.ui.skynet.widgets.xviewer.skynet;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -28,6 +29,7 @@ import org.eclipse.osee.framework.skynet.core.User;
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.Attribute;
+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.filter.IEventFilter;
import org.eclipse.osee.framework.skynet.core.event.listener.IArtifactEventListener;
@@ -238,7 +240,7 @@ public class SkynetCustomizations implements IXViewerCustomizations, IArtifactEv
@Override
public List<? extends IEventFilter> getEventFilters() {
- return OseeEventManager.getCommonBranchEventFilters();
+ return Arrays.asList(EventUtil.getCommonBranchFilter());
}
@Override
diff --git a/plugins/org.eclipse.osee.support.config/launchConfig/OSEE Demo Application Server [H2].launch b/plugins/org.eclipse.osee.support.config/launchConfig/OSEE Demo Application Server [H2].launch
index 8fe71ce3292..753f65b7897 100644
--- a/plugins/org.eclipse.osee.support.config/launchConfig/OSEE Demo Application Server [H2].launch
+++ b/plugins/org.eclipse.osee.support.config/launchConfig/OSEE Demo Application Server [H2].launch
@@ -20,7 +20,7 @@
<stringAttribute key="pde.version" value="3.3"/>
<booleanAttribute key="show_selected_only" value="true"/>
<stringAttribute key="target_bundles" value="ch.qos.logback.classic@default:default,ch.qos.logback.core@default:default,ch.qos.logback.slf4j@default:false,com.google.collect@default:default,com.google.inject@default:default,com.ibm.icu@default:default,javax.activation@default:default,javax.mail.glassfish@default:default,javax.servlet@default:default,javax.xml@default:default,org.antlr.runtime@default:default,org.aopalliance@default:default,org.apache.commons.codec@default:default,org.apache.commons.httpclient@default:default,org.apache.commons.lang@default:default,org.apache.commons.logging@default:default,org.apache.log4j@default:default,org.apache.xerces@default:default,org.apache.xml.resolver@default:default,org.apache.xml.serializer@default:default,org.eclipse.ant.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem.win32.x86@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.net.win32.x86@default:false,org.eclipse.core.net@default:default,org.eclipse.core.resources.win32.x86@default:false,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.compare.diff@default:default,org.eclipse.emf.compare.match@default:default,org.eclipse.emf.compare@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.emf.edit@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.security.win32.x86@default:false,org.eclipse.equinox.security@default:default,org.eclipse.equinox.servletbridge.extensionbundle@default:false,org.eclipse.equinox.transforms.hook@default:false,org.eclipse.equinox.util@default:default,org.eclipse.equinox.weaving.hook@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi.util@default:default,org.eclipse.osgi@-1:true,org.eclipse.team.core@default:default,org.eclipse.xtext.logging@default:false,org.eclipse.xtext.util@default:default,org.eclipse.xtext@default:default,org.h2@default:default,org.hamcrest.core@default:default,org.junit*4.8.2.v4_8_2_v20110321-1705@default:default,org.mortbay.jetty.server@default:default,org.mortbay.jetty.util@default:default,org.objectweb.asm@default:default,org.slf4j.api@default:default,org.slf4j.jcl@default:default"/>
-<stringAttribute key="timestamp" value="1331760064113"/>
+<stringAttribute key="timestamp" value="1335589321010"/>
<booleanAttribute key="tracing" value="false"/>
<booleanAttribute key="useCustomFeatures" value="false"/>
<booleanAttribute key="useDefaultConfigArea" value="true"/>

Back to the top