Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/org.eclipse.osee.ats.api/META-INF/MANIFEST.MF14
-rw-r--r--plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/util/IAtsEventService.java52
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/META-INF/MANIFEST.MF3
-rw-r--r--plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/access/AtsBranchAccessManagerTest.java43
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/META-INF/MANIFEST.MF1
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/IAtsClient.java3
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsClientImpl.java9
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsEventServiceImpl.java40
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/access/AtsBranchAccessManager.java44
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/internal/AtsCmAccessControlProxy.java3
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XWorkingBranch.java30
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XWorkingBranchButtonLock.java23
-rw-r--r--plugins/org.eclipse.osee.framework.access/OSGI-INF/access.artifact.topic.handler.xml2
-rw-r--r--plugins/org.eclipse.osee.framework.access/OSGI-INF/access.branch.topic.handler.xml2
-rw-r--r--plugins/org.eclipse.osee.framework.access/src/org/eclipse/osee/framework/access/internal/AccessControlService.java14
-rw-r--r--plugins/org.eclipse.osee.framework.plugin.core/src/org/eclipse/osee/framework/plugin/core/PluginUtil.java8
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/AccessControlEventType.java1
17 files changed, 186 insertions, 106 deletions
diff --git a/plugins/org.eclipse.osee.ats.api/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.ats.api/META-INF/MANIFEST.MF
index 74008a2c462..acaf5de3617 100644
--- a/plugins/org.eclipse.osee.ats.api/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.osee.ats.api/META-INF/MANIFEST.MF
@@ -30,11 +30,11 @@ Export-Package: org.eclipse.osee.ats.api,
org.eclipse.osee.ats.api.workflow.log,
org.eclipse.osee.ats.api.workflow.state,
org.eclipse.osee.ats.api.workflow.transition
-Import-Package: javax.ws.rs;version="2.0.0",
- javax.ws.rs.core;version="2.0.0",
- org.codehaus.jackson.annotate;version="1.9.13",
- org.codehaus.jackson.map.annotate;version="1.9.13",
- org.codehaus.jackson.map.ser.std;version="1.9.13",
+Import-Package: javax.ws.rs,
+ javax.ws.rs.core,
+ org.codehaus.jackson.annotate,
+ org.codehaus.jackson.map.annotate,
+ org.codehaus.jackson.map.ser.std,
org.eclipse.osee.activity.api,
org.eclipse.osee.framework.core.data,
org.eclipse.osee.framework.core.enums,
@@ -43,4 +43,6 @@ Import-Package: javax.ws.rs;version="2.0.0",
org.eclipse.osee.framework.jdk.core.type,
org.eclipse.osee.framework.jdk.core.util,
org.eclipse.osee.framework.logging,
- org.eclipse.osee.jaxrs.mvc
+ org.eclipse.osee.jaxrs.mvc,
+ org.osgi.framework,
+ org.osgi.service.event
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/util/IAtsEventService.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/util/IAtsEventService.java
new file mode 100644
index 00000000000..54f50e272dd
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/util/IAtsEventService.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2015 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.ats.api.util;
+
+import org.osgi.framework.BundleContext;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventAdmin;
+
+/**
+ * @author Donald G. Dunne
+ */
+public interface IAtsEventService {
+
+ /**
+ * Used to post and send OSGI events. Can use postEvent and sendEvent methods directly.
+ */
+ EventAdmin getEventAdmin(String pluginId);
+
+ /**
+ * Initiate asynchronous, ordered delivery of an event. This method returns to the caller before delivery of the
+ * event is completed. Events are delivered in the order that they are received by this method.
+ *
+ * @param event The event to send to all listeners which subscribe to the topic of the event.
+ * @throws SecurityException If the caller does not have {@code TopicPermission[topic,PUBLISH]} for the topic
+ * specified in the event.
+ */
+ void postEvent(Event event, String pluginId);
+
+ /**
+ * Initiate synchronous delivery of an event. This method does not return to the caller until delivery of the event
+ * is completed.
+ *
+ * @param event The event to send to all listeners which subscribe to the topic of the event.
+ * @throws SecurityException If the caller does not have {@code TopicPermission[topic,PUBLISH]} for the topic
+ * specified in the event.
+ */
+ void sendEvent(Event event, String pluginId);
+
+ /**
+ * Used to register for osgi events
+ */
+ BundleContext getBundleContext(String pluginId);
+
+}
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.ats.client.integration.tests/META-INF/MANIFEST.MF
index ad04e8bc06a..4ccf9c5eb73 100644
--- a/plugins/org.eclipse.osee.ats.client.integration.tests/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/META-INF/MANIFEST.MF
@@ -129,7 +129,8 @@ Import-Package: com.google.common.collect,
org.eclipse.osee.orcs.rest.model,
org.eclipse.osee.orcs.writer.model.reader,
org.eclipse.osee.support.test.util,
- org.osgi.framework
+ org.osgi.framework,
+ org.osgi.service.event
Service-Component: OSGI-INF/*.xml
Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/access/AtsBranchAccessManagerTest.java b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/access/AtsBranchAccessManagerTest.java
index da488ea5483..5f0ac6c6b8b 100644
--- a/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/access/AtsBranchAccessManagerTest.java
+++ b/plugins/org.eclipse.osee.ats.client.integration.tests/src/org/eclipse/osee/ats/client/integration/tests/ats/access/AtsBranchAccessManagerTest.java
@@ -26,58 +26,21 @@ import org.eclipse.osee.framework.core.data.IOseeBranch;
import org.eclipse.osee.framework.core.enums.CoreAttributeTypes;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
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.junit.After;
import org.junit.Assert;
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
- public void testAtsBranchAccessManager() {
- int numListeners = OseeEventManager.getNumberOfListeners();
- new AtsBranchAccessManager(getEventService());
- Assert.assertEquals(numListeners + 1, OseeEventManager.getNumberOfListeners());
- }
-
- @Test
- public void testDispose() {
- AtsBranchAccessManager mgr = new AtsBranchAccessManager(getEventService());
- int numListeners = OseeEventManager.getNumberOfListeners();
- mgr.dispose();
- Assert.assertEquals(numListeners - 1, OseeEventManager.getNumberOfListeners());
- }
-
@Test
public void testIsApplicable() throws OseeCoreException {
- AtsBranchAccessManager mgr = new AtsBranchAccessManager(getEventService());
+ AtsBranchAccessManager mgr = new AtsBranchAccessManager();
Assert.assertFalse(mgr.isApplicable(AtsUtilCore.getAtsBranch()));
Assert.assertFalse(mgr.isApplicable(SAW_Bld_1));
@@ -118,7 +81,7 @@ public class AtsBranchAccessManagerTest {
*/
@Test
public void testGetContextIdBranch() throws Exception {
- AtsBranchAccessManager mgr = new AtsBranchAccessManager(getEventService());
+ AtsBranchAccessManager mgr = new AtsBranchAccessManager();
TeamWorkFlowArtifact teamArt =
(TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Requirements);
@@ -165,7 +128,7 @@ public class AtsBranchAccessManagerTest {
*/
@Test
public void testConvertAccessAttributeToGuid() throws Exception {
- AtsBranchAccessManager mgr = new AtsBranchAccessManager(getEventService());
+ AtsBranchAccessManager mgr = new AtsBranchAccessManager();
TeamWorkFlowArtifact teamArt =
(TeamWorkFlowArtifact) DemoTestUtil.getUncommittedActionWorkflow(DemoWorkType.Requirements);
diff --git a/plugins/org.eclipse.osee.ats.core.client/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.ats.core.client/META-INF/MANIFEST.MF
index 5a1d6ff042d..c3872f3b964 100644
--- a/plugins/org.eclipse.osee.ats.core.client/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.osee.ats.core.client/META-INF/MANIFEST.MF
@@ -50,6 +50,7 @@ Import-Package: com.google.common.cache,
org.eclipse.osee.framework.jdk.core.util.xml,
org.eclipse.osee.framework.logging,
org.eclipse.osee.framework.messaging.event.res,
+ org.eclipse.osee.framework.plugin.core,
org.eclipse.osee.framework.plugin.core.util,
org.eclipse.osee.framework.skynet.core,
org.eclipse.osee.framework.skynet.core.artifact,
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/IAtsClient.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/IAtsClient.java
index fe280299484..2fb85340e4d 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/IAtsClient.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/IAtsClient.java
@@ -30,6 +30,7 @@ import org.eclipse.osee.ats.api.team.IAtsWorkItemFactory;
import org.eclipse.osee.ats.api.user.IAtsUserService;
import org.eclipse.osee.ats.api.util.IArtifactResolver;
import org.eclipse.osee.ats.api.util.IAtsChangeSet;
+import org.eclipse.osee.ats.api.util.IAtsEventService;
import org.eclipse.osee.ats.api.util.IAtsStoreService;
import org.eclipse.osee.ats.api.util.IAtsUtilService;
import org.eclipse.osee.ats.api.util.ISequenceProvider;
@@ -191,4 +192,6 @@ public interface IAtsClient extends IAtsServices, IAtsNotifier, IAttributeResolv
List<IAtsSearchDataProvider> getSearchDataProviders();
Log getLogger();
+
+ IAtsEventService getEventService();
}
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsClientImpl.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsClientImpl.java
index 28cca16a3d5..bb63331f5ca 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsClientImpl.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsClientImpl.java
@@ -44,6 +44,7 @@ import org.eclipse.osee.ats.api.team.IAtsWorkItemFactory;
import org.eclipse.osee.ats.api.user.IAtsUserService;
import org.eclipse.osee.ats.api.util.IArtifactResolver;
import org.eclipse.osee.ats.api.util.IAtsChangeSet;
+import org.eclipse.osee.ats.api.util.IAtsEventService;
import org.eclipse.osee.ats.api.util.IAtsStoreService;
import org.eclipse.osee.ats.api.util.IAtsUtilService;
import org.eclipse.osee.ats.api.util.ISequenceProvider;
@@ -182,6 +183,7 @@ public class AtsClientImpl extends AtsCoreServiceImpl implements IAtsClient {
private IAtsTaskService taskService;
private Log logger;
List<IAtsSearchDataProvider> searchDataProviders;
+ private IAtsEventService eventService;
public AtsClientImpl() {
searchDataProviders = new ArrayList<>();
@@ -276,6 +278,8 @@ public class AtsClientImpl extends AtsCoreServiceImpl implements IAtsClient {
userService, attributeResolverService, atsStateFactory, configProxy, getServices());
taskService = new AtsTaskService(this);
+ eventService = new AtsEventServiceImpl();
+
}
public void setAttributeResolverService(IAttributeResolver attributeResolverService) {
@@ -834,4 +838,9 @@ public class AtsClientImpl extends AtsCoreServiceImpl implements IAtsClient {
return logger;
}
+ @Override
+ public IAtsEventService getEventService() {
+ return eventService;
+ }
+
}
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsEventServiceImpl.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsEventServiceImpl.java
new file mode 100644
index 00000000000..49766752524
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/internal/AtsEventServiceImpl.java
@@ -0,0 +1,40 @@
+/*
+ * Created on Feb 1, 2016
+ *
+ * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE
+ */
+package org.eclipse.osee.ats.core.client.internal;
+
+import org.eclipse.osee.ats.api.util.IAtsEventService;
+import org.eclipse.osee.framework.plugin.core.PluginUtil;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventAdmin;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class AtsEventServiceImpl implements IAtsEventService {
+
+ @Override
+ public EventAdmin getEventAdmin(String pluginId) {
+ return (EventAdmin) getBundleContext(pluginId).getServiceReference(EventAdmin.class);
+ }
+
+ @Override
+ public void postEvent(Event event, String pluginId) {
+ getEventAdmin(pluginId).postEvent(event);
+ }
+
+ @Override
+ public void sendEvent(Event event, String pluginId) {
+ getEventAdmin(pluginId).sendEvent(event);
+ }
+
+ @Override
+ public BundleContext getBundleContext(String pluginId) {
+ PluginUtil pluginUtil = new PluginUtil(pluginId);
+ return pluginUtil.getBundleContext();
+ }
+
+}
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 238eca14612..48218871cd8 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
@@ -28,6 +28,7 @@ import org.eclipse.osee.ats.core.client.util.AtsUtilClient;
import org.eclipse.osee.ats.core.util.AtsUtilCore;
import org.eclipse.osee.ats.internal.Activator;
import org.eclipse.osee.ats.internal.AtsClientService;
+import org.eclipse.osee.framework.access.AccessControlManager;
import org.eclipse.osee.framework.core.data.IAccessContextId;
import org.eclipse.osee.framework.core.data.IOseeBranch;
import org.eclipse.osee.framework.core.data.TokenFactory;
@@ -41,17 +42,14 @@ 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.ArtifactTypeManager;
import org.eclipse.osee.framework.skynet.core.artifact.BranchManager;
-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;
-import org.eclipse.osee.framework.skynet.core.event.model.AccessControlEventType;
import org.eclipse.osee.framework.skynet.core.event.model.ArtifactEvent;
import org.eclipse.osee.framework.skynet.core.event.model.EventBasicGuidArtifact;
import org.eclipse.osee.framework.skynet.core.event.model.Sender;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventHandler;
/**
* This class will return access context ids related to editing artifacts stored on a team workflow's working branch.
@@ -61,10 +59,10 @@ import org.eclipse.osee.framework.skynet.core.event.model.Sender;
* <br>
* Access is determined from "Access Context Id" value stored on Team Workflow, if not there, then Actionable Items, if
* not there, then Team Defs.
- *
+ *
* @author Donald G. Dunne
*/
-public class AtsBranchAccessManager implements IArtifactEventListener, IAccessControlEventListener {
+public class AtsBranchAccessManager implements IArtifactEventListener, EventHandler {
// Cache to store artifact guid to context id list so don't have to re-compute
private final Map<Long, Collection<IAccessContextId>> branchUuidToContextIdCache =
@@ -76,21 +74,13 @@ public class AtsBranchAccessManager implements IArtifactEventListener, IAccessCo
private final RoleContextProvider roleContextProvider;
private volatile long cacheUpdated = 0;
- private final OseeEventService eventService;
-
- public AtsBranchAccessManager(OseeEventService eventService) {
- this(eventService, null);
-
+ public AtsBranchAccessManager() {
+ // Available for osgi instantiation
+ this(null);
}
- public AtsBranchAccessManager(OseeEventService eventService, RoleContextProvider roleContextProvider) {
- this.eventService = eventService;
+ public AtsBranchAccessManager(RoleContextProvider roleContextProvider) {
this.roleContextProvider = roleContextProvider;
- eventService.addListener(EventQosType.NORMAL, this);
- }
-
- public void dispose() {
- eventService.removeListener(EventQosType.NORMAL, this);
}
/**
@@ -240,13 +230,6 @@ public class AtsBranchAccessManager implements IArtifactEventListener, IAccessCo
}
@Override
- public void handleAccessControlArtifactsEvent(Sender sender, AccessControlEvent accessControlEvent) {
- if (accessControlEvent.getEventType() == AccessControlEventType.BranchAccessControlModified) {
- clearCache();
- }
- }
-
- @Override
public void handleArtifactEvent(ArtifactEvent artifactEvent, Sender sender) {
for (EventBasicGuidArtifact guidArt : artifactEvent.getArtifacts()) {
if (atsConfigArtifactTypes.contains(guidArt.getArtTypeGuid())) {
@@ -266,4 +249,13 @@ public class AtsBranchAccessManager implements IArtifactEventListener, IAccessCo
}
}
+ @Override
+ public void handleEvent(Event event) {
+ try {
+ clearCache();
+ } catch (Exception ex) {
+ OseeLog.log(AccessControlManager.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 562ad6f9e1b..2b2f270dcc4 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
@@ -63,7 +63,6 @@ public class AtsCmAccessControlProxy implements CmAccessControl, HasAccessModel
}
if (atsBranchObjectManager != null) {
- atsBranchObjectManager.dispose();
atsBranchObjectManager = null;
}
cmService = null;
@@ -83,7 +82,7 @@ public class AtsCmAccessControlProxy implements CmAccessControl, HasAccessModel
accessModel = new OseeDslAccessModel(interpreter, dslProvider);
RoleContextProvider roleAccessProvider = new OseeDslRoleContextProvider(dslProvider);
- atsBranchObjectManager = new AtsBranchAccessManager(eventService, roleAccessProvider);
+ atsBranchObjectManager = new AtsBranchAccessManager(roleAccessProvider);
cmService = new AtsCmAccessControl(atsBranchObjectManager);
listener = new AtsDslProviderUpdateListener(dslProvider);
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XWorkingBranch.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XWorkingBranch.java
index 16bccac7ad8..7033824c50d 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XWorkingBranch.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XWorkingBranch.java
@@ -21,6 +21,7 @@ import org.eclipse.osee.ats.api.data.AtsArtifactTypes;
import org.eclipse.osee.ats.core.client.branch.AtsBranchUtil;
import org.eclipse.osee.ats.core.client.team.TeamWorkFlowArtifact;
import org.eclipse.osee.ats.core.client.team.TeamWorkFlowManager;
+import org.eclipse.osee.ats.core.util.AtsUtilCore;
import org.eclipse.osee.ats.internal.Activator;
import org.eclipse.osee.ats.internal.AtsClientService;
import org.eclipse.osee.ats.util.AtsBranchManager;
@@ -36,13 +37,13 @@ import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.skynet.core.SystemGroup;
import org.eclipse.osee.framework.skynet.core.User;
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.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.model.AccessControlEvent;
-import org.eclipse.osee.framework.skynet.core.event.model.AccessControlEventType;
+import org.eclipse.osee.framework.skynet.core.event.model.AccessTopicEventType;
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;
@@ -65,12 +66,17 @@ import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.event.EventConstants;
+import org.osgi.service.event.EventHandler;
/**
+ * TopicHandler for {@link AccessEventTopicType.ACCESS_BRANCH_MODIFIED}
+ *
* @author Megumi Telles
* @author Donald G. Dunne
*/
-public class XWorkingBranch extends GenericXWidget implements IArtifactWidget, IAccessControlEventListener, IArtifactEventListener, IBranchEventListener {
+public class XWorkingBranch extends GenericXWidget implements IArtifactWidget, IArtifactEventListener, IBranchEventListener, EventHandler {
private TeamWorkFlowArtifact teamArt;
private Button createBranchButton;
@@ -244,6 +250,11 @@ public class XWorkingBranch extends GenericXWidget implements IArtifactWidget, I
refreshLockImage();
refreshLabel();
refreshEnablement();
+
+ BundleContext context = AtsClientService.get().getEventService().getBundleContext(Activator.PLUGIN_ID);
+ context.registerService(EventHandler.class.getName(), this,
+ AtsUtilCore.hashTable(EventConstants.EVENT_TOPIC, AccessTopicEventType.ACCESS_BRANCH_MODIFIED.getTopic()));
+
}
private void refreshLockImage() {
@@ -326,9 +337,6 @@ public class XWorkingBranch extends GenericXWidget implements IArtifactWidget, I
} else {
AccessControlManager.setPermission(SystemGroup.Everyone.getArtifact(), branch, PermissionEnum.READ);
}
- AccessControlEvent event = new AccessControlEvent();
- event.setEventType(AccessControlEventType.BranchAccessControlModified);
- OseeEventManager.kickAccessControlArtifactsEvent(this, event);
AWorkbench.popup(String.format("Branch set to [%s]", !isLocked ? "Locked" : "NOT Locked"));
}
} catch (OseeCoreException ex) {
@@ -465,9 +473,13 @@ public class XWorkingBranch extends GenericXWidget implements IArtifactWidget, I
}
@Override
- public void handleAccessControlArtifactsEvent(Sender sender, AccessControlEvent accessControlEvent) {
- if (accessControlEvent.getEventType() == AccessControlEventType.BranchAccessControlModified) {
- refreshOnBranchEvent();
+ public void handleEvent(org.osgi.service.event.Event event) {
+ IOseeBranch branch = teamArt.getBranch();
+ if (branch != null) {
+ AccessControlEvent accessEvent = EventUtil.getTopicJson(event, AccessControlEvent.class);
+ if (accessEvent.isForBranch(branch)) {
+ refreshOnBranchEvent();
+ }
}
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XWorkingBranchButtonLock.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XWorkingBranchButtonLock.java
index 19486c306fc..ddf2ea79f32 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XWorkingBranchButtonLock.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XWorkingBranchButtonLock.java
@@ -21,11 +21,8 @@ import org.eclipse.osee.framework.core.model.Branch;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.skynet.core.SystemGroup;
-import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
-import org.eclipse.osee.framework.skynet.core.event.listener.IAccessControlEventListener;
+import org.eclipse.osee.framework.skynet.core.event.EventUtil;
import org.eclipse.osee.framework.skynet.core.event.model.AccessControlEvent;
-import org.eclipse.osee.framework.skynet.core.event.model.AccessControlEventType;
-import org.eclipse.osee.framework.skynet.core.event.model.Sender;
import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
import org.eclipse.osee.framework.ui.skynet.FrameworkImage;
import org.eclipse.osee.framework.ui.swt.ImageManager;
@@ -34,11 +31,14 @@ import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
+import org.osgi.service.event.EventHandler;
/**
+ * TopicHandler for {@link AccessEventTopicType.ACCESS_BRANCH_MODIFIED}
+ *
* @author Shawn F. Cook
*/
-public class XWorkingBranchButtonLock extends XWorkingBranchButtonAbstract implements IAccessControlEventListener {
+public class XWorkingBranchButtonLock extends XWorkingBranchButtonAbstract implements EventHandler {
public static String WIDGET_NAME = "XWorkingBranchButtonLock";
@@ -114,9 +114,6 @@ public class XWorkingBranchButtonLock extends XWorkingBranchButtonAbstract imple
} else {
AccessControlManager.setPermission(SystemGroup.Everyone.getArtifact(), branch, PermissionEnum.READ);
}
- AccessControlEvent event = new AccessControlEvent();
- event.setEventType(AccessControlEventType.BranchAccessControlModified);
- OseeEventManager.kickAccessControlArtifactsEvent(this, event);
AWorkbench.popup(String.format("Branch set to [%s]", !isLocked ? "Locked" : "NOT Locked"));
}
} catch (OseeCoreException ex) {
@@ -125,9 +122,13 @@ public class XWorkingBranchButtonLock extends XWorkingBranchButtonAbstract imple
}
@Override
- public void handleAccessControlArtifactsEvent(Sender sender, AccessControlEvent accessControlEvent) {
- if (accessControlEvent.getEventType() == AccessControlEventType.BranchAccessControlModified) {
- refreshWorkingBranchWidget();
+ public void handleEvent(org.osgi.service.event.Event event) {
+ Branch branch = getTeamArt().getWorkingBranch();
+ if (branch != null) {
+ AccessControlEvent accessEvent = EventUtil.getTopicJson(event, AccessControlEvent.class);
+ if (accessEvent.isForBranch(branch)) {
+ refreshWorkingBranchWidget();
+ }
}
}
diff --git a/plugins/org.eclipse.osee.framework.access/OSGI-INF/access.artifact.topic.handler.xml b/plugins/org.eclipse.osee.framework.access/OSGI-INF/access.artifact.topic.handler.xml
index 0ebc0475822..17351d7417a 100644
--- a/plugins/org.eclipse.osee.framework.access/OSGI-INF/access.artifact.topic.handler.xml
+++ b/plugins/org.eclipse.osee.framework.access/OSGI-INF/access.artifact.topic.handler.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">
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true">
<implementation class="org.eclipse.osee.framework.access.internal.AccessArtifactTopicEventHandler"/>
<service>
<provide interface="org.osgi.service.event.EventHandler"/>
diff --git a/plugins/org.eclipse.osee.framework.access/OSGI-INF/access.branch.topic.handler.xml b/plugins/org.eclipse.osee.framework.access/OSGI-INF/access.branch.topic.handler.xml
index f1cef7381b5..04bb640f595 100644
--- a/plugins/org.eclipse.osee.framework.access/OSGI-INF/access.branch.topic.handler.xml
+++ b/plugins/org.eclipse.osee.framework.access/OSGI-INF/access.branch.topic.handler.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">
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true">
<implementation class="org.eclipse.osee.framework.access.internal.AccessBranchTopicEventHandler"/>
<service>
<provide interface="org.osgi.service.event.EventHandler"/>
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 7dd4b303315..5ab517e4051 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
@@ -74,8 +74,8 @@ 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;
-import org.eclipse.osee.framework.skynet.core.event.model.AccessTopicEventType;
import org.eclipse.osee.framework.skynet.core.event.model.AccessTopicEventPayload;
+import org.eclipse.osee.framework.skynet.core.event.model.AccessTopicEventType;
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.utility.DbUtil;
@@ -661,6 +661,7 @@ public class AccessControlService implements IAccessControlService {
int subjectId = data.getSubject().getArtId();
AccessObject accessControlledObject = data.getObject();
+ boolean isArtifact = accessControlledObject instanceof ArtifactAccessObject;
if (removeFromDb) {
accessControlledObject.removeFromDatabase(subjectId);
}
@@ -672,9 +673,10 @@ public class AccessControlService implements IAccessControlService {
AccessTopicEventPayload event = new AccessTopicEventPayload();
event.setBranchUuid(accessControlledObject.getBranchId());
- if (accessControlledObject instanceof ArtifactAccessObject) {
+ if (isArtifact) {
event.addArtifact(((ArtifactAccessObject) accessControlledObject).getArtId());
}
+
OseeEventManager.kickAccessTopicEvent(this, event, AccessTopicEventType.ACCESS_ARTIFACT_MODIFIED);
}
@@ -772,11 +774,9 @@ public class AccessControlService implements IAccessControlService {
getJdbcClient().runPreparedUpdate(DELETE_BRANCH_ACL_FROM_BRANCH, theBranch.getUuid());
try {
- if (eventService != null) {
- AccessControlEvent event = new AccessControlEvent();
- event.setEventType(AccessControlEventType.BranchAccessControlModified);
- eventService.send(this, event);
- }
+ AccessTopicEventPayload event = new AccessTopicEventPayload();
+ event.setBranchUuid(branch.getUuid());
+ OseeEventManager.kickAccessTopicEvent(this, event, AccessTopicEventType.ACCESS_BRANCH_MODIFIED);
} catch (Exception ex) {
OseeLog.log(AccessControlHelper.class, Level.SEVERE, ex);
}
diff --git a/plugins/org.eclipse.osee.framework.plugin.core/src/org/eclipse/osee/framework/plugin/core/PluginUtil.java b/plugins/org.eclipse.osee.framework.plugin.core/src/org/eclipse/osee/framework/plugin/core/PluginUtil.java
index bcf9b8d0679..9b3acec32e4 100644
--- a/plugins/org.eclipse.osee.framework.plugin.core/src/org/eclipse/osee/framework/plugin/core/PluginUtil.java
+++ b/plugins/org.eclipse.osee.framework.plugin.core/src/org/eclipse/osee/framework/plugin/core/PluginUtil.java
@@ -21,6 +21,7 @@ import org.eclipse.core.runtime.Platform;
import org.eclipse.osee.framework.jdk.core.util.Lib;
import org.eclipse.osee.framework.plugin.core.util.OseeData;
import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
/**
* @author Ryan D. Brooks
@@ -43,7 +44,7 @@ public class PluginUtil {
/**
* finds a resource in the plugin bundle and writes it out to the default persistent storage area as a regular file
- *
+ *
* @return Return plugin file reference
*/
public File getPluginFile(String path) throws IOException {
@@ -85,4 +86,9 @@ public class PluginUtil {
return inputs;
}
+ public BundleContext getBundleContext() {
+ Bundle bundle = Platform.getBundle(pluginId);
+ return bundle.getBundleContext();
+ }
+
}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/AccessControlEventType.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/AccessControlEventType.java
index 2831dfbf425..cbeb3e58811 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/AccessControlEventType.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/AccessControlEventType.java
@@ -14,7 +14,6 @@ package org.eclipse.osee.framework.skynet.core.event.model;
* @author Donald G. Dunne
*/
public enum AccessControlEventType {
- BranchAccessControlModified(EventType.LocalAndRemote, "ADTfjBxPSRAM5raZwywA", 10),
ArtifactsLocked(EventType.LocalAndRemote, "AAn_QHnJpWky8xcyKEgA", 15),
ArtifactsUnlocked(EventType.LocalAndRemote, "AFRkIPF_y3ExB4XCyPgA", 20),
UserAuthenticated(EventType.LocalOnly, "AFRkIhbm0BbIGKALcKQA", 25);

Back to the top