summaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
authoraclement <aclement>2004-12-08 14:34:33 +0000
committeraclement <aclement>2004-12-08 14:34:33 +0000
commitae085e2a79e3d8a71b03f422db8292d1007e04c1 (patch)
tree5a27c8f7dc4d95f9359b9c2371839319c65769ca /weaver
parent6e6d34c79638763ab180578dd169147fda5011cc (diff)
downloadaspectj-ae085e2a79e3d8a71b03f422db8292d1007e04c1.tar.gz
aspectj-ae085e2a79e3d8a71b03f422db8292d1007e04c1.zip
Annotation matching.
Diffstat (limited to 'weaver')
-rw-r--r--weaver/src/org/aspectj/weaver/AnnotatedElement.java2
-rw-r--r--weaver/src/org/aspectj/weaver/Member.java2
-rw-r--r--weaver/src/org/aspectj/weaver/ResolvedTypeX.java10
-rw-r--r--weaver/src/org/aspectj/weaver/TypeX.java2
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/BcelField.java2
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/BcelMethod.java2
-rw-r--r--weaver/src/org/aspectj/weaver/bcel/BcelObjectType.java2
-rw-r--r--weaver/src/org/aspectj/weaver/patterns/ExactAnnotationTypePattern.java5
-rw-r--r--weaver/testsrc/org/aspectj/weaver/patterns/AnnotationPatternTestCase.java2
-rw-r--r--weaver/testsrc/org/aspectj/weaver/patterns/ParserTestCase.java10
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;
}
}