Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraudrey.e.denk2019-10-01 19:28:09 +0000
committerRyan T. Baldwin2019-10-01 19:28:09 +0000
commit61e07302d85dff978545f3358c36499ae0747dbb (patch)
treeb6d2fe346a439d905b9153c4f1e833aa95bdd7fc /plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse
parent73ae0c7e5cd092df13954e0f44d60d0e4589597f (diff)
downloadorg.eclipse.osee-61e07302d85dff978545f3358c36499ae0747dbb.tar.gz
org.eclipse.osee-61e07302d85dff978545f3358c36499ae0747dbb.tar.xz
org.eclipse.osee-61e07302d85dff978545f3358c36499ae0747dbb.zip
bug[ACT39547]: Fix ArtifactExplorer update issue
Change-Id: I01a5c3fa1aa6d625e668b7ee6921d7e8877d17be Signed-off-by: audrey.e.denk <audrey.e.denk@boeing.com>
Diffstat (limited to 'plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse')
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/OseeEventManager.java8
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/OseeEventService.java7
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/model/ArtifactEvent.java1
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/httpRequests/CommitBranchHttpRequestOperation.java12
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/OseeEventServiceImpl.java8
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/internal/event/EventTransport.java32
6 files changed, 66 insertions, 2 deletions
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 a0db6594f06..15f892fb727 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
@@ -229,4 +229,12 @@ public final class OseeEventManager {
getEventService().receive(sender, artifactEvent);
}
+ /**
+ * Kick a commit event to this local client to update artifact model for committed artifacts. This is needed cause
+ * commit is made on server, but clients need to be notified of updates to commited branch artifact model.
+ */
+ public static void kickCommitEvent(Class class1, ArtifactEvent artifactEvent) {
+ getEventService().sendCommitEvent(class1, 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
index ca6b85e9b44..3dcfb0accbf 100644
--- 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
@@ -13,6 +13,7 @@ package org.eclipse.osee.framework.skynet.core.event;
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.ArtifactEvent;
import org.eclipse.osee.framework.skynet.core.event.model.FrameworkEvent;
import org.eclipse.osee.framework.skynet.core.event.model.Sender;
@@ -32,4 +33,10 @@ public interface OseeEventService {
void addListener(EventQosType qos, IEventListener listener);
void removeListener(EventQosType qos, IEventListener listener);
+
+ /**
+ * Kick a commit event to this local client to update artifact model for committed artifacts. This is needed cause
+ * commit is made on server, but clients need to be notified of updates to commited branch artifact model.
+ */
+ void sendCommitEvent(Class class1, ArtifactEvent artifactEvent);
}
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 feac15c2a6e..d0f975a9a5a 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
@@ -197,6 +197,7 @@ public class ArtifactEvent implements FrameworkEvent, HasNetworkSender, HasBranc
return guidArts;
}
+ @SuppressWarnings("unlikely-arg-type")
public boolean containsArtifact(Artifact artifact, EventModType... eventModTypes) {
for (EventBasicGuidArtifact guidArt : artifacts) {
for (EventModType modType : eventModTypes) {
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/httpRequests/CommitBranchHttpRequestOperation.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/httpRequests/CommitBranchHttpRequestOperation.java
index a31c75aa2d7..0850e424530 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/httpRequests/CommitBranchHttpRequestOperation.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/httpRequests/CommitBranchHttpRequestOperation.java
@@ -155,6 +155,14 @@ public final class CommitBranchHttpRequestOperation extends AbstractOperation {
relChange.getBArtId(), defaultBasicGuidRelation);
event.setRationale(relChange.getRationale());
artifactEvent.getRelations().add(event);
+ Artifact artA = ArtifactCache.getActive(relChange.getArtId(), newTransaction.getBranch());
+ if (artA != null) {
+ artifacts.add(artA);
+ }
+ Artifact artB = ArtifactCache.getActive(relChange.getArtId(), newTransaction.getBranch());
+ if (artB != null) {
+ artifacts.add(artB);
+ }
break;
case attribute:
// Only reload items that were already in the active cache
@@ -202,8 +210,12 @@ public final class CommitBranchHttpRequestOperation extends AbstractOperation {
}
}
+ // Reloads artifacts changed on local client since event does not get handled by us
ArtifactQuery.reloadArtifacts(artifacts);
+
+ // Kicks event to other clients; This is ignored by this client which is why below is required
OseeEventManager.kickPersistEvent(getClass(), artifactEvent);
+
}
} \ No newline at end of file
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
index 0e01f181d9b..e3dbc155a13 100644
--- 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
@@ -72,8 +72,7 @@ public class OseeEventServiceImpl implements OseeEventService {
private ConnectionListenerImpl connectionStatus;
private ExecutorService executor;
- private final List<ServiceReference<IEventListener>> pendingServices =
- new CopyOnWriteArrayList<>();
+ private final List<ServiceReference<IEventListener>> pendingServices = new CopyOnWriteArrayList<>();
private Thread thread;
@@ -262,4 +261,9 @@ public class OseeEventServiceImpl implements OseeEventService {
listeners.removeListener(qos, listener);
}
+ @Override
+ public void sendCommitEvent(Class class1, ArtifactEvent artifactEvent) {
+ eventTransport.sendCommitEvent(class1, artifactEvent);
+ }
+
}
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
index 2f6cc498034..c0ae7e1e690 100644
--- 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
@@ -23,10 +23,13 @@ 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.messaging.event.res.msgs.RemotePersistEvent1;
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.listener.EventQosType;
import org.eclipse.osee.framework.skynet.core.event.listener.IEventListener;
+import org.eclipse.osee.framework.skynet.core.event.model.ArtifactEvent;
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;
@@ -240,4 +243,33 @@ public class EventTransport implements Transport, IFrameworkEventListener {
}
}
+ /**
+ * Kick a commit event to this local client to update artifact model for committed artifacts. This is needed cause
+ * commit is made on server, but clients need to be notified of updates to commited branch artifact model.</br>
+ * </br>
+ * Normal event model sends artifact, attribute and relation changes to other clients upon persist. Since a commit is
+ * not a client ide "persist", there is no "persist" event. This method sends a synthentically created ArtifactEvent
+ * to the initiating client to update the artifact model on the commit-to branch for any artifacts loaded into the
+ * cache. This is done for the remote clients through the normal events, but not to this client cause all events sent
+ * remotely are ignored by the initiating client.
+ */
+ public void sendCommitEvent(Class<?> class1, ArtifactEvent artifactEvent) {
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ try {
+ Sender sender = Sender.createSender(class1);
+ artifactEvent.setNetworkSender(sender.getNetworkSender());
+ RemotePersistEvent1 remoteEvent = FrameworkEventUtil.getRemotePersistEvent(artifactEvent);
+ EventUtil.eventLog("IEM: processing commit remote event [%s]", artifactEvent);
+ handleEvent(sender, remoteEvent);
+ EventUtil.eventLog("IEM: processed commit remote event [%s]", artifactEvent);
+ } catch (Throwable th) {
+ EventUtil.eventLog("IEM: RemoteEvent - onEvent", th);
+ }
+ }
+ };
+ execute(runnable);
+ }
+
}

Back to the top