Browse Source

343001: testcode and fix: when faulting in binary aspects, fill in decp parents

tags/V1_6_12M1
aclement 13 years ago
parent
commit
a1c251df1f
1 changed files with 11 additions and 0 deletions
  1. 11
    0
      weaver/src/org/aspectj/weaver/model/AsmRelationshipProvider.java

+ 11
- 0
weaver/src/org/aspectj/weaver/model/AsmRelationshipProvider.java View File

import org.aspectj.weaver.patterns.DeclareErrorOrWarning; import org.aspectj.weaver.patterns.DeclareErrorOrWarning;
import org.aspectj.weaver.patterns.DeclareParents; import org.aspectj.weaver.patterns.DeclareParents;
import org.aspectj.weaver.patterns.Pointcut; import org.aspectj.weaver.patterns.Pointcut;
import org.aspectj.weaver.patterns.TypePatternList;


public class AsmRelationshipProvider { public class AsmRelationshipProvider {


IProgramElement decpElement = new ProgramElement(model, "declare parents", IProgramElement.Kind.DECLARE_PARENTS, IProgramElement decpElement = new ProgramElement(model, "declare parents", IProgramElement.Kind.DECLARE_PARENTS,
getBinarySourceLocation(decp.getDeclaringType(), decp.getSourceLocation()), Modifier.PUBLIC, null, getBinarySourceLocation(decp.getDeclaringType(), decp.getSourceLocation()), Modifier.PUBLIC, null,
Collections.EMPTY_LIST); Collections.EMPTY_LIST);
setParentTypesOnDeclareParentsNode(decp, decpElement);
return decpElement; return decpElement;
} }


private static void setParentTypesOnDeclareParentsNode(DeclareParents decp, IProgramElement decpElement) {
TypePatternList tpl = decp.getParents();
List<String> parents = new ArrayList<String>();
for (int i = 0; i < tpl.size(); i++) {
parents.add(tpl.get(i).getExactType().getName().replaceAll("\\$", "."));
}
decpElement.setParentTypes(parents);
}

public static String getHandle(AsmManager asm, Advice advice) { public static String getHandle(AsmManager asm, Advice advice) {
if (null == advice.handle) { if (null == advice.handle) {
ISourceLocation sl = advice.getSourceLocation(); ISourceLocation sl = advice.getSourceLocation();

Loading…
Cancel
Save