diff options
author | aclement <aclement> | 2004-12-08 14:34:33 +0000 |
---|---|---|
committer | aclement <aclement> | 2004-12-08 14:34:33 +0000 |
commit | ae085e2a79e3d8a71b03f422db8292d1007e04c1 (patch) | |
tree | 5a27c8f7dc4d95f9359b9c2371839319c65769ca /weaver | |
parent | 6e6d34c79638763ab180578dd169147fda5011cc (diff) | |
download | aspectj-ae085e2a79e3d8a71b03f422db8292d1007e04c1.tar.gz aspectj-ae085e2a79e3d8a71b03f422db8292d1007e04c1.zip |
Annotation matching.
Diffstat (limited to 'weaver')
10 files changed, 19 insertions, 20 deletions
diff --git a/weaver/src/org/aspectj/weaver/AnnotatedElement.java b/weaver/src/org/aspectj/weaver/AnnotatedElement.java index f83e551d0..445fda6b7 100644 --- a/weaver/src/org/aspectj/weaver/AnnotatedElement.java +++ b/weaver/src/org/aspectj/weaver/AnnotatedElement.java @@ -13,7 +13,7 @@ package org.aspectj.weaver; * Represents any element that may have annotations */ public interface AnnotatedElement { - boolean hasAnnotation(ResolvedTypeX ofType); + boolean hasAnnotation(TypeX ofType); ResolvedTypeX[] getAnnotationTypes(); // SomeType getAnnotation(TypeX ofType); diff --git a/weaver/src/org/aspectj/weaver/Member.java b/weaver/src/org/aspectj/weaver/Member.java index 9bd4fa7d4..eaf0c9217 100644 --- a/weaver/src/org/aspectj/weaver/Member.java +++ b/weaver/src/org/aspectj/weaver/Member.java @@ -468,7 +468,7 @@ public class Member implements Comparable, AnnotatedElement { * If you want a sensible answer, resolve the member and call * hasAnnotation() on the ResolvedMember. */ - public boolean hasAnnotation(ResolvedTypeX ofType) { + public boolean hasAnnotation(TypeX ofType) { throw new UnsupportedOperationException("You should resolve this member and call hasAnnotation() on the result..."); } diff --git a/weaver/src/org/aspectj/weaver/ResolvedTypeX.java b/weaver/src/org/aspectj/weaver/ResolvedTypeX.java index 413292468..7b9a60174 100644 --- a/weaver/src/org/aspectj/weaver/ResolvedTypeX.java +++ b/weaver/src/org/aspectj/weaver/ResolvedTypeX.java @@ -560,7 +560,7 @@ public abstract class ResolvedTypeX extends TypeX implements AnnotatedElement { return delegate.isClass(); } - public boolean hasAnnotation(ResolvedTypeX ofType) { + public boolean hasAnnotation(TypeX ofType) { return delegate.hasAnnotation(ofType); } @@ -725,7 +725,7 @@ public abstract class ResolvedTypeX extends TypeX implements AnnotatedElement { public abstract boolean isEnum(); public abstract boolean isAnnotation(); - public abstract boolean hasAnnotation(ResolvedTypeX ofType); + public abstract boolean hasAnnotation(TypeX ofType); public abstract ResolvedTypeX[] getAnnotationTypes(); public abstract ResolvedMember[] getDeclaredFields(); @@ -801,7 +801,7 @@ public abstract class ResolvedTypeX extends TypeX implements AnnotatedElement { return ResolvedMember.NONE; } - public boolean hasAnnotation(ResolvedTypeX ofType) { + public boolean hasAnnotation(TypeX ofType) { return false; } @@ -864,7 +864,7 @@ public abstract class ResolvedTypeX extends TypeX implements AnnotatedElement { public final boolean isPrimitive() { return true; } - public boolean hasAnnotation(ResolvedTypeX ofType) { + public boolean hasAnnotation(TypeX ofType) { return false; } public final boolean isAssignableFrom(TypeX other) { @@ -941,7 +941,7 @@ public abstract class ResolvedTypeX extends TypeX implements AnnotatedElement { public final String getName() { return MISSING_NAME; } - public boolean hasAnnotation(ResolvedTypeX ofType) { + public boolean hasAnnotation(TypeX ofType) { return false; } public final ResolvedMember[] getDeclaredFields() { diff --git a/weaver/src/org/aspectj/weaver/TypeX.java b/weaver/src/org/aspectj/weaver/TypeX.java index 020682322..2cc7528f3 100644 --- a/weaver/src/org/aspectj/weaver/TypeX.java +++ b/weaver/src/org/aspectj/weaver/TypeX.java @@ -552,7 +552,7 @@ public class TypeX implements AnnotatedElement { return world.resolve(this); } - public boolean hasAnnotation(ResolvedTypeX ofType) { + public boolean hasAnnotation(TypeX ofType) { throw new UnsupportedOperationException("You should resolve this member and call hasAnnotation() on the result..."); } diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelField.java b/weaver/src/org/aspectj/weaver/bcel/BcelField.java index 57fe60b59..230513585 100644 --- a/weaver/src/org/aspectj/weaver/bcel/BcelField.java +++ b/weaver/src/org/aspectj/weaver/bcel/BcelField.java @@ -79,7 +79,7 @@ final class BcelField extends ResolvedMember { return isSynthetic; } - public boolean hasAnnotation(ResolvedTypeX ofType) { + public boolean hasAnnotation(TypeX ofType) { Annotation[] anns = field.getAnnotations(); for (int i = 0; i < anns.length; i++) { Annotation annotation = anns[i]; diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelMethod.java b/weaver/src/org/aspectj/weaver/bcel/BcelMethod.java index 360295c92..006f9d6a0 100644 --- a/weaver/src/org/aspectj/weaver/bcel/BcelMethod.java +++ b/weaver/src/org/aspectj/weaver/bcel/BcelMethod.java @@ -141,7 +141,7 @@ final class BcelMethod extends ResolvedMember { } } - public boolean hasAnnotation(ResolvedTypeX ofType) { + public boolean hasAnnotation(TypeX ofType) { Annotation[] anns = method.getAnnotations(); for (int i = 0; i < anns.length; i++) { Annotation annotation = anns[i]; diff --git a/weaver/src/org/aspectj/weaver/bcel/BcelObjectType.java b/weaver/src/org/aspectj/weaver/bcel/BcelObjectType.java index 321480ddc..ce8a253b2 100644 --- a/weaver/src/org/aspectj/weaver/bcel/BcelObjectType.java +++ b/weaver/src/org/aspectj/weaver/bcel/BcelObjectType.java @@ -323,7 +323,7 @@ public class BcelObjectType extends ResolvedTypeX.ConcreteName { - public boolean hasAnnotation(ResolvedTypeX ofType) { + public boolean hasAnnotation(TypeX ofType) { Annotation[] annotationsOnThisType = javaClass.getAnnotations(); for (int i = 0; i < annotationsOnThisType.length; i++) { Annotation a = annotationsOnThisType[i]; diff --git a/weaver/src/org/aspectj/weaver/patterns/ExactAnnotationTypePattern.java b/weaver/src/org/aspectj/weaver/patterns/ExactAnnotationTypePattern.java index 8017ec757..d1ff327d1 100644 --- a/weaver/src/org/aspectj/weaver/patterns/ExactAnnotationTypePattern.java +++ b/weaver/src/org/aspectj/weaver/patterns/ExactAnnotationTypePattern.java @@ -49,10 +49,7 @@ public class ExactAnnotationTypePattern extends AnnotationTypePattern { } public FuzzyBoolean matches(AnnotatedElement annotated) { - if (!resolved) { - throw new IllegalStateException("Can't match on an unresolved annotation type pattern"); - } - return (annotated.hasAnnotation((ResolvedTypeX)annotationType) ? + return (annotated.hasAnnotation(annotationType) ? FuzzyBoolean.YES : FuzzyBoolean.NO); } diff --git a/weaver/testsrc/org/aspectj/weaver/patterns/AnnotationPatternTestCase.java b/weaver/testsrc/org/aspectj/weaver/patterns/AnnotationPatternTestCase.java index 52b6b98a6..c3ea08e4d 100644 --- a/weaver/testsrc/org/aspectj/weaver/patterns/AnnotationPatternTestCase.java +++ b/weaver/testsrc/org/aspectj/weaver/patterns/AnnotationPatternTestCase.java @@ -327,7 +327,7 @@ public class AnnotationPatternTestCase extends TestCase { this.annotationTypes = annotationTypes; } - public boolean hasAnnotation(ResolvedTypeX ofType) { + public boolean hasAnnotation(TypeX ofType) { for (int i = 0; i < annotationTypes.length; i++) { if (annotationTypes[i].equals(ofType.getName())) return true; } diff --git a/weaver/testsrc/org/aspectj/weaver/patterns/ParserTestCase.java b/weaver/testsrc/org/aspectj/weaver/patterns/ParserTestCase.java index bf1471667..1be581690 100644 --- a/weaver/testsrc/org/aspectj/weaver/patterns/ParserTestCase.java +++ b/weaver/testsrc/org/aspectj/weaver/patterns/ParserTestCase.java @@ -63,18 +63,20 @@ public class ParserTestCase extends TestCase { } public void testParseWithAnnotation() { - PatternParser parser = new PatternParser("execution(@p.SimpleAnnotation void Hello.*(..))"); + PatternParser parser = new PatternParser("execution(@SimpleAnnotation void Hello.*(..))"); KindedPointcut p = (KindedPointcut) parser.parsePointcut(); // XXX - needs finishing... - // p.resolveBindings(makeSimpleScope(),new Bindings(3)); -// System.err.println(p); + p.resolveBindings(makeSimpleScope(),new Bindings(3)); + System.err.println(p); // assertEquals(p.kind, BcelShadow.MethodExecution); // assertTrue(p.signature.getName().matches("foobar")); // p.signature.resolveBindings(makeSimpleScope(),new Bindings(3)); } public TestScope makeSimpleScope() { - return new TestScope(new String[] {"int", "java.lang.String"}, new String[] {"a", "b"}, world); + TestScope s = new TestScope(new String[] {"int", "java.lang.String"}, new String[] {"a", "b"}, world); + s.setImportedPrefixes(new String[]{"p."}); + return s; } } |