/** * Looks in the wrapper we have added so that we can find their effective signature if needed */ @Override public ResolvedMember getMatchingSyntheticMember(Member member) { ResolvedMember rm = inlineAccessors.get(member.getName());// + member.getSignature()); // System.err.println("lookup for " + member.getName() + ":" + member.getSignature() + " = " // + (rm == null ? "" : rm.getName())); return rm; }
public static String getExtractableName(Member shadowSignature) { String name = shadowSignature.getName(); MemberKind kind = shadowSignature.getKind(); if (kind == Member.CONSTRUCTOR) { return "init$"; } else if (kind == Member.STATIC_INITIALIZATION) { return "clinit$"; } else { return name; } }
protected static String getMonitorSignatureString(Member m, World world) { StringBuffer buf = new StringBuffer(); buf.append(makeString(Modifier.STATIC)); // modifiers buf.append('-'); buf.append(m.getName()); // name buf.append('-'); buf.append(makeString(m.getDeclaringType())); // Declaring Type buf.append('-'); buf.append(makeString(m.getParameterTypes()[0])); // Parameter Types buf.append('-'); buf.append(""); // Parameter names buf.append('-'); return buf.toString(); }
private ResolvedMember findMethod2(ResolvedMember members[], Member sig) { String signatureName = sig.getName(); String parameterSignature = sig.getParameterSignature(); for (ResolvedMember member : members) { if (member.getName().equals(signatureName) && member.getParameterSignature().equals(parameterSignature)) { return member; } } return null; }
public int compareTo(Member other) { Member o = other; int i = getName().compareTo(o.getName()); if (i != 0) { return i; } return getSignature().compareTo(o.getSignature()); }
protected static String getFieldSignatureString(Member m, World world) { StringBuffer buf = new StringBuffer(); buf.append(makeString(m.getModifiers(world))); buf.append('-'); buf.append(m.getName()); buf.append('-'); buf.append(makeString(m.getDeclaringType())); buf.append('-'); buf.append(makeString(m.getReturnType())); buf.append('-'); return buf.toString(); }
protected static String getAdviceSignatureString(Member m, World world) { StringBuffer buf = new StringBuffer(); buf.append(makeString(m.getModifiers(world))); buf.append('-'); buf.append(m.getName()); buf.append('-'); buf.append(makeString(m.getDeclaringType())); buf.append('-'); buf.append(makeString(m.getParameterTypes())); buf.append('-'); buf.append(makeString(m.getParameterNames(world))); buf.append('-'); buf.append(makeString(m.getExceptions(world))); buf.append('-'); buf.append(makeString(m.getReturnType())); buf.append('-'); return buf.toString(); }
public static Instruction createSuperInvoke(InstructionFactory fact, BcelWorld world, Member signature) { short kind; if (Modifier.isInterface(signature.getModifiers())) { throw new RuntimeException("bad"); } else if (Modifier.isPrivate(signature.getModifiers()) || signature.getName().equals("<init>")) { throw new RuntimeException("unimplemented, possibly bad"); } else if (Modifier.isStatic(signature.getModifiers())) { throw new RuntimeException("bad"); } else { kind = Constants.INVOKESPECIAL; } return fact.createInvoke(signature.getDeclaringType().getName(), signature.getName(), BcelWorld.makeBcelType(signature.getReturnType()), BcelWorld.makeBcelTypes(signature.getParameterTypes()), kind); }
/** * @return true if this member equals the one supplied in every respect other than the declaring type */ public final boolean equalsApartFromDeclaringType(Object other) { if (!(other instanceof Member)) { return false; } Member o = (Member) other; return (getKind() == o.getKind() && getName().equals(o.getName()) && getSignature().equals(o.getSignature())); }
public Advice(AjAttribute.AdviceAttribute attribute, Pointcut pointcut, Member signature) { super(pointcut, attribute.getStart(), attribute.getEnd(), attribute.getSourceContext(), ShadowMungerAdvice); this.attribute = attribute; this.isAnnotationStyle = signature != null && !signature.getName().startsWith("ajc$"); this.kind = attribute.getKind(); // alias this.signature = signature; if (signature != null) { bindingParameterTypes = signature.getParameterTypes(); } else { bindingParameterTypes = new UnresolvedType[0]; } }
public static Instruction createGet(InstructionFactory fact, Member signature) { short kind; if (Modifier.isStatic(signature.getModifiers())) { kind = Constants.GETSTATIC; } else { kind = Constants.GETFIELD; } return fact.createFieldAccess(signature.getDeclaringType().getName(), signature.getName(), BcelWorld.makeBcelType(signature.getReturnType()), kind); }
public static Instruction createSet(InstructionFactory fact, Member signature) { short kind; if (Modifier.isStatic(signature.getModifiers())) { kind = Constants.PUTSTATIC; } else { kind = Constants.PUTFIELD; } return fact.createFieldAccess(signature.getDeclaringType().getName(), signature.getName(), BcelWorld.makeBcelType(signature.getReturnType()), kind); }
private ResolvedMember findField(ResolvedMember[] members, Member lookingFor) { for (int i = 0; i < members.length; i++) { ResolvedMember member = members[i]; if (member.getName().equals(getSignature().getName()) && member.getType().equals(getSignature().getType())) { return member; } } return null; }
@Override public final boolean equals(Object other) { if (!(other instanceof Member)) { return false; } Member o = (Member) other; return (getKind() == o.getKind() && getName().equals(o.getName()) && getSignature().equals(o.getSignature()) && getDeclaringType() .equals(o.getDeclaringType())); }
public boolean isCompatibleWith(Member am) { if (kind != METHOD || am.getKind() != METHOD) { return true; } if (!name.equals(am.getName())) { return true; } if (!equalTypes(getParameterTypes(), am.getParameterTypes())) { return true; } return getReturnType().equals(am.getReturnType()); }
protected FuzzyBoolean matchInternal(Shadow shadow) { Member member = shadow.getEnclosingCodeSignature(); ResolvedMember rMember = member.resolve(shadow.getIWorld()); if (rMember == null) { if (member.getName().startsWith(NameMangler.PREFIX)) { return FuzzyBoolean.NO; } shadow.getIWorld().getLint().unresolvableMember.signal(member.toString(), getSourceLocation()); return FuzzyBoolean.NO; } annotationTypePattern.resolve(shadow.getIWorld()); return annotationTypePattern.matches(rMember); }
public static ResolvedMember inlineAccessMethodForFieldSet(UnresolvedType aspectType, Member field) { String sig; if (Modifier.isStatic(field.getModifiers())) { sig = "(" + field.getReturnType().getSignature() + ")V"; } else { sig = "(" + field.getDeclaringType().getSignature() + field.getReturnType().getSignature() + ")V"; } return new ResolvedMemberImpl(Member.METHOD, aspectType, PUBLIC_STATIC, // Modifier.PUBLIC | (field.isStatic() ? // Modifier.STATIC : 0), NameMangler.inlineAccessMethodForFieldSet(field.getName(), field.getDeclaringType(), aspectType), sig); }
public static ResolvedMember inlineAccessMethodForFieldGet(UnresolvedType aspectType, Member field) { String sig; if (Modifier.isStatic(field.getModifiers())) { sig = "()" + field.getReturnType().getSignature(); } else { sig = "(" + field.getDeclaringType().getSignature() + ")" + field.getReturnType().getSignature(); } return new ResolvedMemberImpl(Member.METHOD, aspectType, PUBLIC_STATIC, // Modifier.PUBLIC | (field.isStatic() ? // Modifier.STATIC : 0), NameMangler.inlineAccessMethodForFieldGet(field.getName(), field.getDeclaringType(), aspectType), sig); }
/** * Create an invoke instruction * * @param fact * @param kind INVOKEINTERFACE, INVOKEVIRTUAL.. * @param member * @return */ public static Instruction createInvoke(InstructionFactory fact, short kind, Member member) { return fact.createInvoke(member.getDeclaringType().getName(), member.getName(), BcelWorld.makeBcelType(member.getReturnType()), BcelWorld.makeBcelTypes(member.getParameterTypes()), kind); }
private static IProgramElement createAdviceChild(AsmManager model, Advice advice) { IProgramElement adviceNode = new ProgramElement(model, advice.getKind().getName(), IProgramElement.Kind.ADVICE, advice.getBinarySourceLocation(advice.getSourceLocation()), advice.getSignature().getModifiers(), null, Collections.<IProgramElement>emptyList()); adviceNode.setDetails(AsmRelationshipUtils.genPointcutDetails(advice.getPointcut())); adviceNode.setBytecodeName(advice.getSignature().getName()); return adviceNode; }