aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--weaver/src/org/aspectj/weaver/patterns/PerClause.java24
1 files changed, 24 insertions, 0 deletions
diff --git a/weaver/src/org/aspectj/weaver/patterns/PerClause.java b/weaver/src/org/aspectj/weaver/patterns/PerClause.java
index 8b59094d1..e8fbc834a 100644
--- a/weaver/src/org/aspectj/weaver/patterns/PerClause.java
+++ b/weaver/src/org/aspectj/weaver/patterns/PerClause.java
@@ -66,4 +66,28 @@ public abstract class PerClause extends Pointcut {
public static final Kind PEROBJECT = new Kind("perobject", 3);
public static final Kind FROMSUPER = new Kind("fromsuper", 4);
public static final Kind PERTYPEWITHIN = new Kind("pertypewithin",5);
+
+ public static class KindAnnotationPrefix extends TypeSafeEnum {
+ private KindAnnotationPrefix(String name, int key) {
+ super(name, key);
+ }
+
+ public String extractPointcut(String perClause) {
+ int from = getName().length();
+ int to = perClause.length()-1;
+ if (!perClause.startsWith(getName())
+ || !perClause.endsWith(")")
+ || from > perClause.length()) {
+ throw new RuntimeException("cannot read perclause " + perClause);
+ }
+
+ return perClause.substring(from, to);
+ }
+
+ public static final KindAnnotationPrefix PERCFLOW = new KindAnnotationPrefix("percflow(", 1);
+ public static final KindAnnotationPrefix PERCFLOWBELOW = new KindAnnotationPrefix("percflowbelow(", 2);
+ public static final KindAnnotationPrefix PERTHIS = new KindAnnotationPrefix("perthis(", 3);
+ public static final KindAnnotationPrefix PERTARGET = new KindAnnotationPrefix("pertarget(", 4);
+ public static final KindAnnotationPrefix PERTYPEWITHIN = new KindAnnotationPrefix("pertypewithin(", 5);
+ }
}