diff --git a/src/org/ntlab/deltaViewer/CollaborationObjectCallGraph.java b/src/org/ntlab/deltaViewer/CollaborationObjectCallGraph.java index ff118a1..64379ee 100644 --- a/src/org/ntlab/deltaViewer/CollaborationObjectCallGraph.java +++ b/src/org/ntlab/deltaViewer/CollaborationObjectCallGraph.java @@ -175,15 +175,25 @@ String srcClassName = ref.getSrcClassName(); String srcObjId = ref.getSrcObjectId(); boolean isFirstRef = true; - for (int j = 0; j < collectionReferences.size(); j++) { - if (collectionReferences.indexOf(ref) != j) { - Reference compareRef = collectionReferences.get(j); - if (srcClassName.equals(compareRef.getDstClassName()) - && srcObjId.equals(compareRef.getDstObjectId())) { - isFirstRef = false; - break; + int idx = 0; + int cnt = 0; + // Count "$" in srcClassName and don't shrink References too much(JHotDrawTransform). + while(true) { + idx = srcClassName.indexOf("$", idx) + 1; + if (idx == 0) break; + cnt++; + } + if (cnt != 1) { + for (int j = 0; j < collectionReferences.size(); j++) { + if (collectionReferences.indexOf(ref) != j) { + Reference compareRef = collectionReferences.get(j); + if (srcClassName.equals(compareRef.getDstClassName()) + && srcObjId.equals(compareRef.getDstObjectId())) { + isFirstRef = false; + break; + } } - } + } } if (isFirstRef) { List collectionChain = new ArrayList<>(); diff --git a/src/tests/CollaborationObjectCallGraphTest.java b/src/tests/CollaborationObjectCallGraphTest.java index 6b1662a..0f40811 100644 --- a/src/tests/CollaborationObjectCallGraphTest.java +++ b/src/tests/CollaborationObjectCallGraphTest.java @@ -28,7 +28,8 @@ // Change Here! // String key = "getterOverlap"; // String key = "setterOverlap"; - String key = "ArgoUMLDelete"; +// String key = "ArgoUMLDelete"; + String key = "JHotDrawTransform"; // String key = "JHotDrawSelect"; MagnetRONFrameTest magnetRONFrame = new MagnetRONFrameTest(); Map extractedMultipleDeltas = magnetRONFrame.extractMultipleDeltas(key); diff --git a/src/tests/MagnetRONFrameTest.java b/src/tests/MagnetRONFrameTest.java index f39f60f..f2e197c 100644 --- a/src/tests/MagnetRONFrameTest.java +++ b/src/tests/MagnetRONFrameTest.java @@ -207,6 +207,7 @@ String[] ArgoUMLDelete1 = {null, null, "public void org.argouml.uml.diagram.ui.ActionRemoveFromDiagram.actionPerformed(", "org.argouml.uml.diagram.static_structure.ui.FigClass", "traces\\ArgoUMLBenchmarkWithMoreStandardClasses.trace", THIS_ANOTHER}; map.put("ArgoUMLDelete1", ArgoUMLDelete1);// ArgoUML �폜�@�\1 (this to another) String[] ArgoUMLDelete2 = {"450474599", "1675174935", "java.util.Vector", "org.argouml.uml.diagram.static_structure.ui.FigClass", "traces\\ArgoUMLBenchmarkWithMoreStandardClasses.trace", CONTAINER_COMPONENT_COLLECTION}; map.put("ArgoUMLDelete2", ArgoUMLDelete2); // ArgoUML �폜�@�\2 (collection) String[] JHotDrawTransform = {"176893671", "1952912699", "java.util.HashSet", "org.jhotdraw.draw.RectangleFigure", "traces\\jHotDrawBenchmarkWithMoreStandardClasses.trace", CONTAINER_COMPONENT_COLLECTION}; map.put("JHotDrawTransform", JHotDrawTransform); // JHotDraw �ړ��@�\ (collection) + String[] JHotDrawSelect1 = {"758826749", "1952912699", "org.jhotdraw.draw.tool.DefaultDragTracker", "org.jhotdraw.draw.RectangleFigure", "traces\\jHotDrawBenchmarkWithMoreStandardClasses.trace", CONTAINER_COMPONENT}; map.put("JHotDrawSelect1", JHotDrawSelect1); // JHotDraw �I���@�\1 String[] JHotDrawSelect2 = {"1378082106", "1952912699", "java.util.HashSet", "org.jhotdraw.draw.RectangleFigure", "traces\\jHotDrawBenchmarkWithMoreStandardClasses.trace", CONTAINER_COMPONENT_COLLECTION}; map.put("JHotDrawSelect2", JHotDrawSelect2); // JHotDraw �I���@�\2 (collection) String[] JHotDrawSelect3 = {"599587451", "758826749", "org.jhotdraw.draw.tool.DelegationSelectionTool", "org.jhotdraw.draw.tool.DefaultDragTracker", "traces\\jHotDrawBenchmarkWithMoreStandardClasses.trace", CONTAINER_COMPONENT}; map.put("JHotDrawSelect3", JHotDrawSelect3); // JHotDraw �I���@�\3 (collection) String[] JHotDrawSelect4 = {"1787265837", "1952912699", "java.util.LinkedHashSet", "org.jhotdraw.draw.RectangleFigure", "traces\\jHotDrawBenchmarkWithMoreStandardClasses.trace", CONTAINER_COMPONENT_COLLECTION}; map.put("JHotDrawSelect4", JHotDrawSelect4); // JHotDraw �I���@�\4 (collection) @@ -218,6 +219,6 @@ argsKeysMap.put("setterOverlap", new ArrayList(Arrays.asList("setterOverlap1", "setterOverlap2"))); argsKeysMap.put("ArgoUMLDelete", new ArrayList(Arrays.asList("ArgoUMLDelete1", "ArgoUMLDelete2"))); argsKeysMap.put("JHotDrawTransform", new ArrayList(Arrays.asList("JHotDrawTransform"))); - argsKeysMap.put("JHotDrawSelect", new ArrayList(Arrays.asList("JHotDrawSelect3,1", "JHotDrawSelect4"))); + argsKeysMap.put("JHotDrawSelect", new ArrayList(Arrays.asList("JHotDrawSelect1,1", "JHotDrawSelect2", "JHotDrawSelect3,1", "JHotDrawSelect4"))); } }