Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrescobar2010-11-09 19:21:07 +0000
committerRyan D. Brooks2010-11-09 19:21:07 +0000
commit571116885b30e605a5099b4f72522adf7e2e76b4 (patch)
tree099bb4fcd10d7bba6de81040a29ed80400012511
parent0b144c883e8aed280f2a71e850db41d71ff4d4c6 (diff)
downloadorg.eclipse.osee-571116885b30e605a5099b4f72522adf7e2e76b4.tar.gz
org.eclipse.osee-571116885b30e605a5099b4f72522adf7e2e76b4.tar.xz
org.eclipse.osee-571116885b30e605a5099b4f72522adf7e2e76b4.zip
refinement: Improve framework event handling
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsRemoteEventTestItem.java15
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/FrameworkEventToRemoteEventListener.java139
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/systems/InternalEventManager.java2
3 files changed, 70 insertions, 86 deletions
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsRemoteEventTestItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsRemoteEventTestItem.java
index 149ddf3d997..ce9f706fc84 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsRemoteEventTestItem.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/AtsRemoteEventTestItem.java
@@ -233,7 +233,7 @@ public class AtsRemoteEventTestItem extends WorldXNavigateItemAction {
// Validate values
TeamWorkFlowArtifact teamArt = actionArt.getTeamWorkFlowArtifacts().iterator().next();
testEquals("Description", "description", teamArt.getSoleAttributeValue(AtsAttributeTypes.Description, null));
- testEquals("Change Type", ChangeType.Improvement.name(), ChangeTypeColumn.getChangeType(teamArt));
+ testEquals("Change Type", ChangeType.Improvement, ChangeTypeColumn.getChangeType(teamArt));
testEquals("Priority", "1", teamArt.getSoleAttributeValue(PriorityColumn.PriorityTypeAttribute, null));
}
@@ -249,12 +249,19 @@ public class AtsRemoteEventTestItem extends WorldXNavigateItemAction {
// Validate values
TeamWorkFlowArtifact teamArt = actionArt.getTeamWorkFlowArtifacts().iterator().next();
testEquals("Description", "description 4", teamArt.getSoleAttributeValue(AtsAttributeTypes.Description, null));
- testEquals("Change Type", ChangeType.Support.name(), ChangeTypeColumn.getChangeType(teamArt));
+ testEquals("Change Type", ChangeType.Support, ChangeTypeColumn.getChangeType(teamArt));
testEquals("Priority", "3", teamArt.getSoleAttributeValue(PriorityColumn.PriorityTypeAttribute, null));
testEquals("Validation Required", "false",
String.valueOf(teamArt.getSoleAttributeValue(AtsAttributeTypes.ValidationRequired, null)));
- testEquals("Targeted Version",
- (teamArt.getTargetedForVersion() != null ? teamArt.getTargetedForVersion().toString() : "not set"), "2.5.7");
+
+ VersionArtifact verArt = teamArt.getTargetedForVersion();
+ String expectedTargetedVersion;
+ if (verArt != null) {
+ expectedTargetedVersion = verArt.toString();
+ } else {
+ expectedTargetedVersion = "not set";
+ }
+ testEquals("Targeted Version", expectedTargetedVersion, "2.5.7");
testEquals("State", DefaultTeamState.Analyze.name(), teamArt.getStateMgr().getCurrentStateName());
}
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
index f944f361ea8..cdd3243e17b 100644
--- 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
@@ -10,15 +10,13 @@
*******************************************************************************/
package org.eclipse.osee.framework.skynet.core.event.systems;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.logging.Level;
+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.logging.OseeLog;
import org.eclipse.osee.framework.messaging.event.res.AttributeEventModificationType;
import org.eclipse.osee.framework.messaging.event.res.IFrameworkEventListener;
import org.eclipse.osee.framework.messaging.event.res.RemoteEvent;
@@ -32,6 +30,7 @@ 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;
@@ -49,7 +48,6 @@ import org.eclipse.osee.framework.skynet.core.event.model.EventModifiedBasicGuid
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.Activator;
import org.eclipse.osee.framework.skynet.core.relation.RelationEventType;
import org.eclipse.osee.framework.skynet.core.relation.RelationLink;
import org.eclipse.osee.framework.skynet.core.relation.RelationManager;
@@ -61,100 +59,79 @@ import org.eclipse.osee.framework.skynet.core.transaction.TransactionManager;
*/
public final class FrameworkEventToRemoteEventListener implements IFrameworkEventListener {
+ private final EventSystemPreferences preferences;
private final InternalEventManager eventManager;
- private final ArrayBlockingQueue<RemoteEvent> queue = new ArrayBlockingQueue<RemoteEvent>(100, true);
- private RemoteEventProcessorThread processorThread;
+ private final ExecutorService executorService;
- public FrameworkEventToRemoteEventListener(InternalEventManager eventManager) {
+ public FrameworkEventToRemoteEventListener(ExecutorService executorService, EventSystemPreferences preferences, InternalEventManager eventManager) {
+ this.executorService = executorService;
+ this.preferences = preferences;
this.eventManager = eventManager;
}
- private synchronized void startProcessing() {
- if (OseeEventManager.getPreferences().isPendRunning()) {
- processRemoteEvents();
- } else {
- if (processorThread == null || !processorThread.isAlive()) {
- processorThread = new RemoteEventProcessorThread();
- processorThread.start();
- }
- }
- }
-
@Override
public void onEvent(final RemoteEvent remoteEvent) {
- // Add to queue; remote events must be processed in order and not multi-threaded
- queue.add(remoteEvent);
// System.out.println("adding to queue -> " + queue.size());
- startProcessing();
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ processRemoteEvents(remoteEvent);
+ }
+ };
+ execute(runnable);
}
- public class RemoteEventProcessorThread extends Thread {
-
- public RemoteEventProcessorThread() {
- super("OSEE Remote Events");
+ private void execute(Runnable runnable) {
+ if (preferences.isPendRunning()) {
+ runnable.run();
+ } else {
+ executorService.submit(runnable);
}
+ }
- @Override
- public void run() {
+ 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 {
- while (true) {
- processRemoteEvents();
- Thread.sleep(1000);
- }
+ RemotePersistEvent1 event1 = (RemotePersistEvent1) remoteEvent;
+ ArtifactEvent transEvent = FrameworkEventUtil.getPersistEvent(event1);
+ updateArtifacts(sender, transEvent);
+ updateRelations(sender, transEvent);
+ eventManager.kickArtifactEvent(sender, transEvent);
} catch (Exception ex) {
- OseeLog.log(Activator.class, Level.SEVERE, ex);
+ EventUtil.eventLog("REM: RemoteTransactionEvent1", ex);
}
- }
- }
-
- private void processRemoteEvents() {
- while (!queue.isEmpty()) {
- // System.out.println("processing queue -> " + queue.size());
- RemoteEvent remoteEvent = queue.poll();
- if (remoteEvent == null) {
- return;
+ } 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);
}
- 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;
+ } else if (remoteEvent instanceof RemoteTransactionEvent1) {
+ try {
+ TransactionEvent transEvent = FrameworkEventUtil.getTransactionEvent((RemoteTransactionEvent1) remoteEvent);
+ handleTransactionEvent(sender, transEvent);
+ } catch (Exception ex) {
+ EventUtil.eventLog("REM: RemoteBranchEvent1", ex);
}
- // Handles TransactionEvents, ArtifactChangeTypeEvents, ArtifactPurgeEvents
- if (remoteEvent instanceof RemotePersistEvent1) {
- try {
- RemotePersistEvent1 event1 = (RemotePersistEvent1) remoteEvent;
- ArtifactEvent transEvent = FrameworkEventUtil.getPersistEvent(event1);
- updateArtifacts(sender, transEvent);
- updateRelations(sender, transEvent);
- eventManager.kickArtifactEvent(sender, transEvent);
- } catch (Exception ex) {
- EventUtil.eventLog("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);
- }
+ } else if (remoteEvent instanceof RemoteAccessControlEvent1) {
+ try {
+ AccessControlEvent accessEvent =
+ FrameworkEventUtil.getAccessControlEvent((RemoteAccessControlEvent1) remoteEvent);
+ eventManager.kickAccessControlArtifactsEvent(sender, accessEvent);
+ } catch (Exception ex) {
+ EventUtil.eventLog("REM: RemoteAccessControlEvent1", ex);
}
}
}
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
index 25afd5bda46..26eeca09624 100644
--- 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
@@ -71,7 +71,7 @@ public class InternalEventManager {
this.priorityListeners = priorityListeners;
this.executorService = executorService;
this.preferences = preferences;
- this.frameworkListener = new FrameworkEventToRemoteEventListener(this);
+ this.frameworkListener = new FrameworkEventToRemoteEventListener(executorService, preferences, this);
this.connectionStatus = connectionStatus;
}

Back to the top