diff --git a/plugin.xml b/plugin.xml index 2536e1b..03de67c 100644 --- a/plugin.xml +++ b/plugin.xml @@ -61,9 +61,9 @@ diff --git a/src/org/ntlab/traceDebugger/CallStackModels.java b/src/org/ntlab/traceDebugger/CallStackModels.java index 545c2dd..70b9be4 100644 --- a/src/org/ntlab/traceDebugger/CallStackModels.java +++ b/src/org/ntlab/traceDebugger/CallStackModels.java @@ -76,7 +76,7 @@ debuggingThreadId = tpStatement.getThreadNo(); debuggingThreadCallStacks = update(tp); allCallStacks.put(debuggingThreadId, debuggingThreadCallStacks); - IStatementVisitor visitor = new CallStackVisitor(tp); +// IStatementVisitor visitor = new CallStackVisitor(tp); // updateOtherThreadCallStacks(visitor); } diff --git a/src/org/ntlab/traceDebugger/CallStackVisitor.java b/src/org/ntlab/traceDebugger/CallStackVisitor.java deleted file mode 100644 index 9fcbf70..0000000 --- a/src/org/ntlab/traceDebugger/CallStackVisitor.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.ntlab.traceDebugger; - -import org.ntlab.traceAnalysisPlatform.tracer.trace.IStatementVisitor; -import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodInvocation; -import org.ntlab.traceAnalysisPlatform.tracer.trace.Statement; -import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint; - -public class CallStackVisitor implements IStatementVisitor { - private TracePoint before = null; - - public CallStackVisitor() { - - } - - public CallStackVisitor(TracePoint before) { - this.before = before; - } - - @Override - public boolean preVisitStatement(Statement statement) { - System.out.println("CallStackVisitor#preVisitStatement(Statement)"); - if (!(statement instanceof MethodInvocation)) return false; - if (before == null) return true; - MethodInvocation mi = (MethodInvocation)statement; - return (mi.getTimeStamp() < before.getStatement().getTimeStamp()); - } - - @Override - public boolean postVisitStatement(Statement statement) { - return false; - } -} diff --git a/src/org/ntlab/traceDebugger/DebuggingController.java b/src/org/ntlab/traceDebugger/DebuggingController.java index 8fcc9e2..23dcdc0 100644 --- a/src/org/ntlab/traceDebugger/DebuggingController.java +++ b/src/org/ntlab/traceDebugger/DebuggingController.java @@ -100,7 +100,7 @@ ((CallStackView)TraceDebuggerPlugin.getActiveView(CallStackView.ID)).reset(); ((VariableView)TraceDebuggerPlugin.getActiveView(VariableView.ID)).reset(); ((BreakPointView)TraceDebuggerPlugin.getActiveView(BreakPointView.ID)).reset(); - TracePointsView tracePointsView = (TracePointsView)TraceDebuggerPlugin.getActiveView(TracePointsView.ID); + TracePointsRegisterView tracePointsView = (TracePointsRegisterView)TraceDebuggerPlugin.getActiveView(TracePointsRegisterView.ID); if (tracePointsView != null) tracePointsView.reset(); CallTreeView callTreeView = (CallTreeView)TraceDebuggerPlugin.getActiveView(CallTreeView.ID); if (callTreeView != null) callTreeView.reset(); diff --git a/src/org/ntlab/traceDebugger/DeltaMarkerView.java b/src/org/ntlab/traceDebugger/DeltaMarkerView.java index 62b620b..01948d6 100644 --- a/src/org/ntlab/traceDebugger/DeltaMarkerView.java +++ b/src/org/ntlab/traceDebugger/DeltaMarkerView.java @@ -176,7 +176,8 @@ AbstractAnalyzer analyzer = TraceDebuggerPlugin.getAnalyzer(); if (analyzer instanceof DeltaExtractionAnalyzer) { DeltaExtractionAnalyzer deltaAnalyzer = (DeltaExtractionAnalyzer)analyzer; - deltaMarkerManager = deltaAnalyzer.extractDeltaForContainerToComponent(variable); + if (deltaMarkerManager == null) deltaMarkerManager = new DeltaMarkerManager(); + deltaMarkerManager.setDeltaInformation(deltaAnalyzer.extractDeltaForContainerToComponent(variable)); deltaMarkerManager.createMarkerAndOpenJavaFileForAll(); // �f���^���o�̌��ʂ����Ƀ\�[�X�R�[�h�𔽓]�\������ updateAfterExtractingDelta(); } @@ -186,7 +187,8 @@ AbstractAnalyzer analyzer = TraceDebuggerPlugin.getAnalyzer(); if (analyzer instanceof DeltaExtractionAnalyzer) { DeltaExtractionAnalyzer deltaAnalyzer = (DeltaExtractionAnalyzer)analyzer; - deltaMarkerManager = deltaAnalyzer.extractDeltaForThisToAnother(thisId, thisClassName, anotherId, anotherClassName, before); + if (deltaMarkerManager == null) deltaMarkerManager = new DeltaMarkerManager(); + deltaMarkerManager.setDeltaInformation(deltaAnalyzer.extractDeltaForThisToAnother(thisId, thisClassName, anotherId, anotherClassName, before)); deltaMarkerManager.createMarkerAndOpenJavaFileForAll(); // �f���^���o�̌��ʂ����Ƀ\�[�X�R�[�h�𔽓]�\������ updateAfterExtractingDelta(); } @@ -213,7 +215,7 @@ CallTreeView callTreeView = (CallTreeView)TraceDebuggerPlugin.getActiveView(CallTreeView.ID); callTreeView.update(deltaMarkerManager); callTreeView.highlight(bottomME); - TracePointsView tracePointsView = (TracePointsView)TraceDebuggerPlugin.getActiveView(TracePointsView.ID); + TracePointsRegisterView tracePointsView = (TracePointsRegisterView)TraceDebuggerPlugin.getActiveView(TracePointsRegisterView.ID); tracePointsView.addTracePoint(creationPoint); } } diff --git a/src/org/ntlab/traceDebugger/ExtendedTreeNode.java b/src/org/ntlab/traceDebugger/ExtendedTreeNode.java new file mode 100644 index 0000000..bc3ba51 --- /dev/null +++ b/src/org/ntlab/traceDebugger/ExtendedTreeNode.java @@ -0,0 +1,39 @@ +package org.ntlab.traceDebugger; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.eclipse.jface.viewers.TreeNode; + +public class ExtendedTreeNode extends TreeNode { + private List children = new ArrayList<>(); + + public ExtendedTreeNode(Object value) { + super(value); + } + + @Override + public ExtendedTreeNode[] getChildren() { + if (children != null && children.size() == 0) { + return null; + } + return children.toArray(new ExtendedTreeNode[children.size()]); + } + + public List getChildList() { + return children; + } + + @Override + public boolean hasChildren() { + return children != null && children.size() > 0; + } + + public void setChildren(final ExtendedTreeNode[] children) { + this.children = new ArrayList(Arrays.asList(children)); + } + + public void setChildList(final List children) { + this.children = children; + } +} diff --git a/src/org/ntlab/traceDebugger/ExtendedTreeNodeContentProvider.java b/src/org/ntlab/traceDebugger/ExtendedTreeNodeContentProvider.java new file mode 100644 index 0000000..527053d --- /dev/null +++ b/src/org/ntlab/traceDebugger/ExtendedTreeNodeContentProvider.java @@ -0,0 +1,17 @@ +package org.ntlab.traceDebugger; + +import java.util.List; + +import org.eclipse.jface.viewers.TreeNodeContentProvider; + +public class ExtendedTreeNodeContentProvider extends TreeNodeContentProvider { + @Override + public Object[] getElements(final Object inputElement) { + if (inputElement instanceof List) { + List list = (List)inputElement; + ExtendedTreeNode[] nodes = list.toArray(new ExtendedTreeNode[list.size()]); + return super.getElements(nodes); + } + return new Object[0]; + } +} diff --git a/src/org/ntlab/traceDebugger/MyTreeNode.java b/src/org/ntlab/traceDebugger/MyTreeNode.java deleted file mode 100644 index a8eb255..0000000 --- a/src/org/ntlab/traceDebugger/MyTreeNode.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.ntlab.traceDebugger; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import org.eclipse.jface.viewers.TreeNode; - -public class MyTreeNode extends TreeNode { - private List children = new ArrayList<>(); - - public MyTreeNode(Object value) { - super(value); - } - - @Override - public MyTreeNode[] getChildren() { - if (children != null && children.size() == 0) { - return null; - } - return children.toArray(new MyTreeNode[children.size()]); - } - - public List getChildList() { - return children; - } - - @Override - public boolean hasChildren() { - return children != null && children.size() > 0; - } - - public void setChildren(final MyTreeNode[] children) { - this.children = new ArrayList(Arrays.asList(children)); - } - - public void setChildList(final List children) { - this.children = children; - } -} diff --git a/src/org/ntlab/traceDebugger/MyTreeNodeContentProvider.java b/src/org/ntlab/traceDebugger/MyTreeNodeContentProvider.java deleted file mode 100644 index 81a2e76..0000000 --- a/src/org/ntlab/traceDebugger/MyTreeNodeContentProvider.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.ntlab.traceDebugger; - -import java.util.List; - -import org.eclipse.jface.viewers.TreeNodeContentProvider; - -public class MyTreeNodeContentProvider extends TreeNodeContentProvider { - @Override - public Object[] getElements(final Object inputElement) { - if (inputElement instanceof List) { - List list = (List)inputElement; - MyTreeNode[] nodes = list.toArray(new MyTreeNode[list.size()]); - return super.getElements(nodes); - } - return new Object[0]; - } -} diff --git a/src/org/ntlab/traceDebugger/TraceDebuggerPerspectiveRelatedDelta.java b/src/org/ntlab/traceDebugger/TraceDebuggerPerspectiveRelatedDelta.java index f08f732..d362011 100644 --- a/src/org/ntlab/traceDebugger/TraceDebuggerPerspectiveRelatedDelta.java +++ b/src/org/ntlab/traceDebugger/TraceDebuggerPerspectiveRelatedDelta.java @@ -21,7 +21,7 @@ // �E���Ƀg���[�X�|�C���g�̃r���[��z�u IFolderLayout tracePointsViewArea = layout.createFolder("TracePointsViewArea", IPageLayout.BOTTOM, 0.5f, "CallTreeViewArea"); - tracePointsViewArea.addView(TracePointsView.ID); + tracePointsViewArea.addView(TracePointsRegisterView.ID); // �E��ɕϐ��̃r���[��z�u IFolderLayout variableViewArea = layout.createFolder("VariableViewArea", IPageLayout.TOP, 0.25f, editorArea); diff --git a/src/org/ntlab/traceDebugger/TraceDebuggerPlugin.java b/src/org/ntlab/traceDebugger/TraceDebuggerPlugin.java index 7f030f5..866d7c0 100644 --- a/src/org/ntlab/traceDebugger/TraceDebuggerPlugin.java +++ b/src/org/ntlab/traceDebugger/TraceDebuggerPlugin.java @@ -140,7 +140,7 @@ reg.put(BreakPointViewRelatedDelta.BACK_RESUME_DLCL, getImageDescriptor("/icons/debug/backresume_dlcl.png")); // note: �ϐ��r���[�Ɋւ���A�C�R�� - reg.put(VariableLabelProvider.SPECIAL_VARIABLE, getImageDescriptor("/icons/variable/specialvariable.png")); + reg.put(VariableLabelProvider.PSEUDO_VARIABLE, getImageDescriptor("/icons/variable/specialvariable.png")); reg.put(VariableLabelProvider.THIS_VARIABLE, getImageDescriptor("/icons/variable/thisvariable.png")); reg.put(VariableLabelProvider.FIELD_VARIABLE, getImageDescriptor("/icons/variable/fieldvariable.png")); reg.put(VariableLabelProvider.ARG_VARIABLE, getImageDescriptor("/icons/variable/localvariable.png")); diff --git a/src/org/ntlab/traceDebugger/TracePoints.java b/src/org/ntlab/traceDebugger/TracePoints.java deleted file mode 100644 index b152466..0000000 --- a/src/org/ntlab/traceDebugger/TracePoints.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.ntlab.traceDebugger; - -import java.util.ArrayList; -import java.util.List; - -import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint; - -public class TracePoints { - List tracePoints = new ArrayList<>(); - - public List get() { - return tracePoints; - } - - public TracePoint[] getToArray() { - return tracePoints.toArray(new TracePoint[tracePoints.size()]); - } - - public boolean contains(TracePoint tp) { - return tracePoints.contains(tp); - } - - public void add(TracePoint tp) { - tracePoints.add(tp); - } - - public void remove(TracePoint tp) { - tracePoints.remove(tp); - } - - public void clear() { - tracePoints.clear(); - } -} diff --git a/src/org/ntlab/traceDebugger/TracePointsLabelProvider.java b/src/org/ntlab/traceDebugger/TracePointsLabelProvider.java deleted file mode 100644 index 3d4ae2b..0000000 --- a/src/org/ntlab/traceDebugger/TracePointsLabelProvider.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.ntlab.traceDebugger; - -import org.eclipse.jface.viewers.ITableLabelProvider; -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.swt.graphics.Image; -import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution; -import org.ntlab.traceAnalysisPlatform.tracer.trace.Trace; -import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint; - -public class TracePointsLabelProvider extends LabelProvider implements ITableLabelProvider { - - @Override - public String getColumnText(Object element, int columnIndex) { - if (element instanceof TracePoint) { - TracePoint tp = (TracePoint)element; - switch (columnIndex) { - case 0: - return String.valueOf(tp.getStatement().getLineNo()); - case 1: - return getReadableSignature(tp.getMethodExecution()); - } - } - return "�e�X�g�p�e�L�X�g" + columnIndex; - } - - @Override - public Image getColumnImage(Object element, int columnIndex) { - return null; - } - - private String getReadableSignature(MethodExecution methodExecution) { - String signature = methodExecution.getSignature(); - String objectType = methodExecution.getThisClassName(); - objectType = objectType.substring(objectType.lastIndexOf(".") + 1); - boolean isConstructor = methodExecution.isConstructor(); - String declaringType = Trace.getDeclaringType(signature, isConstructor); - declaringType = declaringType.substring(declaringType.lastIndexOf(".") + 1); - String methodName = Trace.getMethodName(signature); - String args = "("; - String delimiter = ""; - String[] argArray = signature.split("\\(")[1].split(","); - for (String arg : argArray) { - args += (delimiter + arg.substring(arg.lastIndexOf(".") + 1)); - delimiter = ", "; - } - - StringBuilder sb = new StringBuilder(); - sb.append(objectType); - if (!declaringType.equals(objectType)) { - sb.append("(" + declaringType + ")"); - } - sb.append("." + methodName + args); - return sb.toString(); - } -} \ No newline at end of file diff --git a/src/org/ntlab/traceDebugger/TracePointsRegister.java b/src/org/ntlab/traceDebugger/TracePointsRegister.java new file mode 100644 index 0000000..3eed9df --- /dev/null +++ b/src/org/ntlab/traceDebugger/TracePointsRegister.java @@ -0,0 +1,34 @@ +package org.ntlab.traceDebugger; + +import java.util.ArrayList; +import java.util.List; + +import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint; + +public class TracePointsRegister { + List tracePoints = new ArrayList<>(); + + public List get() { + return tracePoints; + } + + public TracePoint[] getToArray() { + return tracePoints.toArray(new TracePoint[tracePoints.size()]); + } + + public boolean contains(TracePoint tp) { + return tracePoints.contains(tp); + } + + public void add(TracePoint tp) { + tracePoints.add(tp); + } + + public void remove(TracePoint tp) { + tracePoints.remove(tp); + } + + public void clear() { + tracePoints.clear(); + } +} diff --git a/src/org/ntlab/traceDebugger/TracePointsRegisterLabelProvider.java b/src/org/ntlab/traceDebugger/TracePointsRegisterLabelProvider.java new file mode 100644 index 0000000..19a4b62 --- /dev/null +++ b/src/org/ntlab/traceDebugger/TracePointsRegisterLabelProvider.java @@ -0,0 +1,55 @@ +package org.ntlab.traceDebugger; + +import org.eclipse.jface.viewers.ITableLabelProvider; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.swt.graphics.Image; +import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution; +import org.ntlab.traceAnalysisPlatform.tracer.trace.Trace; +import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint; + +public class TracePointsRegisterLabelProvider extends LabelProvider implements ITableLabelProvider { + + @Override + public String getColumnText(Object element, int columnIndex) { + if (element instanceof TracePoint) { + TracePoint tp = (TracePoint)element; + switch (columnIndex) { + case 0: + return String.valueOf(tp.getStatement().getLineNo()); + case 1: + return getReadableSignature(tp.getMethodExecution()); + } + } + return "�e�X�g�p�e�L�X�g" + columnIndex; + } + + @Override + public Image getColumnImage(Object element, int columnIndex) { + return null; + } + + private String getReadableSignature(MethodExecution methodExecution) { + String signature = methodExecution.getSignature(); + String objectType = methodExecution.getThisClassName(); + objectType = objectType.substring(objectType.lastIndexOf(".") + 1); + boolean isConstructor = methodExecution.isConstructor(); + String declaringType = Trace.getDeclaringType(signature, isConstructor); + declaringType = declaringType.substring(declaringType.lastIndexOf(".") + 1); + String methodName = Trace.getMethodName(signature); + String args = "("; + String delimiter = ""; + String[] argArray = signature.split("\\(")[1].split(","); + for (String arg : argArray) { + args += (delimiter + arg.substring(arg.lastIndexOf(".") + 1)); + delimiter = ", "; + } + + StringBuilder sb = new StringBuilder(); + sb.append(objectType); + if (!declaringType.equals(objectType)) { + sb.append("(" + declaringType + ")"); + } + sb.append("." + methodName + args); + return sb.toString(); + } +} \ No newline at end of file diff --git a/src/org/ntlab/traceDebugger/TracePointsRegisterView.java b/src/org/ntlab/traceDebugger/TracePointsRegisterView.java new file mode 100644 index 0000000..79a11e6 --- /dev/null +++ b/src/org/ntlab/traceDebugger/TracePointsRegisterView.java @@ -0,0 +1,212 @@ +package org.ntlab.traceDebugger; + +import java.util.List; + +import org.eclipse.core.resources.IMarker; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.viewers.ArrayContentProvider; +import org.eclipse.jface.viewers.DoubleClickEvent; +import org.eclipse.jface.viewers.IDoubleClickListener; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.ui.part.ViewPart; +import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution; +import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint; + +public class TracePointsRegisterView extends ViewPart { + private TableViewer viewer; + private Shell shell; + private IAction addAction; + private IAction removeAction; + private IAction jumpAction; + private TracePoint selectedTp; + private TracePointsRegister tracePoints = new TracePointsRegister(); + public static final String ID = "org.ntlab.traceDebugger.tracePointsRegisterView"; + + public TracePointsRegisterView() { + // TODO Auto-generated constructor stub + System.out.println("BreakPointView�N���X���������ꂽ��!"); + } + + @Override + public void createPartControl(Composite parent) { + // TODO Auto-generated method stub + System.out.println("TracePointsView#createPartControl(Composite)���Ă΂ꂽ��!"); + shell = parent.getShell(); + viewer = new TableViewer(parent, SWT.BORDER | SWT.FULL_SELECTION); + Table table = viewer.getTable(); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + // �e�[�u���̃J�������쐬 + String[] tableColumnTexts = TraceDebuggerPlugin.isJapanese() ? new String[]{"�s", "���\�b�h"} + : new String[]{"Line", "Signature"}; + int[] tableColumnWidth = {80, 1000}; + TableColumn[] tableColumns = new TableColumn[tableColumnTexts.length]; + for (int i = 0; i < tableColumns.length; i++) { + tableColumns[i] = new TableColumn(table, SWT.NULL); + tableColumns[i].setText(tableColumnTexts[i]); + tableColumns[i].setWidth(tableColumnWidth[i]); + } + viewer.setContentProvider(new ArrayContentProvider()); + viewer.setLabelProvider(new TracePointsRegisterLabelProvider()); + viewer.addSelectionChangedListener(new ISelectionChangedListener() { + @Override + public void selectionChanged(SelectionChangedEvent event) { + IStructuredSelection sel = (IStructuredSelection)event.getSelection(); + Object element = sel.getFirstElement(); + if (element instanceof TracePoint) { + selectedTp = (TracePoint)element; + MethodExecution me = selectedTp.getMethodExecution(); + int lineNo = selectedTp.getStatement().getLineNo(); + JavaEditorOperator.openSrcFileOfMethodExecution(me, lineNo); + } + } + }); + viewer.addDoubleClickListener(new IDoubleClickListener() { + @Override + public void doubleClick(DoubleClickEvent event) { + IStructuredSelection sel = (IStructuredSelection)event.getSelection(); + Object element = sel.getFirstElement(); + if (element instanceof TracePoint) { + selectedTp = (TracePoint)element; + if (DebuggingController.getInstance().isRunning()) { + jumpToTheTracePoint(selectedTp); + } + } + } + }); + + createActions(); + createToolBar(); + createMenuBar(); + createPopupMenu(); + TraceDebuggerPlugin.setActiveView(ID, this); + } + + @Override + public String getTitle() { + return TraceDebuggerPlugin.isJapanese() ? "���s���_�̓o�^" : "MarkedExecutionPoints"; + } + + @Override + public void setFocus() { + // TODO Auto-generated method stub + TraceDebuggerPlugin.setActiveView(ID, this); + viewer.getControl().setFocus(); + } + + @Override + public void dispose() { + TraceDebuggerPlugin.removeView(ID, this); + } + + private void createActions() { + boolean isJapanese = TraceDebuggerPlugin.isJapanese(); + String msg; + + addAction = new Action() { + @Override + public void run() { + DebuggingController debuggingController = DebuggingController.getInstance(); + TracePoint currentTp = debuggingController.getCurrentTp(); + addTracePoint(currentTp); + } + }; + msg = (isJapanese) ? "�lj�" : "Add"; + addAction.setText(msg); + addAction.setToolTipText(msg); + + removeAction = new Action() { + @Override + public void run() { + if (selectedTp != null) { + tracePoints.remove(selectedTp); + update(); + } + } + }; + msg = (isJapanese) ? "�폜" : "Remove"; + removeAction.setText(msg); + removeAction.setToolTipText(msg); + + jumpAction = new Action() { + @Override + public void run() { + if (selectedTp != null && DebuggingController.getInstance().isRunning()) { + jumpToTheTracePoint(selectedTp); + } + } + }; + msg = (isJapanese) ? "�W�����v" : "Jump"; + jumpAction.setText(msg); + jumpAction.setToolTipText(msg); + } + + private void createToolBar() { + IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager(); + mgr.add(addAction); + mgr.add(removeAction); + mgr.add(jumpAction); + } + + private void createMenuBar() { + IMenuManager mgr = getViewSite().getActionBars().getMenuManager(); + mgr.add(addAction); + mgr.add(removeAction); + mgr.add(jumpAction); + } + + private void createPopupMenu() { + MenuManager menuMgr = new MenuManager("#PopupMenu"); + menuMgr.setRemoveAllWhenShown(true); + menuMgr.addMenuListener(new IMenuListener() { + @Override + public void menuAboutToShow(IMenuManager manager) { +// manager.add(addAction); +// manager.add(removeAction); +// manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); + } + }); + Menu menu = menuMgr.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(menuMgr, viewer); + } + + public void addTracePoint(TracePoint tp) { + if (!(tracePoints.contains(tp))) { + tracePoints.add(tp); + update(); + } + } + + public void reset() { + tracePoints.clear(); + update(); + } + + private void update() { + viewer.setInput(tracePoints.getToArray()); + viewer.refresh(); + } + + protected void jumpToTheTracePoint(TracePoint tp) { + DebuggingController debuggingController = DebuggingController.getInstance(); + debuggingController.jumpToTheTracePoint(tp, false); + List markers = DebuggingController.getInstance().createCurrentLineMarkers(tp); + if (!(markers.isEmpty())) JavaEditorOperator.markAndOpenJavaFile(markers.get(0)); + } +} \ No newline at end of file diff --git a/src/org/ntlab/traceDebugger/TracePointsView.java b/src/org/ntlab/traceDebugger/TracePointsView.java deleted file mode 100644 index dff8ced..0000000 --- a/src/org/ntlab/traceDebugger/TracePointsView.java +++ /dev/null @@ -1,212 +0,0 @@ -package org.ntlab.traceDebugger; - -import java.util.List; - -import org.eclipse.core.resources.IMarker; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.action.IMenuListener; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.action.IToolBarManager; -import org.eclipse.jface.action.MenuManager; -import org.eclipse.jface.viewers.ArrayContentProvider; -import org.eclipse.jface.viewers.DoubleClickEvent; -import org.eclipse.jface.viewers.IDoubleClickListener; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Menu; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.TableColumn; -import org.eclipse.ui.part.ViewPart; -import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution; -import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint; - -public class TracePointsView extends ViewPart { - private TableViewer viewer; - private Shell shell; - private IAction addAction; - private IAction removeAction; - private IAction jumpAction; - private TracePoint selectedTp; - private TracePoints tracePoints = new TracePoints(); - public static final String ID = "org.ntlab.traceDebugger.tracePointsView"; - - public TracePointsView() { - // TODO Auto-generated constructor stub - System.out.println("BreakPointView�N���X���������ꂽ��!"); - } - - @Override - public void createPartControl(Composite parent) { - // TODO Auto-generated method stub - System.out.println("TracePointsView#createPartControl(Composite)���Ă΂ꂽ��!"); - shell = parent.getShell(); - viewer = new TableViewer(parent, SWT.BORDER | SWT.FULL_SELECTION); - Table table = viewer.getTable(); - table.setHeaderVisible(true); - table.setLinesVisible(true); - - // �e�[�u���̃J�������쐬 - String[] tableColumnTexts = TraceDebuggerPlugin.isJapanese() ? new String[]{"�s", "���\�b�h"} - : new String[]{"Line", "Signature"}; - int[] tableColumnWidth = {80, 1000}; - TableColumn[] tableColumns = new TableColumn[tableColumnTexts.length]; - for (int i = 0; i < tableColumns.length; i++) { - tableColumns[i] = new TableColumn(table, SWT.NULL); - tableColumns[i].setText(tableColumnTexts[i]); - tableColumns[i].setWidth(tableColumnWidth[i]); - } - viewer.setContentProvider(new ArrayContentProvider()); - viewer.setLabelProvider(new TracePointsLabelProvider()); - viewer.addSelectionChangedListener(new ISelectionChangedListener() { - @Override - public void selectionChanged(SelectionChangedEvent event) { - IStructuredSelection sel = (IStructuredSelection)event.getSelection(); - Object element = sel.getFirstElement(); - if (element instanceof TracePoint) { - selectedTp = (TracePoint)element; - MethodExecution me = selectedTp.getMethodExecution(); - int lineNo = selectedTp.getStatement().getLineNo(); - JavaEditorOperator.openSrcFileOfMethodExecution(me, lineNo); - } - } - }); - viewer.addDoubleClickListener(new IDoubleClickListener() { - @Override - public void doubleClick(DoubleClickEvent event) { - IStructuredSelection sel = (IStructuredSelection)event.getSelection(); - Object element = sel.getFirstElement(); - if (element instanceof TracePoint) { - selectedTp = (TracePoint)element; - if (DebuggingController.getInstance().isRunning()) { - jumpToTheTracePoint(selectedTp); - } - } - } - }); - - createActions(); - createToolBar(); - createMenuBar(); - createPopupMenu(); - TraceDebuggerPlugin.setActiveView(ID, this); - } - - @Override - public String getTitle() { - return TraceDebuggerPlugin.isJapanese() ? "���s���_�̓o�^" : "MarkedExecutionPoints"; - } - - @Override - public void setFocus() { - // TODO Auto-generated method stub - TraceDebuggerPlugin.setActiveView(ID, this); - viewer.getControl().setFocus(); - } - - @Override - public void dispose() { - TraceDebuggerPlugin.removeView(ID, this); - } - - private void createActions() { - boolean isJapanese = TraceDebuggerPlugin.isJapanese(); - String msg; - - addAction = new Action() { - @Override - public void run() { - DebuggingController debuggingController = DebuggingController.getInstance(); - TracePoint currentTp = debuggingController.getCurrentTp(); - addTracePoint(currentTp); - } - }; - msg = (isJapanese) ? "�lj�" : "Add"; - addAction.setText(msg); - addAction.setToolTipText(msg); - - removeAction = new Action() { - @Override - public void run() { - if (selectedTp != null) { - tracePoints.remove(selectedTp); - update(); - } - } - }; - msg = (isJapanese) ? "�폜" : "Remove"; - removeAction.setText(msg); - removeAction.setToolTipText(msg); - - jumpAction = new Action() { - @Override - public void run() { - if (selectedTp != null && DebuggingController.getInstance().isRunning()) { - jumpToTheTracePoint(selectedTp); - } - } - }; - msg = (isJapanese) ? "�W�����v" : "Jump"; - jumpAction.setText(msg); - jumpAction.setToolTipText(msg); - } - - private void createToolBar() { - IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager(); - mgr.add(addAction); - mgr.add(removeAction); - mgr.add(jumpAction); - } - - private void createMenuBar() { - IMenuManager mgr = getViewSite().getActionBars().getMenuManager(); - mgr.add(addAction); - mgr.add(removeAction); - mgr.add(jumpAction); - } - - private void createPopupMenu() { - MenuManager menuMgr = new MenuManager("#PopupMenu"); - menuMgr.setRemoveAllWhenShown(true); - menuMgr.addMenuListener(new IMenuListener() { - @Override - public void menuAboutToShow(IMenuManager manager) { -// manager.add(addAction); -// manager.add(removeAction); -// manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); - } - }); - Menu menu = menuMgr.createContextMenu(viewer.getControl()); - viewer.getControl().setMenu(menu); - getSite().registerContextMenu(menuMgr, viewer); - } - - public void addTracePoint(TracePoint tp) { - if (!(tracePoints.contains(tp))) { - tracePoints.add(tp); - update(); - } - } - - public void reset() { - tracePoints.clear(); - update(); - } - - private void update() { - viewer.setInput(tracePoints.getToArray()); - viewer.refresh(); - } - - protected void jumpToTheTracePoint(TracePoint tp) { - DebuggingController debuggingController = DebuggingController.getInstance(); - debuggingController.jumpToTheTracePoint(tp, false); - List markers = DebuggingController.getInstance().createCurrentLineMarkers(tp); - if (!(markers.isEmpty())) JavaEditorOperator.markAndOpenJavaFile(markers.get(0)); - } -} \ No newline at end of file diff --git a/src/org/ntlab/traceDebugger/VariableLabelProvider.java b/src/org/ntlab/traceDebugger/VariableLabelProvider.java index bb57ed5..1e6a696 100644 --- a/src/org/ntlab/traceDebugger/VariableLabelProvider.java +++ b/src/org/ntlab/traceDebugger/VariableLabelProvider.java @@ -10,11 +10,11 @@ import org.ntlab.traceDebugger.analyzerProvider.DeltaMarkerManager; public class VariableLabelProvider extends LabelProvider implements ITableLabelProvider, ITableColorProvider { - public static final String SPECIAL_VARIABLE = "SpecialVariable"; + public static final String PSEUDO_VARIABLE = "PseudoVariable"; public static final String THIS_VARIABLE = "ThisVariable"; public static final String FIELD_VARIABLE = "FieldVariable"; public static final String ARG_VARIABLE = "ArgVariable"; - private Image specialVariableImage = TraceDebuggerPlugin.getDefault().getImageRegistry().getDescriptor(SPECIAL_VARIABLE).createImage(); + private Image pseudoVariableImage = TraceDebuggerPlugin.getDefault().getImageRegistry().getDescriptor(PSEUDO_VARIABLE).createImage(); private Image thisVariableImage = TraceDebuggerPlugin.getDefault().getImageRegistry().getDescriptor(THIS_VARIABLE).createImage(); private Image fieldVariableImage = TraceDebuggerPlugin.getDefault().getImageRegistry().getDescriptor(FIELD_VARIABLE).createImage(); private Image argVariableImage = TraceDebuggerPlugin.getDefault().getImageRegistry().getDescriptor(ARG_VARIABLE).createImage(); @@ -80,7 +80,7 @@ if (element instanceof TreeNode) { Object value = ((TreeNode)element).getValue(); if (value instanceof String) { - return specialVariableImage; + return pseudoVariableImage; } else if (value instanceof Variable) { Variable variable = (Variable)value; VariableType variableType = variable.getVariableType(); diff --git a/src/org/ntlab/traceDebugger/VariableView.java b/src/org/ntlab/traceDebugger/VariableView.java index b409e81..e2552ab 100644 --- a/src/org/ntlab/traceDebugger/VariableView.java +++ b/src/org/ntlab/traceDebugger/VariableView.java @@ -46,7 +46,7 @@ treeColumns[i].setText(treeColumnTexts[i]); treeColumns[i].setWidth(treeColumnWidth[i]); } - viewer.setContentProvider(new MyTreeNodeContentProvider()); + viewer.setContentProvider(new ExtendedTreeNodeContentProvider()); viewer.setLabelProvider(new VariableLabelProvider()); viewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override @@ -66,22 +66,22 @@ public void treeExpanded(TreeExpansionEvent event) { // �c���[���J������Ɏ��s�����B �����ł͊J�����m�[�h����3��̃m�[�h�𐶐����Ēlj�����B Object element = event.getElement(); - if (!(element instanceof MyTreeNode)) return; - MyTreeNode expandedNode = (MyTreeNode)element; + if (!(element instanceof ExtendedTreeNode)) return; + ExtendedTreeNode expandedNode = (ExtendedTreeNode)element; Object value = expandedNode.getValue(); if (!(value instanceof Variable)) return; - List childNodes = expandedNode.getChildList(); + List childNodes = expandedNode.getChildList(); if (childNodes == null) return; - for (MyTreeNode childNode : childNodes) { - List grandChildNodes = childNode.getChildList(); + for (ExtendedTreeNode childNode : childNodes) { + List grandChildNodes = childNode.getChildList(); if (grandChildNodes == null) continue; - for (MyTreeNode grandChildNode : grandChildNodes) { + for (ExtendedTreeNode grandChildNode : grandChildNodes) { Variable grandChildVariable = (Variable)grandChildNode.getValue(); grandChildVariable.createNextHierarchyState(); List list = grandChildVariable.getChildren(); - List nodes = new ArrayList<>(); + List nodes = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { - nodes.add(i, new MyTreeNode(list.get(i))); + nodes.add(i, new ExtendedTreeNode(list.get(i))); } grandChildNode.setChildList(nodes); } diff --git a/src/org/ntlab/traceDebugger/Variables.java b/src/org/ntlab/traceDebugger/Variables.java index f30de4a..2770635 100644 --- a/src/org/ntlab/traceDebugger/Variables.java +++ b/src/org/ntlab/traceDebugger/Variables.java @@ -23,22 +23,22 @@ public class Variables { private static final Variables theInstance = new Variables(); private List roots = new ArrayList<>(); - private List rootTreeNodes = new ArrayList<>(); + private List rootTreeNodes = new ArrayList<>(); public static final String VARIABLE_TYPE_KEY = "variableType"; public static Variables getInstance() { return theInstance; } - public List getVariablesTreeNodesList() { + public List getVariablesTreeNodesList() { return rootTreeNodes; } - private void createVariablesTreeNodeList(MyTreeNode parentNode, List addingNodes, int index, Variable addingVariableData) { - MyTreeNode newNode = new MyTreeNode(addingVariableData); + private void createVariablesTreeNodeList(ExtendedTreeNode parentNode, List addingNodes, int index, Variable addingVariableData) { + ExtendedTreeNode newNode = new ExtendedTreeNode(addingVariableData); newNode.setParent(parentNode); addingNodes.add(index, newNode); - List childNodes = new ArrayList<>(); + List childNodes = new ArrayList<>(); addingNodes.get(index).setChildList(childNodes); for (int i = 0; i < addingVariableData.getChildren().size(); i++) { Variable child = addingVariableData.getChildren().get(i); @@ -67,7 +67,7 @@ Variable rootVariableData = roots.get(i); createVariablesTreeNodeList(null, rootTreeNodes, i, rootVariableData); } - createSpecialVariables(from, to); + createPseudoVariables(from, to); } private void updateRootThisState(MethodExecution methodExecution, TracePoint tp, TracePoint before) { @@ -135,8 +135,8 @@ public void updateForDifferential(TracePoint from, TracePoint to) { updateForDifferential(to); - resetSpecialValues(); - createSpecialVariables(from, to); + resetPseudoValues(); + createPseudoVariables(from, to); } private void updateForDifferential(TracePoint before) { @@ -177,8 +177,8 @@ private void updateForDifferentialField(Variable variable, String valueClassName, String valueId, TracePoint lastUpdatePoint) { variable.update(valueClassName, valueId, lastUpdatePoint); variable.createNextHierarchyState(); - MyTreeNode node = getTreeNodeFor(variable, rootTreeNodes); - List childList = node.getChildList(); + ExtendedTreeNode node = getTreeNodeFor(variable, rootTreeNodes); + List childList = node.getChildList(); childList.clear(); for (int i = 0; i < variable.getChildren().size(); i++) { Variable childVariable = variable.getChildren().get(i); @@ -186,9 +186,9 @@ } } - private void createSpecialVariables(TracePoint from, TracePoint to) { - List specialVariablesOfUseSide = new ArrayList<>(); - List specialVariablesDefSide = new ArrayList<>(); + private void createPseudoVariables(TracePoint from, TracePoint to) { + List pseudoVariablesOfUseSide = new ArrayList<>(); + List pseudoVariablesDefSide = new ArrayList<>(); String parentNodeNameOfUseSide = null; String parentNodeNameOfDefSide = null; if (from != null) { @@ -202,8 +202,8 @@ String valueObjId = fa.getValueObjId(); Variable container = new Variable(Variable.CONTAINER_VARIABLE_NAME, containerClassName, containerObjId, valueClassName, valueObjId, from, VariableType.USE_CONTAINER); Variable value = new Variable(Variable.VALUE_VARIABLE_NAME, containerClassName, containerObjId, valueClassName, valueObjId, from, VariableType.USE_VALUE); - specialVariablesOfUseSide.add(container); - specialVariablesOfUseSide.add(value); + pseudoVariablesOfUseSide.add(container); + pseudoVariablesOfUseSide.add(value); parentNodeNameOfUseSide = TraceDebuggerPlugin.isJapanese() ? "�t�B�[���h�Q�ƌ�:" : "after field get of:"; parentNodeNameOfUseSide += fa.getFieldName(); } else if (fromStatement instanceof ArrayAccess) { @@ -214,8 +214,8 @@ String valueObjId = aa.getValueObjectId(); Variable array = new Variable(Variable.CONTAINER_VARIABLE_NAME, arrayClassName, arrayObjId, valueClassName, valueObjId, from, VariableType.USE_CONTAINER); Variable value = new Variable(Variable.VALUE_VARIABLE_NAME, arrayClassName, arrayObjId, valueClassName, valueObjId, from, VariableType.USE_VALUE); - specialVariablesOfUseSide.add(array); - specialVariablesOfUseSide.add(value); + pseudoVariablesOfUseSide.add(array); + pseudoVariablesOfUseSide.add(value); parentNodeNameOfUseSide = TraceDebuggerPlugin.isJapanese() ? "�z��v�f�Q�ƌ�:" : "after array get of:"; parentNodeNameOfUseSide += aa.getArrayClassName().replace(";", "") + "[" + aa.getIndex() + "]"; } else if (fromStatement instanceof MethodInvocation) { @@ -229,8 +229,8 @@ String valueObjId = returnValue.getId(); Variable receiver = new Variable(Variable.RECEIVER_VARIABLE_NAME, containerClassName, containerObjId, valueClassName, valueObjId, from, VariableType.USE_RECEIVER); Variable returned = new Variable(Variable.RETURN_VARIABLE_NAME, containerClassName, containerObjId, valueClassName, valueObjId, from, VariableType.USE_RETURN); - specialVariablesOfUseSide.add(receiver); - specialVariablesOfUseSide.add(returned); + pseudoVariablesOfUseSide.add(receiver); + pseudoVariablesOfUseSide.add(returned); if (calledME.isConstructor()) { parentNodeNameOfUseSide = TraceDebuggerPlugin.isJapanese() ? "�Ăяo���� �R���X�g���N�^:" : "after invocation of Constructor:"; parentNodeNameOfUseSide += calledME.getSignature(); @@ -253,8 +253,8 @@ String valueObjId = fu.getValueObjId(); Variable container = new Variable(Variable.CONTAINER_VARIABLE_NAME, containerClassName, containerObjId, valueClassName, valueObjId, to, VariableType.DEF_CONTAINER); Variable value = new Variable(Variable.VALUE_VARIABLE_NAME, containerClassName, containerObjId, valueClassName, valueObjId, to, VariableType.DEF_VALUE); - specialVariablesDefSide.add(container); - specialVariablesDefSide.add(value); + pseudoVariablesDefSide.add(container); + pseudoVariablesDefSide.add(value); parentNodeNameOfDefSide = TraceDebuggerPlugin.isJapanese() ? "�t�B�[���h����O:" : "before field set of:"; parentNodeNameOfDefSide += fu.getFieldName(); } else if (toStatement instanceof ArrayUpdate) { @@ -265,8 +265,8 @@ String valueObjId = au.getValueObjectId(); Variable array = new Variable(Variable.CONTAINER_VARIABLE_NAME, arrayClassName, arrayObjId, valueClassName, valueObjId, to, VariableType.DEF_CONTAINER); Variable value = new Variable(Variable.VALUE_VARIABLE_NAME, arrayClassName, arrayObjId, valueClassName, valueObjId, to, VariableType.DEF_VALUE); - specialVariablesDefSide.add(array); - specialVariablesDefSide.add(value); + pseudoVariablesDefSide.add(array); + pseudoVariablesDefSide.add(value); parentNodeNameOfDefSide = TraceDebuggerPlugin.isJapanese() ? "�z��v�f����O:" : "before array set of:"; parentNodeNameOfDefSide += au.getArrayClassName().replace(";", "") + "[" + au.getIndex() + "]"; } else if (toStatement instanceof MethodInvocation) { @@ -282,12 +282,12 @@ String containerClassName = calledME.getThisClassName(); String containerObjId = calledME.getThisObjId(); Variable receiver = new Variable(Variable.RECEIVER_VARIABLE_NAME, containerClassName, containerObjId, valueClassName, valueObjId, to, VariableType.DEF_RECEIVER); - specialVariablesDefSide.add(receiver); + pseudoVariablesDefSide.add(receiver); for (ObjectReference obj : args) { valueClassName = obj.getActualType(); valueObjId = obj.getId(); Variable arg = new Variable(Variable.ARG_VARIABLE_NAME, containerClassName, containerObjId, valueClassName, valueObjId, to, VariableType.DEF_ARG); - specialVariablesDefSide.add(arg); + pseudoVariablesDefSide.add(arg); } if (calledME.isConstructor()) { parentNodeNameOfDefSide = TraceDebuggerPlugin.isJapanese() ? "�Ăяo���O �R���X�g���N�^:" : "before invocation of Constructor:"; @@ -299,31 +299,31 @@ } } if (parentNodeNameOfDefSide != null) { - setSpecialVariableNodes(parentNodeNameOfDefSide, specialVariablesDefSide); + setPseudoVariableNodes(parentNodeNameOfDefSide, pseudoVariablesDefSide); } if (parentNodeNameOfUseSide != null) { - setSpecialVariableNodes(parentNodeNameOfUseSide, specialVariablesOfUseSide); + setPseudoVariableNodes(parentNodeNameOfUseSide, pseudoVariablesOfUseSide); } } - private void setSpecialVariableNodes(String parentNodeName, List specialVariables) { - MyTreeNode parentNode = new MyTreeNode(parentNodeName); + private void setPseudoVariableNodes(String parentNodeName, List pseudoVariables) { + ExtendedTreeNode parentNode = new ExtendedTreeNode(parentNodeName); rootTreeNodes.add(0, parentNode); - MyTreeNode[] children = new MyTreeNode[specialVariables.size()]; - for (int i = 0; i < specialVariables.size(); i++) { - Variable variable = specialVariables.get(i); + ExtendedTreeNode[] children = new ExtendedTreeNode[pseudoVariables.size()]; + for (int i = 0; i < pseudoVariables.size(); i++) { + Variable variable = pseudoVariables.get(i); variable.createNextHierarchyState(); roots.add(0, variable); - MyTreeNode variableNode = new MyTreeNode(variable); + ExtendedTreeNode variableNode = new ExtendedTreeNode(variable); children[i] = variableNode; variableNode.setParent(parentNode); - createChildNodesOfSpecialVariableNode(variableNode); + createChildNodesOfPseudoVariableNode(variableNode); } parentNode.setChildren(children); } - private void createChildNodesOfSpecialVariableNode(MyTreeNode variableNode) { - List childList = new ArrayList<>(); + private void createChildNodesOfPseudoVariableNode(ExtendedTreeNode variableNode) { + List childList = new ArrayList<>(); variableNode.setChildList(childList); Variable variable = (Variable)variableNode.getValue(); for (int i = 0; i < variable.getChildren().size(); i++) { @@ -337,7 +337,7 @@ rootTreeNodes.clear(); } - private void resetSpecialValues() { + private void resetPseudoValues() { for (int i = roots.size() - 1; i >= 0; i--) { Variable root = roots.get(i); String variableName = root.getVariableName(); @@ -350,17 +350,17 @@ } } for (int i = rootTreeNodes.size() - 1; i >= 0; i--) { - MyTreeNode node = rootTreeNodes.get(i); + ExtendedTreeNode node = rootTreeNodes.get(i); if (node.getValue() instanceof String) { rootTreeNodes.remove(i); } } } - private MyTreeNode getTreeNodeFor(Variable variable, List nodes) { - for (MyTreeNode node : nodes) { + private ExtendedTreeNode getTreeNodeFor(Variable variable, List nodes) { + for (ExtendedTreeNode node : nodes) { if (node.getValue().equals(variable)) return node; - MyTreeNode deep = getTreeNodeFor(variable, node.getChildList()); + ExtendedTreeNode deep = getTreeNodeFor(variable, node.getChildList()); if (deep != null) return deep; } return null; diff --git a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractionAnalyzer.java b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractionAnalyzer.java index c60ee1e..72a64b1 100644 --- a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractionAnalyzer.java +++ b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractionAnalyzer.java @@ -39,7 +39,7 @@ return extractedStructure; } - public DeltaMarkerManager extractDeltaForContainerToComponent(Variable variable) { + public DeltaInformation extractDeltaForContainerToComponent(Variable variable) { String srcId = variable.getContainerId(); String srcClassName = variable.getContainerClassName(); String dstId = variable.getValueId(); @@ -60,10 +60,10 @@ MethodExecution creationCallTree = extractedStructure.getCreationCallTree(); MethodExecution coordinator = extractedStructure.getCoordinator(); TracePoint bottomPoint = findTracePoint(reference, creationCallTree, before.getStatement().getTimeStamp()); - return new DeltaMarkerManager(coordinator, bottomPoint, reference, aliasCollector); + return new DeltaInformation(coordinator, bottomPoint, reference, aliasCollector); } - public DeltaMarkerManager extractDeltaForThisToAnother(String thisId, String thisClassName, String anotherId, String anotherClassName, TracePoint before) { + public DeltaInformation extractDeltaForThisToAnother(String thisId, String thisClassName, String anotherId, String anotherClassName, TracePoint before) { MethodExecution me = before.getMethodExecution(); Map references = me.getObjectReferences(anotherClassName); ObjectReference objectReference = null; @@ -83,7 +83,7 @@ extractedStructure = deltaExtractor.extract(tp, objectReference, aliasCollector); MethodExecution coordinator = extractedStructure.getCoordinator(); Reference reference = new Reference(thisId, anotherId, thisClassName, anotherClassName); - return new DeltaMarkerManager(coordinator, bottomPoint, reference, aliasCollector); + return new DeltaInformation(coordinator, bottomPoint, reference, aliasCollector); } private TracePoint findTracePoint(Reference reference, MethodExecution methodExecution, long beforeTime) { diff --git a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaInformation.java b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaInformation.java new file mode 100644 index 0000000..f85d2c8 --- /dev/null +++ b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaInformation.java @@ -0,0 +1,35 @@ +package org.ntlab.traceDebugger.analyzerProvider; + +import org.ntlab.traceAnalysisPlatform.tracer.trace.MethodExecution; +import org.ntlab.traceAnalysisPlatform.tracer.trace.Reference; +import org.ntlab.traceAnalysisPlatform.tracer.trace.TracePoint; + +public class DeltaInformation { + private MethodExecution coordinator; + private TracePoint relatedPoint; + private Reference relatedPointReference; + private DeltaRelatedAliasCollector aliasCollector; + + public DeltaInformation(MethodExecution coordinator, TracePoint relatedPoint, Reference relatedPointReference, DeltaRelatedAliasCollector aliasCollector) { + this.coordinator = coordinator; + this.relatedPoint = relatedPoint; + this.relatedPointReference = relatedPointReference; + this.aliasCollector = aliasCollector; + } + + public MethodExecution getCoordinator() { + return coordinator; + } + + public TracePoint getRelatedPoint() { + return relatedPoint; + } + + public Reference getRelatedPointReference() { + return relatedPointReference; + } + + public DeltaRelatedAliasCollector getAliasCollector() { + return aliasCollector; + } +} diff --git a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaMarkerManager.java b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaMarkerManager.java index 6a28e62..f3bb83f 100644 --- a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaMarkerManager.java +++ b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaMarkerManager.java @@ -57,11 +57,21 @@ public static final String DELTA_MARKER_ATR_OBJECT_TYPE = "objectType"; public static final String DELTA_MARKER_ATR_ALIAS_TYPE = "aliasType"; - public DeltaMarkerManager(MethodExecution coordinator, TracePoint relatedPoint, Reference relatedPointReference, DeltaRelatedAliasCollector aliasCollector) { - this.coordinator = coordinator; - this.relatedPoint = relatedPoint; - this.relatedPointReference = relatedPointReference; - this.aliasCollector = aliasCollector; + public DeltaMarkerManager() { + } + + public DeltaMarkerManager(DeltaInformation deltaInform) { + this.coordinator = deltaInform.getCoordinator(); + this.relatedPoint = deltaInform.getRelatedPoint(); + this.relatedPointReference = deltaInform.getRelatedPointReference(); + this.aliasCollector = deltaInform.getAliasCollector(); + } + + public void setDeltaInformation(DeltaInformation deltaInform) { + this.coordinator = deltaInform.getCoordinator(); + this.relatedPoint = deltaInform.getRelatedPoint(); + this.relatedPointReference = deltaInform.getRelatedPointReference(); + this.aliasCollector = deltaInform.getAliasCollector(); } public Map> getMarkers() {