diff --git a/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/Alias.java b/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/Alias.java index f7a436a..e2ce931 100644 --- a/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/Alias.java +++ b/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/Alias.java @@ -54,6 +54,11 @@ public MethodExecution getMethodExecution() { return occurrencePoint.getMethodExecution(); } + + public String getMethodExecutionClassName() { + MethodExecution methodExecution = occurrencePoint.getMethodExecution(); + return Trace.getDeclaringType(methodExecution.getSignature(), methodExecution.isConstructor()); + } public String getMethodSignature() { return occurrencePoint.getMethodExecution().getCallerSideSignature(); diff --git a/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/TraceJSON.java b/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/TraceJSON.java index 5161799..71608fc 100644 --- a/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/TraceJSON.java +++ b/org.ntlab.traceCollector/src/org/ntlab/traceCollector/tracer/trace/TraceJSON.java @@ -1006,31 +1006,58 @@ Statement statement = statements.get(i); if (statement instanceof FieldAccess) { FieldAccess fa = (FieldAccess)statement; - startAliasList.add(new Alias(fa.getContainerObjId(), tp, Alias.OCCURRENCE_EXP_CONTAINER)); - startAliasList.add(new Alias(fa.getValueObjId(), tp, Alias.OCCURRENCE_EXP_FIELD)); + String objId = fa.getContainerObjId(); + if (!("0".equals(objId))) { + startAliasList.add(new Alias(objId, tp, Alias.OCCURRENCE_EXP_CONTAINER)); + } + objId = fa.getValueObjId(); + if ((!"0".equals(objId))) { + startAliasList.add(new Alias(objId, tp, Alias.OCCURRENCE_EXP_FIELD)); + } } else if (statement instanceof FieldUpdate) { FieldUpdate fu = (FieldUpdate)statement; - startAliasList.add(new Alias(fu.getContainerObjId(), tp, Alias.OCCURRENCE_EXP_CONTAINER)); - startAliasList.add(new Alias(fu.getValueObjId(), tp, Alias.OCCURRENCE_EXP_FIELD)); + String objId = fu.getContainerObjId(); + if ((!"0".equals(objId))) { + startAliasList.add(new Alias(objId, tp, Alias.OCCURRENCE_EXP_CONTAINER)); + } + objId = fu.getValueObjId(); + if ((!"0".equals(objId))) { + startAliasList.add(new Alias(objId, tp, Alias.OCCURRENCE_EXP_FIELD)); + } } else if (statement instanceof ArrayAccess) { String valueObjId = ((ArrayAccess)statement).getValueObjectId(); - startAliasList.add(new Alias(valueObjId, tp, Alias.OCCURRENCE_EXP_ARRAY)); + if (!("0".equals(valueObjId))) { + startAliasList.add(new Alias(valueObjId, tp, Alias.OCCURRENCE_EXP_ARRAY)); + } } else if (statement instanceof ArrayUpdate) { String valueObjId = ((ArrayUpdate)statement).getValueObjectId(); - startAliasList.add(new Alias(valueObjId, tp, Alias.OCCURRENCE_EXP_ARRAY)); + if (!("0".equals(valueObjId))) { + startAliasList.add(new Alias(valueObjId, tp, Alias.OCCURRENCE_EXP_ARRAY)); + } } else if (statement instanceof ArrayCreate) { String valueObjId = ((ArrayAccess)statement).getValueObjectId(); - startAliasList.add(new Alias(valueObjId, tp, Alias.OCCURRENCE_EXP_RETURN)); + if (!("0".equals(valueObjId))) { + startAliasList.add(new Alias(valueObjId, tp, Alias.OCCURRENCE_EXP_RETURN)); + } } else if (statement instanceof MethodInvocation) { MethodExecution calledMe = ((MethodInvocation)statement).getCalledMethodExecution(); - startAliasList.add(new Alias(calledMe.getThisObjId(), tp, Alias.OCCURRENCE_EXP_RECEIVER)); + String thisObjId = calledMe.getThisObjId(); + if (!("0".equals(thisObjId))) { + startAliasList.add(new Alias(thisObjId, tp, Alias.OCCURRENCE_EXP_RECEIVER)); + } List args = calledMe.getArguments(); for (int j = 0; j < args.size(); j++) { - startAliasList.add(new Alias(args.get(j).getId(), tp, (j + Alias.OCCURRENCE_EXP_FIRST_ARG))); + String argValueId = args.get(j).getId(); + if (!("0".equals(argValueId))) { + startAliasList.add(new Alias(argValueId, tp, (j + Alias.OCCURRENCE_EXP_FIRST_ARG))); + } } ObjectReference returnValue = calledMe.getReturnValue(); if (returnValue != null) { - startAliasList.add(new Alias(returnValue.getId(), tp, Alias.OCCURRENCE_EXP_RETURN)); + String returnValueId = returnValue.getId(); + if (!("0".equals(returnValueId))) { + startAliasList.add(new Alias(returnValueId, tp, Alias.OCCURRENCE_EXP_RETURN)); + } } } }