Преглед изворни кода

Matthews patches for 115275

tags/V1_5_0RC1
aclement пре 18 година
родитељ
комит
e8b6bde217

+ 14
- 3
loadtime/src/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java Прегледај датотеку

import org.aspectj.bridge.MessageUtil; import org.aspectj.bridge.MessageUtil;
import org.aspectj.util.LangUtil; import org.aspectj.util.LangUtil;
import org.aspectj.weaver.ICrossReferenceHandler; import org.aspectj.weaver.ICrossReferenceHandler;
import org.aspectj.weaver.Lint;
import org.aspectj.weaver.ResolvedType; import org.aspectj.weaver.ResolvedType;
import org.aspectj.weaver.UnresolvedType; import org.aspectj.weaver.UnresolvedType;
import org.aspectj.weaver.World; import org.aspectj.weaver.World;
import org.aspectj.weaver.Lint.Kind;
import org.aspectj.weaver.bcel.BcelWeaver; import org.aspectj.weaver.bcel.BcelWeaver;
import org.aspectj.weaver.bcel.BcelWorld; import org.aspectj.weaver.bcel.BcelWorld;
import org.aspectj.weaver.bcel.Utility; import org.aspectj.weaver.bcel.Utility;
info("no configuration found. Disabling weaver for class loader " + getClassLoaderName(loader)); info("no configuration found. Disabling weaver for class loader " + getClassLoaderName(loader));
} }
} catch (Exception e) { } catch (Exception e) {
weaver.getWorld().getMessageHandler().handleMessage(
new Message("Register definition failed", IMessage.WARNING, e, null)
);
enabled = false;// will allow very fast skip in shouldWeave()
warn("register definition failed",e);
} }
} }


} }
} }


