KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > codehaus > aspectwerkz > expression > ast > ASTMethodPattern


1 /* Generated By:JJTree: Do not edit this line. ASTMethodPattern.java */
2 package org.codehaus.aspectwerkz.expression.ast;
3
4 import org.codehaus.aspectwerkz.expression.SubtypePatternType;
5 import org.codehaus.aspectwerkz.expression.regexp.NamePattern;
6 import org.codehaus.aspectwerkz.expression.regexp.Pattern;
7 import org.codehaus.aspectwerkz.expression.regexp.TypePattern;
8
9 import java.util.ArrayList JavaDoc;
10 import java.util.List JavaDoc;
11
12 public class ASTMethodPattern extends SimpleNode {
13     private TypePattern m_returnTypePattern;
14
15     private TypePattern m_declaringTypePattern;
16
17     private NamePattern m_methodNamePattern;
18
19     private List JavaDoc m_modifiers = new ArrayList JavaDoc();
20
21     public ASTMethodPattern(int id) {
22         super(id);
23     }
24
25     public ASTMethodPattern(ExpressionParser p, int id) {
26         super(p, id);
27     }
28
29     public Object JavaDoc jjtAccept(ExpressionParserVisitor visitor, Object JavaDoc data) {
30         return visitor.visit(this, data);
31     }
32
33     public void addModifier(String JavaDoc modifier) {
34         m_modifiers.add(modifier);
35     }
36
37     public void setReturnTypePattern(String JavaDoc pattern) {
38         if (pattern.endsWith("+")) {
39             pattern = pattern.substring(0, pattern.length() - 1);
40             m_returnTypePattern = Pattern.compileTypePattern(pattern, SubtypePatternType.MATCH_ON_ALL_METHODS);
41         } else if (pattern.endsWith("#")) {
42             pattern = pattern.substring(0, pattern.length() - 1);
43             m_returnTypePattern = Pattern.compileTypePattern(
44                     pattern,
45                     SubtypePatternType.MATCH_ON_BASE_TYPE_METHODS_ONLY
46             );
47         } else {
48             m_returnTypePattern = Pattern.compileTypePattern(pattern, SubtypePatternType.NOT_HIERARCHICAL);
49         }
50     }
51
52     public void setFullNamePattern(final String JavaDoc pattern) throws ParseException {
53         int index = pattern.lastIndexOf('.');
54         String JavaDoc classPattern = null;
55         //Aw-112 support for "method(..)" and "com..*(..)"
56
if (index > 0) {
57             classPattern = pattern.substring(0, index);
58             if (classPattern.endsWith(".")) {
59                 classPattern += ".*";
60             }
61         } else {
62             // unspecified classPattern like "method(..)"
63
classPattern = "*..*";
64         }
65         if (classPattern.endsWith("+")) {
66             classPattern = classPattern.substring(0, classPattern.length() - 1);
67             m_declaringTypePattern = Pattern.compileTypePattern(classPattern, SubtypePatternType.MATCH_ON_ALL_METHODS);
68         } else if (classPattern.endsWith("#")) {
69             classPattern = classPattern.substring(0, classPattern.length() - 1);
70             m_declaringTypePattern = Pattern.compileTypePattern(
71                     classPattern,
72                     SubtypePatternType.MATCH_ON_BASE_TYPE_METHODS_ONLY
73             );
74         } else {
75             m_declaringTypePattern = Pattern.compileTypePattern(classPattern, SubtypePatternType.NOT_HIERARCHICAL);
76         }
77         String JavaDoc methodNamePattern = pattern.substring(index + 1, pattern.length());
78         m_methodNamePattern = Pattern.compileNamePattern(methodNamePattern);
79         if ("new".equals(methodNamePattern)) {
80             throw new ParseException("Using a constructor pattern with an explicit return type is not allowed");
81         }
82     }
83
84     public TypePattern getReturnTypePattern() {
85         return m_returnTypePattern;
86     }
87
88     public TypePattern getDeclaringTypePattern() {
89         return m_declaringTypePattern;
90     }
91
92     public NamePattern getMethodNamePattern() {
93         return m_methodNamePattern;
94     }
95
96     public List JavaDoc getModifiers() {
97         return m_modifiers;
98     }
99 }
Popular Tags