View Javadoc

    1   package org.codehaus.aspectwerkz.expression.ast;
    2
    3   import org.codehaus.aspectwerkz.expression.SubtypePatternType;
    4   import org.codehaus.aspectwerkz.expression.regexp.Pattern;
    5   import org.codehaus.aspectwerkz.expression.regexp.TypePattern;
    6
    7   public class ASTConstructorPattern extends SimpleNode {
    8       private TypePattern m_declaringTypePattern;
    9
    10      public ASTConstructorPattern(int id) {
    11          super(id);
    12      }
    13
    14      public ASTConstructorPattern(ExpressionParser p, int id) {
    15          super(p, id);
    16      }
    17
    18      public Object jjtAccept(ExpressionParserVisitor visitor, Object data) {
    19          return visitor.visit(this, data);
    20      }
    21
    22      public void setFullNamePattern(String pattern) {
    23          int index = pattern.lastIndexOf('.');
    24          String classPattern = null;
    25          //Aw-112 support for "new(..)"
    26          if (index > 0) {
    27              classPattern = pattern.substring(0, index);
    28          } else {
    29              // unspecified classPattern like "new(..)"
    30              classPattern = "*..*";
    31          }
    32          if (classPattern.endsWith("+")) {
    33              classPattern = classPattern.substring(0, classPattern.length() - 1);
    34              m_declaringTypePattern = Pattern.compileTypePattern(classPattern, SubtypePatternType.MATCH_ON_ALL_METHODS);
    35          } else if (classPattern.endsWith("#")) {
    36              classPattern = classPattern.substring(0, classPattern.length() - 1);
    37              m_declaringTypePattern = Pattern.compileTypePattern(
    38                      classPattern,
    39                      SubtypePatternType.MATCH_ON_BASE_TYPE_METHODS_ONLY
    40              );
    41          } else {
    42              m_declaringTypePattern = Pattern.compileTypePattern(classPattern, SubtypePatternType.NOT_HIERARCHICAL);
    43          }
    44      }
    45
    46      public TypePattern getDeclaringTypePattern() {
    47          return m_declaringTypePattern;
    48      }
    49  }