[jboss-cvs] JBossAS SVN: r59962 - in projects/aop/trunk/aop: src/main/org/jboss/aop/pointcut/ast and 10 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jan 23 18:51:26 EST 2007


Author: kabir.khan at jboss.com
Date: 2007-01-23 18:51:25 -0500 (Tue, 23 Jan 2007)
New Revision: 59962

Added:
   projects/aop/trunk/aop/src/resources/test/packagedotdot/
   projects/aop/trunk/aop/src/resources/test/packagedotdot/jboss-aop.xml
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/AllInterceptor.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/ConstructionInterceptor.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/NotConstructionInterceptor.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/POJOA.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/POJOB.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/PackageTestCase.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/all/
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/all/All.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/callee/
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/callee/Callee.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/caller/
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/caller/Caller.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/sub/
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/sub/POJO.java
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/sub/nested/
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/sub/nested/Nested.java
Modified:
   projects/aop/trunk/aop/base-tests.xml
   projects/aop/trunk/aop/src/main/org/jboss/aop/pointcut/ast/ClassExpression.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/pointcut/ast/PointcutExpressionParser.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/pointcut/ast/PointcutExpressionParserConstants.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/pointcut/ast/PointcutExpressionParserTokenManager.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/pointcut/ast/pointcut.jjt
   projects/aop/trunk/aop/src/test/org/jboss/test/aop/pointcut/PointcutTestCase.java
Log:
[JBAOP-276] Only match classes within a given package

Modified: projects/aop/trunk/aop/base-tests.xml
===================================================================
--- projects/aop/trunk/aop/base-tests.xml	2007-01-23 22:49:58 UTC (rev 59961)
+++ projects/aop/trunk/aop/base-tests.xml	2007-01-23 23:51:25 UTC (rev 59962)
@@ -2,6 +2,9 @@
 
    <target name="_base-tests">
       <antcall target="${test-target}" inheritRefs="true">
+         <param name="test" value="packagedotdot"/>
+      </antcall>
+      <antcall target="${test-target}" inheritRefs="true">
          <param name="test" value="serialization/simple"/>
       </antcall>
       <antcall target="${test-target}" inheritRefs="true">

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/pointcut/ast/ClassExpression.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/pointcut/ast/ClassExpression.java	2007-01-23 22:49:58 UTC (rev 59961)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/pointcut/ast/ClassExpression.java	2007-01-23 23:51:25 UTC (rev 59962)
@@ -37,6 +37,7 @@
    private boolean isAnnotation = false;
    private boolean isInstanceOf = false;
    private boolean isTypedef = false;
+   private boolean isPackage = false;
 
    private boolean isInstanceOfAnnotated = false;
 
@@ -61,6 +62,11 @@
             isTypedef = true;
             expr = expr.substring(9, expr.lastIndexOf("}"));
          }
+         else if (expr.endsWith(".."))
+         {
+            isPackage = true;
+            expr = expr.substring(0, expr.lastIndexOf(".."));
+         }
          
          if (!isAnnotation)
          {
@@ -80,12 +86,26 @@
       return !(isAnnotation || isInstanceOf || isTypedef || isInstanceOfAnnotated);
    }
 
-
    public boolean matches(String classname)
    {
       if (isAnnotation) return false;
-      Matcher m = classPattern.matcher(classname);
-      return m.matches();
+      if (isPackage())
+      {
+         int index = classname.lastIndexOf(".");
+         boolean matches = classPattern.toString().equals(".*");
+         if (!matches && index != -1)
+         {
+            String candidate = classname.substring(0, index);
+            java.util.regex.Matcher m = classPattern.matcher(candidate);
+            matches = m.matches();
+         }
+         return matches;
+      }
+      else
+      {
+         Matcher m = classPattern.matcher(classname);
+         return m.matches();
+      }
    }
 
    public boolean matchesAnnotation(String annotation)
@@ -99,6 +119,11 @@
    {
       return this.isAnnotation;
    }
+   
+   public boolean isPackage()
+   {
+      return this.isPackage;
+   }
 
    public boolean isInstanceOf()
    {

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/pointcut/ast/PointcutExpressionParser.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/pointcut/ast/PointcutExpressionParser.java	2007-01-23 22:49:58 UTC (rev 59961)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/pointcut/ast/PointcutExpressionParser.java	2007-01-23 23:51:25 UTC (rev 59962)
@@ -155,9 +155,9 @@
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
     try {
-      jj_consume_token(86);
+      jj_consume_token(88);
       SubExpression();
-      jj_consume_token(87);
+      jj_consume_token(89);
     } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
@@ -464,9 +464,9 @@
   boolean jjtc000 = true;
   jjtree.openNodeScope(jjtn000);
     try {
-      jj_consume_token(86);
+      jj_consume_token(88);
       SubCFlow();
-      jj_consume_token(87);
+      jj_consume_token(89);
     } catch (Throwable jjte000) {
      if (jjtc000) {
        jjtree.clearNodeScope(jjtn000);
@@ -699,6 +699,9 @@
       case FIELD_CLASS:
         pointcut = jj_consume_token(FIELD_CLASS);
         break;
+      case FIELD_PACKAGE:
+        pointcut = jj_consume_token(FIELD_PACKAGE);
+        break;
       case FIELD_IDENTIFIER:
         pointcut = jj_consume_token(FIELD_IDENTIFIER);
         break;
@@ -773,6 +776,9 @@
       case FIELD_CLASS:
         clazz = jj_consume_token(FIELD_CLASS);
         break;
+      case FIELD_PACKAGE:
+        clazz = jj_consume_token(FIELD_PACKAGE);
+        break;
       case FIELD_IDENTIFIER:
         clazz = jj_consume_token(FIELD_IDENTIFIER);
         break;
@@ -1116,6 +1122,9 @@
       case CLASS:
         clazz = jj_consume_token(CLASS);
         break;
+      case PACKAGE:
+        clazz = jj_consume_token(PACKAGE);
+        break;
       case IDENTIFIER:
         clazz = jj_consume_token(IDENTIFIER);
         break;
@@ -1333,6 +1342,9 @@
       case CLASS:
         clazz = jj_consume_token(CLASS);
         break;
+      case PACKAGE:
+        clazz = jj_consume_token(PACKAGE);
+        break;
       case IDENTIFIER:
         clazz = jj_consume_token(IDENTIFIER);
         break;
@@ -1578,6 +1590,9 @@
       case FIELD_CLASS:
         clazz = jj_consume_token(FIELD_CLASS);
         break;
+      case FIELD_PACKAGE:
+        clazz = jj_consume_token(FIELD_PACKAGE);
+        break;
       case FIELD_IDENTIFIER:
         clazz = jj_consume_token(FIELD_IDENTIFIER);
         break;
@@ -2026,21 +2041,6 @@
     finally { jj_save(46, xla); }
   }
 
-  final private boolean jj_3_45() {
-    if (jj_3R_30()) return true;
-    return false;
-  }
-
-  final private boolean jj_3_30() {
-    if (jj_3R_21()) return true;
-    return false;
-  }
-
-  final private boolean jj_3R_37() {
-    if (jj_3R_46()) return true;
-    return false;
-  }
-
   final private boolean jj_3R_29() {
     Token xsp;
     while (true) {
@@ -2050,12 +2050,12 @@
     xsp = jj_scanpos;
     if (jj_scan_token(49)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(55)) {
+    if (jj_scan_token(56)) {
     jj_scanpos = xsp;
+    if (jj_scan_token(53)) {
+    jj_scanpos = xsp;
     if (jj_scan_token(52)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(51)) {
-    jj_scanpos = xsp;
     if (jj_scan_token(47)) {
     jj_scanpos = xsp;
     if (jj_scan_token(48)) return true;
@@ -2067,10 +2067,12 @@
     xsp = jj_scanpos;
     if (jj_scan_token(49)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(55)) {
+    if (jj_scan_token(50)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(52)) {
+    if (jj_scan_token(56)) {
     jj_scanpos = xsp;
+    if (jj_scan_token(53)) {
+    jj_scanpos = xsp;
     if (jj_scan_token(47)) {
     jj_scanpos = xsp;
     if (jj_scan_token(48)) return true;
@@ -2078,15 +2080,16 @@
     }
     }
     }
+    }
     if (jj_scan_token(SEPARATOR)) return true;
     xsp = jj_scanpos;
-    if (jj_scan_token(55)) {
+    if (jj_scan_token(56)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(52)) {
-    jj_scanpos = xsp;
     if (jj_scan_token(53)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(54)) return true;
+    if (jj_scan_token(54)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(55)) return true;
     }
     }
     }
@@ -2220,19 +2223,22 @@
     if (jj_scan_token(WITHIN)) return true;
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_scan_token(76)) {
+    if (jj_scan_token(77)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(79)) {
-    jj_scanpos = xsp;
     if (jj_scan_token(78)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(74)) {
+    if (jj_scan_token(81)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(75)) return true;
+    if (jj_scan_token(80)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(75)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(76)) return true;
     }
     }
     }
     }
+    }
     if (jj_scan_token(FIELD_CLOSE)) return true;
     return false;
   }
@@ -2303,19 +2309,22 @@
     if (jj_scan_token(ALL)) return true;
     Token xsp;
     xsp = jj_scanpos;
-    if (jj_scan_token(76)) {
+    if (jj_scan_token(77)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(79)) {
-    jj_scanpos = xsp;
     if (jj_scan_token(78)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(74)) {
+    if (jj_scan_token(81)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(75)) return true;
+    if (jj_scan_token(80)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(75)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(76)) return true;
     }
     }
     }
     }
+    }
     if (jj_scan_token(FIELD_CLOSE)) return true;
     return false;
   }
@@ -2496,7 +2505,7 @@
   }
 
   final private boolean jj_3R_16() {
-    if (jj_scan_token(86)) return true;
+    if (jj_scan_token(88)) return true;
     if (jj_3R_35()) return true;
     return false;
   }
@@ -2620,9 +2629,9 @@
   }
 
   final private boolean jj_3R_10() {
-    if (jj_scan_token(86)) return true;
+    if (jj_scan_token(88)) return true;
     if (jj_3R_9()) return true;
-    if (jj_scan_token(87)) return true;
+    if (jj_scan_token(89)) return true;
     return false;
   }
 
@@ -2762,41 +2771,44 @@
       if (jj_3R_45()) { jj_scanpos = xsp; break; }
     }
     xsp = jj_scanpos;
-    if (jj_scan_token(76)) {
+    if (jj_scan_token(77)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(79)) {
+    if (jj_scan_token(81)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(78)) {
+    if (jj_scan_token(80)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(77)) {
+    if (jj_scan_token(79)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(74)) {
+    if (jj_scan_token(75)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(75)) return true;
+    if (jj_scan_token(76)) return true;
     }
     }
     }
     }
     }
     xsp = jj_scanpos;
-    if (jj_scan_token(76)) {
+    if (jj_scan_token(77)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(79)) {
-    jj_scanpos = xsp;
     if (jj_scan_token(78)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(74)) {
+    if (jj_scan_token(81)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(75)) return true;
+    if (jj_scan_token(80)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(75)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(76)) return true;
     }
     }
     }
     }
+    }
     if (jj_scan_token(FIELD_SEPARATOR)) return true;
     xsp = jj_scanpos;
-    if (jj_scan_token(79)) {
+    if (jj_scan_token(81)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(78)) return true;
+    if (jj_scan_token(80)) return true;
     }
     return false;
   }
@@ -2895,10 +2907,12 @@
     xsp = jj_scanpos;
     if (jj_scan_token(49)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(55)) {
+    if (jj_scan_token(50)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(52)) {
+    if (jj_scan_token(56)) {
     jj_scanpos = xsp;
+    if (jj_scan_token(53)) {
+    jj_scanpos = xsp;
     if (jj_scan_token(47)) {
     jj_scanpos = xsp;
     if (jj_scan_token(48)) return true;
@@ -2906,11 +2920,12 @@
     }
     }
     }
+    }
     if (jj_scan_token(SEPARATOR)) return true;
     xsp = jj_scanpos;
     if (jj_scan_token(45)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(52)) return true;
+    if (jj_scan_token(53)) return true;
     }
     if (jj_3R_39()) return true;
     if (jj_3R_74()) return true;
@@ -2973,7 +2988,7 @@
     xsp = jj_scanpos;
     if (jj_scan_token(49)) {
     jj_scanpos = xsp;
-    if (jj_scan_token(55)) return true;
+    if (jj_scan_token(56)) return true;
     }
     return false;
   }
@@ -3006,6 +3021,21 @@
     return false;
   }
 
+  final private boolean jj_3_45() {
+    if (jj_3R_30()) return true;
+    return false;
+  }
+
+  final private boolean jj_3_30() {
+    if (jj_3R_21()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_37() {
+    if (jj_3R_46()) return true;
+    return false;
+  }
+
   public PointcutExpressionParserTokenManager token_source;
   SimpleCharStream jj_input_stream;
   public Token token, jj_nt;
@@ -3028,10 +3058,10 @@
       jj_la1_0 = new int[] {0x11ffe0,0x18,0x18,0x18,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000000,0x3f800000,0x3f800000,0x0,0x0,0x0,0x0,0x0,0x0,};
    }
    private static void jj_la1_1() {
-      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10001fe0,0x9b8000,0x938000,0xf00000,0x40000,0x4000,0x820000,0x10000000,0x1fe0,0x380,0x938000,0x102000,0x380,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+      jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20001fe0,0x1338000,0x1278000,0x1e00000,0x80000,0x4000,0x1020000,0x20000000,0x1fe0,0x380,0x1278000,0x202000,0x380,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
    }
    private static void jj_la1_2() {
-      jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0xdc00,0xdc00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000fc,0xfc00,0xdc00,0xc000,0x100000,0xfc,};
+      jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x37800,0x37800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4001f8,0x3b800,0x37800,0x30000,0x400000,0x1f8,};
    }
   final private JJCalls[] jj_2_rtns = new JJCalls[47];
   private boolean jj_rescan = false;
@@ -3205,8 +3235,8 @@
 
   public ParseException generateParseException() {
     jj_expentries.removeAllElements();
-    boolean[] la1tokens = new boolean[88];
-    for (int i = 0; i < 88; i++) {
+    boolean[] la1tokens = new boolean[90];
+    for (int i = 0; i < 90; i++) {
       la1tokens[i] = false;
     }
     if (jj_kind >= 0) {
@@ -3228,7 +3258,7 @@
         }
       }
     }
