diff --git a/src/org/ntlab/traceDebugger/VariableViewRelatedDelta.java b/src/org/ntlab/traceDebugger/VariableViewRelatedDelta.java index 7067db3..7a92308 100644 --- a/src/org/ntlab/traceDebugger/VariableViewRelatedDelta.java +++ b/src/org/ntlab/traceDebugger/VariableViewRelatedDelta.java @@ -169,19 +169,34 @@ String valueId = selectedVariable.getValueId(); String valueClassName = selectedVariable.getValueClassName(); valueClassName = valueClassName.substring(valueClassName.lastIndexOf(".") + 1); - String containerId = selectedVariable.getContainerId(); - String containerClassName = selectedVariable.getContainerClassName(); - if (containerId != null && containerClassName != null) { - containerClassName = containerClassName.substring(containerClassName.lastIndexOf(".") + 1); - String textForContainerToComponent = String.format("Extract Delta [ %s (id = %s) -> %s (id = %s) ]", containerClassName, containerId, valueClassName, valueId); - deltaActionForContainerToComponent.setText(textForContainerToComponent); - deltaActionForContainerToComponent.setToolTipText(textForContainerToComponent); - return true; - } else { - deltaActionForContainerToComponent.setText(""); - deltaActionForContainerToComponent.setToolTipText(""); - return false; + if (!(valueId.isEmpty()) && !(valueClassName.isEmpty())) { + String containerId = selectedVariable.getContainerId(); + String containerClassName = selectedVariable.getContainerClassName(); + if (containerId != null && containerClassName != null) { + containerClassName = containerClassName.substring(containerClassName.lastIndexOf(".") + 1); + String textForContainerToComponent = String.format("Extract Delta [ %s (id = %s) -> %s (id = %s) ]", containerClassName, containerId, valueClassName, valueId); + deltaActionForContainerToComponent.setText(textForContainerToComponent); + deltaActionForContainerToComponent.setToolTipText(textForContainerToComponent); + return true; + } } + deltaActionForContainerToComponent.setText(""); + deltaActionForContainerToComponent.setToolTipText(""); + return false; + +// String containerId = selectedVariable.getContainerId(); +// String containerClassName = selectedVariable.getContainerClassName(); +// if (containerId != null && containerClassName != null) { +// containerClassName = containerClassName.substring(containerClassName.lastIndexOf(".") + 1); +// String textForContainerToComponent = String.format("Extract Delta [ %s (id = %s) -> %s (id = %s) ]", containerClassName, containerId, valueClassName, valueId); +// deltaActionForContainerToComponent.setText(textForContainerToComponent); +// deltaActionForContainerToComponent.setToolTipText(textForContainerToComponent); +// return true; +// } else { +// deltaActionForContainerToComponent.setText(""); +// deltaActionForContainerToComponent.setToolTipText(""); +// return false; +// } } private boolean updateDeltaActionForThisToAnotherTexts(Variable variable) { diff --git a/src/org/ntlab/traceDebugger/Variables.java b/src/org/ntlab/traceDebugger/Variables.java index 9a60bcf..e9ae236 100644 --- a/src/org/ntlab/traceDebugger/Variables.java +++ b/src/org/ntlab/traceDebugger/Variables.java @@ -265,22 +265,27 @@ } else if (toStatement instanceof MethodInvocation) { MethodInvocation mi = (MethodInvocation)toStatement; MethodExecution calledME = mi.getCalledMethodExecution(); - List args = calledME.getArguments(); - if (args.size() == 1) { - ObjectReference argObj = args.get(0); - String containerClassName = calledME.getThisClassName(); - String containerObjId = calledME.getThisObjId(); - String valueClassName = argObj.getActualType(); - String valueObjId = argObj.getId(); - Variable receiver = new Variable(Variable.RECEIVER_VARIABLE_NAME, containerClassName, containerObjId, valueClassName, valueObjId, to, isReturned, VariableType.DEF_RECEIVER); + List args = calledME.getArguments(); + String valueClassName = ""; + String valueObjId = ""; + if (args.size() > 0) { + valueClassName = args.get(0).getActualType(); + valueObjId = args.get(0).getId(); + } + String containerClassName = calledME.getThisClassName(); + String containerObjId = calledME.getThisObjId(); + Variable receiver = new Variable(Variable.RECEIVER_VARIABLE_NAME, containerClassName, containerObjId, valueClassName, valueObjId, to, isReturned, VariableType.DEF_RECEIVER); + specialVariablesDefSide.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, isReturned, VariableType.DEF_ARG); - specialVariablesDefSide.add(receiver); specialVariablesDefSide.add(arg); - if (calledME.isConstructor()) { - parentNodeNameOfDefSide = "before invocation of Constructor:" + calledME.getSignature(); - } else { - parentNodeNameOfDefSide = "before invocation of:" + calledME.getSignature(); - } + } + if (calledME.isConstructor()) { + parentNodeNameOfDefSide = "before invocation of Constructor:" + calledME.getSignature(); + } else { + parentNodeNameOfDefSide = "before invocation of:" + calledME.getSignature(); } } } @@ -289,20 +294,7 @@ } if (parentNodeNameOfDefSide != null) { setSpecialVariableNodes(parentNodeNameOfDefSide, specialVariablesDefSide); - } - -// for (Variable variable : list) { -// variable.createNextHierarchyState(); -// roots.add(0, variable); -// MyTreeNode variableNode = new MyTreeNode(variable); -//// rootTreeNodes.add(0, variableNode); -// List childList = new ArrayList<>(); -// variableNode.setChildList(childList); -// for (int i = 0; i < variable.getChildren().size(); i++) { -// Variable childVariable = variable.getChildren().get(i); -// createVariablesTreeNodeList(variableNode, childList, i, childVariable); -// } -// } + } } private void setSpecialVariableNodes(String parentNodeName, List specialVariables) {