Index: src/org/aspectj/weaver/bcel/BcelClassWeaver.java =================================================================== RCS file: /home/technology/org.aspectj/modules/weaver/src/org/aspectj/weaver/bcel/BcelClassWeaver.java,v retrieving revision 1.56 diff -u -r1.56 BcelClassWeaver.java --- src/org/aspectj/weaver/bcel/BcelClassWeaver.java 14 Oct 2005 17:58:36 -0000 1.56 +++ src/org/aspectj/weaver/bcel/BcelClassWeaver.java 19 Oct 2005 13:25:42 -0000 @@ -56,6 +56,7 @@ import org.aspectj.apache.bcel.generic.annotation.AnnotationGen; import org.aspectj.bridge.IMessage; import org.aspectj.bridge.ISourceLocation; +import org.aspectj.bridge.Message; import org.aspectj.bridge.WeaveMessage; import org.aspectj.bridge.context.CompilationAndWeavingContext; import org.aspectj.bridge.context.ContextToken; @@ -82,6 +83,7 @@ import org.aspectj.weaver.WeaverMetrics; import org.aspectj.weaver.WeaverStateInfo; import org.aspectj.weaver.patterns.DeclareAnnotation; +import org.aspectj.weaver.patterns.ExactTypePattern; class BcelClassWeaver implements IClassWeaver { @@ -467,6 +469,9 @@ List decaMs = getMatchingSubset(allDecams,clazz.getType()); if (decaMs.isEmpty()) return false; // nothing to do if (!members.isEmpty()) { + // HELEN + Set unusedDecams = new HashSet(); + unusedDecams.addAll(decaMs); for (int memberCounter = 0;memberCounter> args: " + s); } parmString.append(")"); String methodName = mg.getMethod().getName(); StringBuffer sig = new StringBuffer(); + System.out.println(">> modifiers:" + org.aspectj.apache.bcel.classfile.Utility.accessToString(mg.getMethod().getAccessFlags())); sig.append(org.aspectj.apache.bcel.classfile.Utility.accessToString(mg.getMethod().getAccessFlags()) ); sig.append(" "); + System.out.println(">> returnType: " + mg.getMethod().getReturnType().toString()); sig.append(mg.getMethod().getReturnType().toString()); sig.append(" "); + System.out.println(">> className: " + clazz.getName()); sig.append(clazz.getName()); sig.append("."); + System.out.println(">> blah: " + (methodName.equals("")?"new":methodName)); sig.append(methodName.equals("")?"new":methodName); + System.out.println(">> parmString: " + parmString); sig.append(parmString); StringBuffer loc = new StringBuffer(); @@ -554,10 +591,88 @@ loc.append("no debug info available"); } else { loc.append(clazz.getFileName()); + System.out.println(">> declarationLineNumber: " + mg.getDeclarationLineNumber()); if (mg.getDeclarationLineNumber()!=-1) { loc.append(":"+mg.getDeclarationLineNumber()); } } + System.out.println(">> fullString: " + sig.toString() + ", " + loc.toString() + ", " + + decaM.getAnnotationString() + ", " + (methodName.startsWith("")?"constructor":"method") + + ", " + decaM.getAspect().toString() + ", " + Utility.beautifyLocation(decaM.getSourceLocation())); + getWorld().getMessageHandler().handleMessage( + WeaveMessage.constructWeavingMessage(WeaveMessage.WEAVEMESSAGE_ANNOTATES, + new String[]{ + sig.toString(), + loc.toString(), + decaM.getAnnotationString(), + methodName.startsWith("")?"constructor":"method", + decaM.getAspect().toString(), + Utility.beautifyLocation(decaM.getSourceLocation()) + })); + } + } + + // TAG: WeavingMessage + private void reportMethodCtorWeavingMessage(LazyClassGen clazz, ResolvedMember member, DeclareAnnotation decaM) { + if (!getWorld().getMessageHandler().isIgnoring(IMessage.WEAVEINFO)){ + StringBuffer parmString = new StringBuffer("("); + UnresolvedType[] paramTypes = member.getParameterTypes(); + for (int i = 0; i < paramTypes.length; i++) { + UnresolvedType type = paramTypes[i]; + String s = org.aspectj.apache.bcel.classfile.Utility.signatureToString(type.getSignature()); + if (s.lastIndexOf(".")!=-1) s =s.substring(s.lastIndexOf(".")+1); + parmString.append(s); + if ((i+1)")?"new":methodName)); + sig.append(methodName.equals("")?"new":methodName); + sig.append(parmString); + System.out.println("test: parmString: " + parmString); + + StringBuffer loc = new StringBuffer(); + if (clazz.getFileName()==null) { + loc.append("no debug info available"); + } else { + loc.append(clazz.getFileName()); + System.out.println("test: lineNumber: " + member.getSourceLocation().getLine()); +// if (mg.getDeclarationLineNumber()!=-1) { +// loc.append(":"+mg.getDeclarationLineNumber()); +// } + } + System.out.println("test: fullString: " + sig.toString() + ", " + loc.toString() + ", " + + decaM.getAnnotationString() + ", " + (methodName.startsWith("")?"constructor":"method") + + ", " + decaM.getAspect().toString() + ", " + Utility.beautifyLocation(decaM.getSourceLocation())); + getWorld().getMessageHandler().handleMessage( WeaveMessage.constructWeavingMessage(WeaveMessage.WEAVEMESSAGE_ANNOTATES, new String[]{ @@ -715,6 +830,8 @@ annotationHolder.addAnnotation(decaMC.getAnnotationX()); isChanged=true; AsmRelationshipProvider.getDefault().addDeclareAnnotationRelationship(decaMC.getSourceLocation(),unMangledInterMethod.getSourceLocation()); + // HELEN - trying something... + reportMethodCtorWeavingMessage(clazz, unMangledInterMethod, decaMC); modificationOccured = true; } else { if (!decaMC.isStarredAnnotationPattern()) @@ -790,79 +907,106 @@ if (decaFs.isEmpty()) return false; // nothing more to do Field[] fields = clazz.getFieldGens(); if (fields!=null) { - + Set unusedDecafs = new HashSet(); + unusedDecafs.addAll(decaFs); for (int fieldCounter = 0;fieldCounter