Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjmisinco2012-10-12 16:35:25 +0000
committerRoberto E. Escobar2012-10-12 16:35:25 +0000
commit83064d7951b512b06ac3697ec388aa4266f4d5dd (patch)
treeaa2310908a8571aae47995b2cfdcf1bae3b11b92
parent8a1867a96124be6d3f58cc5406757e2d6cb8523a (diff)
downloadorg.eclipse.osee-83064d7951b512b06ac3697ec388aa4266f4d5dd.tar.gz
org.eclipse.osee-83064d7951b512b06ac3697ec388aa4266f4d5dd.tar.xz
org.eclipse.osee-83064d7951b512b06ac3697ec388aa4266f4d5dd.zip
bug[ats_G797P]: Updates to GoalArtifactMemberCache for scrambled order
-rw-r--r--plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/util/GoalArtifactMembersCache.java30
-rw-r--r--plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/filter/ArtifactEventFilter.java11
2 files changed, 22 insertions, 19 deletions
diff --git a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/util/GoalArtifactMembersCache.java b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/util/GoalArtifactMembersCache.java
index 383c50633b0..d1a6e4c3985 100644
--- a/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/util/GoalArtifactMembersCache.java
+++ b/plugins/org.eclipse.osee.ats.core.client/src/org/eclipse/osee/ats/core/client/util/GoalArtifactMembersCache.java
@@ -11,12 +11,12 @@
package org.eclipse.osee.ats.core.client.util;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.WeakHashMap;
import org.eclipse.osee.ats.api.data.AtsRelationTypes;
import org.eclipse.osee.ats.core.client.artifact.GoalArtifact;
import org.eclipse.osee.framework.core.enums.DeletionFlag;
@@ -34,14 +34,14 @@ import org.eclipse.osee.framework.skynet.core.event.model.Sender;
*/
public class GoalArtifactMembersCache {
- private static Map<GoalArtifact, List<Artifact>> cache;
+ private static Map<String, List<Artifact>> cache;
private static Set<String> registered;
+ private static volatile boolean initialized = false;
private static void initializeStructures() {
- if (cache == null) {
- cache = new WeakHashMap<GoalArtifact, List<Artifact>>();
- }
- if (registered == null) {
+ if (!initialized) {
+ initialized = true;
+ cache = new HashMap<String, List<Artifact>>();
registered = new HashSet<String>();
}
}
@@ -57,25 +57,27 @@ public class GoalArtifactMembersCache {
@Override
public void handleArtifactEvent(ArtifactEvent artifactEvent, Sender sender) {
- if (cache.remove(artifact) == null) {
- OseeEventManager.removeListener(this);
- registered.remove(artifact.getGuid());
+ synchronized (cache) {
+ cache.remove(artifact.getGuid());
}
}
};
OseeEventManager.addListener(eventListener);
-
- registered.add(artifact.getGuid());
+ synchronized (registered) {
+ registered.add(artifact.getGuid());
+ }
}
}
- public static synchronized List<Artifact> getMembers(GoalArtifact artifact) throws OseeCoreException {
+ public static List<Artifact> getMembers(GoalArtifact artifact) throws OseeCoreException {
initializeStructures();
registerForEvents(artifact);
- List<Artifact> toReturn = cache.get(artifact);
+ List<Artifact> toReturn = cache.get(artifact.getGuid());
if (toReturn == null) {
toReturn = artifact.getRelatedArtifacts(AtsRelationTypes.Goal_Member, DeletionFlag.EXCLUDE_DELETED);
- cache.put(artifact, toReturn);
+ synchronized (cache) {
+ cache.put(artifact.getGuid(), toReturn);
+ }
}
return new LinkedList<Artifact>(toReturn);
}
diff --git a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/filter/ArtifactEventFilter.java b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/filter/ArtifactEventFilter.java
index 06f1b7dabf4..b4d2ec6b7f0 100644
--- a/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/filter/ArtifactEventFilter.java
+++ b/plugins/org.eclipse.osee.framework.skynet.core/src/org/eclipse/osee/framework/skynet/core/event/filter/ArtifactEventFilter.java
@@ -21,22 +21,23 @@ import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
*/
public class ArtifactEventFilter implements IEventFilter {
- private final Artifact filterArtifact;
+ private final String filterArtifactGuid;
+ private final String filterBranchGuid;
public ArtifactEventFilter(Artifact artifact) {
- this.filterArtifact = artifact;
+ filterArtifactGuid = artifact.getGuid();
+ filterBranchGuid = artifact.getBranchGuid();
}
@Override
public boolean isMatch(String branchGuid) {
- return branchGuid.equals(filterArtifact.getBranchGuid());
+ return branchGuid.equals(filterBranchGuid);
}
@Override
public boolean isMatchArtifacts(List<? extends IBasicGuidArtifact> guidArts) {
for (IBasicGuidArtifact art : guidArts) {
- if (art.getGuid().equals(filterArtifact.getGuid()) && art.getBranchGuid().equals(
- filterArtifact.getBranchGuid())) {
+ if (art.getGuid().equals(filterArtifactGuid) && art.getBranchGuid().equals(filterBranchGuid)) {
return true;
}
}

Back to the top