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 if (index > 0) { 27 classPattern = pattern.substring(0, index); 28 } else { 29 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 } | Popular Tags |