-    for (int i = 0; i < 88; i++) {
+    for (int i = 0; i < 90; i++) {
       if (la1tokens[i]) {
         jj_expentry = new int[1];
         jj_expentry[0] = i;

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/pointcut/ast/PointcutExpressionParserConstants.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/pointcut/ast/PointcutExpressionParserConstants.java	2007-01-23 22:49:58 UTC (rev 59961)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/pointcut/ast/PointcutExpressionParserConstants.java	2007-01-23 23:51:25 UTC (rev 59962)
@@ -47,40 +47,42 @@
   int INSTANCEOF = 47;
   int TYPEDEF = 48;
   int CLASS = 49;
-  int EXCEPTION_SEPERATOR = 50;
-  int ARRAY_CLASS = 51;
-  int ANNOTATION = 52;
-  int IMPLEMENTS = 53;
-  int IMPLEMENTING = 54;
-  int IDENTIFIER = 55;
-  int WILD_LETTER = 56;
-  int DOT = 57;
-  int ARRAY = 58;
-  int SEPARATOR = 59;
-  int BEHAVIOR_NOT = 60;
-  int PARAMS_OPEN = 61;
-  int BEHAVIOR_CLOSE = 62;
-  int FIELD_ABSTRACT = 65;
-  int FIELD_FINAL = 66;
-  int FIELD_PRIVATE = 67;
-  int FIELD_PROTECTED = 68;
-  int FIELD_PUBLIC = 69;
-  int FIELD_STATIC = 70;
-  int FIELD_TRANSIENT = 71;
-  int FIELD_NATIVE = 72;
-  int FIELD_SYNCHRONIZED = 73;
-  int FIELD_INSTANCEOF = 74;
-  int FIELD_TYPEDEF = 75;
-  int FIELD_CLASS = 76;
-  int FIELD_ARRAY_CLASS = 77;
-  int FIELD_ANNOTATION = 78;
-  int FIELD_IDENTIFIER = 79;
-  int FIELD_WILD_LETTER = 80;
-  int FIELD_DOT = 81;
-  int FIELD_ARRAY = 82;
-  int FIELD_SEPARATOR = 83;
-  int FIELD_NOT = 84;
-  int FIELD_CLOSE = 85;
+  int PACKAGE = 50;
+  int EXCEPTION_SEPERATOR = 51;
+  int ARRAY_CLASS = 52;
+  int ANNOTATION = 53;
+  int IMPLEMENTS = 54;
+  int IMPLEMENTING = 55;
+  int IDENTIFIER = 56;
+  int WILD_LETTER = 57;
+  int DOT = 58;
+  int ARRAY = 59;
+  int SEPARATOR = 60;
+  int BEHAVIOR_NOT = 61;
+  int PARAMS_OPEN = 62;
+  int BEHAVIOR_CLOSE = 63;
+  int FIELD_ABSTRACT = 66;
+  int FIELD_FINAL = 67;
+  int FIELD_PRIVATE = 68;
+  int FIELD_PROTECTED = 69;
+  int FIELD_PUBLIC = 70;
+  int FIELD_STATIC = 71;
+  int FIELD_TRANSIENT = 72;
+  int FIELD_NATIVE = 73;
+  int FIELD_SYNCHRONIZED = 74;
+  int FIELD_INSTANCEOF = 75;
+  int FIELD_TYPEDEF = 76;
+  int FIELD_CLASS = 77;
+  int FIELD_PACKAGE = 78;
+  int FIELD_ARRAY_CLASS = 79;
+  int FIELD_ANNOTATION = 80;
+  int FIELD_IDENTIFIER = 81;
+  int FIELD_WILD_LETTER = 82;
+  int FIELD_DOT = 83;
+  int FIELD_ARRAY = 84;
+  int FIELD_SEPARATOR = 85;
+  int FIELD_NOT = 86;
+  int FIELD_CLOSE = 87;
 
   int DEFAULT = 0;
   int PARAMS = 1;
@@ -138,6 +140,7 @@
     "<INSTANCEOF>",
     "<TYPEDEF>",
     "<CLASS>",
+    "<PACKAGE>",
     "\",\"",
     "<ARRAY_CLASS>",
     "<ANNOTATION>",
@@ -165,6 +168,7 @@
     "<FIELD_INSTANCEOF>",
     "<FIELD_TYPEDEF>",
     "<FIELD_CLASS>",
+    "<FIELD_PACKAGE>",
     "<FIELD_ARRAY_CLASS>",
     "<FIELD_ANNOTATION>",
     "<FIELD_IDENTIFIER>",

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/pointcut/ast/PointcutExpressionParserTokenManager.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/pointcut/ast/PointcutExpressionParserTokenManager.java	2007-01-23 22:49:58 UTC (rev 59961)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/pointcut/ast/PointcutExpressionParserTokenManager.java	2007-01-23 23:51:25 UTC (rev 59962)
@@ -139,9 +139,9 @@
       case 33:
          return jjStopAtPos(0, 20);
       case 40:
-         return jjStopAtPos(0, 86);
+         return jjStopAtPos(0, 88);
       case 41:
-         return jjStopAtPos(0, 87);
+         return jjStopAtPos(0, 89);
       case 97:
          return jjMoveStringLiteralDfa1_0(0x40L);
       case 99:
@@ -701,116 +701,116 @@
       catch(java.io.IOException e) { return curPos; }
    }
 }
-private final int jjStopStringLiteralDfa_2(int pos, long active0)
+private final int jjStopStringLiteralDfa_2(int pos, long active0, long active1)
 {
    switch (pos)
    {
       case 0:
          if ((active0 & 0x7fe000000000L) != 0L)
          {
-            jjmatchedKind = 55;
-            return 98;
+            jjmatchedKind = 56;
+            return 102;
          }
          return -1;
       case 1:
          if ((active0 & 0x7fe000000000L) != 0L)
          {
-            jjmatchedKind = 55;
+            jjmatchedKind = 56;
             jjmatchedPos = 1;
-            return 98;
+            return 102;
          }
          return -1;
       case 2:
          if ((active0 & 0x200000000000L) != 0L)
-            return 98;
+            return 102;
          if ((active0 & 0x5fe000000000L) != 0L)
          {
-            jjmatchedKind = 55;
+            jjmatchedKind = 56;
             jjmatchedPos = 2;
-            return 98;
+            return 102;
          }
          return -1;
       case 3:
          if ((active0 & 0x5fe000000000L) != 0L)
          {
-            jjmatchedKind = 55;
+            jjmatchedKind = 56;
             jjmatchedPos = 3;
-            return 98;
+            return 102;
          }
          return -1;
       case 4:
          if ((active0 & 0x4000000000L) != 0L)
-            return 98;
+            return 102;
          if ((active0 & 0x5fa000000000L) != 0L)
          {
-            jjmatchedKind = 55;
+            jjmatchedKind = 56;
             jjmatchedPos = 4;
-            return 98;
+            return 102;
          }
          return -1;
       case 5:
-         if ((active0 & 0x4e0000000000L) != 0L)
-            return 98;
          if ((active0 & 0x11a000000000L) != 0L)
          {
-            jjmatchedKind = 55;
+            jjmatchedKind = 56;
             jjmatchedPos = 5;
-            return 98;
+            return 102;
          }
+         if ((active0 & 0x4e0000000000L) != 0L)
+            return 102;
          return -1;
       case 6:
          if ((active0 & 0x8000000000L) != 0L)
-            return 98;
+            return 102;
          if ((active0 & 0x112000000000L) != 0L)
          {
-            jjmatchedKind = 55;
+            jjmatchedKind = 56;
             jjmatchedPos = 6;
-            return 98;
+            return 102;
          }
          return -1;
       case 7:
          if ((active0 & 0x2000000000L) != 0L)
-            return 98;
+            return 102;
          if ((active0 & 0x110000000000L) != 0L)
          {
-            jjmatchedKind = 55;
+            jjmatchedKind = 56;
             jjmatchedPos = 7;
-            return 98;
+            return 102;
          }
          return -1;
       case 8:
+         if ((active0 & 0x10000000000L) != 0L)
+            return 102;
          if ((active0 & 0x100000000000L) != 0L)
          {
-            jjmatchedKind = 55;
+            jjmatchedKind = 56;
             jjmatchedPos = 8;
-            return 98;
+            return 102;
          }
-         if ((active0 & 0x10000000000L) != 0L)
-            return 98;
          return -1;
       case 9:
          if ((active0 & 0x100000000000L) != 0L)
          {
-            jjmatchedKind = 55;
+            jjmatchedKind = 56;
             jjmatchedPos = 9;
-            return 98;
+            return 102;
          }
          return -1;
       case 10:
          if ((active0 & 0x100000000000L) != 0L)
          {
-            jjmatchedKind = 55;
+            jjmatchedKind = 56;
             jjmatchedPos = 10;
-            return 98;
+            return 102;
          }
          return -1;
       default :
          return -1;
    }
 }
-private final int jjStartNfa_2(int pos, long active0)
+private final int jjStartNfa_2(int pos, long active0, long active1)
 {
-   return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0), pos + 1);
+   return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0, active1), pos + 1);
 }
 private final int jjStartNfaWithStates_2(int pos, int kind, int state)
 {
@@ -825,15 +825,15 @@
    switch(curChar)
    {
       case 33:
-         return jjStopAtPos(0, 60);
+         return jjStopAtPos(0, 61);
       case 40:
-         return jjStopAtPos(0, 61);
+         return jjStopAtPos(0, 62);
       case 41:
-         return jjStopAtPos(0, 62);
+         return jjStopAtPos(0, 63);
       case 44:
-         return jjStopAtPos(0, 50);
+         return jjStopAtPos(0, 51);
       case 45:
-         return jjMoveStringLiteralDfa1_2(0x800000000000000L);
+         return jjMoveStringLiteralDfa1_2(0x1000000000000000L);
       case 97:
          return jjMoveStringLiteralDfa1_2(0x2000000000L);
       case 102:
@@ -854,14 +854,14 @@
 {
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_2(0, active0);
+      jjStopStringLiteralDfa_2(0, active0, 0L);
       return 1;
    }
    switch(curChar)
    {
       case 62:
-         if ((active0 & 0x800000000000000L) != 0L)
-            return jjStopAtPos(1, 59);
+         if ((active0 & 0x1000000000000000L) != 0L)
+            return jjStopAtPos(1, 60);
          break;
       case 97:
          return jjMoveStringLiteralDfa2_2(active0, 0x80000000000L);
@@ -884,15 +884,15 @@
       default :
          break;
    }
-   return jjStartNfa_2(0, active0);
+   return jjStartNfa_2(0, active0, 0L);
 }
 private final int jjMoveStringLiteralDfa2_2(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_2(0, old0);
+      return jjStartNfa_2(0, old0, 0L);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_2(1, active0);
+      jjStopStringLiteralDfa_2(1, active0, 0L);
       return 2;
    }
    switch(curChar)
@@ -915,20 +915,20 @@
          return jjMoveStringLiteralDfa3_2(active0, 0x80000000000L);
       case 119:
          if ((active0 & 0x200000000000L) != 0L)
-            return jjStartNfaWithStates_2(2, 45, 98);
+            return jjStartNfaWithStates_2(2, 45, 102);
          break;
       default :
          break;
    }
-   return jjStartNfa_2(1, active0);
+   return jjStartNfa_2(1, active0, 0L);
 }
 private final int jjMoveStringLiteralDfa3_2(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_2(1, old0);
+      return jjStartNfa_2(1, old0, 0L);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_2(2, active0);
+      jjStopStringLiteralDfa_2(2, active0, 0L);
       return 3;
    }
    switch(curChar)
@@ -950,15 +950,15 @@
       default :
          break;
    }
-   return jjStartNfa_2(2, active0);
+   return jjStartNfa_2(2, active0, 0L);
 }
 private final int jjMoveStringLiteralDfa4_2(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_2(2, old0);
+      return jjStartNfa_2(2, old0, 0L);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_2(3, active0);
+      jjStopStringLiteralDfa_2(3, active0, 0L);
       return 4;
    }
    switch(curChar)
@@ -973,7 +973,7 @@
          return jjMoveStringLiteralDfa5_2(active0, 0x60000000000L);
       case 108:
          if ((active0 & 0x4000000000L) != 0L)
-            return jjStartNfaWithStates_2(4, 38, 98);
+            return jjStartNfaWithStates_2(4, 38, 102);
          break;
       case 114:
          return jjMoveStringLiteralDfa5_2(active0, 0x2000000000L);
@@ -984,15 +984,15 @@
       default :
          break;
    }
-   return jjStartNfa_2(3, active0);
+   return jjStartNfa_2(3, active0, 0L);
 }
 private final int jjMoveStringLiteralDfa5_2(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_2(3, old0);
+      return jjStartNfa_2(3, old0, 0L);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_2(4, active0);
+      jjStopStringLiteralDfa_2(4, active0, 0L);
       return 5;
    }
    switch(curChar)
@@ -1001,34 +1001,34 @@
          return jjMoveStringLiteralDfa6_2(active0, 0x2000000000L);
       case 99:
          if ((active0 & 0x20000000000L) != 0L)
-            return jjStartNfaWithStates_2(5, 41, 98);
+            return jjStartNfaWithStates_2(5, 41, 102);
          else if ((active0 & 0x40000000000L) != 0L)
-            return jjStartNfaWithStates_2(5, 42, 98);
+            return jjStartNfaWithStates_2(5, 42, 102);
          return jjMoveStringLiteralDfa6_2(active0, 0x10000000000L);
       case 101:
          if ((active0 & 0x80000000000L) != 0L)
-            return jjStartNfaWithStates_2(5, 43, 98);
+            return jjStartNfaWithStates_2(5, 43, 102);
          break;
       case 114:
          return jjMoveStringLiteralDfa6_2(active0, 0x100000000000L);
       case 115:
          if ((active0 & 0x400000000000L) != 0L)
-            return jjStartNfaWithStates_2(5, 46, 98);
+            return jjStartNfaWithStates_2(5, 46, 102);
          break;
       case 116:
          return jjMoveStringLiteralDfa6_2(active0, 0x8000000000L);
       default :
          break;
    }
-   return jjStartNfa_2(4, active0);
+   return jjStartNfa_2(4, active0, 0L);
 }
 private final int jjMoveStringLiteralDfa6_2(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_2(4, old0);
+      return jjStartNfa_2(4, old0, 0L);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_2(5, active0);
+      jjStopStringLiteralDfa_2(5, active0, 0L);
       return 6;
    }
    switch(curChar)
@@ -1037,7 +1037,7 @@
          return jjMoveStringLiteralDfa7_2(active0, 0x2000000000L);
       case 101:
          if ((active0 & 0x8000000000L) != 0L)
-            return jjStartNfaWithStates_2(6, 39, 98);
+            return jjStartNfaWithStates_2(6, 39, 102);
          break;
       case 111:
          return jjMoveStringLiteralDfa7_2(active0, 0x100000000000L);
@@ -1046,15 +1046,15 @@
       default :
          break;
    }
-   return jjStartNfa_2(5, active0);
+   return jjStartNfa_2(5, active0, 0L);
 }
 private final int jjMoveStringLiteralDfa7_2(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_2(5, old0);
+      return jjStartNfa_2(5, old0, 0L);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_2(6, active0);
+      jjStopStringLiteralDfa_2(6, active0, 0L);
       return 7;
    }
    switch(curChar)
@@ -1065,42 +1065,42 @@
          return jjMoveStringLiteralDfa8_2(active0, 0x100000000000L);
       case 116:
          if ((active0 & 0x2000000000L) != 0L)
-            return jjStartNfaWithStates_2(7, 37, 98);
+            return jjStartNfaWithStates_2(7, 37, 102);
          break;
       default :
          break;
    }
-   return jjStartNfa_2(6, active0);
+   return jjStartNfa_2(6, active0, 0L);
 }
 private final int jjMoveStringLiteralDfa8_2(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_2(6, old0);
+      return jjStartNfa_2(6, old0, 0L);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_2(7, active0);
+      jjStopStringLiteralDfa_2(7, active0, 0L);
       return 8;
    }
    switch(curChar)
    {
       case 100:
          if ((active0 & 0x10000000000L) != 0L)
-            return jjStartNfaWithStates_2(8, 40, 98);
+            return jjStartNfaWithStates_2(8, 40, 102);
          break;
       case 105:
          return jjMoveStringLiteralDfa9_2(active0, 0x100000000000L);
       default :
          break;
    }
-   return jjStartNfa_2(7, active0);
+   return jjStartNfa_2(7, active0, 0L);
 }
 private final int jjMoveStringLiteralDfa9_2(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_2(7, old0);
+      return jjStartNfa_2(7, old0, 0L);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_2(8, active0);
+      jjStopStringLiteralDfa_2(8, active0, 0L);
       return 9;
    }
    switch(curChar)
@@ -1110,15 +1110,15 @@
       default :
          break;
    }
-   return jjStartNfa_2(8, active0);
+   return jjStartNfa_2(8, active0, 0L);
 }
 private final int jjMoveStringLiteralDfa10_2(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_2(8, old0);
+      return jjStartNfa_2(8, old0, 0L);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_2(9, active0);
+      jjStopStringLiteralDfa_2(9, active0, 0L);
       return 10;
    }
    switch(curChar)
@@ -1128,33 +1128,33 @@
       default :
          break;
    }
-   return jjStartNfa_2(9, active0);
+   return jjStartNfa_2(9, active0, 0L);
 }
 private final int jjMoveStringLiteralDfa11_2(long old0, long active0)
 {
    if (((active0 &= old0)) == 0L)
-      return jjStartNfa_2(9, old0);
+      return jjStartNfa_2(9, old0, 0L);
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
-      jjStopStringLiteralDfa_2(10, active0);
+      jjStopStringLiteralDfa_2(10, active0, 0L);
       return 11;
    }
    switch(curChar)
    {
       case 100:
          if ((active0 & 0x100000000000L) != 0L)
-            return jjStartNfaWithStates_2(11, 44, 98);
+            return jjStartNfaWithStates_2(11, 44, 102);
          break;
       default :
          break;
    }
