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 ASTParameter extends SimpleNode {
8 private TypePattern m_declaringClassPattern;
9
10 public ASTParameter(int id) {
11 super(id);
12 }
13
14 public ASTParameter(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 setTypePattern(String pattern) {
23 if (pattern.endsWith("+")) {
24 pattern = pattern.substring(0, pattern.length() - 1);
25 m_declaringClassPattern = Pattern.compileTypePattern(pattern, SubtypePatternType.MATCH_ON_ALL_METHODS);
26 } else if (pattern.endsWith("#")) {
27 pattern = pattern.substring(0, pattern.length() - 1);
28 m_declaringClassPattern = Pattern.compileTypePattern(
29 pattern,
30 SubtypePatternType.MATCH_ON_BASE_TYPE_METHODS_ONLY);
31 } else {
32 m_declaringClassPattern = Pattern.compileTypePattern(pattern, SubtypePatternType.NOT_HIERARCHICAL);
33 }
34 }
35
36 public TypePattern getDeclaringClassPattern() {
37 return m_declaringClassPattern;
38 }
39 }