package org.ntlab.deltaViewer; import java.util.ArrayList; import java.util.Collection; import org.ntlab.deltaExtractor.Alias; import org.ntlab.deltaExtractor.IAliasCollector; import org.ntlab.trace.MethodExecution; import org.ntlab.trace.MethodInvocation; /** * Collect delta aliases for MagnetRON. * * @author Nitta Lab. */ public class DeltaAliasCollector implements IAliasCollector { private String srcObjId; private String dstObjId; private ArrayList<Alias> aliasList = new ArrayList<>(); public DeltaAliasCollector() { } /** * @param srcObjId * @param dstObjId */ public DeltaAliasCollector(String srcObjId, String dstObjId) { this.srcObjId = srcObjId; this.dstObjId = dstObjId; } @Override public void addAlias(Alias alias) { switch(alias.getAliasType()) { case FORMAL_PARAMETER: aliasList.add(0, alias); alias.getOccurrencePoint().getMethodExecution().getThisObjId(); break; case THIS: aliasList.add(0, alias); break; case METHOD_INVOCATION: aliasList.add(0, alias); break; case CONSTRACTOR_INVOCATION: aliasList.add(0, alias); break; case FIELD: aliasList.add(0, alias); break; case ARRAY: aliasList.add(0, alias); break; case ACTUAL_ARGUMENT: aliasList.add(0, alias); break; case RECEIVER: aliasList.add(0, alias); if (alias.getOccurrencePoint().getStatement() instanceof MethodInvocation) { MethodExecution me = ((MethodInvocation) alias.getOccurrencePoint().getStatement()).getCalledMethodExecution(); } break; case RETURN_VALUE: aliasList.add(0, alias); break; default: break; } System.out.println(alias.getObjectId() + ", " + alias.getMethodSignature() + " l." + alias.getLineNo() + " : " + alias.getAliasType().toString()); } @Override public void changeTrackingObject(String fromObjId, String toObjId) { System.out.println(fromObjId + " -> " + toObjId); } public Collection getAliasList() { return this.aliasList; } }