protected void lint (String name, String[] infos) {
Lint lint = bcelWorld.getLint();
Kind kind = lint.getLintKind(name);
kind.signal(infos,null,null);
}
/** /**
* Register the aspect, following include / exclude rules * Register the aspect, following include / exclude rules
* *
namespace = namespace.append(";"+aspectClassName); namespace = namespace.append(";"+aspectClassName);
} }
} }
else {
// warn("aspect excluded: " + aspectClassName);
lint("aspectExcludedByConfiguration", new String[] { aspectClassName, getClassLoaderName(loader) });
}
} }
} }



+ 5
- 0
tests/ltw/aop-aspectsinclude.xml Прегледај датотеку

<aspectj>
<aspects>
<include within="pakkage.*"/>
</aspects>
</aspectj>

+ 8
- 0
tests/ltw/aop-aspectsincludewithlintwarning.xml Прегледај датотеку

<aspectj>
<aspects>
<include within="pakkage.*"/>
</aspects>

<weaver options="-Xlint:warning">
</weaver>
</aspectj>

+ 8
- 0
tests/src/org/aspectj/systemtest/ajc150/ltw/LTWTests.java Прегледај датотеку

runTest("Use abstract aspect for ITD using aop.xml"); runTest("Use abstract aspect for ITD using aop.xml");
} }


public void testAspectsInclude () {
runTest("Ensure a subset of inherited aspects is used for weaving");
}

public void testAspectsIncludeWithLintWarning () {
runTest("Ensure weaver lint warning issued when an aspect is not used for weaving");
}

/* /*
* Allow system properties to be set and restored * Allow system properties to be set and restored
* TODO maw move to XMLBasedAjcTestCase or RunSpec * TODO maw move to XMLBasedAjcTestCase or RunSpec

+ 56
- 0
tests/src/org/aspectj/systemtest/ajc150/ltw/ltw-tests.xml Прегледај датотеку

</stderr> </stderr>
</run> </run>
</ajc-test> </ajc-test>

<ajc-test dir="ltw"
title="Ensure a subset of inherited aspects is used for weaving"
keywords="aspects, include">
<compile
files="Main.java"
outjar="main.jar"
>
</compile>
<compile
classpath="main.jar"
files="Aspect1.aj, Aspect2.aj, pakkage/Aspect3.aj"
outjar="aspects.jar"
options="-outxml"
>
</compile>
<run class="Main" ltw="aop-aspectsinclude.xml">
<stdout>
<line text="Main.main"/>
<line text="Main.test1"/>
<line text="Main.test2"/>
</stdout>
<stderr>
<line text="pakkage.Aspect3.before_test2"/>
</stderr>
</run>
</ajc-test>

<ajc-test dir="ltw"
title="Ensure weaver lint warning issued when an aspect is not used for weaving"
keywords="aspects, include, lint">
<compile
files="Main.java"
outjar="main.jar"
>
</compile>
<compile
classpath="main.jar"
files="Aspect1.aj, Aspect2.aj, pakkage/Aspect3.aj"
outjar="aspects.jar"
options="-outxml"
>
</compile>
<run class="Main" ltw="aop-aspectsincludewithlintwarning.xml">
<stdout>
<line text="Main.main"/>
<line text="Main.test1"/>
<line text="Main.test2"/>
</stdout>
<stderr>
<line text="warning aspect Aspect1 exluded for class loader org.aspectj.weaver.loadtime.WeavingURLClassLoader [Xlint:aspectExcludedByConfiguration]"/>
<line text="warning aspect Aspect2 exluded for class loader org.aspectj.weaver.loadtime.WeavingURLClassLoader [Xlint:aspectExcludedByConfiguration]"/>
<line text="pakkage.Aspect3.before_test2"/>
</stderr>
</run>
</ajc-test>

+ 3
- 0
weaver/src/org/aspectj/weaver/Lint.java Прегледај датотеку

public final Kind noExplicitConstructorCall = public final Kind noExplicitConstructorCall =
new Kind("noExplicitConstructorCall","inter-type constructor does not contain explicit constructor call: field initializers in the target type will not be executed"); new Kind("noExplicitConstructorCall","inter-type constructor does not contain explicit constructor call: field initializers in the target type will not be executed");
public final Kind aspectExcludedByConfiguration =
new Kind("aspectExcludedByConfiguration","aspect {0} exluded for class loader {1}");
public Lint(World world) { public Lint(World world) {
this.world = world; this.world = world;
} }

+ 2
- 0
weaver/src/org/aspectj/weaver/XlintDefault.properties Прегледај датотеку

runtimeExceptionNotSoftened = warning runtimeExceptionNotSoftened = warning
uncheckedArgument = warning uncheckedArgument = warning
noExplicitConstructorCall = warning noExplicitConstructorCall = warning

aspectExcludedByConfiguration = ignore

+ 5
- 0
weaver/src/org/aspectj/weaver/tools/WeavingAdaptor.java Прегледај датотеку

import org.aspectj.bridge.AbortException; import org.aspectj.bridge.AbortException;
import org.aspectj.bridge.IMessage; import org.aspectj.bridge.IMessage;
import org.aspectj.bridge.IMessageHandler; import org.aspectj.bridge.IMessageHandler;
import org.aspectj.bridge.Message;
import org.aspectj.bridge.MessageUtil; import org.aspectj.bridge.MessageUtil;
import org.aspectj.bridge.MessageWriter; import org.aspectj.bridge.MessageWriter;
import org.aspectj.bridge.IMessage.Kind; import org.aspectj.bridge.IMessage.Kind;
return MessageUtil.warn(messageHandler,message); return MessageUtil.warn(messageHandler,message);
} }
protected boolean warn (String message, Throwable th) {
return messageHandler.handleMessage(new Message("Register definition failed", IMessage.WARNING, th, null));
}
protected boolean error (String message) { protected boolean error (String message) {
return MessageUtil.error(messageHandler,message); return MessageUtil.error(messageHandler,message);
} }

Loading…
Откажи
Сачувај