-   return jjStartNfa_2(10, active0);
+   return jjStartNfa_2(10, active0, 0L);
 }
 private final int jjMoveNfa_2(int startState, int curPos)
 {
    int[] nextStates;
    int startsAt = 0;
-   jjnewStateCnt = 98;
+   jjnewStateCnt = 102;
    int i = 1;
    jjstateSet[0] = startState;
    int j, kind = 0x7fffffff;
@@ -1169,35 +1169,39 @@
          {
             switch(jjstateSet[--i])
             {
-               case 98:
+               case 0:
                   if ((0x3ff041000000000L & l) != 0L)
                   {
-                     if (kind > 55)
-                        kind = 55;
-                     jjCheckNAdd(97);
+                     if (kind > 56)
+                        kind = 56;
+                     jjCheckNAddStates(3, 9);
                   }
+                  if (curChar == 36)
+                     jjAddStates(10, 13);
+                  break;
+               case 102:
+                  if ((0x3ff041000000000L & l) != 0L)
+                  {
+                     if (kind > 56)
+                        kind = 56;
+                     jjCheckNAdd(101);
+                  }
                   else if (curChar == 46)
+                     jjCheckNAddTwoStates(96, 97);
+                  if ((0x3ff041000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(98, 100);
+                  else if (curChar == 46)
                      jjCheckNAdd(91);
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddTwoStates(94, 96);
+                     jjCheckNAddTwoStates(94, 95);
                   if ((0x3ff041000000000L & l) != 0L)
                      jjCheckNAddTwoStates(89, 90);
                   break;
-               case 0:
-                  if ((0x3ff041000000000L & l) != 0L)
-                  {
-                     if (kind > 55)
-                        kind = 55;
-                     jjCheckNAddStates(3, 7);
-                  }
-                  if (curChar == 36)
-                     jjAddStates(8, 11);
-                  break;
                case 1:
                   if ((0x3ff041000000000L & l) == 0L)
                      break;
-                  if (kind > 52)
-                     kind = 52;
+                  if (kind > 53)
+                     kind = 53;
                   jjCheckNAddTwoStates(1, 2);
                   break;
                case 2:
@@ -1207,17 +1211,17 @@
                case 3:
                   if ((0x3ff041000000000L & l) == 0L)
                      break;
-                  if (kind > 52)
-                     kind = 52;
+                  if (kind > 53)
+                     kind = 53;
                   jjCheckNAddTwoStates(2, 3);
                   break;
                case 4:
                   if (curChar == 36)
-                     jjAddStates(8, 11);
+                     jjAddStates(10, 13);
                   break;
                case 7:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddStates(12, 14);
+                     jjCheckNAddStates(14, 16);
                   break;
                case 8:
                   if (curChar == 46)
@@ -1225,11 +1229,11 @@
                   break;
                case 9:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddStates(15, 17);
+                     jjCheckNAddStates(17, 19);
                   break;
                case 11:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddStates(18, 21);
+                     jjCheckNAddStates(20, 23);
                   break;
                case 12:
                   if ((0x3ff041000000000L & l) != 0L)
@@ -1245,11 +1249,11 @@
                   break;
                case 15:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddStates(22, 25);
+                     jjCheckNAddStates(24, 27);
                   break;
                case 29:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjCheckNAddStates(26, 28);
+                     jjCheckNAddStates(28, 30);
                   break;
                case 30:
                   if (curChar == 46)
@@ -1257,11 +1261,11 @@
                   break;
                case 31:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjCheckNAddStates(29, 31);
+                     jjCheckNAddStates(31, 33);
                   break;
                case 42:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddStates(32, 34);
+                     jjCheckNAddStates(34, 36);
                   break;
                case 43:
                   if (curChar == 46)
@@ -1269,11 +1273,11 @@
                   break;
                case 44:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddStates(35, 37);
+                     jjCheckNAddStates(37, 39);
                   break;
                case 46:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddStates(38, 41);
+                     jjCheckNAddStates(40, 43);
                   break;
                case 47:
                   if ((0x3ff041000000000L & l) != 0L)
@@ -1289,11 +1293,11 @@
                   break;
                case 50:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddStates(42, 45);
+                     jjCheckNAddStates(44, 47);
                   break;
                case 65:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddStates(46, 48);
+                     jjCheckNAddStates(48, 50);
                   break;
                case 66:
                   if (curChar == 46)
@@ -1301,11 +1305,11 @@
                   break;
                case 67:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddStates(49, 51);
+                     jjCheckNAddStates(51, 53);
                   break;
                case 69:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddStates(52, 55);
+                     jjCheckNAddStates(54, 57);
                   break;
                case 70:
                   if ((0x3ff041000000000L & l) != 0L)
@@ -1321,14 +1325,14 @@
                   break;
                case 73:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddStates(56, 59);
+                     jjCheckNAddStates(58, 61);
                   break;
                case 88:
                   if ((0x3ff041000000000L & l) == 0L)
                      break;
-                  if (kind > 55)
-                     kind = 55;
-                  jjCheckNAddStates(3, 7);
+                  if (kind > 56)
+                     kind = 56;
+                  jjCheckNAddStates(3, 9);
                   break;
                case 89:
                   if ((0x3ff041000000000L & l) != 0L)
@@ -1343,18 +1347,34 @@
                      break;
                   if (kind > 49)
                      kind = 49;
-                  jjCheckNAddStates(60, 62);
+                  jjCheckNAddStates(62, 64);
                   break;
                case 94:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddTwoStates(94, 96);
+                     jjCheckNAddTwoStates(94, 95);
                   break;
+               case 95:
+                  if (curChar == 46)
+                     jjCheckNAddTwoStates(96, 97);
+                  break;
+               case 96:
+                  if ((0x3ff041000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(96, 95);
+                  break;
                case 97:
+                  if (curChar == 46 && kind > 50)
+                     kind = 50;
+                  break;
+               case 98:
+                  if ((0x3ff041000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(98, 100);
+                  break;
+               case 101:
                   if ((0x3ff041000000000L & l) == 0L)
                      break;
-                  if (kind > 55)
-                     kind = 55;
-                  jjCheckNAdd(97);
+                  if (kind > 56)
+                     kind = 56;
+                  jjCheckNAdd(101);
                   break;
                default : break;
             }
@@ -1367,47 +1387,49 @@
          {
             switch(jjstateSet[--i])
             {
-               case 98:
+               case 0:
                   if ((0x7fffffe87fffffeL & l) != 0L)
                   {
-                     if (kind > 55)
-                        kind = 55;
-                     jjCheckNAdd(97);
+                     if (kind > 56)
+                        kind = 56;
+                     jjCheckNAddStates(3, 9);
                   }
+                  else if (curChar == 64)
+                     jjCheckNAdd(1);
+                  break;
+               case 102:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 56)
+                        kind = 56;
+                     jjCheckNAdd(101);
+                  }
                   else if (curChar == 91)
-                     jjstateSet[jjnewStateCnt++] = 95;
+                     jjstateSet[jjnewStateCnt++] = 99;
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddTwoStates(94, 96);
+                     jjCheckNAddTwoStates(98, 100);
                   if ((0x7fffffe87fffffeL & l) != 0L)
+                     jjCheckNAddTwoStates(94, 95);
+                  if ((0x7fffffe87fffffeL & l) != 0L)
                      jjCheckNAddTwoStates(89, 90);
                   break;
-               case 0:
-                  if ((0x7fffffe87fffffeL & l) != 0L)
-                  {
-                     if (kind > 55)
-                        kind = 55;
-                     jjCheckNAddStates(3, 7);
-                  }
-                  else if (curChar == 64)
-                     jjCheckNAdd(1);
-                  break;
                case 1:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
-                  if (kind > 52)
-                     kind = 52;
+                  if (kind > 53)
+                     kind = 53;
                   jjCheckNAddTwoStates(1, 2);
                   break;
                case 3:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
-                  if (kind > 52)
-                     kind = 52;
+                  if (kind > 53)
+                     kind = 53;
                   jjCheckNAddTwoStates(2, 3);
                   break;
                case 5:
                   if (curChar == 123)
-                     jjAddStates(63, 64);
+                     jjAddStates(65, 66);
                   break;
                case 6:
                   if (curChar == 64)
@@ -1415,11 +1437,11 @@
                   break;
                case 7:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(12, 14);
+                     jjCheckNAddStates(14, 16);
                   break;
                case 9:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(15, 17);
+                     jjCheckNAddStates(17, 19);
                   break;
                case 10:
                   if (curChar == 125 && kind > 47)
@@ -1427,7 +1449,7 @@
                   break;
                case 11:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(18, 21);
+                     jjCheckNAddStates(20, 23);
                   break;
                case 12:
                   if ((0x7fffffe87fffffeL & l) != 0L)
@@ -1439,7 +1461,7 @@
                   break;
                case 15:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(22, 25);
+                     jjCheckNAddStates(24, 27);
                   break;
                case 16:
                   if (curChar == 93)
@@ -1495,11 +1517,11 @@
                   break;
                case 29:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(26, 28);
+                     jjCheckNAddStates(28, 30);
                   break;
                case 31:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(29, 31);
+                     jjCheckNAddStates(31, 33);
                   break;
                case 32:
                   if (curChar == 125 && kind > 48)
@@ -1535,7 +1557,7 @@
                   break;
                case 40:
                   if (curChar == 123)
-                     jjAddStates(65, 66);
+                     jjAddStates(67, 68);
                   break;
                case 41:
                   if (curChar == 64)
@@ -1543,19 +1565,19 @@
                   break;
                case 42:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(32, 34);
+                     jjCheckNAddStates(34, 36);
                   break;
                case 44:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(35, 37);
+                     jjCheckNAddStates(37, 39);
                   break;
                case 45:
-                  if (curChar == 125 && kind > 53)
-                     kind = 53;
+                  if (curChar == 125 && kind > 54)
+                     kind = 54;
                   break;
                case 46:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(38, 41);
+                     jjCheckNAddStates(40, 43);
                   break;
                case 47:
                   if ((0x7fffffe87fffffeL & l) != 0L)
@@ -1567,7 +1589,7 @@
                   break;
                case 50:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(42, 45);
+                     jjCheckNAddStates(44, 47);
                   break;
                case 51:
                   if (curChar == 93)
@@ -1619,7 +1641,7 @@
                   break;
                case 63:
                   if (curChar == 123)
-                     jjAddStates(67, 68);
+                     jjAddStates(69, 70);
                   break;
                case 64:
                   if (curChar == 64)
@@ -1627,19 +1649,19 @@
                   break;
                case 65:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(46, 48);
+                     jjCheckNAddStates(48, 50);
                   break;
                case 67:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(49, 51);
+                     jjCheckNAddStates(51, 53);
                   break;
                case 68:
-                  if (curChar == 125 && kind > 54)
-                     kind = 54;
+                  if (curChar == 125 && kind > 55)
+                     kind = 55;
                   break;
                case 69:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(52, 55);
+                     jjCheckNAddStates(54, 57);
                   break;
                case 70:
                   if ((0x7fffffe87fffffeL & l) != 0L)
@@ -1651,7 +1673,7 @@
                   break;
                case 73:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(56, 59);
+                     jjCheckNAddStates(58, 61);
                   break;
                case 74:
                   if (curChar == 93)
@@ -1712,9 +1734,9 @@
                case 88:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
-                  if (kind > 55)
-                     kind = 55;
-                  jjCheckNAddStates(3, 7);
+                  if (kind > 56)
+                     kind = 56;
+                  jjCheckNAddStates(3, 9);
                   break;
                case 89:
                   if ((0x7fffffe87fffffeL & l) != 0L)
@@ -1725,7 +1747,7 @@
                      break;
                   if (kind > 49)
                      kind = 49;
-                  jjCheckNAddStates(60, 62);
+                  jjCheckNAddStates(62, 64);
                   break;
                case 92:
                   if (curChar != 93)
@@ -1740,25 +1762,33 @@
                   break;
                case 94:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddTwoStates(94, 96);
+                     jjCheckNAddTwoStates(94, 95);
                   break;
-               case 95:
+               case 96:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                     jjCheckNAddTwoStates(96, 95);
+                  break;
+               case 98:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                     jjCheckNAddTwoStates(98, 100);
+                  break;
+               case 99:
                   if (curChar != 93)
                      break;
-                  if (kind > 51)
-                     kind = 51;
-                  jjCheckNAdd(96);
+                  if (kind > 52)
+                     kind = 52;
+                  jjCheckNAdd(100);
                   break;
-               case 96:
+               case 100:
                   if (curChar == 91)
-                     jjstateSet[jjnewStateCnt++] = 95;
+                     jjstateSet[jjnewStateCnt++] = 99;
                   break;
-               case 97:
+               case 101:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
-                  if (kind > 55)
-                     kind = 55;
-                  jjCheckNAdd(97);
+                  if (kind > 56)
+                     kind = 56;
+                  jjCheckNAdd(101);
                   break;
                default : break;
             }
@@ -1783,7 +1813,7 @@
          kind = 0x7fffffff;
       }
       ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 98 - (jjnewStateCnt = startsAt)))
+      if ((i = jjnewStateCnt) == (startsAt = 102 - (jjnewStateCnt = startsAt)))
          return curPos;
       try { curChar = input_stream.readChar(); }
       catch(java.io.IOException e) { return curPos; }
@@ -1865,14 +1895,17 @@
                   {
                      if (kind > 29)
                         kind = 29;
-                     jjCheckNAddStates(69, 73);
+                     jjCheckNAddStates(71, 75);
                   }
                   if (curChar == 36)
-                     jjAddStates(74, 75);
+                     jjAddStates(76, 77);
                   break;
                case 1:
-                  if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddTwoStates(1, 2);
+                  if ((0x3ff041000000000L & l) == 0L)
+                     break;
+                  if (kind > 26)
+                     kind = 26;
+                  jjCheckNAddTwoStates(1, 2);
                   break;
                case 2:
                   if (curChar == 46)
@@ -1890,7 +1923,7 @@
                      break;
                   if (kind > 29)
                      kind = 29;
-                  jjCheckNAddStates(69, 73);
+                  jjCheckNAddStates(71, 75);
                   break;
                case 5:
                   if ((0x3ff041000000000L & l) != 0L)
@@ -1920,11 +1953,11 @@
                   break;
                case 14:
                   if (curChar == 36)
-                     jjAddStates(74, 75);
+                     jjAddStates(76, 77);
                   break;
                case 17:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddTwoStates(17, 18);
+                     jjCheckNAddStates(78, 80);
                   break;
                case 18:
                   if (curChar == 46)
@@ -1932,11 +1965,11 @@
                   break;
                case 19:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddStates(76, 78);
+                     jjCheckNAddStates(81, 83);
                   break;
                case 21:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddStates(79, 82);
+                     jjCheckNAddStates(84, 87);
                   break;
                case 22:
                   if ((0x3ff041000000000L & l) != 0L)
@@ -1952,11 +1985,11 @@
                   break;
                case 25:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddStates(83, 86);
+                     jjCheckNAddStates(88, 91);
                   break;
                case 39:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjCheckNAddStates(87, 89);
+                     jjCheckNAddStates(92, 94);
                   break;
                case 40:
                   if (curChar == 46)
@@ -1964,7 +1997,7 @@
                   break;
                case 41:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjCheckNAddStates(90, 92);
+                     jjCheckNAddStates(95, 97);
                   break;
                default : break;
             }
@@ -1982,14 +2015,17 @@
                   {
                      if (kind > 29)
                         kind = 29;
-                     jjCheckNAddStates(69, 73);
+                     jjCheckNAddStates(71, 75);
                   }
                   else if (curChar == 64)
                      jjCheckNAdd(1);
                   break;
                case 1:
-                  if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddTwoStates(1, 2);
+                  if ((0x7fffffe87fffffeL & l) == 0L)
+                     break;
+                  if (kind > 26)
+                     kind = 26;
+                  jjCheckNAddTwoStates(1, 2);
                   break;
                case 3:
                   if ((0x7fffffe87fffffeL & l) == 0L)
@@ -2003,7 +2039,7 @@
                      break;
                   if (kind > 29)
                      kind = 29;
-                  jjCheckNAddStates(69, 73);
+                  jjCheckNAddStates(71, 75);
                   break;
                case 5:
                   if ((0x7fffffe87fffffeL & l) != 0L)
@@ -2051,7 +2087,7 @@
                   break;
                case 15:
                   if (curChar == 123)
-                     jjAddStates(93, 94);
+                     jjAddStates(98, 99);
                   break;
                case 16:
                   if (curChar == 64)
@@ -2059,11 +2095,11 @@
                   break;
                case 17:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddTwoStates(17, 18);
+                     jjCheckNAddStates(78, 80);
                   break;
                case 19:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(76, 78);
+                     jjCheckNAddStates(81, 83);
                   break;
                case 20:
                   if (curChar == 125 && kind > 27)
@@ -2071,7 +2107,7 @@
                   break;
                case 21:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(79, 82);
+                     jjCheckNAddStates(84, 87);
                   break;
                case 22:
                   if ((0x7fffffe87fffffeL & l) != 0L)
@@ -2083,7 +2119,7 @@
                   break;
                case 25:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(83, 86);
+                     jjCheckNAddStates(88, 91);
                   break;
                case 26:
                   if (curChar == 93)
@@ -2139,11 +2175,11 @@
                   break;
                case 39:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(87, 89);
+                     jjCheckNAddStates(92, 94);
                   break;
                case 41:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(90, 92);
+                     jjCheckNAddStates(95, 97);
                   break;
                case 42:
                   if (curChar == 125 && kind > 28)
@@ -2211,100 +2247,100 @@
    switch (pos)
    {
       case 0:
-         if ((active1 & 0x3feL) != 0L)
+         if ((active1 & 0x7fcL) != 0L)
          {
-            jjmatchedKind = 79;
-            return 50;
+            jjmatchedKind = 81;
+            return 54;
          }
          return -1;
       case 1:
-         if ((active1 & 0x3feL) != 0L)
+         if ((active1 & 0x7fcL) != 0L)
          {
-            jjmatchedKind = 79;
+            jjmatchedKind = 81;
             jjmatchedPos = 1;
-            return 50;
+            return 54;
          }
          return -1;
       case 2:
-         if ((active1 & 0x3feL) != 0L)
+         if ((active1 & 0x7fcL) != 0L)
          {
-            jjmatchedKind = 79;
+            jjmatchedKind = 81;
             jjmatchedPos = 2;
-            return 50;
+            return 54;
          }
          return -1;
       case 3:
-         if ((active1 & 0x3feL) != 0L)
+         if ((active1 & 0x7fcL) != 0L)
          {
-            jjmatchedKind = 79;
+            jjmatchedKind = 81;
             jjmatchedPos = 3;
-            return 50;
+            return 54;
          }
          return -1;
       case 4:
-         if ((active1 & 0x3faL) != 0L)
+         if ((active1 & 0x7f4L) != 0L)
          {
-            jjmatchedKind = 79;
+            jjmatchedKind = 81;
             jjmatchedPos = 4;
-            return 50;
+            return 54;
          }
-         if ((active1 & 0x4L) != 0L)
-            return 50;
+         if ((active1 & 0x8L) != 0L)
+            return 54;
          return -1;
       case 5:
-         if ((active1 & 0x160L) != 0L)
-            return 50;
-         if ((active1 & 0x29aL) != 0L)
+         if ((active1 & 0x534L) != 0L)
          {
-            jjmatchedKind = 79;
+            jjmatchedKind = 81;
             jjmatchedPos = 5;
-            return 50;
+            return 54;
          }
+         if ((active1 & 0x2c0L) != 0L)
+            return 54;
          return -1;
       case 6:
-         if ((active1 & 0x292L) != 0L)
+         if ((active1 & 0x10L) != 0L)
+            return 54;
+         if ((active1 & 0x524L) != 0L)
          {
-            jjmatchedKind = 79;
+            jjmatchedKind = 81;
             jjmatchedPos = 6;
-            return 50;
+            return 54;
          }
-         if ((active1 & 0x8L) != 0L)
-            return 50;
          return -1;
       case 7:
-         if ((active1 & 0x2L) != 0L)
-            return 50;
-         if ((active1 & 0x290L) != 0L)
+         if ((active1 & 0x520L) != 0L)
          {
-            jjmatchedKind = 79;
+            jjmatchedKind = 81;
             jjmatchedPos = 7;
-            return 50;
+            return 54;
          }
+         if ((active1 & 0x4L) != 0L)
+            return 54;
          return -1;
       case 8:
-         if ((active1 & 0x200L) != 0L)
+         if ((active1 & 0x400L) != 0L)
          {
-            jjmatchedKind = 79;
+            jjmatchedKind = 81;
             jjmatchedPos = 8;
-            return 50;
+            return 54;
          }
-         if ((active1 & 0x90L) != 0L)
-            return 50;
+         if ((active1 & 0x120L) != 0L)
+            return 54;
          return -1;
       case 9:
-         if ((active1 & 0x200L) != 0L)
+         if ((active1 & 0x400L) != 0L)
          {
-            jjmatchedKind = 79;
+            jjmatchedKind = 81;
             jjmatchedPos = 9;
-            return 50;
+            return 54;
          }
          return -1;
       case 10:
-         if ((active1 & 0x200L) != 0L)
+         if ((active1 & 0x400L) != 0L)
          {
-            jjmatchedKind = 79;
+            jjmatchedKind = 81;
             jjmatchedPos = 10;
-            return 50;
+            return 54;
          }
          return -1;
       default :
@@ -2328,23 +2364,23 @@
    switch(curChar)
    {
       case 33:
-         return jjStopAtPos(0, 84);
+         return jjStopAtPos(0, 86);
       case 41:
-         return jjStopAtPos(0, 85);
+         return jjStopAtPos(0, 87);
       case 45:
-         return jjMoveStringLiteralDfa1_3(0x80000L);
+         return jjMoveStringLiteralDfa1_3(0x200000L);
       case 97:
-         return jjMoveStringLiteralDfa1_3(0x2L);
+         return jjMoveStringLiteralDfa1_3(0x4L);
       case 102:
-         return jjMoveStringLiteralDfa1_3(0x4L);
+         return jjMoveStringLiteralDfa1_3(0x8L);
       case 110:
-         return jjMoveStringLiteralDfa1_3(0x100L);
+         return jjMoveStringLiteralDfa1_3(0x200L);
       case 112:
-         return jjMoveStringLiteralDfa1_3(0x38L);
+         return jjMoveStringLiteralDfa1_3(0x70L);
       case 115:
-         return jjMoveStringLiteralDfa1_3(0x240L);
+         return jjMoveStringLiteralDfa1_3(0x480L);
       case 116:
-         return jjMoveStringLiteralDfa1_3(0x80L);
+         return jjMoveStringLiteralDfa1_3(0x100L);
       default :
          return jjMoveNfa_3(0, 0);
    }
@@ -2359,23 +2395,23 @@
    switch(curChar)
    {
       case 62:
-         if ((active1 & 0x80000L) != 0L)
-            return jjStopAtPos(1, 83);
+         if ((active1 & 0x200000L) != 0L)
+            return jjStopAtPos(1, 85);
          break;
       case 97:
-         return jjMoveStringLiteralDfa2_3(active1, 0x100L);
+         return jjMoveStringLiteralDfa2_3(active1, 0x200L);
       case 98:
-         return jjMoveStringLiteralDfa2_3(active1, 0x2L);
+         return jjMoveStringLiteralDfa2_3(active1, 0x4L);
       case 105:
-         return jjMoveStringLiteralDfa2_3(active1, 0x4L);
+         return jjMoveStringLiteralDfa2_3(active1, 0x8L);
       case 114:
-         return jjMoveStringLiteralDfa2_3(active1, 0x98L);
+         return jjMoveStringLiteralDfa2_3(active1, 0x130L);
       case 116:
+         return jjMoveStringLiteralDfa2_3(active1, 0x80L);
+      case 117:
          return jjMoveStringLiteralDfa2_3(active1, 0x40L);
-      case 117:
-         return jjMoveStringLiteralDfa2_3(active1, 0x20L);
       case 121:
-         return jjMoveStringLiteralDfa2_3(active1, 0x200L);
+         return jjMoveStringLiteralDfa2_3(active1, 0x400L);
       default :
          break;
    }
@@ -2384,7 +2420,7 @@
 private final int jjMoveStringLiteralDfa2_3(long old1, long active1)
 {
    if (((active1 &= old1)) == 0L)
-      return jjStartNfa_3(0, 0L, old1);
+      return jjStartNfa_3(0, 0L, old1); 
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_3(1, 0L, active1);
@@ -2393,19 +2429,19 @@
    switch(curChar)
    {
       case 97:
-         return jjMoveStringLiteralDfa3_3(active1, 0xc0L);
+         return jjMoveStringLiteralDfa3_3(active1, 0x180L);
       case 98:
-         return jjMoveStringLiteralDfa3_3(active1, 0x20L);
+         return jjMoveStringLiteralDfa3_3(active1, 0x40L);
       case 105:
-         return jjMoveStringLiteralDfa3_3(active1, 0x8L);
+         return jjMoveStringLiteralDfa3_3(active1, 0x10L);
       case 110:
-         return jjMoveStringLiteralDfa3_3(active1, 0x204L);
+         return jjMoveStringLiteralDfa3_3(active1, 0x408L);
       case 111:
-         return jjMoveStringLiteralDfa3_3(active1, 0x10L);
+         return jjMoveStringLiteralDfa3_3(active1, 0x20L);
       case 115:
-         return jjMoveStringLiteralDfa3_3(active1, 0x2L);
+         return jjMoveStringLiteralDfa3_3(active1, 0x4L);
       case 116:
-         return jjMoveStringLiteralDfa3_3(active1, 0x100L);
+         return jjMoveStringLiteralDfa3_3(active1, 0x200L);
       default :
          break;
    }
@@ -2414,7 +2450,7 @@
 private final int jjMoveStringLiteralDfa3_3(long old1, long active1)
 {
    if (((active1 &= old1)) == 0L)
-      return jjStartNfa_3(1, 0L, old1);
+      return jjStartNfa_3(1, 0L, old1); 
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_3(2, 0L, active1);
@@ -2423,19 +2459,19 @@
    switch(curChar)
    {
       case 97:
-         return jjMoveStringLiteralDfa4_3(active1, 0x4L);
+         return jjMoveStringLiteralDfa4_3(active1, 0x8L);
       case 99:
+         return jjMoveStringLiteralDfa4_3(active1, 0x400L);
+      case 105:
          return jjMoveStringLiteralDfa4_3(active1, 0x200L);
-      case 105:
-         return jjMoveStringLiteralDfa4_3(active1, 0x100L);
       case 108:
-         return jjMoveStringLiteralDfa4_3(active1, 0x20L);
+         return jjMoveStringLiteralDfa4_3(active1, 0x40L);
       case 110:
-         return jjMoveStringLiteralDfa4_3(active1, 0x80L);
+         return jjMoveStringLiteralDfa4_3(active1, 0x100L);
       case 116:
-         return jjMoveStringLiteralDfa4_3(active1, 0x52L);
+         return jjMoveStringLiteralDfa4_3(active1, 0xa4L);
       case 118:
-         return jjMoveStringLiteralDfa4_3(active1, 0x8L);
+         return jjMoveStringLiteralDfa4_3(active1, 0x10L);
       default :
          break;
    }
@@ -2444,7 +2480,7 @@
 private final int jjMoveStringLiteralDfa4_3(long old1, long active1)
 {
    if (((active1 &= old1)) == 0L)
-      return jjStartNfa_3(2, 0L, old1);
+      return jjStartNfa_3(2, 0L, old1); 
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_3(3, 0L, active1);
@@ -2453,23 +2489,23 @@
    switch(curChar)
    {
       case 97:
-         return jjMoveStringLiteralDfa5_3(active1, 0x8L);
+         return jjMoveStringLiteralDfa5_3(active1, 0x10L);
       case 101:
-         return jjMoveStringLiteralDfa5_3(active1, 0x10L);
+         return jjMoveStringLiteralDfa5_3(active1, 0x20L);
       case 104:
-         return jjMoveStringLiteralDfa5_3(active1, 0x200L);
+         return jjMoveStringLiteralDfa5_3(active1, 0x400L);
       case 105:
-         return jjMoveStringLiteralDfa5_3(active1, 0x60L);
+         return jjMoveStringLiteralDfa5_3(active1, 0xc0L);
       case 108:
-         if ((active1 & 0x4L) != 0L)
-            return jjStartNfaWithStates_3(4, 66, 50);
+         if ((active1 & 0x8L) != 0L)
+            return jjStartNfaWithStates_3(4, 67, 54);
          break;
       case 114:
-         return jjMoveStringLiteralDfa5_3(active1, 0x2L);
+         return jjMoveStringLiteralDfa5_3(active1, 0x4L);
       case 115:
-         return jjMoveStringLiteralDfa5_3(active1, 0x80L);
+         return jjMoveStringLiteralDfa5_3(active1, 0x100L);
       case 118:
-         return jjMoveStringLiteralDfa5_3(active1, 0x100L);
+         return jjMoveStringLiteralDfa5_3(active1, 0x200L);
       default :
          break;
    }
@@ -2478,7 +2514,7 @@
 private final int jjMoveStringLiteralDfa5_3(long old1, long active1)
 {
    if (((active1 &= old1)) == 0L)
-      return jjStartNfa_3(3, 0L, old1);
+      return jjStartNfa_3(3, 0L, old1); 
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_3(4, 0L, active1);
@@ -2487,23 +2523,23 @@
    switch(curChar)
    {
       case 97:
-         return jjMoveStringLiteralDfa6_3(active1, 0x2L);
+         return jjMoveStringLiteralDfa6_3(active1, 0x4L);
       case 99:
-         if ((active1 & 0x20L) != 0L)
-            return jjStartNfaWithStates_3(5, 69, 50);
-         else if ((active1 & 0x40L) != 0L)
-            return jjStartNfaWithStates_3(5, 70, 50);
-         return jjMoveStringLiteralDfa6_3(active1, 0x10L);
+         if ((active1 & 0x40L) != 0L)
+            return jjStartNfaWithStates_3(5, 70, 54);
+         else if ((active1 & 0x80L) != 0L)
+            return jjStartNfaWithStates_3(5, 71, 54);
+         return jjMoveStringLiteralDfa6_3(active1, 0x20L);
       case 101:
-         if ((active1 & 0x100L) != 0L)
-            return jjStartNfaWithStates_3(5, 72, 50);
+         if ((active1 & 0x200L) != 0L)
+            return jjStartNfaWithStates_3(5, 73, 54);
          break;
       case 105:
-         return jjMoveStringLiteralDfa6_3(active1, 0x80L);
+         return jjMoveStringLiteralDfa6_3(active1, 0x100L);
       case 114:
-         return jjMoveStringLiteralDfa6_3(active1, 0x200L);
+         return jjMoveStringLiteralDfa6_3(active1, 0x400L);
       case 116:
-         return jjMoveStringLiteralDfa6_3(active1, 0x8L);
+         return jjMoveStringLiteralDfa6_3(active1, 0x10L);
       default :
          break;
    }
@@ -2512,7 +2548,7 @@
 private final int jjMoveStringLiteralDfa6_3(long old1, long active1)
 {
    if (((active1 &= old1)) == 0L)
-      return jjStartNfa_3(4, 0L, old1);
+      return jjStartNfa_3(4, 0L, old1); 
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_3(5, 0L, active1);
@@ -2521,15 +2557,15 @@
    switch(curChar)
    {
       case 99:
-         return jjMoveStringLiteralDfa7_3(active1, 0x2L);
+         return jjMoveStringLiteralDfa7_3(active1, 0x4L);
       case 101:
-         if ((active1 & 0x8L) != 0L)
-            return jjStartNfaWithStates_3(6, 67, 50);
-         return jjMoveStringLiteralDfa7_3(active1, 0x80L);
+         if ((active1 & 0x10L) != 0L)
+            return jjStartNfaWithStates_3(6, 68, 54);
+         return jjMoveStringLiteralDfa7_3(active1, 0x100L);
       case 111:
-         return jjMoveStringLiteralDfa7_3(active1, 0x200L);
+         return jjMoveStringLiteralDfa7_3(active1, 0x400L);
       case 116:
-         return jjMoveStringLiteralDfa7_3(active1, 0x10L);
+         return jjMoveStringLiteralDfa7_3(active1, 0x20L);
       default :
          break;
    }
@@ -2538,7 +2574,7 @@
 private final int jjMoveStringLiteralDfa7_3(long old1, long active1)
 {
    if (((active1 &= old1)) == 0L)
-      return jjStartNfa_3(5, 0L, old1);
+      return jjStartNfa_3(5, 0L, old1); 
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_3(6, 0L, active1);
@@ -2547,12 +2583,12 @@
    switch(curChar)
    {
       case 101:
-         return jjMoveStringLiteralDfa8_3(active1, 0x10L);
+         return jjMoveStringLiteralDfa8_3(active1, 0x20L);
       case 110:
-         return jjMoveStringLiteralDfa8_3(active1, 0x280L);
+         return jjMoveStringLiteralDfa8_3(active1, 0x500L);
       case 116:
-         if ((active1 & 0x2L) != 0L)
-            return jjStartNfaWithStates_3(7, 65, 50);
+         if ((active1 & 0x4L) != 0L)
+            return jjStartNfaWithStates_3(7, 66, 54);
          break;
       default :
          break;
@@ -2562,7 +2598,7 @@
 private final int jjMoveStringLiteralDfa8_3(long old1, long active1)
 {
    if (((active1 &= old1)) == 0L)
-      return jjStartNfa_3(6, 0L, old1);
+      return jjStartNfa_3(6, 0L, old1); 
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_3(7, 0L, active1);
@@ -2571,14 +2607,14 @@
    switch(curChar)
    {
       case 100:
-         if ((active1 & 0x10L) != 0L)
-            return jjStartNfaWithStates_3(8, 68, 50);
+         if ((active1 & 0x20L) != 0L)
+            return jjStartNfaWithStates_3(8, 69, 54);
          break;
       case 105:
-         return jjMoveStringLiteralDfa9_3(active1, 0x200L);
+         return jjMoveStringLiteralDfa9_3(active1, 0x400L);
       case 116:
-         if ((active1 & 0x80L) != 0L)
-            return jjStartNfaWithStates_3(8, 71, 50);
+         if ((active1 & 0x100L) != 0L)
+            return jjStartNfaWithStates_3(8, 72, 54);
          break;
       default :
          break;
@@ -2588,7 +2624,7 @@
 private final int jjMoveStringLiteralDfa9_3(long old1, long active1)
 {
    if (((active1 &= old1)) == 0L)
-      return jjStartNfa_3(7, 0L, old1);
+      return jjStartNfa_3(7, 0L, old1); 
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_3(8, 0L, active1);
@@ -2597,7 +2633,7 @@
    switch(curChar)
    {
       case 122:
-         return jjMoveStringLiteralDfa10_3(active1, 0x200L);
+         return jjMoveStringLiteralDfa10_3(active1, 0x400L);
       default :
          break;
    }
@@ -2606,7 +2642,7 @@
 private final int jjMoveStringLiteralDfa10_3(long old1, long active1)
 {
    if (((active1 &= old1)) == 0L)
-      return jjStartNfa_3(8, 0L, old1);
+      return jjStartNfa_3(8, 0L, old1); 
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_3(9, 0L, active1);
@@ -2615,7 +2651,7 @@
    switch(curChar)
    {
       case 101:
-         return jjMoveStringLiteralDfa11_3(active1, 0x200L);
+         return jjMoveStringLiteralDfa11_3(active1, 0x400L);
       default :
          break;
    }
@@ -2624,7 +2660,7 @@
 private final int jjMoveStringLiteralDfa11_3(long old1, long active1)
 {
    if (((active1 &= old1)) == 0L)
-      return jjStartNfa_3(9, 0L, old1);
+      return jjStartNfa_3(9, 0L, old1); 
    try { curChar = input_stream.readChar(); }
    catch(java.io.IOException e) {
       jjStopStringLiteralDfa_3(10, 0L, active1);
@@ -2633,8 +2669,8 @@
    switch(curChar)
    {
       case 100:
-         if ((active1 & 0x200L) != 0L)
-            return jjStartNfaWithStates_3(11, 73, 50);
+         if ((active1 & 0x400L) != 0L)
+            return jjStartNfaWithStates_3(11, 74, 54);
          break;
       default :
          break;
@@ -2645,7 +2681,7 @@
 {
    int[] nextStates;
    int startsAt = 0;
-   jjnewStateCnt = 50;
+   jjnewStateCnt = 54;
    int i = 1;
    jjstateSet[0] = startState;
    int j, kind = 0x7fffffff;
@@ -2660,35 +2696,39 @@
          {
             switch(jjstateSet[--i])
             {
-               case 0:
+               case 54:
                   if ((0x3ff041000000000L & l) != 0L)
                   {
-                     if (kind > 79)
-                        kind = 79;
-                     jjCheckNAddStates(95, 99);
+                     if (kind > 81)
+                        kind = 81;
+                     jjCheckNAdd(53);
                   }
-                  if (curChar == 36)
-                     jjAddStates(100, 101);
-                  break;
-               case 50:
+                  else if (curChar == 46)
+                     jjCheckNAddTwoStates(48, 49);
                   if ((0x3ff041000000000L & l) != 0L)
-                  {
-                     if (kind > 79)
-                        kind = 79;
-                     jjCheckNAdd(49);
-                  }
+                     jjCheckNAddTwoStates(50, 52);
                   else if (curChar == 46)
                      jjCheckNAdd(43);
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddTwoStates(46, 48);
+                     jjCheckNAddTwoStates(46, 47);
                   if ((0x3ff041000000000L & l) != 0L)
                      jjCheckNAddTwoStates(41, 42);
                   break;
+               case 0:
+                  if ((0x3ff041000000000L & l) != 0L)
+                  {
+                     if (kind > 81)
+                        kind = 81;
+                     jjCheckNAddStates(100, 106);
+                  }
+                  if (curChar == 36)
+                     jjAddStates(107, 108);
+                  break;
                case 1:
                   if ((0x3ff041000000000L & l) == 0L)
                      break;
-                  if (kind > 78)
-                     kind = 78;
+                  if (kind > 80)
+                     kind = 80;
                   jjCheckNAddTwoStates(1, 2);
                   break;
                case 2:
@@ -2698,17 +2738,17 @@
                case 3:
                   if ((0x3ff041000000000L & l) == 0L)
                      break;
-                  if (kind > 78)
-                     kind = 78;
+                  if (kind > 80)
+                     kind = 80;
                   jjCheckNAddTwoStates(2, 3);
                   break;
                case 4:
                   if (curChar == 36)
-                     jjAddStates(100, 101);
+                     jjAddStates(107, 108);
                   break;
                case 7:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddStates(12, 14);
+                     jjCheckNAddStates(14, 16);
                   break;
                case 8:
                   if (curChar == 46)
@@ -2716,11 +2756,11 @@
                   break;
                case 9:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddStates(15, 17);
+                     jjCheckNAddStates(17, 19);
                   break;
                case 11:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddStates(18, 21);
+                     jjCheckNAddStates(20, 23);
                   break;
                case 12:
                   if ((0x3ff041000000000L & l) != 0L)
@@ -2736,11 +2776,11 @@
                   break;
                case 15:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddStates(22, 25);
+                     jjCheckNAddStates(24, 27);
                   break;
                case 29:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjCheckNAddStates(26, 28);
+                     jjCheckNAddStates(28, 30);
                   break;
                case 30:
                   if (curChar == 46)
@@ -2748,14 +2788,14 @@
                   break;
                case 31:
                   if ((0x3ff000000000000L & l) != 0L)
-                     jjCheckNAddStates(29, 31);
+                     jjCheckNAddStates(31, 33);
                   break;
                case 40:
                   if ((0x3ff041000000000L & l) == 0L)
                      break;
-                  if (kind > 79)
-                     kind = 79;
-                  jjCheckNAddStates(95, 99);
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(100, 106);
                   break;
                case 41:
                   if ((0x3ff041000000000L & l) != 0L)
@@ -2768,20 +2808,36 @@
                case 43:
                   if ((0x3ff041000000000L & l) == 0L)
                      break;
-                  if (kind > 76)
-                     kind = 76;
-                  jjCheckNAddStates(32, 34);
+                  if (kind > 77)
+                     kind = 77;
+                  jjCheckNAddStates(34, 36);
                   break;
                case 46:
                   if ((0x3ff041000000000L & l) != 0L)
-                     jjCheckNAddTwoStates(46, 48);
+                     jjCheckNAddTwoStates(46, 47);
                   break;
+               case 47:
+                  if (curChar == 46)
+                     jjCheckNAddTwoStates(48, 49);
+                  break;
+               case 48:
+                  if ((0x3ff041000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(48, 47);
+                  break;
                case 49:
+                  if (curChar == 46 && kind > 78)
+                     kind = 78;
+                  break;
+               case 50:
+                  if ((0x3ff041000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(50, 52);
+                  break;
+               case 53:
                   if ((0x3ff041000000000L & l) == 0L)
                      break;
-                  if (kind > 79)
-                     kind = 79;
-                  jjCheckNAdd(49);
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAdd(53);
                   break;
                default : break;
             }
@@ -2794,47 +2850,49 @@
          {
             switch(jjstateSet[--i])
             {
-               case 0:
+               case 54:
                   if ((0x7fffffe87fffffeL & l) != 0L)
                   {
-                     if (kind > 79)
-                        kind = 79;
-                     jjCheckNAddStates(95, 99);
+                     if (kind > 81)
+                        kind = 81;
+                     jjCheckNAdd(53);
                   }
-                  else if (curChar == 64)
-                     jjCheckNAdd(1);
-                  break;
-               case 50:
-                  if ((0x7fffffe87fffffeL & l) != 0L)
-                  {
-                     if (kind > 79)
-                        kind = 79;
-                     jjCheckNAdd(49);
-                  }
                   else if (curChar == 91)
-                     jjstateSet[jjnewStateCnt++] = 47;
+                     jjstateSet[jjnewStateCnt++] = 51;
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddTwoStates(46, 48);
+                     jjCheckNAddTwoStates(50, 52);
                   if ((0x7fffffe87fffffeL & l) != 0L)
+                     jjCheckNAddTwoStates(46, 47);
+                  if ((0x7fffffe87fffffeL & l) != 0L)
                      jjCheckNAddTwoStates(41, 42);
                   break;
+               case 0:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                  {
+                     if (kind > 81)
+                        kind = 81;
+                     jjCheckNAddStates(100, 106);
+                  }
+                  else if (curChar == 64)
+                     jjCheckNAdd(1);
+                  break;
                case 1:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
-                  if (kind > 78)
-                     kind = 78;
+                  if (kind > 80)
+                     kind = 80;
                   jjCheckNAddTwoStates(1, 2);
                   break;
                case 3:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
-                  if (kind > 78)
-                     kind = 78;
+                  if (kind > 80)
+                     kind = 80;
                   jjCheckNAddTwoStates(2, 3);
                   break;
                case 5:
                   if (curChar == 123)
-                     jjAddStates(63, 64);
+                     jjAddStates(65, 66);
                   break;
                case 6:
                   if (curChar == 64)
@@ -2842,19 +2900,19 @@
                   break;
                case 7:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(12, 14);
+                     jjCheckNAddStates(14, 16);
                   break;
                case 9:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(15, 17);
+                     jjCheckNAddStates(17, 19);
                   break;
                case 10:
-                  if (curChar == 125 && kind > 74)
-                     kind = 74;
+                  if (curChar == 125 && kind > 75)
+                     kind = 75;
                   break;
                case 11:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(18, 21);
+                     jjCheckNAddStates(20, 23);
                   break;
                case 12:
                   if ((0x7fffffe87fffffeL & l) != 0L)
@@ -2866,7 +2924,7 @@
                   break;
                case 15:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(22, 25);
+                     jjCheckNAddStates(24, 27);
                   break;
                case 16:
                   if (curChar == 93)
@@ -2922,15 +2980,15 @@
                   break;
                case 29:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(26, 28);
+                     jjCheckNAddStates(28, 30);
                   break;
                case 31:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddStates(29, 31);
+                     jjCheckNAddStates(31, 33);
                   break;
                case 32:
-                  if (curChar == 125 && kind > 75)
-                     kind = 75;
+                  if (curChar == 125 && kind > 76)
+                     kind = 76;
                   break;
                case 33:
                   if (curChar == 102)
@@ -2963,9 +3021,9 @@
                case 40:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
-                  if (kind > 79)
-                     kind = 79;
-                  jjCheckNAddStates(95, 99);
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAddStates(100, 106);
                   break;
                case 41:
                   if ((0x7fffffe87fffffeL & l) != 0L)
@@ -2974,15 +3032,15 @@
                case 43:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
-                  if (kind > 76)
-                     kind = 76;
-                  jjCheckNAddStates(32, 34);
+                  if (kind > 77)
+                     kind = 77;
+                  jjCheckNAddStates(34, 36);
                   break;
                case 44:
                   if (curChar != 93)
                      break;
-                  if (kind > 76)
-                     kind = 76;
+                  if (kind > 77)
+                     kind = 77;
                   jjCheckNAdd(45);
                   break;
                case 45:
@@ -2991,25 +3049,33 @@
                   break;
                case 46:
                   if ((0x7fffffe87fffffeL & l) != 0L)
-                     jjCheckNAddTwoStates(46, 48);
+                     jjCheckNAddTwoStates(46, 47);
                   break;
-               case 47:
+               case 48:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                     jjCheckNAddTwoStates(48, 47);
+                  break;
+               case 50:
+                  if ((0x7fffffe87fffffeL & l) != 0L)
+                     jjCheckNAddTwoStates(50, 52);
+                  break;
+               case 51:
                   if (curChar != 93)
                      break;
-                  if (kind > 77)
-                     kind = 77;
-                  jjCheckNAdd(48);
+                  if (kind > 79)
+                     kind = 79;
+                  jjCheckNAdd(52);
                   break;
-               case 48:
+               case 52:
                   if (curChar == 91)
-                     jjstateSet[jjnewStateCnt++] = 47;
+                     jjstateSet[jjnewStateCnt++] = 51;
                   break;
-               case 49:
+               case 53:
                   if ((0x7fffffe87fffffeL & l) == 0L)
                      break;
-                  if (kind > 79)
-                     kind = 79;
-                  jjCheckNAdd(49);
+                  if (kind > 81)
+                     kind = 81;
+                  jjCheckNAdd(53);
                   break;
                default : break;
             }
@@ -3034,58 +3100,58 @@
          kind = 0x7fffffff;
       }
       ++curPos;
-      if ((i = jjnewStateCnt) == (startsAt = 50 - (jjnewStateCnt = startsAt)))
+      if ((i = jjnewStateCnt) == (startsAt = 54 - (jjnewStateCnt = startsAt)))
          return curPos;
       try { curChar = input_stream.readChar(); }
       catch(java.io.IOException e) { return curPos; }
    }
 }
 static final int[] jjnextStates = {
-   6, 7, 9, 89, 90, 94, 96, 97, 27, 39, 62, 87, 7, 8, 10, 8,
-   9, 10, 12, 13, 14, 10, 14, 15, 17, 10, 29, 30, 32, 30, 31, 32,
-   42, 43, 45, 43, 44, 45, 47, 48, 49, 45, 49, 50, 52, 45, 65, 66,
-   68, 66, 67, 68, 70, 71, 72, 68, 72, 73, 75, 68, 90, 91, 93, 6,
-   11, 41, 46, 64, 69, 5, 6, 10, 12, 13, 37, 49, 18, 19, 20, 22,
-   23, 24, 20, 24, 25, 27, 20, 39, 40, 42, 40, 41, 42, 16, 21, 41,
-   42, 46, 48, 49, 27, 39,
+   6, 7, 9, 89, 90, 94, 98, 100, 101, 95, 27, 39, 62, 87, 7, 8, 
+   10, 8, 9, 10, 12, 13, 14, 10, 14, 15, 17, 10, 29, 30, 32, 30, 
+   31, 32, 42, 43, 45, 43, 44, 45, 47, 48, 49, 45, 49, 50, 52, 45, 
+   65, 66, 68, 66, 67, 68, 70, 71, 72, 68, 72, 73, 75, 68, 90, 91, 
+   93, 6, 11, 41, 46, 64, 69, 5, 6, 10, 12, 13, 37, 49, 17, 18, 
+   20, 18, 19, 20, 22, 23, 24, 20, 24, 25, 27, 20, 39, 40, 42, 40, 
+   41, 42, 16, 21, 41, 42, 46, 50, 52, 53, 47, 27, 39, 
 };
 public static final String[] jjstrLiteralImages = {
-"", null, null, null, null, "\143\141\154\154\50", "\141\154\154\50",
-"\145\170\145\143\165\164\151\157\156\50", "\143\157\156\163\164\162\165\143\164\151\157\156\50", "\150\141\163\50",
-"\150\141\163\146\151\145\154\144\50", "\147\145\164\50", "\163\145\164\50", "\146\151\145\154\144\50",
-"\167\151\164\150\151\156\50", "\167\151\164\150\151\156\143\157\144\145\50", null, null, null, null, "\41",
-null, null, "\56\56", null, null, null, null, null, null, "\54", null, null, null,
-"\51", null, null, "\141\142\163\164\162\141\143\164", "\146\151\156\141\154",
-"\160\162\151\166\141\164\145", "\160\162\157\164\145\143\164\145\144", "\160\165\142\154\151\143",
-"\163\164\141\164\151\143", "\156\141\164\151\166\145",
-"\163\171\156\143\150\162\157\156\151\172\145\144", "\156\145\167", "\164\150\162\157\167\163", null, null, null, "\54", null,
-null, null, null, null, null, null, null, "\55\76", "\41", "\50", "\51", null, null,
-"\141\142\163\164\162\141\143\164", "\146\151\156\141\154", "\160\162\151\166\141\164\145",
-"\160\162\157\164\145\143\164\145\144", "\160\165\142\154\151\143", "\163\164\141\164\151\143",
-"\164\162\141\156\163\151\145\156\164", "\156\141\164\151\166\145",
-"\163\171\156\143\150\162\157\156\151\172\145\144", null, null, null, null, null, null, null, null, null, "\55\76", "\41", "\51",
-"\50", "\51", };
+"", null, null, null, null, "\143\141\154\154\50", "\141\154\154\50", 
+"\145\170\145\143\165\164\151\157\156\50", "\143\157\156\163\164\162\165\143\164\151\157\156\50", "\150\141\163\50", 
+"\150\141\163\146\151\145\154\144\50", "\147\145\164\50", "\163\145\164\50", "\146\151\145\154\144\50", 
+"\167\151\164\150\151\156\50", "\167\151\164\150\151\156\143\157\144\145\50", null, null, null, null, "\41", 
+null, null, "\56\56", null, null, null, null, null, null, "\54", null, null, null, 
+"\51", null, null, "\141\142\163\164\162\141\143\164", "\146\151\156\141\154", 
+"\160\162\151\166\141\164\145", "\160\162\157\164\145\143\164\145\144", "\160\165\142\154\151\143", 
+"\163\164\141\164\151\143", "\156\141\164\151\166\145", 
+"\163\171\156\143\150\162\157\156\151\172\145\144", "\156\145\167", "\164\150\162\157\167\163", null, null, null, null, "\54", 
+null, null, null, null, null, null, null, null, "\55\76", "\41", "\50", "\51", null, 
+null, "\141\142\163\164\162\141\143\164", "\146\151\156\141\154", 
+"\160\162\151\166\141\164\145", "\160\162\157\164\145\143\164\145\144", "\160\165\142\154\151\143", 
+"\163\164\141\164\151\143", "\164\162\141\156\163\151\145\156\164", "\156\141\164\151\166\145", 
+"\163\171\156\143\150\162\157\156\151\172\145\144", null, null, null, null, null, null, null, null, null, null, "\55\76", "\41", 
+"\51", "\50", "\51", };
 public static final String[] lexStateNames = {
-   "DEFAULT",
-   "PARAMS",
-   "BEHAVIOR",
-   "FIELD_DECLARATION",
+   "DEFAULT", 
+   "PARAMS", 
+   "BEHAVIOR", 
+   "FIELD_DECLARATION", 
 };
 public static final int[] jjnewLexState = {
-   -1, -1, -1, -1, -1, 2, 3, 2, 2, 2, 3, 3, 3, 3, 3, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-   -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1,
+   -1, -1, -1, -1, -1, 2, 3, 2, 2, 2, 3, 3, 3, 3, 3, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+   -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, 
 };
 static final long[] jjtoToken = {
-   0x78ffffe47f93fff9L, 0xf8fffeL,
+   0xf1ffffe47f93fff9L, 0x3e3fffcL, 
 };
 static final long[] jjtoSkip = {
-   0x8000001800600006L, 0x1L,
+   0x1800600006L, 0x3L, 
 };
 protected SimpleCharStream input_stream;
-private final int[] jjrounds = new int[98];
-private final int[] jjstateSet = new int[196];
+private final int[] jjrounds = new int[102];
+private final int[] jjstateSet = new int[204];
 protected char curChar;
 public PointcutExpressionParserTokenManager(SimpleCharStream stream)
 {
@@ -3109,7 +3175,7 @@
 {
    int i;
    jjround = 0x80000001;
-   for (i = 98; i-- > 0;)
+   for (i = 102; i-- > 0;)
       jjrounds[i] = 0x80000000;
 }
 public void ReInit(SimpleCharStream stream, int lexState)
@@ -3145,7 +3211,7 @@
 int jjmatchedPos;
 int jjmatchedKind;
 
-public Token getNextToken()
+public Token getNextToken() 
 {
   int kind;
   Token specialToken = null;
@@ -3154,13 +3220,13 @@
 
   EOFLoop :
   for (;;)
-  {
-   try
-   {
+  {   
+   try   
+   {     
       curChar = input_stream.BeginToken();
-   }
+   }     
    catch(java.io.IOException e)
-   {
+   {        
       jjmatchedKind = 0;
       matchedToken = jjFillToken();
       return matchedToken;

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/pointcut/ast/pointcut.jjt
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/pointcut/ast/pointcut.jjt	2007-01-23 22:49:58 UTC (rev 59961)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/pointcut/ast/pointcut.jjt	2007-01-23 23:51:25 UTC (rev 59962)
@@ -76,7 +76,7 @@
 |
   < PARAM_ARRAY_CLASS: <PARAM_IDENTIFIER> (<PARAM_ARRAY>)+>
 |
-  < PARAM_ANNOTATION: "@" <PARAM_IDENTIFIER> (<PARAM_DOT> <PARAM_IDENTIFIER>)+ >
+  < PARAM_ANNOTATION: "@" <PARAM_IDENTIFIER> (<PARAM_DOT> <PARAM_IDENTIFIER>)* >
 |
   < PARAM_INSTANCEOF: "$instanceof{" (<PARAM_IDENTIFIER> | <PARAM_CLASS> | <PARAM_ANNOTATION>) "}">
 |
@@ -120,6 +120,8 @@
 |
   < CLASS: <IDENTIFIER> (<DOT> <IDENTIFIER>)+ (<ARRAY>)*>
 | 
+  < PACKAGE: <IDENTIFIER> (<DOT> <IDENTIFIER>)* <DOT><DOT>>
+| 
   < EXCEPTION_SEPERATOR: "," >
 |
   < ARRAY_CLASS: <IDENTIFIER> (<ARRAY>)+>
@@ -166,6 +168,8 @@
   < FIELD_TYPEDEF: "$typedef{" <POINTCUT> "}">
 |
   < FIELD_CLASS: <FIELD_IDENTIFIER> (<FIELD_DOT> <FIELD_IDENTIFIER>)+ (<FIELD_ARRAY>)*>
+| 
+  < FIELD_PACKAGE: <FIELD_IDENTIFIER> (<FIELD_DOT> <FIELD_IDENTIFIER>)* <FIELD_DOT><FIELD_DOT>>
 |
   < FIELD_ARRAY_CLASS: <FIELD_IDENTIFIER> (<FIELD_ARRAY>)+>
 |
@@ -305,7 +309,7 @@
 {
    <ALL>
 
-   (pointcut=<FIELD_CLASS>|pointcut=<FIELD_IDENTIFIER>|pointcut=<FIELD_ANNOTATION>|pointcut=<FIELD_INSTANCEOF>|pointcut=<FIELD_TYPEDEF>)
+   (pointcut=<FIELD_CLASS>|pointcut=<FIELD_PACKAGE>|pointcut=<FIELD_IDENTIFIER>|pointcut=<FIELD_ANNOTATION>|pointcut=<FIELD_INSTANCEOF>|pointcut=<FIELD_TYPEDEF>)
    {
       jjtThis.setClassExpression(pointcut.image);
    }
@@ -324,7 +328,7 @@
 }
 {
   <WITHIN>
-  (clazz=<FIELD_CLASS> | clazz=<FIELD_IDENTIFIER> | clazz=<FIELD_ANNOTATION> | clazz=<FIELD_INSTANCEOF>| clazz=<FIELD_TYPEDEF>)
+  (clazz=<FIELD_CLASS> | clazz=<FIELD_PACKAGE> | clazz=<FIELD_IDENTIFIER> | clazz=<FIELD_ANNOTATION> | clazz=<FIELD_INSTANCEOF>| clazz=<FIELD_TYPEDEF>)
   <FIELD_CLOSE>
    { jjtThis.setClassExpression(clazz.image); }
 }
@@ -375,7 +379,7 @@
   Token ret, clazz, body;
 }
 {
-  (Attribute())* (ret=<CLASS>|ret=<IDENTIFIER>|ret=<ANNOTATION>|ret=<ARRAY_CLASS>|ret=<INSTANCEOF>|ret=<TYPEDEF>) (clazz=<CLASS>|clazz=<IDENTIFIER>|clazz=<ANNOTATION>|clazz=<INSTANCEOF>|clazz=<TYPEDEF>) <SEPARATOR> (body=<IDENTIFIER>|body=<ANNOTATION>|body=<IMPLEMENTS>|body=<IMPLEMENTING>) Parameters() Throws()
+  (Attribute())* (ret=<CLASS>|ret=<IDENTIFIER>|ret=<ANNOTATION>|ret=<ARRAY_CLASS>|ret=<INSTANCEOF>|ret=<TYPEDEF>) (clazz=<CLASS>|clazz=<PACKAGE>|clazz=<IDENTIFIER>|clazz=<ANNOTATION>|clazz=<INSTANCEOF>|clazz=<TYPEDEF>) <SEPARATOR> (body=<IDENTIFIER>|body=<ANNOTATION>|body=<IMPLEMENTS>|body=<IMPLEMENTING>) Parameters() Throws()
   {
     jjtThis.setReturnTypeExpression(ret.image);
     jjtThis.setClassExpression(clazz.image);
@@ -412,7 +416,7 @@
   Token clazz, danew;
 }
 {
-  (ConstructorAttribute())* (clazz=<CLASS> | clazz=<IDENTIFIER> | clazz=<ANNOTATION> | clazz=<INSTANCEOF> | clazz=<TYPEDEF>)
+  (ConstructorAttribute())* (clazz=<CLASS> | clazz=<PACKAGE> | clazz=<IDENTIFIER> | clazz=<ANNOTATION> | clazz=<INSTANCEOF> | clazz=<TYPEDEF>)
   {
     jjtThis.setClassExpression(clazz.image);
   }
@@ -464,7 +468,7 @@
   {
     jjtThis.setTypeExpression(type.image);
   }
-  (clazz=<FIELD_CLASS> | clazz=<FIELD_IDENTIFIER> | clazz=<FIELD_ANNOTATION> | clazz=<FIELD_INSTANCEOF> | clazz=<FIELD_TYPEDEF>)
+  (clazz=<FIELD_CLASS> | clazz=<FIELD_PACKAGE> | clazz=<FIELD_IDENTIFIER> | clazz=<FIELD_ANNOTATION> | clazz=<FIELD_INSTANCEOF> | clazz=<FIELD_TYPEDEF>)
   {
     jjtThis.setClassExpr(clazz.image);
   }

Added: projects/aop/trunk/aop/src/resources/test/packagedotdot/jboss-aop.xml
===================================================================
--- projects/aop/trunk/aop/src/resources/test/packagedotdot/jboss-aop.xml	                        (rev 0)
+++ projects/aop/trunk/aop/src/resources/test/packagedotdot/jboss-aop.xml	2007-01-23 23:51:25 UTC (rev 59962)
@@ -0,0 +1,55 @@
+<aop>
+   <interceptor class="org.jboss.test.aop.packagedotdot.NotConstructionInterceptor"/>
+   <interceptor class="org.jboss.test.aop.packagedotdot.ConstructionInterceptor"/>
+   
+   <bind pointcut="execution(org.jboss.test.aop.packagedotdot..->new(int))">
+	   <interceptor-ref name="org.jboss.test.aop.packagedotdot.NotConstructionInterceptor"/>
+   </bind>
+   <bind pointcut="construction(org.jboss.test.aop.packagedotdot..->new(int))">
+	   <interceptor-ref name="org.jboss.test.aop.packagedotdot.ConstructionInterceptor"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.test.aop.packagedotdot..->method(int))">
+	   <interceptor-ref name="org.jboss.test.aop.packagedotdot.NotConstructionInterceptor"/>
+   </bind>
+   <bind pointcut="field(* org.jboss.test.aop.packagedotdot..->ifield)">
+	   <interceptor-ref name="org.jboss.test.aop.packagedotdot.NotConstructionInterceptor"/>
+   </bind>
+   
+   <bind pointcut="execution(*.packagedotdot..->new(int, int))">
+	   <interceptor-ref name="org.jboss.test.aop.packagedotdot.NotConstructionInterceptor"/>
+   </bind>
+   <bind pointcut="construction(*.packagedotdot..->new(int, int))">
+	   <interceptor-ref name="org.jboss.test.aop.packagedotdot.ConstructionInterceptor"/>
+   </bind>
+   <bind pointcut="execution(* *.packagedotdot..->method(int, int))">
+	   <interceptor-ref name="org.jboss.test.aop.packagedotdot.NotConstructionInterceptor"/>
+   </bind>
+   <bind pointcut="field(* *.packagedotdot..->lfield)">
+	   <interceptor-ref name="org.jboss.test.aop.packagedotdot.NotConstructionInterceptor"/>
+   </bind>
+
+   <bind pointcut="execution(org.jboss.test.aop.packagedotdot.sub.*..->new(int, int, int))">
+	   <interceptor-ref name="org.jboss.test.aop.packagedotdot.NotConstructionInterceptor"/>
+   </bind>
+   <bind pointcut="construction(org.jboss.test.aop.packagedotdot.sub.*..->new(int, int, int))">
+	   <interceptor-ref name="org.jboss.test.aop.packagedotdot.ConstructionInterceptor"/>
+   </bind>
+   <bind pointcut="execution(* org.jboss.test.aop.packagedotdot.sub.*..->method(int, int, int))">
+	   <interceptor-ref name="org.jboss.test.aop.packagedotdot.NotConstructionInterceptor"/>
+   </bind>
+   <bind pointcut="field(* org.jboss.test.aop.packagedotdot.sub.*..->sfield)">
+	   <interceptor-ref name="org.jboss.test.aop.packagedotdot.NotConstructionInterceptor"/>
+   </bind>
+   
+   <bind pointcut="all(org.jboss.test.aop.packagedotdot.all..)">
+	   <interceptor-ref name="org.jboss.test.aop.packagedotdot.NotConstructionInterceptor"/>
+   </bind>
+   
+   <bind pointcut="call(org.jboss.test.aop.packagedotdot.callee..->new()) AND within(org.jboss.test.aop.packagedotdot.caller..)">
+	   <interceptor-ref name="org.jboss.test.aop.packagedotdot.NotConstructionInterceptor"/>
+   </bind>
+   
+   <bind pointcut="call(* org.jboss.test.aop.packagedotdot.callee..->method()) AND within(org.jboss.test.aop.packagedotdot.caller..)">
+	   <interceptor-ref name="org.jboss.test.aop.packagedotdot.NotConstructionInterceptor"/>
+   </bind>
+</aop>
\ No newline at end of file

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/AllInterceptor.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/AllInterceptor.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/AllInterceptor.java	2007-01-23 23:51:25 UTC (rev 59962)
@@ -0,0 +1,45 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.test.aop.packagedotdot;
+
+import org.jboss.aop.advice.Interceptor;
+import org.jboss.aop.joinpoint.Invocation;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class AllInterceptor implements Interceptor
+{
+   static boolean intercepted;
+   public String getName()
+   {
+      return this.getClass().getName();
+   }
+
+   public Object invoke(Invocation invocation) throws Throwable
+   {
+      intercepted = true;
+      return invocation.invokeNext();
+   }
+}

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/ConstructionInterceptor.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/ConstructionInterceptor.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/ConstructionInterceptor.java	2007-01-23 23:51:25 UTC (rev 59962)
@@ -0,0 +1,45 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.test.aop.packagedotdot;
+
+import org.jboss.aop.advice.Interceptor;
+import org.jboss.aop.joinpoint.Invocation;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class ConstructionInterceptor implements Interceptor
+{
+   static boolean intercepted;
+   public String getName()
+   {
+      return this.getClass().getName();
+   }
+
+   public Object invoke(Invocation invocation) throws Throwable
+   {
+      intercepted = true;
+      return invocation.invokeNext();
+   }
+}

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/NotConstructionInterceptor.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/NotConstructionInterceptor.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/NotConstructionInterceptor.java	2007-01-23 23:51:25 UTC (rev 59962)
@@ -0,0 +1,59 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.test.aop.packagedotdot;
+
+import org.jboss.aop.advice.Interceptor;
+import org.jboss.aop.joinpoint.Invocation;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class NotConstructionInterceptor implements Interceptor
+{
+   static boolean intercepted;
+   public String getName()
+   {
+      return this.getClass().getName();
+   }
+
+   public Object invoke(Invocation invocation) throws Throwable
+   {
+      try
+      {
+         intercepted = true;
+         return invocation.invokeNext();
+      }
+      catch (RuntimeException e)
+      {
+         Class clazz = invocation.getClass();
+         while (clazz != null)
+         {
+            System.out.println(clazz.getName());
+            clazz = clazz.getSuperclass();
+         }
+         throw e;
+      }
+   }
+
+}

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/POJOA.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/POJOA.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/POJOA.java	2007-01-23 23:51:25 UTC (rev 59962)
@@ -0,0 +1,85 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.test.aop.packagedotdot;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class POJOA
+{
+   public int ifield;
+   public long lfield;
+   public String sfield;
+   
+   public POJOA(int i)
+   {
+      
+   }
+
+   public POJOA(int i, int j)
+   {
+      
+   }
+
+   public POJOA(int i, int j, int k)
+   {
+      
+   }
+
+   public POJOA(int i, int j, int k, int l)
+   {
+      
+   }
+
+   public POJOA(int i, int j, int k, int l, int m)
+   {
+      
+   }
+   
+   
+   public void method(int i)
+   {
+      
+   }
+   
+   public void method(int i, int j)
+   {
+      
+   }
+   
+   public void method(int i, int j, int k)
+   {
+      
+   }
+   
+   public void method(int i, int j, int k, int l)
+   {
+      
+   }
+   
+   public void method(int i, int j, int k, int l, int m)
+   {
+      
+   }
+}

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/POJOB.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/POJOB.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/POJOB.java	2007-01-23 23:51:25 UTC (rev 59962)
@@ -0,0 +1,84 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.test.aop.packagedotdot;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class POJOB
+{
+   public int ifield;
+   public long lfield;
+   public String sfield;
+   
+   public POJOB(int i)
+   {
+      
+   }
+
+   public POJOB(int i, int j)
+   {
+      
+   }
+
+   public POJOB(int i, int j, int k)
+   {
+      
+   }
+
+   public POJOB(int i, int j, int k, int l)
+   {
+      
+   }
+
+   public POJOB(int i, int j, int k, int l, int m)
+   {
+      
+   }
+   
+   public void method(int i)
+   {
+      
+   }
+   
+   public void method(int i, int j)
+   {
+      
+   }
+   
+   public void method(int i, int j, int k)
+   {
+      
+   }
+   
+   public void method(int i, int j, int k, int l)
+   {
+      
+   }
+   
+   public void method(int i, int j, int k, int l, int m)
+   {
+      
+   }
+}

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/PackageTestCase.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/PackageTestCase.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/PackageTestCase.java	2007-01-23 23:51:25 UTC (rev 59962)
@@ -0,0 +1,291 @@
+/*
+  * JBoss, Home of Professional Open Source
+  * Copyright 2005, JBoss Inc., and individual contributors as indicated
+  * by the @authors tag. See the copyright.txt in the distribution for a
+  * full listing of individual contributors.
+  *
+  * This is free software; you can redistribute it and/or modify it
+  * under the terms of the GNU Lesser General Public License as
+  * published by the Free Software Foundation; either version 2.1 of
+  * the License, or (at your option) any later version.
+  *
+  * This software is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  * Lesser General Public License for more details.
+  *
+  * You should have received a copy of the GNU Lesser General Public
+  * License along with this software; if not, write to the Free
+  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+  */
+package org.jboss.test.aop.packagedotdot;
+
+import org.jboss.test.aop.AOPTestWithSetup;
+import org.jboss.test.aop.packagedotdot.all.All;
+import org.jboss.test.aop.packagedotdot.callee.Callee;
+import org.jboss.test.aop.packagedotdot.caller.Caller;
+import org.jboss.test.aop.packagedotdot.sub.POJO;
+import org.jboss.test.aop.packagedotdot.sub.nested.Nested;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * Here to test that a package expression works. So far this has only been implemented for the class part 
+ * of field, constructor and method expressions.
+ *
+ * @author <a href="mailto:kabir.khan at jboss.org">Kabir Khan</a>
+ * @version $Revision: 45977 $
+ */
+public class PackageTestCase extends AOPTestWithSetup
+{
+   public static Test suite()
+   {
+      TestSuite suite = new TestSuite("PackageTestCase");
+      suite.addTestSuite(PackageTestCase.class);
+      return suite;
+   }
+
+   public PackageTestCase(String name)
+   {
+      super(name);
+   }
+
+   public void testConstructors() throws Exception
+   {
+      //Matched by: org.jboss.test.aop.packagedotdot..
+      ConstructionInterceptor.intercepted = false;
+      NotConstructionInterceptor.intercepted = false;
+      POJOA pojoA = new POJOA(1);
+      assertTrue(ConstructionInterceptor.intercepted);
+      assertTrue(NotConstructionInterceptor.intercepted);
+      
+      ConstructionInterceptor.intercepted = false;
+      NotConstructionInterceptor.intercepted = false;
+      POJOB pojoB = new POJOB(1);
+      assertTrue(ConstructionInterceptor.intercepted);
+      assertTrue(NotConstructionInterceptor.intercepted);
+      
+      ConstructionInterceptor.intercepted = false;
+      NotConstructionInterceptor.intercepted = false;
+      POJO pojo = new POJO(1);
+      assertFalse(ConstructionInterceptor.intercepted);
+      assertFalse(NotConstructionInterceptor.intercepted);
+      
+      ConstructionInterceptor.intercepted = false;
+      NotConstructionInterceptor.intercepted = false;
+      Nested nested = new Nested(1);
+      assertFalse(ConstructionInterceptor.intercepted);
+      assertFalse(NotConstructionInterceptor.intercepted);
+      
+      //Matched by: *.packagedotdot..
+      ConstructionInterceptor.intercepted = false;
+      NotConstructionInterceptor.intercepted = false;
+      pojoA = new POJOA(1, 1);
+      assertTrue(ConstructionInterceptor.intercepted);
+      assertTrue(NotConstructionInterceptor.intercepted);
+      
+      ConstructionInterceptor.intercepted = false;
+      NotConstructionInterceptor.intercepted = false;
+      pojoB = new POJOB(1, 1);
+      assertTrue(ConstructionInterceptor.intercepted);
+      assertTrue(NotConstructionInterceptor.intercepted);
+      
+      ConstructionInterceptor.intercepted = false;
+      NotConstructionInterceptor.intercepted = false;
+      pojo = new POJO(1, 1);
+      assertFalse(ConstructionInterceptor.intercepted);
+      assertFalse(NotConstructionInterceptor.intercepted);
+      
+      ConstructionInterceptor.intercepted = false;
+      NotConstructionInterceptor.intercepted = false;
+      nested = new Nested(1, 1);
+      assertFalse(ConstructionInterceptor.intercepted);
+      assertFalse(NotConstructionInterceptor.intercepted);
+      
+      //Matched by: org.jboss.test.aop.packagedotdot.sub.*..
+      ConstructionInterceptor.intercepted = false;
+      NotConstructionInterceptor.intercepted = false;
+      pojoA = new POJOA(1, 1, 1);
+      assertFalse(ConstructionInterceptor.intercepted);
+      assertFalse(NotConstructionInterceptor.intercepted);
+      
+      ConstructionInterceptor.intercepted = false;
+      NotConstructionInterceptor.intercepted = false;
+      pojoB = new POJOB(1, 1, 1);
+      assertFalse(ConstructionInterceptor.intercepted);
+      assertFalse(NotConstructionInterceptor.intercepted);
+      
+      ConstructionInterceptor.intercepted = false;
+      NotConstructionInterceptor.intercepted = false;
+      pojo = new POJO(1, 1, 1);
+      assertFalse(ConstructionInterceptor.intercepted);
+      assertFalse(NotConstructionInterceptor.intercepted);
+
+      ConstructionInterceptor.intercepted = false;
+      NotConstructionInterceptor.intercepted = false;
+      nested = new Nested(1, 1, 1);
+      assertTrue(ConstructionInterceptor.intercepted);
+      assertTrue(NotConstructionInterceptor.intercepted);
+   }
+   
+   public void testMethods() throws Exception
+   {
+      POJOA pojoA = new POJOA(1);
+      POJOB pojoB = new POJOB(1);
+      POJO pojo = new POJO(1);
+      Nested nested = new Nested(1);
+
+      //Matched by: org.jboss.test.aop.packagedotdot..
+      NotConstructionInterceptor.intercepted = false;
+      pojoA.method(1);
+      assertTrue(NotConstructionInterceptor.intercepted);
+      
+      NotConstructionInterceptor.intercepted = false;
+      pojoB.method(1);
+      assertTrue(NotConstructionInterceptor.intercepted);
+      
+      NotConstructionInterceptor.intercepted = false;
+      pojo.method(1);
+      assertFalse(NotConstructionInterceptor.intercepted);
+      
+      NotConstructionInterceptor.intercepted = false;
+      nested.method(1);
+      assertFalse(NotConstructionInterceptor.intercepted);
+
+      //Matched by: *.packagedotdot..
+      NotConstructionInterceptor.intercepted = false;
+      pojoA.method(1, 1);
+      assertTrue(NotConstructionInterceptor.intercepted);
+      
+      NotConstructionInterceptor.intercepted = false;
+      pojoB.method(1, 1);
+      assertTrue(NotConstructionInterceptor.intercepted);
+      
+      NotConstructionInterceptor.intercepted = false;
+      pojo.method(1, 1);
+      assertFalse(NotConstructionInterceptor.intercepted);
+      
+      NotConstructionInterceptor.intercepted = false;
+      nested.method(1, 1);
+      assertFalse(NotConstructionInterceptor.intercepted);
+      
+      //Matched by: org.jboss.test.aop.packagedotdot.sub.*..
+      NotConstructionInterceptor.intercepted = false;
+      pojoA.method(1, 1, 1);
+      assertFalse(NotConstructionInterceptor.intercepted);
+      
+      NotConstructionInterceptor.intercepted = false;
+      pojoB.method(1, 1, 1);
+      assertFalse(NotConstructionInterceptor.intercepted);
+      
+      NotConstructionInterceptor.intercepted = false;
+      pojo.method(1, 1, 1);
+      assertFalse(NotConstructionInterceptor.intercepted);
+      
+      NotConstructionInterceptor.intercepted = false;
+      nested.method(1, 1, 1);
+      assertTrue(NotConstructionInterceptor.intercepted);
+   }
+   
+   public void testFields()
+   {
+      POJOA pojoA = new POJOA(1);
+      POJOB pojoB = new POJOB(1);
+      POJO pojo = new POJO(1);
+      Nested nested = new Nested(1);
+
+      //Matched by: org.jboss.test.aop.packagedotdot..
+      NotConstructionInterceptor.intercepted = false;
+      pojoA.ifield = 1;
+      assertTrue(NotConstructionInterceptor.intercepted);
+      
+      NotConstructionInterceptor.intercepted = false;
+      pojoB.ifield = 1;
+      assertTrue(NotConstructionInterceptor.intercepted);
+      
+      NotConstructionInterceptor.intercepted = false;
+      pojo.ifield = 1;
+      assertFalse(NotConstructionInterceptor.intercepted);
+      
+      NotConstructionInterceptor.intercepted = false;
+      nested.ifield = 1;
+      assertFalse(NotConstructionInterceptor.intercepted);
+      
+      //Matched by: *.packagedotdot..
+      NotConstructionInterceptor.intercepted = false;
+      pojoA.lfield = 1;
+      assertTrue(NotConstructionInterceptor.intercepted);
+      
+      NotConstructionInterceptor.intercepted = false;
+      pojoB.lfield = 1;
+      assertTrue(NotConstructionInterceptor.intercepted);
+      
+      NotConstructionInterceptor.intercepted = false;
+      pojo.lfield = 1;
+      assertFalse(NotConstructionInterceptor.intercepted);
+      
+      NotConstructionInterceptor.intercepted = false;
+      nested.lfield = 1;
+      assertFalse(NotConstructionInterceptor.intercepted);
+      
+      //Matched by: org.jboss.test.aop.packagedotdot.sub.*..
+      NotConstructionInterceptor.intercepted = false;
+      pojoA.sfield = "z";
+      assertFalse(NotConstructionInterceptor.intercepted);
+      
+      NotConstructionInterceptor.intercepted = false;
+      pojoB.sfield = "z";
+      assertFalse(NotConstructionInterceptor.intercepted);
+      
+      NotConstructionInterceptor.intercepted = false;
+      pojo.sfield = "z";
+      assertFalse(NotConstructionInterceptor.intercepted);
+      
+      NotConstructionInterceptor.intercepted = false;
+      nested.sfield = "z";
+      assertTrue(NotConstructionInterceptor.intercepted);
+   }
+   
+   public void testAll()
+   {
+      NotConstructionInterceptor.intercepted = false;
+      All all = new All();
+      assertTrue(NotConstructionInterceptor.intercepted);
+      
+      NotConstructionInterceptor.intercepted = false;
+      all.field = 10;
+      assertTrue(NotConstructionInterceptor.intercepted);
+      
+      NotConstructionInterceptor.intercepted = false;
+      int z = all.field;
+      assertTrue(NotConstructionInterceptor.intercepted);
+      
+      NotConstructionInterceptor.intercepted = false;
+      all.method();
+      assertTrue(NotConstructionInterceptor.intercepted);
+   }
+   
+   public void testCallAndWithin()
+   {
+      NotConstructionInterceptor.intercepted = false;
+      Callee callee = new Callee();
+      assertFalse(NotConstructionInterceptor.intercepted);
+
+      NotConstructionInterceptor.intercepted = false;
+      callee.method();
+      assertFalse(NotConstructionInterceptor.intercepted);
+
+      NotConstructionInterceptor.intercepted = false;
+      Caller caller = new Caller();
+      assertTrue(NotConstructionInterceptor.intercepted);
+
+      NotConstructionInterceptor.intercepted = false;
+      caller.method();
+      assertTrue(NotConstructionInterceptor.intercepted);
+
+      
+   }
+}
+

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/all/All.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/all/All.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/all/All.java	2007-01-23 23:51:25 UTC (rev 59962)
@@ -0,0 +1,37 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.test.aop.packagedotdot.all;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class All
+{
+   public int field;
+   
+   public void method()
+   {
+      
+   }
+}

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/callee/Callee.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/callee/Callee.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/callee/Callee.java	2007-01-23 23:51:25 UTC (rev 59962)
@@ -0,0 +1,40 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.test.aop.packagedotdot.callee;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class Callee
+{
+   public Callee()
+   {
+      
+   }
+   
+   public void method()
+   {
+      
+   }
+}

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/caller/Caller.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/caller/Caller.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/caller/Caller.java	2007-01-23 23:51:25 UTC (rev 59962)
@@ -0,0 +1,43 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.test.aop.packagedotdot.caller;
+
+import org.jboss.test.aop.packagedotdot.callee.Callee;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class Caller
+{
+   Callee callee;
+   public Caller()
+   {
+      Callee callee = new Callee();
+   }
+   
+   public void method()
+   {
+      callee.method();
+   }
+}

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/sub/POJO.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/sub/POJO.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/sub/POJO.java	2007-01-23 23:51:25 UTC (rev 59962)
@@ -0,0 +1,84 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.test.aop.packagedotdot.sub;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class POJO
+{
+   public int ifield;
+   public long lfield;
+   public String sfield;
+   
+   public POJO(int i)
+   {
+      
+   }
+
+   public POJO(int i, int j)
+   {
+      
+   }
+
+   public POJO(int i, int j, int k)
+   {
+      
+   }
+
+   public POJO(int i, int j, int k, int l)
+   {
+      
+   }
+
+   public POJO(int i, int j, int k, int l, int m)
+   {
+      
+   }
+   
+   public void method(int i)
+   {
+      
+   }
+   
+   public void method(int i, int j)
+   {
+      
+   }
+   
+   public void method(int i, int j, int k)
+   {
+      
+   }
+   
+   public void method(int i, int j, int k, int l)
+   {
+      
+   }
+   
+   public void method(int i, int j, int k, int l, int m)
+   {
+      
+   }
+}

Added: projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/sub/nested/Nested.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/sub/nested/Nested.java	                        (rev 0)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/packagedotdot/sub/nested/Nested.java	2007-01-23 23:51:25 UTC (rev 59962)
@@ -0,0 +1,84 @@
+/*
+* JBoss, Home of Professional Open Source.
+* Copyright 2006, Red Hat Middleware LLC, and individual contributors
+* as indicated by the @author tags. See the copyright.txt file in the
+* distribution for a full listing of individual contributors. 
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/ 
+package org.jboss.test.aop.packagedotdot.sub.nested;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class Nested
+{
+   public int ifield;
+   public long lfield;
+   public String sfield;
+   
+   public Nested(int i)
+   {
+      
+   }
+
+   public Nested(int i, int j)
+   {
+      
+   }
+
+   public Nested(int i, int j, int k)
+   {
+      
+   }
+
+   public Nested(int i, int j, int k, int l)
+   {
+      
+   }
+
+   public Nested(int i, int j, int k, int l, int m)
+   {
+      
+   }
+   
+   public void method(int i)
+   {
+      
+   }
+   
+   public void method(int i, int j)
+   {
+      
+   }
+   
+   public void method(int i, int j, int k)
+   {
+      
+   }
+   
+   public void method(int i, int j, int k, int l)
+   {
+      
+   }
+   
+   public void method(int i, int j, int k, int l, int m)
+   {
+      
+   }
+}

Modified: projects/aop/trunk/aop/src/test/org/jboss/test/aop/pointcut/PointcutTestCase.java
===================================================================
--- projects/aop/trunk/aop/src/test/org/jboss/test/aop/pointcut/PointcutTestCase.java	2007-01-23 22:49:58 UTC (rev 59961)
+++ projects/aop/trunk/aop/src/test/org/jboss/test/aop/pointcut/PointcutTestCase.java	2007-01-23 23:51:25 UTC (rev 59962)
@@ -37,7 +37,7 @@
 /**
  * Tests an annotated introduction
  *
- * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
+ * @author <a href="mailto:kabir.khan at jboss.org">Kabir Khan</a>
  * @version $Revision: 45977 $
  */
 public class PointcutTestCase extends AOPTestWithSetup
@@ -54,24 +54,323 @@
       super(name);
    }
 
-   public void testPassingPointcuts() throws Exception
+   public void testGoodMethodPointcuts() throws Exception
    {
       Executor e = new Executor();
+      e.parseGoodPointcut("execution(* *->*())");
       e.parseGoodPointcut("execution(public * *->*())");
-      e.parseGoodPointcut("execution(* *->*())");
-      e.parseGoodPointcut("execution(* $instanceof{a}->$implements{a}())");
-      e.parseGoodPointcut("execution(* $instanceof{a.b}->$implements{a.b}())");
-      e.parseGoodPointcut("execution(* $instanceof{@a.b}->$implements{@a.b}())");
-      e.parseGoodPointcut("execution(* $instanceof{a}->$implementing{a}())");
-      e.parseGoodPointcut("execution(* $instanceof{a.b}->$implementing{a.b}())");
-      e.parseGoodPointcut("execution(* $instanceof{@a.b}->$implementing{@a.b}())");
+      e.parseGoodPointcut("execution(public static * *->*())");
+      e.parseGoodPointcut("execution(protected static * *->*())");
+      e.parseGoodPointcut("execution(private static * *->*())");
+      e.parseGoodPointcut("execution(!public !static * *->*())");
+      e.parseGoodPointcut("execution(!protected !static * *->*())");
+      e.parseGoodPointcut("execution(!private !static * *->*())");
+
+      e.parseGoodPointcut("execution(@Ann @Ann->@Ann())");
+      e.parseGoodPointcut("execution(@org.acme.Ann @org.acme.Ann->@org.acme.Ann(int))");
+      e.parseGoodPointcut("execution(* @org.acme.Ann->@org.acme.Ann(int,..,long))");
+      e.parseGoodPointcut("execution(* @org.acme.Ann->@org.acme.Ann(..))");
+
+      e.parseGoodPointcut("execution(* *->*(org.acme.Clazz))");
+      e.parseGoodPointcut("execution(* *->*(Clazz))");
+      e.parseGoodPointcut("execution(* *->*(org.acme.Clazz, Clazz))");
+      e.parseGoodPointcut("execution(* *->*(org.acme.Clazz, int, Clazz))");
+      e.parseGoodPointcut("execution(* *->*(org.acme.Clazz, .., Clazz))");
+
+      e.parseGoodPointcut("execution(* *->*(@org.acme.Ann))");
+      e.parseGoodPointcut("execution(* *->*(@Ann))");
+      e.parseGoodPointcut("execution(* *->*(@org.acme.Ann, @Ann))");
+      e.parseGoodPointcut("execution(* *->*(@org.acme.Ann, int, @Ann))");
+      e.parseGoodPointcut("execution(* *->*(@org.acme.Ann, .., @Ann))");
+
+      e.parseGoodPointcut("execution(* *->*(org.acme.*))");
+      e.parseGoodPointcut("execution(* *->*(*))");
+      e.parseGoodPointcut("execution(* *->*(org.acme.*, Clazz))");
+      e.parseGoodPointcut("execution(* *->*(org.acme.Clazz, int, Clazz))");
+      e.parseGoodPointcut("execution(* *->*(org.acme.Clazz, .., Clazz))");
+
+      e.parseGoodPointcut("execution(* *->*(@org.acme.*))");
+      e.parseGoodPointcut("execution(* *->*(@*))");
+      e.parseGoodPointcut("execution(* *->*(@org.acme.*, @*))");
+      e.parseGoodPointcut("execution(* *->*(@org.acme.*, int, @*))");
+      e.parseGoodPointcut("execution(* *->*(@org.acme.*, .., @*))");
+
+      e.parseGoodPointcut("execution(* *->*($instanceof{@org.acme.Ann}))");
+      e.parseGoodPointcut("execution(* *->*($instanceof{@Ann}))");
+      e.parseGoodPointcut("execution(* *->*($instanceof{@org.acme.Ann}, $instanceof{@Ann}))");
+      e.parseGoodPointcut("execution(* *->*($instanceof{@org.acme.Ann}, int, $instanceof{@Ann}))");
+      e.parseGoodPointcut("execution(* *->*($instanceof{@org.acme.Ann}, .., $instanceof{@Ann}))");
+
+      e.parseGoodPointcut("execution(* *->*($instanceof{@org.acme.*}))");
+      e.parseGoodPointcut("execution(* *->*($instanceof{@*}))");
+      e.parseGoodPointcut("execution(* *->*($instanceof{@org.acme.*}, $instanceof{@*}))");
+      e.parseGoodPointcut("execution(* *->*($instanceof{@org.acme.*}, int, $instanceof{@*}))");
+      e.parseGoodPointcut("execution(* *->*($instanceof{@org.acme.*}, .., $instanceof{@*}))");
+      e.parseGoodPointcut("execution(* *->*($instanceof{@org.*.Clazz}, .., $instanceof{@*}))");
+      e.parseGoodPointcut("execution(* *->*($instanceof{@*.acme.Clazz}, .., $instanceof{@*}))");
+
+      e.parseGoodPointcut("execution(* *->*($instanceof{org.acme.Clazz}))");
+      e.parseGoodPointcut("execution(* *->*($instanceof{Clazz}))");
+      e.parseGoodPointcut("execution(* *->*($instanceof{org.acme.Clazz}, $instanceof{Clazz}))");
+      e.parseGoodPointcut("execution(* *->*($instanceof{org.acme.Clazz}, int, $instanceof{Clazz}))");
+      e.parseGoodPointcut("execution(* *->*($instanceof{org.acme.Clazz}, .., $instanceof{Clazz}))");
+
+      e.parseGoodPointcut("execution(* *->*($instanceof{org.acme.*}))");
+      e.parseGoodPointcut("execution(* *->*($instanceof{*}))");
+      e.parseGoodPointcut("execution(* *->*($instanceof{org.acme.*}, $instanceof{*}))");
+      e.parseGoodPointcut("execution(* *->*($instanceof{org.acme.*}, int, $instanceof{*}))");
+      e.parseGoodPointcut("execution(* *->*($instanceof{org.acme.*}, .., $instanceof{*}))");
+      e.parseGoodPointcut("execution(* *->*($instanceof{org.*.Clazz}, .., $instanceof{*}))");
+      e.parseGoodPointcut("execution(* *->*($instanceof{*.acme.Clazz}, .., $instanceof{*}))");
+
+      e.parseGoodPointcut("execution($instanceof{a} $instanceof{Clazz}->$implements{Clazz}())");
+      e.parseGoodPointcut("execution($instanceof{a.b} $instanceof{org.acme.Clazz}->$implements{org.acme.Clazz}())");
+      e.parseGoodPointcut("execution($instanceof{@a.Ann} $instanceof{Clazz}->$implements{org.acme.Clazz}())");
+      e.parseGoodPointcut("execution($instanceof{@Ann} $instanceof{org.acme.Clazz}->$implements{Clazz}())");
+      
+      e.parseGoodPointcut("execution($instanceof{a} $instanceof{Clazz}->$implementing{Clazz}())");
+      e.parseGoodPointcut("execution($instanceof{a.b} $instanceof{org.acme.Clazz}->$implementing{org.acme.Clazz}())");
+      e.parseGoodPointcut("execution($instanceof{@a.Ann} $instanceof{Clazz}->$implementing{org.acme.Clazz}())");
+      e.parseGoodPointcut("execution($instanceof{@Ann} $instanceof{org.acme.Clazz}->$implementing{Clazz}())");
+      
+      e.parseGoodPointcut("execution(* org..->*())");
+      e.parseGoodPointcut("execution(* org.acme..->*())");
+      e.parseGoodPointcut("execution(* org.*..->*())");
+      e.parseGoodPointcut("execution(* *.acme..->*())");
+      
       checkFailures(e.failures);
    }
    
+   public void testGoodConstructorPointcuts() throws Exception
+   {
+      Executor e = new Executor();
+
+      e.parseGoodPointcut("execution(*->new())");
+      e.parseGoodPointcut("execution(public *->new())");
+      e.parseGoodPointcut("execution(public *->new())");
+      e.parseGoodPointcut("execution(protected *->new())");
+      e.parseGoodPointcut("execution(private *->new())");
+
+      //These should work
+//      e.parseGoodPointcut("execution(!public *->new())");
+//      e.parseGoodPointcut("execution(!protected *->new())");
+//      e.parseGoodPointcut("execution(!private *->new())");
+
+      e.parseGoodPointcut("execution(@Ann->new())");
+      e.parseGoodPointcut("execution(@org.acme.Ann->new(int))");
+      e.parseGoodPointcut("execution(@org.acme.Ann->@org.acme.Ann(int,..,long))");
+      e.parseGoodPointcut("execution(@org.acme.Ann->@Ann(..))");
+
+      e.parseGoodPointcut("execution(*->new(org.acme.Clazz))");
+      e.parseGoodPointcut("execution(*->new(Clazz))");
+      e.parseGoodPointcut("execution(*->new(org.acme.Clazz, Clazz))");
+      e.parseGoodPointcut("execution(*->new(org.acme.Clazz, int, Clazz))");
+      e.parseGoodPointcut("execution(*->new(org.acme.Clazz, .., Clazz))");
+
+      e.parseGoodPointcut("execution(*->new(@org.acme.Ann))");
+      e.parseGoodPointcut("execution(*->new(@Ann))");
+      e.parseGoodPointcut("execution(*->new(@org.acme.Ann, @Ann))");
+      e.parseGoodPointcut("execution(*->new(@org.acme.Ann, int, @Ann))");
+      e.parseGoodPointcut("execution(*->new(@org.acme.Ann, .., @Ann))");
+
+      e.parseGoodPointcut("execution(*->new(org.acme.*))");
+      e.parseGoodPointcut("execution(*->new(*))");
+      e.parseGoodPointcut("execution(*->new(org.acme.*, Clazz))");
+      e.parseGoodPointcut("execution(*->new(org.acme.Clazz, int, Clazz))");
+      e.parseGoodPointcut("execution(*->new(org.acme.Clazz, .., Clazz))");
+
+      e.parseGoodPointcut("execution(*->new(@org.acme.*))");
+      e.parseGoodPointcut("execution(*->new(@*))");
+      e.parseGoodPointcut("execution(*->new(@org.acme.*, @*))");
+      e.parseGoodPointcut("execution(*->new(@org.acme.*, int, @*))");
+      e.parseGoodPointcut("execution(*->new(@org.acme.*, .., @*))");
+
+      e.parseGoodPointcut("execution(*->new($instanceof{@org.acme.Ann}))");
+      e.parseGoodPointcut("execution(*->new($instanceof{@Ann}))");
+      e.parseGoodPointcut("execution(*->new($instanceof{@org.acme.Ann}, $instanceof{@Ann}))");
+      e.parseGoodPointcut("execution(*->new($instanceof{@org.acme.Ann}, int, $instanceof{@Ann}))");
+      e.parseGoodPointcut("execution(*->new($instanceof{@org.acme.Ann}, .., $instanceof{@Ann}))");
+
+      e.parseGoodPointcut("execution(*->new($instanceof{@org.acme.*}))");
+      e.parseGoodPointcut("execution(*->new($instanceof{@*}))");
+      e.parseGoodPointcut("execution(*->new($instanceof{@org.acme.*}, $instanceof{@*}))");
+      e.parseGoodPointcut("execution(*->new($instanceof{@org.acme.*}, int, $instanceof{@*}))");
+      e.parseGoodPointcut("execution(*->new($instanceof{@org.acme.*}, .., $instanceof{@*}))");
+      e.parseGoodPointcut("execution(*->new($instanceof{@org.*.Clazz}, .., $instanceof{@*}))");
+      e.parseGoodPointcut("execution(*->new($instanceof{@*.acme.Clazz}, .., $instanceof{@*}))");
+
+      e.parseGoodPointcut("execution(*->new($instanceof{org.acme.Clazz}))");
+      e.parseGoodPointcut("execution(*->new($instanceof{Clazz}))");
+      e.parseGoodPointcut("execution(*->new($instanceof{org.acme.Clazz}, $instanceof{Clazz}))");
+      e.parseGoodPointcut("execution(*->new($instanceof{org.acme.Clazz}, int, $instanceof{Clazz}))");
+      e.parseGoodPointcut("execution(*->new($instanceof{org.acme.Clazz}, .., $instanceof{Clazz}))");
+
+      e.parseGoodPointcut("execution(*->new($instanceof{org.acme.*}))");
+      e.parseGoodPointcut("execution(*->new($instanceof{*}))");
+      e.parseGoodPointcut("execution(*->new($instanceof{org.acme.*}, $instanceof{*}))");
+      e.parseGoodPointcut("execution(*->new($instanceof{org.acme.*}, int, $instanceof{*}))");
+      e.parseGoodPointcut("execution(*->new($instanceof{org.acme.*}, .., $instanceof{*}))");
+      e.parseGoodPointcut("execution(*->new($instanceof{org.*.Clazz}, .., $instanceof{*}))");
+      e.parseGoodPointcut("execution(*->new($instanceof{*.acme.Clazz}, .., $instanceof{*}))");
+     
+      e.parseGoodPointcut("execution(org..->new())");
+      e.parseGoodPointcut("execution(org.acme..->new())");
+      e.parseGoodPointcut("execution(org.*..->new())");
+      e.parseGoodPointcut("execution(*.acme..->new())");
+      
+      checkFailures(e.failures);
+   }
+   
+   public void testGoodConstructionPointcuts() throws Exception
+   {
+      Executor e = new Executor();
+
+      e.parseGoodPointcut("construction(*->new())");
+      e.parseGoodPointcut("construction(public *->new())");
+      e.parseGoodPointcut("construction(public *->new())");
+      e.parseGoodPointcut("construction(protected *->new())");
+      e.parseGoodPointcut("construction(private *->new())");
+
+      //These should work
+//      e.parseGoodPointcut("construction(!public *->new())");
+//      e.parseGoodPointcut("construction(!protected *->new())");
+//      e.parseGoodPointcut("construction(!private *->new())");
+
+      e.parseGoodPointcut("construction(@Ann->new())");
+      e.parseGoodPointcut("construction(@org.acme.Ann->new(int))");
+      e.parseGoodPointcut("construction(@org.acme.Ann->@org.acme.Ann(int,..,long))");
+      e.parseGoodPointcut("construction(@org.acme.Ann->@Ann(..))");
+
+      e.parseGoodPointcut("construction(*->new(org.acme.Clazz))");
+      e.parseGoodPointcut("construction(*->new(Clazz))");
+      e.parseGoodPointcut("construction(*->new(org.acme.Clazz, Clazz))");
+      e.parseGoodPointcut("construction(*->new(org.acme.Clazz, int, Clazz))");
+      e.parseGoodPointcut("construction(*->new(org.acme.Clazz, .., Clazz))");
+
+      e.parseGoodPointcut("construction(*->new(@org.acme.Ann))");
+      e.parseGoodPointcut("construction(*->new(@Ann))");
+      e.parseGoodPointcut("construction(*->new(@org.acme.Ann, @Ann))");
+      e.parseGoodPointcut("construction(*->new(@org.acme.Ann, int, @Ann))");
+      e.parseGoodPointcut("construction(*->new(@org.acme.Ann, .., @Ann))");
+
+      e.parseGoodPointcut("construction(*->new(org.acme.*))");
+      e.parseGoodPointcut("construction(*->new(*))");
+      e.parseGoodPointcut("construction(*->new(org.acme.*, Clazz))");
+      e.parseGoodPointcut("construction(*->new(org.acme.Clazz, int, Clazz))");
+      e.parseGoodPointcut("construction(*->new(org.acme.Clazz, .., Clazz))");
+
+      e.parseGoodPointcut("construction(*->new(@org.acme.*))");
+      e.parseGoodPointcut("construction(*->new(@*))");
+      e.parseGoodPointcut("construction(*->new(@org.acme.*, @*))");
+      e.parseGoodPointcut("construction(*->new(@org.acme.*, int, @*))");
+      e.parseGoodPointcut("construction(*->new(@org.acme.*, .., @*))");
+
+      e.parseGoodPointcut("construction(*->new($instanceof{@org.acme.Ann}))");
+      e.parseGoodPointcut("construction(*->new($instanceof{@Ann}))");
+      e.parseGoodPointcut("construction(*->new($instanceof{@org.acme.Ann}, $instanceof{@Ann}))");
+      e.parseGoodPointcut("construction(*->new($instanceof{@org.acme.Ann}, int, $instanceof{@Ann}))");
+      e.parseGoodPointcut("construction(*->new($instanceof{@org.acme.Ann}, .., $instanceof{@Ann}))");
+
+      e.parseGoodPointcut("construction(*->new($instanceof{@org.acme.*}))");
+      e.parseGoodPointcut("construction(*->new($instanceof{@*}))");
+      e.parseGoodPointcut("construction(*->new($instanceof{@org.acme.*}, $instanceof{@*}))");
+      e.parseGoodPointcut("construction(*->new($instanceof{@org.acme.*}, int, $instanceof{@*}))");
+      e.parseGoodPointcut("construction(*->new($instanceof{@org.acme.*}, .., $instanceof{@*}))");
+      e.parseGoodPointcut("construction(*->new($instanceof{@org.*.Clazz}, .., $instanceof{@*}))");
+      e.parseGoodPointcut("construction(*->new($instanceof{@*.acme.Clazz}, .., $instanceof{@*}))");
+
+      e.parseGoodPointcut("construction(*->new($instanceof{org.acme.Clazz}))");
+      e.parseGoodPointcut("construction(*->new($instanceof{Clazz}))");
+      e.parseGoodPointcut("construction(*->new($instanceof{org.acme.Clazz}, $instanceof{Clazz}))");
+      e.parseGoodPointcut("construction(*->new($instanceof{org.acme.Clazz}, int, $instanceof{Clazz}))");
+      e.parseGoodPointcut("construction(*->new($instanceof{org.acme.Clazz}, .., $instanceof{Clazz}))");
+
+      e.parseGoodPointcut("construction(*->new($instanceof{org.acme.*}))");
+      e.parseGoodPointcut("construction(*->new($instanceof{*}))");
+      e.parseGoodPointcut("construction(*->new($instanceof{org.acme.*}, $instanceof{*}))");
+      e.parseGoodPointcut("construction(*->new($instanceof{org.acme.*}, int, $instanceof{*}))");
+      e.parseGoodPointcut("construction(*->new($instanceof{org.acme.*}, .., $instanceof{*}))");
+      e.parseGoodPointcut("construction(*->new($instanceof{org.*.Clazz}, .., $instanceof{*}))");
+      e.parseGoodPointcut("construction(*->new($instanceof{*.acme.Clazz}, .., $instanceof{*}))");
+     
+      e.parseGoodPointcut("construction(org..->new())");
+      e.parseGoodPointcut("construction(org.acme..->new())");
+      e.parseGoodPointcut("construction(org.*..->new())");
+      e.parseGoodPointcut("construction(*.acme..->new())");
+      
+      checkFailures(e.failures);
+   }
+   
+   public void testGoodFieldPointcuts() throws Exception
+   {
+      Executor e = new Executor();
+      e.parseGoodPointcut("field(* *->*)");
+      e.parseGoodPointcut("field(public * *->*)");
+      e.parseGoodPointcut("field(public static * *->*)");
+      e.parseGoodPointcut("field(protected static * *->*)");
+      e.parseGoodPointcut("field(private static * *->*)");
+      e.parseGoodPointcut("field(!public !static * *->*)");
+      e.parseGoodPointcut("field(!protected !static * *->*)");
+      e.parseGoodPointcut("field(!private !static * *->*)");
+
+      e.parseGoodPointcut("field(@Ann @Ann->@Ann)");
+      e.parseGoodPointcut("field(@org.acme.Ann @org.acme.Ann->@org.acme.Ann)");
+
+      e.parseGoodPointcut("field($instanceof{a} $instanceof{Clazz}->x)");
+      e.parseGoodPointcut("field($instanceof{a.b} $instanceof{org.acme.Clazz}->y)");
+      e.parseGoodPointcut("field($instanceof{@a.Ann} $instanceof{Clazz}->x)");
+      e.parseGoodPointcut("field($instanceof{@Ann} $instanceof{org.acme.Clazz}->x)");
+          
+      e.parseGoodPointcut("field(* org..->*)");
+      e.parseGoodPointcut("field(* org.acme..->*)");
+      e.parseGoodPointcut("field(* org.*..->*)");
+      e.parseGoodPointcut("field(* *.acme..->*)");
+      
+      checkFailures(e.failures);
+   }
+
+   public void testGoodCompsitePointcuts() throws Exception
+   {
+      Executor e = new Executor();
+
+      e.parseGoodPointcut("call(* *->*()) AND within(*)");
+      
+      e.parseGoodPointcut("call(org.acme.Clazz->new()) AND within(org.acme.Clazz)");
+      e.parseGoodPointcut("call(Clazz->new()) AND within(org.acme.Clazz)");
+      e.parseGoodPointcut("call(Clazz->new()) AND within(org.acme..)");
+      e.parseGoodPointcut("call(org.acme..->new()) AND within(*.acme..)");
+      
+      e.parseGoodPointcut("call(int org.acme.Clazz->method()) AND within(org.acme.Clazz)");
+      e.parseGoodPointcut("call(int Clazz->method()) AND within(Clazz)");
+      e.parseGoodPointcut("call(int Clazz->method()) AND within(*.acme..)");
+      e.parseGoodPointcut("call(int org.acme..->method()) AND within(org.acme..)");
+      
+      e.parseGoodPointcut("call(org.acme.Clazz->new()) AND withincode(org.acme.Clazz->new(int, java.lang.String[]))");
+      e.parseGoodPointcut("call(Clazz->new()) AND withincode(Clazz->new(.., int))");
+      e.parseGoodPointcut("call(org.acme..->new()) AND withincode(org.acme..->new(int, java.lang.String[]))");
+      e.parseGoodPointcut("call(Clazz->new()) AND withincode(*.acme..->new(.., int))");
+      
+      
+      e.parseGoodPointcut("call(int org.acme.Clazz->method()) AND withincode(int[] org.acme.Clazz->method(..))");
+      e.parseGoodPointcut("call(int Clazz->method()) AND withincode(* Clazz->method(long))");
+      e.parseGoodPointcut("call(int org.acme..->method()) AND withincode(int[] org.acme..->method(..))");
+      e.parseGoodPointcut("call(int Clazz->method()) AND withincode(* *acme..->method(long))");
+      
+      checkFailures(e.failures);
+   }
+   
    public void testBadPointcuts() throws Exception
    {
       Executor e = new Executor();
-      e.parseBadPointcut("execution(*->*()");
+
+      //Should maybe be implemented?
+      e.parseBadPointcut("execution(org.acme.. *->*())");
+      e.parseBadPointcut("execution(* *->*(org.acme..))");
+      e.parseBadPointcut("execution(* *->*(org.acme..))");
+
+      //Should maybe be implemented?
+      e.parseBadPointcut("execution(*->new(org.acme..))");
+
       checkFailures(e.failures);
    }
    
@@ -125,6 +424,8 @@
             if (!expectFailure)
             {
                failures.add("+ Should have passed: " + pointcut);
+               System.out.println(pointcut);
+               e.printStackTrace(System.out);
             }
          }
       }




More information about the jboss-cvs-commits mailing list