summaryrefslogtreecommitdiffstats
path: root/weaver5/java5-src/org/aspectj/weaver/reflect/Java15AnnotationFinder.java
diff options
context:
space:
mode:
Diffstat (limited to 'weaver5/java5-src/org/aspectj/weaver/reflect/Java15AnnotationFinder.java')
-rw-r--r--weaver5/java5-src/org/aspectj/weaver/reflect/Java15AnnotationFinder.java14
1 files changed, 10 insertions, 4 deletions
diff --git a/weaver5/java5-src/org/aspectj/weaver/reflect/Java15AnnotationFinder.java b/weaver5/java5-src/org/aspectj/weaver/reflect/Java15AnnotationFinder.java
index 31abe3056..31de59c62 100644
--- a/weaver5/java5-src/org/aspectj/weaver/reflect/Java15AnnotationFinder.java
+++ b/weaver5/java5-src/org/aspectj/weaver/reflect/Java15AnnotationFinder.java
@@ -35,9 +35,15 @@ import org.aspectj.weaver.World;
public class Java15AnnotationFinder implements AnnotationFinder {
private Repository bcelRepository;
+ private ClassLoader classLoader;
+ // must have no-arg constructor for reflective construction
public Java15AnnotationFinder() {
- this.bcelRepository = new ClassLoaderRepository(getClass().getClassLoader());
+ }
+
+ public void setClassLoader(ClassLoader aLoader) {
+ this.bcelRepository = new ClassLoaderRepository(aLoader);
+ this.classLoader = aLoader;
}
/* (non-Javadoc)
@@ -45,7 +51,7 @@ public class Java15AnnotationFinder implements AnnotationFinder {
*/
public Object getAnnotation(ResolvedType annotationType, Object onObject) {
try {
- Class annotationClass = Class.forName(annotationType.getName());
+ Class annotationClass = Class.forName(annotationType.getName(),false,classLoader);
if (onObject.getClass().isAnnotationPresent(annotationClass)) {
return onObject.getClass().getAnnotation(annotationClass);
}
@@ -57,7 +63,7 @@ public class Java15AnnotationFinder implements AnnotationFinder {
public Object getAnnotationFromClass(ResolvedType annotationType, Class aClass) {
try {
- Class annotationClass = Class.forName(annotationType.getName());
+ Class annotationClass = Class.forName(annotationType.getName(),false,classLoader);
if (aClass.isAnnotationPresent(annotationClass)) {
return aClass.getAnnotation(annotationClass);
}
@@ -71,7 +77,7 @@ public class Java15AnnotationFinder implements AnnotationFinder {
if (!(aMember instanceof AccessibleObject)) return null;
AccessibleObject ao = (AccessibleObject) aMember;
try {
- Class annotationClass = Class.forName(annotationType.getName());
+ Class annotationClass = Class.forName(annotationType.getName(),false,classLoader);
if (ao.isAnnotationPresent(annotationClass)) {
return ao.getAnnotation(annotationClass);
}