private void defineClass(ClassLoader loader, String name, byte[] bytes) {
if (trace.isTraceEnabled()) trace.enter("defineClass",this,new Object[] {loader,name,bytes});
Object clazz = null;
- info("generating class '" + name + "'");
+ debug("generating class '" + name + "'");
try {
//TODO av protection domain, and optimize
public class DefaultMessageHandler implements IMessageHandler {
boolean isVerbose = false;
+ boolean isDebug = false;
boolean showWeaveInfo = false;
boolean showWarn = true;
if (kind.isSameOrLessThan(IMessage.INFO)) {
return !isVerbose;
}
+ if (kind.isSameOrLessThan(IMessage.DEBUG)) {
+ return !isDebug;
+ }
return !showWarn;
}
private final static String OPTION_noWarnNone = "-warn:none";
private final static String OPTION_proceedOnError = "-proceedOnError";
private final static String OPTION_verbose = "-verbose";
+ private final static String OPTION_debug = "-debug";
private final static String OPTION_reweavable = "-Xreweavable";//notReweavable is default for LTW
private final static String OPTION_noinline = "-Xnoinline";
private final static String OPTION_addSerialVersionUID = "-XaddSerialVersionUID";
weaverOption.optionalJoinpoints = arg.substring(OPTIONVALUED_joinpoints.length()).trim();
} else if (arg.equalsIgnoreCase(OPTION_verbose)) {
weaverOption.verbose = true;
+ } else if (arg.equalsIgnoreCase(OPTION_debug)) {
+ weaverOption.debug = true;
} else if (arg.equalsIgnoreCase(OPTION_pinpoint)) {
weaverOption.pinpoint = true;
} else if (arg.startsWith(OPTIONVALUED_messageHandler)) {
if (weaverOption.verbose) {
weaverOption.messageHandler.dontIgnore(IMessage.INFO);
}
+ if (weaverOption.debug) {
+ weaverOption.messageHandler.dontIgnore(IMessage.DEBUG);
+ }
if (weaverOption.showWeaveInfo) {
weaverOption.messageHandler.dontIgnore(IMessage.WEAVEINFO);
}
boolean noWarn;
boolean proceedOnError;
boolean verbose;
+ boolean debug;
boolean notReWeavable = true;//default to notReweavable for LTW (faster)
boolean noInline;
boolean addSerialVersionUID;
<!-- ajc-ant script, not to be used from Ant commant line - see AntSpec -->
-<project name="ltw" default="javac.ltw">
+<project name="ltw" default="RunThemAllWithJavacCompiledAndLTW">
<!-- using this we can debug the forked VM -->
<property
name="jdwp"
value="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"/>
+ <target name="RunThemAllWithJavacCompiledAndLTW" depends="compile:javac, ltw"/>
+
<target name="compile:javac">
<!-- compile only javac compilable stuff, exclude the one that needs other dependencies -->
<javac destdir="${aj.sandbox}" classpathref="aj.path"
</java>
</target>
- <target name="javac.ltw" depends="compile:javac, ltw"/>
-
<target name="ltw.Aspect2MainTest">
<!-- javac Aspect2 -->
<javac destdir="${aj.sandbox}" classpathref="aj.path"
</java>
</target>
- <target name="ltw.oldAspectsDeclared">
+ <target name="Compile time aspects declared to ltw weaver">
<!--Aspects woven at compile time must be declared in an aop.xml file.
If they are not declared, then they will be lost during reweaving-->
public boolean handleMessage(IMessage message) throws AbortException {
boolean ret = super.handleMessage(message);
- if (message.getKind().isSameOrLessThan(IMessage.INFO)) {
- ;
- } else {
+ if (message.getKind().isSameOrLessThan(IMessage.INFO));
+ if (message.getKind().isSameOrLessThan(IMessage.DEBUG));
+ else {
// we do exit here since Assert.fail will only trigger a runtime exception that might
// be catched by the weaver anyway
System.err.println("*** Exiting - got a warning/fail/error/abort IMessage");
<aspects>
<aspect name="ataspectj.EmptyAspect"/>
</aspects>
- <weaver options="-XlazyTjp -verbose">
+ <weaver options="-XlazyTjp -verbose -debug">
<dump within="com.foo.bar..*" beforeandafter="true"/>
<include within="com.foo..*"/>
<exclude within="com.foo.bar..*CGLIB*"/>
<aspectj>
- <weaver options="-verbose"/>
+ <weaver options="-verbose -debug"/>
<aspects>
<aspect name="ataspectj.ltwlog.Aspect1"/>
</aspects>
<aspectj>
- <weaver options="-showWeaveInfo -verbose"/>
+ <weaver options="-showWeaveInfo -verbose -debug"/>
<aspects>
<aspect name="ataspectj.ltwlog.Aspect1"/>
</aspects>
<pointcut name="scope" expression="within(Main)"/>
</concrete-aspect>
</aspects>
- <weaver options="-verbose"/>
+ <weaver options="-verbose -debug"/>
</aspectj>
<aspects>
<aspect name="EmptyAspect"/>
</aspects>
- <weaver options="-verbose">
+ <weaver options="-verbose -debug">
<include within="*1"/>
</weaver>
</aspectj>
\ No newline at end of file
<aspect name="Aspect3"/>
</aspects>
- <weaver options="-verbose -showWeaveInfo"/>
+ <weaver options="-verbose -debug -showWeaveInfo"/>
</aspectj>
<aspect name="Aspect3"/>
</aspects>
- <weaver options="-verbose -showWeaveInfo -Xlint:warning"/>
+ <weaver options="-verbose -debug -showWeaveInfo -Xlint:warning"/>
</aspectj>
<aspect name="Aspect3"/>
</aspects>
- <weaver options="-verbose -showWeaveInfo -Xlintfile:Xlint-nomatch.properties"/>
+ <weaver options="-verbose -debug -showWeaveInfo -Xlintfile:Xlint-nomatch.properties"/>
</aspectj>
<suite>
<ajc-test dir="java5/ataspectj" title="RunThemAllWithJavacCompiledAndLTW">
- <ant file="ajc-ant.xml" target="javac.ltw" verbose="true"/>
+ <ant file="ajc-ant.xml" target="RunThemAllWithJavacCompiledAndLTW" verbose="true"/>
</ajc-test>
<ajc-test dir="java5/ataspectj" title="AjcLTW PerClauseTest -XterminateAfterCompilation">
<line text="info register classloader"/>
<line text="info using"/>
<line text="info register aspect ataspectj.EmptyAspect"/>
- <line text="info not weaving 'com.foo.bar.Test$$EnhancerByCGLIB$$12345'"/>
- <line text="info weaving 'com.foo.bar.Test'"/>
+ <line text="debug not weaving 'com.foo.bar.Test$$EnhancerByCGLIB$$12345'"/>
+ <line text="debug weaving 'com.foo.bar.Test'"/>
</stderr>
</run>
</ajc-test>
<line text="info register classloader"/>
<line text="info using"/>
<line text="info register aspect ataspectj.ltwlog.Aspect1"/>
- <line text="info weaving 'ataspectj.ltwlog.Main'"/>
- <line text="info weaving 'ataspectj.ltwlog.Aspect1'"/>
+ <line text="debug weaving 'ataspectj.ltwlog.Main'"/>
+ <line text="debug weaving 'ataspectj.ltwlog.Aspect1'"/>
</stderr>
</run>
</ajc-test>
<line text="info register classloader"/>
<line text="info using"/>
<line text="info register aspect ataspectj.ltwlog.Aspect1"/>
- <line text="info weaving 'ataspectj.ltwlog.Main'"/>
+ <line text="debug weaving 'ataspectj.ltwlog.Main'"/>
<line text="weaveinfo Join point 'method-execution(void ataspectj.ltwlog.Main.target())' in Type 'ataspectj.ltwlog.Main' (Main.java:22) advised by before advice from 'ataspectj.ltwlog.Aspect1' (Aspect1.java)"/>
- <line text="info weaving 'ataspectj.ltwlog.Aspect1'"/>
+ <line text="debug weaving 'ataspectj.ltwlog.Aspect1'"/>
</stderr>
</run>
</ajc-test>
files="ataspectj/ltwlog/MessageHolder.java,ataspectj/ltwreweavable/MainReweavableLogging.java,ataspectj/ltwreweavable/AspectReweavableLogging.java,ataspectj/ltwreweavable/Advisable.java,ataspectj/ltwreweavable/EmptyAtAspect.java"
options="-1.5"
outjar="main1.jar"/>
- <ant file="ajc-ant.xml" target="ltw.oldAspectsDeclared" verbose="true"/>
+ <ant file="ajc-ant.xml" target="Compile time aspects declared to ltw weaver" verbose="true"/>
</ajc-test>
<ajc-test dir="java5/ataspectj" title="Concrete@Aspect">
<compile
files="Main.java, Aspect1.aj"
outjar="main1.jar"
- options="-showWeaveInfo"
+ options="-showWeaveInfo -verbose"
>
<message kind="weave" text="method-execution(void Main.test1())' in Type 'Main' (Main.java:17) advised by before advice from 'Aspect1' (Aspect1.aj:16)"/>
</compile>
classpath="main1.jar"
files="Aspect2.aj"
outjar="aspect2.jar"
- options="-showWeaveInfo"
+ options="-showWeaveInfo -verbose"
>
</compile>
<run class="Main" ltw="aop-ltwreweavable.xml">
<line text="info AspectJ Weaver Version"/>
<line text="info register classloader"/>
<line text="info using"/>
- <line text="info generating class 'ConcreteAspect'"/>
- <line text="info weaving 'Main'"/>
+ <line text="debug generating class 'ConcreteAspect'"/>
+ <line text="debug weaving 'Main'"/>
<line text="AbstractSuperAspect.before_test1"/>
</stderr>
</run>
<line text="info register classloader"/>
<line text="info using"/>
<line text="info register aspect Aspect3"/>
- <line text="info weaving 'Main'"/>
+ <line text="debug weaving 'Main'"/>
</stderr>
</run>
</ajc-test>
<line text="info using"/>
<line text="info register aspect Aspect3"/>
<line text="can not build thisJoinPoint lazily for this advice"/>
- <line text="info weaving 'Main'"/>
+ <line text="debug weaving 'Main'"/>
</stderr>
</run>
</ajc-test>
<line text="info using"/>
<line text="info register aspect Aspect3"/>
<line text="can not build thisJoinPoint lazily for this advice"/>
- <line text="info weaving 'Main'"/>
+ <line text="debug weaving 'Main'"/>
</stderr>
</run>
</ajc-test>
<line text="info using"/>
<line text="info register aspect Aspect3"/>
<line text="can not build thisJoinPoint lazily for this advice"/>
- <line text="info weaving 'Main'"/>
+ <line text="debug weaving 'Main'"/>
</stderr>
</run>
</ajc-test>
<line text="info register classloader org.aspectj.weaver.loadtime.WeavingURLClassLoader"/>
<line text="info using configuration"/>
<line text="info register aspect EmptyAspect"/>
- <line text="info weaving"/>
- <line text="info not weaving"/>
+ <line text="debug weaving"/>
+ <line text="debug not weaving"/>
</stderr>
</run>
</ajc-test>
// a valid aspectOf()/hasAspect() generated in them. However - if they are excluded
// (via include/exclude in aop.xml) they really should only get aspectOf()/hasAspect()
// and not be included in the full set of aspects being applied by 'this' weaver
- info("weaving '" + name + "'");
+ debug("weaving '" + name + "'");
bytes = getWovenBytes(name, bytes);
} else if (shouldWeaveAnnotationStyleAspect(name, bytes)) {
// an @AspectJ aspect needs to be at least munged by the aspectOf munger
- info("weaving '" + name + "'");
+ debug("weaving '" + name + "'");
bytes = getAtAspectJAspectBytes(name, bytes);
} else {
- info("not weaving '" + name + "'");
+ debug("not weaving '" + name + "'");
}
} else {
- info("cannot weave '" + name + "'");
+ debug("cannot weave '" + name + "'");
}
if (trace.isTraceEnabled()) trace.exit("weaveClass",bytes);
return ret;
}
+ protected boolean debug (String message) {
+ return MessageUtil.debug(messageHandler,message);
+ }
+
protected boolean info (String message) {
return MessageUtil.info(messageHandler,message);
}
super(writer,true);
ignore(IMessage.WEAVEINFO);
+ ignore(IMessage.DEBUG);
ignore(IMessage.INFO);
this.failKind = IMessage.ERROR;
}