diff --git a/plugin.xml b/plugin.xml
index 02f69a7..0f7803f 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -28,6 +28,14 @@
name="BreakPoint"
restorable="true">
+
+
@@ -98,7 +106,7 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/org/ntlab/traceDebugger/BreakPointView.java b/src/org/ntlab/traceDebugger/BreakPointView.java
index 89c5f79..b22185e 100644
--- a/src/org/ntlab/traceDebugger/BreakPointView.java
+++ b/src/org/ntlab/traceDebugger/BreakPointView.java
@@ -41,9 +41,8 @@
private IAction stepBackOverAction;
private IAction stepBackReturnAction;
private IAction backResumeAction;
- private IAction tmpAction;
private Shell shell;
- private DebuggingController debuggingController = new DebuggingController();
+ private DebuggingController debuggingController = DebuggingController.getInstance();
public static final String ID = "org.ntlab.traceDebugger.breakPointView";
public BreakPointView() {
@@ -227,15 +226,6 @@
};
backResumeAction.setText("Back Resume");
backResumeAction.setToolTipText("Back Resume");
-
- tmpAction = new Action() {
- @Override
- public void run() {
- debuggingController.tmp();
- }
- };
- tmpAction.setText("Tmp");
- tmpAction.setToolTipText("Tmp");
}
private void createToolBar() {
@@ -251,7 +241,6 @@
mgr.add(stepBackOverAction);
mgr.add(stepBackReturnAction);
mgr.add(backResumeAction);
- mgr.add(tmpAction);
}
private void createMenuBar() {
@@ -267,7 +256,6 @@
mgr.add(stepBackOverAction);
mgr.add(stepBackReturnAction);
mgr.add(backResumeAction);
- mgr.add(tmpAction);
}
private void createPopupMenu() {
diff --git a/src/org/ntlab/traceDebugger/DebuggingController.java b/src/org/ntlab/traceDebugger/DebuggingController.java
index d781ec5..3fbc334 100644
--- a/src/org/ntlab/traceDebugger/DebuggingController.java
+++ b/src/org/ntlab/traceDebugger/DebuggingController.java
@@ -13,14 +13,24 @@
import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution;
import org.ntlab.traceAnalysisPlatform.tracer.trace.TraceJSON;
import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint;
+import org.ntlab.traceDebugger.analyzerProvider.AbstractAnalyzer;
import org.ntlab.traceDebugger.analyzerProvider.DeltaExtractionAnalyzer;
import org.ntlab.traceDebugger.analyzerProvider.ReferencePoint;
public class DebuggingController {
+ private static final DebuggingController theInstance = new DebuggingController();
private TracePoint debuggingTp;
private TraceBreakPoint selectedTraceBreakPoint;
private TraceBreakPoints traceBreakPoints = new TraceBreakPoints();
+ private DebuggingController() {
+
+ }
+
+ public static DebuggingController getInstance() {
+ return theInstance;
+ }
+
public void setDebuggingTp(TracePoint tp) {
this.debuggingTp = tp;
}
@@ -240,36 +250,16 @@
}
/**
- * ���݂̃f�o�b�O�ʒu�𒊏o�����f���^�̒�ӂ̃g���[�X�|�C���g�ɍ��킹�� (�Ƃ肠�����m�F���邾���p)
+ * ���݂̃f�o�b�O�ʒu���w�肵���g���[�X�|�C���g�ɍ��킹��
* @return
*/
- public boolean tmp() {
- DeltaExtractionAnalyzer analyzer = (DeltaExtractionAnalyzer)TraceDebuggerPlugin.getAnalyzer();
- TracePoint tp = analyzer.getBottomPoint();
+ public boolean jumpToTheTracePoint(TracePoint tp) {
+ if (tp == null) return false;
debuggingTp = tp.duplicate();
refresh(false);
return true;
}
-// /**
-// * ���݂̃f�o�b�O�ʒu�𒊏o�����f���^�̒�ӂ̃g���[�X�|�C���g�ɍ��킹�� (�Ƃ肠�����m�F���邾���p)
-// * @return
-// */
-// public boolean tmp() {
-// DeltaExtractionAnalyzer analyzer = (DeltaExtractionAnalyzer)TraceDebuggerPlugin.getAnalyzer();
-// ReferencePoint rp = analyzer.getBottomPoint();
-// long previousTime = debuggingTp.getStatement().getTimeStamp();
-// long rpTime = rp.getTime();
-// debuggingTp = rp.getTracePoint();
-//// if (rpTime < previousTime) {
-//// traceBreakPoints.reverseAll(rpTime);
-//// } else {
-//// traceBreakPoints.forwardAll(rpTime);
-//// }
-// refresh(false);
-// return true;
-// }
-
private void refresh(boolean isReturned) {
MethodExecution me = debuggingTp.getMethodExecution();
int lineNo = debuggingTp.getStatement().getLineNo();
diff --git a/src/org/ntlab/traceDebugger/DeltaMarkerView.java b/src/org/ntlab/traceDebugger/DeltaMarkerView.java
new file mode 100644
index 0000000..97a3bee
--- /dev/null
+++ b/src/org/ntlab/traceDebugger/DeltaMarkerView.java
@@ -0,0 +1,20 @@
+package org.ntlab.traceDebugger;
+
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.views.markers.MarkerSupportView;
+
+public class DeltaMarkerView extends MarkerSupportView {
+ public static String ID = "org.ntlab.traceDebugger.deltaMarkerView";
+
+ public DeltaMarkerView() {
+ super("org.ntlab.traceDebugger.markerContentGenerator");
+ }
+
+ @Override
+ public void init(IViewSite site, IMemento m) throws PartInitException {
+ // note: ���̃��\�b�h���I�[�o�[���C�h����IMemento��null�ɂ��Ă����Ȃ��ƃR���X�g���N�^�Őݒ肵��Generator�����������
+ super.init(site, null);
+ }
+}
diff --git a/src/org/ntlab/traceDebugger/Variable.java b/src/org/ntlab/traceDebugger/Variable.java
index 413bf50..92e415e 100644
--- a/src/org/ntlab/traceDebugger/Variable.java
+++ b/src/org/ntlab/traceDebugger/Variable.java
@@ -23,22 +23,31 @@
private List children = new ArrayList<>();
private String containerClassName;
private String containerId;
- private TracePoint tracePoint;
+ private TracePoint lastUpdatePoint;
+ private TracePoint before;
private boolean isReturned;
private DeepHierarchy deepHierarchy;
private boolean alreadyCreatedChildHierarchy = false;
private boolean alreadyCreatedGrandChildHierarchy = false;
+ private boolean isSrcSideRelatedDelta = false;
+ private boolean isDstSideRelatedDelta = false;
public Variable(String variableName, String containerClassName, String containerId,
String className, String id, TracePoint before, boolean isReturned) {
+ this(variableName, containerClassName, containerId, className, id, null, before, isReturned);
+ }
+
+ public Variable(String variableName, String containerClassName, String containerId,
+ String className, String id, TracePoint lastUpdatePoint, TracePoint before, boolean isReturned) {
this.variableName = variableName;
this.containerClassName = containerClassName;
this.containerId = containerId;
this.className = className;
this.id = id;
- this.tracePoint = before;
+ this.lastUpdatePoint = lastUpdatePoint;
+ this.before = before;
this.isReturned = isReturned;
- this.deepHierarchy = checkDeepHierarchy();
+ this.deepHierarchy = checkDeepHierarchy();
}
public String getVariableName() {
@@ -61,8 +70,12 @@
return id;
}
- public TracePoint getTracePoint() {
- return tracePoint;
+ public TracePoint getLastUpdatePoint() {
+ return lastUpdatePoint;
+ }
+
+ public TracePoint getBeforeTracePoint() {
+ return before;
}
public Variable getParent() {
@@ -172,12 +185,15 @@
// ���̃t�B�[���h�ɂ��Ă̍ŐV�̍X�V�����擾(FieldUpdate)
// FieldUpdate fieldUpdate = trace.getRecentlyFieldUpdate(thisObjData.getId(), fieldName, tp);
- FieldUpdate fieldUpdate = trace.getFieldUpdate(id, fullyQualifiedFieldName, tracePoint, isReturned);
+// FieldUpdate fieldUpdate = trace.getFieldUpdate(id, fullyQualifiedFieldName, before, isReturned);
+ TracePoint updateTracePoint = trace.getFieldUpdateTracePoint(id, fullyQualifiedFieldName, before, isReturned);
+ if (updateTracePoint == null) continue;
+ FieldUpdate fieldUpdate = (FieldUpdate)updateTracePoint.getStatement();
// �t�B�[���h��ID��Type���擾(String)
String fieldObjId = (fieldUpdate != null) ? fieldUpdate.getValueObjId() : "0";
String fieldType = (fieldUpdate != null) ? fieldUpdate.getValueClassName() : "---";
- Variable fieldData = new Variable(fieldName, className, id, fieldType, fieldObjId, tracePoint, isReturned);
+ Variable fieldData = new Variable(fieldName, className, id, fieldType, fieldObjId, updateTracePoint, before, isReturned);
this.addChild(fieldData);
}
} catch (JavaModelException e) {
@@ -189,7 +205,7 @@
TraceJSON trace = (TraceJSON)TraceDebuggerPlugin.getAnalyzer().getTrace();
for (int i = 0;; i++){
// ���̔z��v�f�ɂ��Ă̍ŐV�̍X�V�����擾(ArrayUpdate)
- ArrayUpdate arrayUpdate = trace.getRecentlyArrayUpdate(id, i, tracePoint);
+ ArrayUpdate arrayUpdate = trace.getRecentlyArrayUpdate(id, i, before);
if (arrayUpdate == null) {
// �z��̃T�C�Y���擾�ł��Ȃ����߁A�C���f�b�N�X���T�C�Y���߂̂Ƃ��Ɋm���ɔ���������@�Ƃ��ĉ�����
// �������A�z��v�f�̓r���ɖ���`���������ꍇ�ł��A�����Ă��܂��̂����_
@@ -200,11 +216,28 @@
// �z��v�f��ID��Type���擾(String)
String valueObjId = arrayUpdate.getValueObjectId();
String valueType = arrayUpdate.getValueClassName();
- Variable arrayIndexData = new Variable(arrayIndexName, className, id, valueType, valueObjId, tracePoint, isReturned);
+ Variable arrayIndexData = new Variable(arrayIndexName, className, id, valueType, valueObjId, before, isReturned);
this.addChild(arrayIndexData);
}
}
+ public boolean isSrcSideRelatedDelta() {
+ return isSrcSideRelatedDelta;
+ }
+
+ public void setSrcSideRelatedDelta(boolean isSrcSideRelatedDelta) {
+ this.isSrcSideRelatedDelta = isSrcSideRelatedDelta;
+ }
+
+ public boolean isDstSideRelatedDelta() {
+ return isDstSideRelatedDelta;
+ }
+
+ public void setDstSideRelatedDelta(boolean isDstSideRelatedDelta) {
+ this.isDstSideRelatedDelta = isDstSideRelatedDelta;
+ }
+
+
private enum DeepHierarchy {
NONE, FIELD, ARRAY;
}
diff --git a/src/org/ntlab/traceDebugger/VariableLabelProvider.java b/src/org/ntlab/traceDebugger/VariableLabelProvider.java
index 3607ae2..6bee46d 100644
--- a/src/org/ntlab/traceDebugger/VariableLabelProvider.java
+++ b/src/org/ntlab/traceDebugger/VariableLabelProvider.java
@@ -1,13 +1,17 @@
package org.ntlab.traceDebugger;
+import org.eclipse.jface.viewers.ITableColorProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TreeNode;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;
-public class VariableLabelProvider extends LabelProvider implements ITableLabelProvider {
+public class VariableLabelProvider extends LabelProvider implements ITableLabelProvider, ITableColorProvider {
@Override
public String getColumnText(Object element, int columnIndex) {
if (element instanceof TreeNode) {
@@ -40,4 +44,27 @@
public Image getImage(Object element) {
return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
}
+
+ @Override
+ public Color getForeground(Object element, int columnIndex) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Color getBackground(Object element, int columnIndex) {
+ // TODO Auto-generated method stub
+ if (element instanceof TreeNode) {
+ Object value = ((TreeNode)element).getValue();
+ if (value instanceof Variable) {
+ Variable variable = (Variable)value;
+ if (variable.isSrcSideRelatedDelta()) {
+ org.eclipse.swt.graphics.Color color = new org.eclipse.swt.graphics.Color(Display.getDefault(), 255, 128, 0);
+ return color;
+ }
+ if (variable.isDstSideRelatedDelta()) return Display.getDefault().getSystemColor(SWT.COLOR_CYAN);
+ }
+ }
+ return null;
+ }
}
diff --git a/src/org/ntlab/traceDebugger/VariableView.java b/src/org/ntlab/traceDebugger/VariableView.java
index d87ba6a..ac30a38 100644
--- a/src/org/ntlab/traceDebugger/VariableView.java
+++ b/src/org/ntlab/traceDebugger/VariableView.java
@@ -1,6 +1,9 @@
package org.ntlab.traceDebugger;
+import java.util.HashSet;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IAction;
@@ -9,9 +12,12 @@
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITableColorProvider;
import org.eclipse.jface.viewers.ITreeViewerListener;
+import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeExpansionEvent;
import org.eclipse.jface.viewers.TreeNode;
@@ -23,6 +29,7 @@
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeColumn;
import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
@@ -31,9 +38,11 @@
import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint;
import org.ntlab.traceDebugger.analyzerProvider.AbstractAnalyzer;
import org.ntlab.traceDebugger.analyzerProvider.DeltaExtractionAnalyzer;
+import org.ntlab.traceDebugger.analyzerProvider.DeltaMarkerManager;
public class VariableView extends ViewPart {
- private TreeViewer viewer;
+ private TreeViewer viewer;
+ private IAction jumpAction;
private IAction deltaAction;
private Variable selectedVariable;
private Variables variables = Variables.getInstance();
@@ -101,7 +110,7 @@
grandChildNode.setChildren(nodes);
}
}
- viewer.refresh();
+ viewer.refresh();
}
@Override
@@ -120,6 +129,18 @@
}
private void createActions() {
+ jumpAction = new Action() {
+ public void run() {
+ TracePoint tp = selectedVariable.getLastUpdatePoint();
+ if (tp == null) return;
+ DebuggingController controller = DebuggingController.getInstance();
+ controller.jumpToTheTracePoint(tp);
+ controller.stepOverAction();
+ }
+ };
+ jumpAction.setText("Jump to Creation Point");
+ jumpAction.setToolTipText("Jump to Creation Point");
+
deltaAction = new Action() {
@Override
public void run() {
@@ -127,6 +148,19 @@
if (analyzer instanceof DeltaExtractionAnalyzer) {
DeltaExtractionAnalyzer deltaAnalyzer = (DeltaExtractionAnalyzer)analyzer;
deltaAnalyzer.extractDelta(selectedVariable);
+ TracePoint coordinatorPoint = deltaAnalyzer.getCoordinatorPoint();
+ DebuggingController controller = DebuggingController.getInstance();
+ controller.jumpToTheTracePoint(coordinatorPoint);
+
+ IWorkbench workbench = PlatformUI.getWorkbench();
+ IWorkbenchPage workbenchPage = workbench.getActiveWorkbenchWindow().getActivePage();
+ try {
+ // note: ����r���[���J���e�X�g
+ workbenchPage.showView("org.eclipse.ui.views.AllMarkersView", "tmp" + Math.random(), IWorkbenchPage.VIEW_ACTIVATE);
+ } catch (PartInitException e) {
+ e.printStackTrace();
+ }
+ expandParticularNodes();
}
}
};
@@ -134,6 +168,49 @@
deltaAction.setToolTipText("Extract Delta");
}
+ private void expandParticularNodes() {
+ Map> markerIdToObjectIdSet = DeltaMarkerManager.getInstance().getMarkerIdToObjectIdSet();
+ Set srcSideIdSet = new HashSet<>(markerIdToObjectIdSet.get(DeltaMarkerManager.DELTA_MARKER_ID));
+ Set dstSideIdSet = new HashSet<>(markerIdToObjectIdSet.get(DeltaMarkerManager.DELTA_MARKER_ID_2));
+// Set idSet = new HashSet<>(DeltaMarkerManager.getInstance().getIdSet());
+ Set expandNodes = new HashSet<>();
+ Object obj = viewer.getTree().getTopItem().getData();
+ if (!(obj instanceof TreeNode)) return;
+ TreeNode node = (TreeNode)obj;
+ Object value = node.getValue();
+ if (!(value instanceof Variable)) return;
+ expandParticularNodes(srcSideIdSet, dstSideIdSet, expandNodes, node);
+ viewer.setExpandedElements(expandNodes.toArray(new Object[expandNodes.size()]));
+ }
+
+ private void expandParticularNodes(Set srcSideIdSet, Set dstSideIdSet, Set expandNodes, TreeNode node) {
+// if (idSet.isEmpty()) return;
+ Object value = node.getValue();
+ if (!(value instanceof Variable)) return;
+ Variable variable = (Variable)value;
+ String id = variable.getId();
+ if (srcSideIdSet.contains(id)) {
+ variable.setSrcSideRelatedDelta(true);
+ srcSideIdSet.remove(id);
+ TreeNode parent = node.getParent();
+ if (parent != null) {
+ expandNodes.add(node.getParent());
+ }
+ } else if (dstSideIdSet.contains(id)) {
+ variable.setDstSideRelatedDelta(true);
+ dstSideIdSet.remove(id);
+ TreeNode parent = node.getParent();
+ if (parent != null) {
+ expandNodes.add(node.getParent());
+ }
+ }
+ TreeNode[] children = node.getChildren();
+ if (children == null) return;
+ for (TreeNode child : children) {
+ expandParticularNodes(srcSideIdSet, dstSideIdSet, expandNodes, child);
+ }
+ }
+
private void createToolBar() {
IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager();
}
@@ -148,6 +225,7 @@
menuMgr.addMenuListener(new IMenuListener() {
@Override
public void menuAboutToShow(IMenuManager manager) {
+ manager.add(jumpAction);
manager.add(deltaAction);
manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
}
@@ -168,11 +246,6 @@
viewer.setInput(variables.getVariablesTreeNodes());
}
-// public void updateVariablesByAlias(Alias alias) {
-// variables.getAllObjectDataByAlias(alias);
-// viewer.setInput(variables.getVariablesTreeNodesList());
-// }
-
private IViewPart getOtherView(String viewId) {
IWorkbenchPage workbenchPage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
try {
diff --git a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractionAnalyzer.java b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractionAnalyzer.java
index 08aae6c..82e2b73 100644
--- a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractionAnalyzer.java
+++ b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractionAnalyzer.java
@@ -19,6 +19,7 @@
private DeltaExtractorJSON deltaExtractor;
private ExtractedStructure extractedStructure;
private TracePoint bottomPoint;
+ private TracePoint coordinatorPoint;
public DeltaExtractionAnalyzer(Trace trace) {
super(trace);
@@ -26,6 +27,7 @@
DeltaMarkerManager mgr = DeltaMarkerManager.getInstance();
mgr.deleteMarkers(DeltaMarkerManager.DELTA_MARKER_ID);
mgr.deleteMarkers(DeltaMarkerManager.DELTA_MARKER_ID_2);
+ mgr.deleteMarkerIdToObjectIdSet();
}
private static DeltaExtractionAnalyzer getInstance() {
@@ -39,6 +41,10 @@
return bottomPoint;
}
+ public TracePoint getCoordinatorPoint() {
+ return coordinatorPoint;
+ }
+
public ExtractedStructure geExtractedStructure() {
return extractedStructure;
}
@@ -48,7 +54,7 @@
String srcClassName = variable.getContainerClassName();
String dstId = variable.getId();
String dstClassName = variable.getClassName();
- TracePoint before = variable.getTracePoint();
+ TracePoint before = variable.getBeforeTracePoint();
Reference reference = new Reference(srcId, dstId, srcClassName, dstClassName);
// �f���^���o
@@ -61,6 +67,18 @@
MethodExecution coordinator = extractedStructure.getCoordinator();
bottomPoint = findTracePoint(reference, creationCallTree, before.getStatement().getTimeStamp());
+ MethodExecution me = bottomPoint.getMethodExecution();
+ MethodExecution childMe = null;
+ coordinatorPoint = null;
+ while (me != null) {
+ childMe = me;
+ me = me.getParent();
+ if (coordinator.equals(me)) {
+ coordinatorPoint = childMe.getCallerTracePoint();
+ break;
+ }
+ }
+
// �f���^���o�̌��ʂ����Ƀ\�[�X�R�[�h�]�\������
mark(bottomPoint, srcSideRelatedAliases, dstSideRelatedAliases, coordinator);
}
@@ -103,6 +121,7 @@
DeltaMarkerManager mgr = DeltaMarkerManager.getInstance();
mgr.deleteMarkers(DeltaMarkerManager.DELTA_MARKER_ID);
mgr.deleteMarkers(DeltaMarkerManager.DELTA_MARKER_ID_2);
+ mgr.deleteMarkerIdToObjectIdSet();
}
private void markAndOpenJavaFile(Alias alias, String message, String markerId) {
diff --git a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaMarkerManager.java b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaMarkerManager.java
index dd98e05..eaa2f72 100644
--- a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaMarkerManager.java
+++ b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaMarkerManager.java
@@ -2,8 +2,10 @@
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
@@ -37,6 +39,7 @@
public class DeltaMarkerManager {
private static final DeltaMarkerManager theInstance = new DeltaMarkerManager();
private Map> markers = new HashMap<>();
+ private Map> markerIdToObjectIdSet = new HashMap<>();
public static final String DELTA_MARKER_ID = "org.ntlab.traceDebugger.deltaMarker";
public static final String DELTA_MARKER_ID_2 = "org.ntlab.traceDebugger.deltaMarker2";
@@ -53,6 +56,23 @@
}
public IMarker addMarker(Alias alias, IFile file, String message, String markerId) {
+// idSet.add(alias.getObjectId());
+ if (markerId.equals(DELTA_MARKER_ID)) {
+ Set objectIdSet = markerIdToObjectIdSet.get(DELTA_MARKER_ID);
+ if (objectIdSet == null) {
+ objectIdSet = new HashSet();
+ markerIdToObjectIdSet.put(DELTA_MARKER_ID, objectIdSet);
+ }
+ objectIdSet.add(alias.getObjectId());
+ } else if (markerId.equals(DELTA_MARKER_ID_2)) {
+ Set objectIdSet = markerIdToObjectIdSet.get(DELTA_MARKER_ID_2);
+ if (objectIdSet == null) {
+ objectIdSet = new HashSet();
+ markerIdToObjectIdSet.put(DELTA_MARKER_ID_2, objectIdSet);
+ }
+ objectIdSet.add(alias.getObjectId());
+ }
+
try {
IMarker marker = file.createMarker(markerId);
Map attributes = new HashMap<>();
@@ -621,7 +641,8 @@
} else {
// note: ���\�b�h�V�O�l�`�����n�C���C�g
IType type = JavaEditorOperator.findIType(methodExecution);
- final IMethod method = JavaEditorOperator.findIMethod(methodExecution, type);
+ final IMethod method = JavaEditorOperator.findIMethod(methodExecution, type);
+ if (method == null) return;
ASTParser parser = ASTParser.newParser(AST.JLS10);
ICompilationUnit unit = method.getCompilationUnit();
parser.setSource(unit);
@@ -670,4 +691,12 @@
markerList.clear();
markers.remove(markerId);
}
+
+ public Map> getMarkerIdToObjectIdSet() {
+ return markerIdToObjectIdSet;
+ }
+
+ public void deleteMarkerIdToObjectIdSet() {
+ markerIdToObjectIdSet.clear();
+ }
}