1 /***************************************************************************************
2 * Copyright (c) Jonas Bonér, Alexandre Vasseur. All rights reserved. *
3 * http://aspectwerkz.codehaus.org *
4 * ---------------------------------------------------------------------------------- *
5 * The software in this package is published under the terms of the LGPL license *
6 * a copy of which has been included with this distribution in the license.txt file. *
7 **************************************************************************************/
8 package org.codehaus.aspectwerkz.expression.regexp;
9
10 import org.codehaus.aspectwerkz.expression.SubtypePatternType;
11
12 import java.io.Serializable;
13 import java.util.HashMap;
14 import java.util.Map;
15
16 /***
17 * Implements an abstract regular expression pattern matcher for AspectWerkz.
18 *
19 * @author <a href="mailto:jboner@codehaus.org">Jonas Bonér </a>
20 */
21 public abstract class Pattern implements Serializable {
22 /***
23 * Defines a single wildcard.
24 */
25 public static final String REGULAR_WILDCARD = "*";
26
27 /***
28 * Defines a multiple wildcard.
29 */
30 public static final String EAGER_WILDCARD = "..";
31
32 /***
33 * Abbreviations for all the classes in the java.lang.* and the java.util.* namespaces.
34 */
35 public static final Map ABBREVIATIONS = new HashMap();
36
37 static {
38
39 ABBREVIATIONS.put("JoinPoint", "org.codehaus.aspectwerkz.joinpoint.JoinPoint");
40
41 ABBREVIATIONS.put("CharSequence", "java.lang.CharSequence");
42 ABBREVIATIONS.put("Cloneable", "java.lang.Cloneable");
43 ABBREVIATIONS.put("Comparable", "java.lang.Comparable");
44 ABBREVIATIONS.put("Runnable", "java.lang.Runnable");
45 ABBREVIATIONS.put("Boolean", "java.lang.Boolean");
46 ABBREVIATIONS.put("Byte", "java.lang.Byte");
47 ABBREVIATIONS.put("Character", "java.lang.Character");
48 ABBREVIATIONS.put("Class", "java.lang.Class");
49 ABBREVIATIONS.put("ClassLoader", "java.lang.ClassLoader");
50 ABBREVIATIONS.put("Compiler", "java.lang.Compiler");
51 ABBREVIATIONS.put("Double", "java.lang.Double");
52 ABBREVIATIONS.put("Float", "java.lang.Float");
53 ABBREVIATIONS.put("InheritableThreadLocal", "java.lang.InheritableThreadLocal");
54 ABBREVIATIONS.put("Integer", "java.lang.Integer");
55 ABBREVIATIONS.put("Long", "java.lang.Long");
56 ABBREVIATIONS.put("Math", "java.lang.Math");
57 ABBREVIATIONS.put("Number", "java.lang.Number");
58 ABBREVIATIONS.put("Object", "java.lang.Object");
59 ABBREVIATIONS.put("Package", "java.lang.Package");
60 ABBREVIATIONS.put("Process", "java.lang.Process");
61 ABBREVIATIONS.put("Runtime", "java.lang.Runtime");
62 ABBREVIATIONS.put("RuntimePermission", "java.lang.RuntimePermission");
63 ABBREVIATIONS.put("SecurityManager", "java.lang.SecurityManager");
64 ABBREVIATIONS.put("Short", "java.lang.Short");
65 ABBREVIATIONS.put("StackTraceElement", "java.lang.StackTraceElement");
66 ABBREVIATIONS.put("StrictMath", "java.lang.StrictMath");
67 ABBREVIATIONS.put("String", "java.lang.String");
68 ABBREVIATIONS.put("StringBuffer", "java.lang.StringBuffer");
69 ABBREVIATIONS.put("System", "java.lang.System");
70 ABBREVIATIONS.put("Thread", "java.lang.Thread");
71 ABBREVIATIONS.put("ThreadGroup", "java.lang.ThreadGroup");
72 ABBREVIATIONS.put("ThreadLocal", "java.lang.ThreadLocal");
73 ABBREVIATIONS.put("Throwable", "java.lang.Throwable");
74 ABBREVIATIONS.put("Void", "java.lang.Void");
75 ABBREVIATIONS.put("CharSequence[]", "java.lang.CharSequence[][]");
76 ABBREVIATIONS.put("Cloneable[]", "java.lang.Cloneable[]");
77 ABBREVIATIONS.put("Comparable[]", "java.lang.Comparable[]");
78 ABBREVIATIONS.put("Runnable[]", "java.lang.Runnable[]");
79 ABBREVIATIONS.put("Boolean[]", "java.lang.Boolean[]");
80 ABBREVIATIONS.put("Byte[]", "java.lang.Byte[]");
81 ABBREVIATIONS.put("Character[]", "java.lang.Character[]");
82 ABBREVIATIONS.put("Class[]", "java.lang.Class[]");
83 ABBREVIATIONS.put("ClassLoader[]", "java.lang.ClassLoader[]");
84 ABBREVIATIONS.put("Compiler[]", "java.lang.Compiler[]");
85 ABBREVIATIONS.put("Double[]", "java.lang.Double[]");
86 ABBREVIATIONS.put("Float[]", "java.lang.Float[]");
87 ABBREVIATIONS.put("InheritableThreadLocal[]", "java.lang.InheritableThreadLocal[]");
88 ABBREVIATIONS.put("Integer[]", "java.lang.Integer[]");
89 ABBREVIATIONS.put("Long[]", "java.lang.Long[]");
90 ABBREVIATIONS.put("Math[]", "java.lang.Math[]");
91 ABBREVIATIONS.put("Number[]", "java.lang.Number[]");
92 ABBREVIATIONS.put("Object[]", "java.lang.Object[]");
93 ABBREVIATIONS.put("Package[]", "java.lang.Package[]");
94 ABBREVIATIONS.put("Process[]", "java.lang.Process[]");
95 ABBREVIATIONS.put("Runtime[]", "java.lang.Runtime[]");
96 ABBREVIATIONS.put("RuntimePermission[]", "java.lang.RuntimePermission[]");
97 ABBREVIATIONS.put("SecurityManager[]", "java.lang.SecurityManager[]");
98 ABBREVIATIONS.put("Short[]", "java.lang.Short[]");
99 ABBREVIATIONS.put("StackTraceElement[]", "java.lang.StackTraceElement[]");
100 ABBREVIATIONS.put("StrictMath[]", "java.lang.StrictMath[]");
101 ABBREVIATIONS.put("String[]", "java.lang.String[]");
102 ABBREVIATIONS.put("StringBuffer[]", "java.lang.StringBuffer[]");
103 ABBREVIATIONS.put("System[]", "java.lang.System[]");
104 ABBREVIATIONS.put("Thread[]", "java.lang.Thread[]");
105 ABBREVIATIONS.put("ThreadGroup[]", "java.lang.ThreadGroup[]");
106 ABBREVIATIONS.put("ThreadLocal[]", "java.lang.ThreadLocal[]");
107 ABBREVIATIONS.put("Throwable[]", "java.lang.Throwable[]");
108 ABBREVIATIONS.put("Void[]", "java.lang.Void[]");
109 ABBREVIATIONS.put("CharSequence[][]", "java.lang.CharSequence[][]");
110 ABBREVIATIONS.put("Cloneable[][]", "java.lang.Cloneable[][]");
111 ABBREVIATIONS.put("Comparable[][]", "java.lang.Comparable[][]");
112 ABBREVIATIONS.put("Runnable[][]", "java.lang.Runnable[][]");
113 ABBREVIATIONS.put("Boolean[][]", "java.lang.Boolean[][]");
114 ABBREVIATIONS.put("Byte[][]", "java.lang.Byte[][]");
115 ABBREVIATIONS.put("Character[][]", "java.lang.Character[][]");
116 ABBREVIATIONS.put("Class[][]", "java.lang.Class[][]");
117 ABBREVIATIONS.put("ClassLoader[][]", "java.lang.ClassLoader[][]");
118 ABBREVIATIONS.put("Compiler[][]", "java.lang.Compiler[][]");
119 ABBREVIATIONS.put("Double[][]", "java.lang.Double[][]");
120 ABBREVIATIONS.put("Float[][]", "java.lang.Float[][]");
121 ABBREVIATIONS.put("InheritableThreadLocal[][]", "java.lang.InheritableThreadLocal[][]");
122 ABBREVIATIONS.put("Integer[][]", "java.lang.Integer[][]");
123 ABBREVIATIONS.put("Long[][]", "java.lang.Long[][]");
124 ABBREVIATIONS.put("Math[][]", "java.lang.Math[][]");
125 ABBREVIATIONS.put("Number[][]", "java.lang.Number[][]");
126 ABBREVIATIONS.put("Object[][]", "java.lang.Object[][]");
127 ABBREVIATIONS.put("Package[][]", "java.lang.Package[][]");
128 ABBREVIATIONS.put("Process[][]", "java.lang.Process[][]");
129 ABBREVIATIONS.put("Runtime[][]", "java.lang.Runtime[][]");
130 ABBREVIATIONS.put("RuntimePermission[][]", "java.lang.RuntimePermission[][]");
131 ABBREVIATIONS.put("SecurityManager[][]", "java.lang.SecurityManager[][]");
132 ABBREVIATIONS.put("Short[][]", "java.lang.Short[][]");
133 ABBREVIATIONS.put("StackTraceElement[][]", "java.lang.StackTraceElement[][]");
134 ABBREVIATIONS.put("StrictMath[][]", "java.lang.StrictMath[][]");
135 ABBREVIATIONS.put("String[][]", "java.lang.String[][]");
136 ABBREVIATIONS.put("StringBuffer[][]", "java.lang.StringBuffer[][]");
137 ABBREVIATIONS.put("System[][]", "java.lang.System[][]");
138 ABBREVIATIONS.put("Thread[][]", "java.lang.Thread[][]");
139 ABBREVIATIONS.put("ThreadGroup[][]", "java.lang.ThreadGroup[][]");
140 ABBREVIATIONS.put("ThreadLocal[][]", "java.lang.ThreadLocal[][]");
141 ABBREVIATIONS.put("Throwable[][]", "java.lang.Throwable[][]");
142 ABBREVIATIONS.put("Void[][]", "java.lang.Void[][]");
143 ABBREVIATIONS.put("Collection", "java.util.Collection");
144 ABBREVIATIONS.put("Comparator", "java.util.Comparator");
145 ABBREVIATIONS.put("Enumeration", "java.util.Enumeration");
146 ABBREVIATIONS.put("EventListener", "java.util.EventListener");
147 ABBREVIATIONS.put("Iterator", "java.util.Iterator");
148 ABBREVIATIONS.put("List", "java.util.List");
149 ABBREVIATIONS.put("ListIterator", "java.util.ListIterator");
150 ABBREVIATIONS.put("Map", "java.util.Map");
151 ABBREVIATIONS.put("Map.Entry", "java.util.Map.Entry");
152 ABBREVIATIONS.put("Observer", "java.util.Observer");
153 ABBREVIATIONS.put("RandomAccess", "java.util.RandomAccess");
154 ABBREVIATIONS.put("Set", "java.util.Set");
155 ABBREVIATIONS.put("SortedMap", "java.util.SortedMap");
156 ABBREVIATIONS.put("SortedSet", "java.util.SortedSet");
157 ABBREVIATIONS.put("AbstractCollection", "java.util.AbstractCollection");
158 ABBREVIATIONS.put("AbstractList", "java.util.AbstractList");
159 ABBREVIATIONS.put("AbstractMap", "java.util.AbstractMap");
160 ABBREVIATIONS.put("AbstractSequentialList ", "java.util.AbstractSequentialList");
161 ABBREVIATIONS.put("AbstractSet", "java.util.AbstractSet");
162 ABBREVIATIONS.put("ArrayList", "java.util.ArrayList");
163 ABBREVIATIONS.put("Arrays", "java.util.Arrays");
164 ABBREVIATIONS.put("BitSet", "java.util.BitSet");
165 ABBREVIATIONS.put("Calendar", "java.util.Calendar");
166 ABBREVIATIONS.put("Collections", "java.util.Collections");
167 ABBREVIATIONS.put("Currency", "java.util.Currency");
168 ABBREVIATIONS.put("Date", "java.util.Date");
169 ABBREVIATIONS.put("Dictionary", "java.util.Dictionary");
170 ABBREVIATIONS.put("EventListenerProxy", "java.util.EventListenerProxy");
171 ABBREVIATIONS.put("EventObject", "java.util.EventObject");
172 ABBREVIATIONS.put("GregorianCalender", "java.util.GregorianCalender");
173 ABBREVIATIONS.put("HashMap", "java.util.HashMap");
174 ABBREVIATIONS.put("HashSet", "java.util.HashSet");
175 ABBREVIATIONS.put("Hashtable", "java.util.Hashtable");
176 ABBREVIATIONS.put("IdentityHashMap", "java.util.IdentityHashMap");
177 ABBREVIATIONS.put("LinkedHashMap", "java.util.LinkedHashMap");
178 ABBREVIATIONS.put("LinkedHashSet", "java.util.LinkedHashSet");
179 ABBREVIATIONS.put("LinkedList", "java.util.LinkedList");
180 ABBREVIATIONS.put("ListResourceBundle", "java.util.ListResourceBundle");
181 ABBREVIATIONS.put("Locale", "java.util.Locale");
182 ABBREVIATIONS.put("Observable", "java.util.Observable");
183 ABBREVIATIONS.put("Properties", "java.util.Properties");
184 ABBREVIATIONS.put("PropertyPermission", "java.util.PropertyPermission");
185 ABBREVIATIONS.put("PropertyResourceBundle", "java.util.PropertyResourceBundle");
186 ABBREVIATIONS.put("Random", "java.util.Random");
187 ABBREVIATIONS.put("ResourceBundle", "java.util.ResourceBundle");
188 ABBREVIATIONS.put("SimpleTimeZone", "java.util.SimpleTimeZone");
189 ABBREVIATIONS.put("Stack", "java.util.Stack");
190 ABBREVIATIONS.put("StringTokenizer", "java.util.StringTokenizer");
191 ABBREVIATIONS.put("Timer", "java.util.Timer");
192 ABBREVIATIONS.put("TimerTask", "java.util.TimerTask");
193 ABBREVIATIONS.put("TimeZone", "java.util.TimeZone");
194 ABBREVIATIONS.put("TreeMap", "java.util.TreeMap");
195 ABBREVIATIONS.put("TreeSet", "java.util.TreeSet");
196 ABBREVIATIONS.put("Vector", "java.util.Vector");
197 ABBREVIATIONS.put("WeakHashMap", "java.util.WeakHashMap");
198 ABBREVIATIONS.put("Collection[]", "java.util.Collection[]");
199 ABBREVIATIONS.put("Comparator[]", "java.util.Comparator[]");
200 ABBREVIATIONS.put("Enumeration[]", "java.util.Enumeration[]");
201 ABBREVIATIONS.put("EventListener[]", "java.util.EventListener[]");
202 ABBREVIATIONS.put("Iterator[]", "java.util.Iterator[]");
203 ABBREVIATIONS.put("List[]", "java.util.List[]");
204 ABBREVIATIONS.put("ListIterator[]", "java.util.ListIterator[]");
205 ABBREVIATIONS.put("Map[]", "java.util.Map[]");
206 ABBREVIATIONS.put("Map.Entry[]", "java.util.Map.Entry[]");
207 ABBREVIATIONS.put("Observer[]", "java.util.Observer[]");
208 ABBREVIATIONS.put("RandomAccess[]", "java.util.RandomAccess[]");
209 ABBREVIATIONS.put("Set[]", "java.util.Set[]");
210 ABBREVIATIONS.put("SortedMap[]", "java.util.SortedMap[]");
211 ABBREVIATIONS.put("SortedSet[]", "java.util.SortedSet[]");
212 ABBREVIATIONS.put("AbstractCollection[]", "java.util.AbstractCollection[]");
213 ABBREVIATIONS.put("AbstractList[]", "java.util.AbstractList[]");
214 ABBREVIATIONS.put("AbstractMap[]", "java.util.AbstractMap[]");
215 ABBREVIATIONS.put("AbstractSequentialList []", "java.util.AbstractSequentialList[]");
216 ABBREVIATIONS.put("AbstractSet[]", "java.util.AbstractSet[]");
217 ABBREVIATIONS.put("ArrayList[]", "java.util.ArrayList[]");
218 ABBREVIATIONS.put("Arrays[]", "java.util.Arrays[]");
219 ABBREVIATIONS.put("BitSet[]", "java.util.BitSet[]");
220 ABBREVIATIONS.put("Calendar[]", "java.util.Calendar[]");
221 ABBREVIATIONS.put("Collections[]", "java.util.Collections[]");
222 ABBREVIATIONS.put("Currency[]", "java.util.Currency[]");
223 ABBREVIATIONS.put("Date[]", "java.util.Date[]");
224 ABBREVIATIONS.put("Dictionary[]", "java.util.Dictionary[]");
225 ABBREVIATIONS.put("EventListenerProxy[]", "java.util.EventListenerProxy[]");
226 ABBREVIATIONS.put("EventObject[]", "java.util.EventObject[]");
227 ABBREVIATIONS.put("GregorianCalender[]", "java.util.GregorianCalender[]");
228 ABBREVIATIONS.put("HashMap[]", "java.util.HashMap[]");
229 ABBREVIATIONS.put("HashSet[]", "java.util.HashSet[]");
230 ABBREVIATIONS.put("Hashtable[]", "java.util.Hashtable[]");
231 ABBREVIATIONS.put("IdentityHashMap[]", "java.util.IdentityHashMap[]");
232 ABBREVIATIONS.put("LinkedHashMap[]", "java.util.LinkedHashMap[]");
233 ABBREVIATIONS.put("LinkedHashSet[]", "java.util.LinkedHashSet[]");
234 ABBREVIATIONS.put("LinkedList[]", "java.util.LinkedList[]");
235 ABBREVIATIONS.put("ListResourceBundle[]", "java.util.ListResourceBundle[]");
236 ABBREVIATIONS.put("Locale[]", "java.util.Locale[]");
237 ABBREVIATIONS.put("Observable[]", "java.util.Observable[]");
238 ABBREVIATIONS.put("Properties[]", "java.util.Properties[]");
239 ABBREVIATIONS.put("PropertyPermission[]", "java.util.PropertyPermission[]");
240 ABBREVIATIONS.put("PropertyResourceBundle[]", "java.util.PropertyResourceBundle[]");
241 ABBREVIATIONS.put("Random[]", "java.util.Random[]");
242 ABBREVIATIONS.put("ResourceBundle[]", "java.util.ResourceBundle[]");
243 ABBREVIATIONS.put("SimpleTimeZone[]", "java.util.SimpleTimeZone[]");
244 ABBREVIATIONS.put("Stack[]", "java.util.Stack[]");
245 ABBREVIATIONS.put("StringTokenizer[]", "java.util.StringTokenizer[]");
246 ABBREVIATIONS.put("Timer[]", "java.util.Timer[]");
247 ABBREVIATIONS.put("TimerTask[]", "java.util.TimerTask[]");
248 ABBREVIATIONS.put("TimeZone[]", "java.util.TimeZone[]");
249 ABBREVIATIONS.put("TreeMap[]", "java.util.TreeMap[]");
250 ABBREVIATIONS.put("TreeSet[]", "java.util.TreeSet[]");
251 ABBREVIATIONS.put("Vector[]", "java.util.Vector[]");
252 ABBREVIATIONS.put("WeakHashMap[]", "java.util.WeakHashMap[]");
253 ABBREVIATIONS.put("Collection[][]", "java.util.Collection[][]");
254 ABBREVIATIONS.put("Comparator[][]", "java.util.Comparator[][]");
255 ABBREVIATIONS.put("Enumeration[][]", "java.util.Enumeration[][]");
256 ABBREVIATIONS.put("EventListener[][]", "java.util.EventListener[][]");
257 ABBREVIATIONS.put("Iterator[][]", "java.util.Iterator[][]");
258 ABBREVIATIONS.put("List[][]", "java.util.List[][]");
259 ABBREVIATIONS.put("ListIterator[][]", "java.util.ListIterator[][]");
260 ABBREVIATIONS.put("Map[][]", "java.util.Map[][]");
261 ABBREVIATIONS.put("Map.Entry[][]", "java.util.Map.Entry[][]");
262 ABBREVIATIONS.put("Observer[][]", "java.util.Observer[][]");
263 ABBREVIATIONS.put("RandomAccess[][]", "java.util.RandomAccess[][]");
264 ABBREVIATIONS.put("Set[][]", "java.util.Set[][]");
265 ABBREVIATIONS.put("SortedMap[][]", "java.util.SortedMap[][]");
266 ABBREVIATIONS.put("SortedSet[][]", "java.util.SortedSet[][]");
267 ABBREVIATIONS.put("AbstractCollection[][]", "java.util.AbstractCollection[][]");
268 ABBREVIATIONS.put("AbstractList[][]", "java.util.AbstractList[][]");
269 ABBREVIATIONS.put("AbstractMap[][]", "java.util.AbstractMap[][]");
270 ABBREVIATIONS.put("AbstractSequentialList [][]", "java.util.AbstractSequentialList[][]");
271 ABBREVIATIONS.put("AbstractSet[][]", "java.util.AbstractSet[][]");
272 ABBREVIATIONS.put("ArrayList[][]", "java.util.ArrayList[][]");
273 ABBREVIATIONS.put("Arrays[][]", "java.util.Arrays[][]");
274 ABBREVIATIONS.put("BitSet[][]", "java.util.BitSet[][]");
275 ABBREVIATIONS.put("Calendar[][]", "java.util.Calendar[][]");
276 ABBREVIATIONS.put("Collections[][]", "java.util.Collections[][]");
277 ABBREVIATIONS.put("Currency[][]", "java.util.Currency[][]");
278 ABBREVIATIONS.put("Date[][]", "java.util.Date[][]");
279 ABBREVIATIONS.put("Dictionary[][]", "java.util.Dictionary[][]");
280 ABBREVIATIONS.put("EventListenerProxy[][]", "java.util.EventListenerProxy[][]");
281 ABBREVIATIONS.put("EventObject[][]", "java.util.EventObject[][]");
282 ABBREVIATIONS.put("GregorianCalender[][]", "java.util.GregorianCalender[][]");
283 ABBREVIATIONS.put("HashMap[][]", "java.util.HashMap[][]");
284 ABBREVIATIONS.put("HashSet[][]", "java.util.HashSet[][]");
285 ABBREVIATIONS.put("Hashtable[][]", "java.util.Hashtable[][]");
286 ABBREVIATIONS.put("IdentityHashMap[][]", "java.util.IdentityHashMap[][]");
287 ABBREVIATIONS.put("LinkedHashMap[][]", "java.util.LinkedHashMap[][]");
288 ABBREVIATIONS.put("LinkedHashSet[][]", "java.util.LinkedHashSet[][]");
289 ABBREVIATIONS.put("LinkedList[][]", "java.util.LinkedList[][]");
290 ABBREVIATIONS.put("ListResourceBundle[][]", "java.util.ListResourceBundle[][]");
291 ABBREVIATIONS.put("Locale[][]", "java.util.Locale[][]");
292 ABBREVIATIONS.put("Observable[][]", "java.util.Observable[][]");
293 ABBREVIATIONS.put("Properties[][]", "java.util.Properties[][]");
294 ABBREVIATIONS.put("PropertyPermission[][]", "java.util.PropertyPermission[][]");
295 ABBREVIATIONS.put("PropertyResourceBundle[][]", "java.util.PropertyResourceBundle[][]");
296 ABBREVIATIONS.put("Random[][]", "java.util.Random[][]");
297 ABBREVIATIONS.put("ResourceBundle[][]", "java.util.ResourceBundle[][]");
298 ABBREVIATIONS.put("SimpleTimeZone[][]", "java.util.SimpleTimeZone[][]");
299 ABBREVIATIONS.put("Stack[][]", "java.util.Stack[][]");
300 ABBREVIATIONS.put("StringTokenizer[][]", "java.util.StringTokenizer[][]");
301 ABBREVIATIONS.put("Timer[][]", "java.util.Timer[][]");
302 ABBREVIATIONS.put("TimerTask[][]", "java.util.TimerTask[][]");
303 ABBREVIATIONS.put("TimeZone[][]", "java.util.TimeZone[][]");
304 ABBREVIATIONS.put("TreeMap[][]", "java.util.TreeMap[][]");
305 ABBREVIATIONS.put("TreeSet[][]", "java.util.TreeSet[][]");
306 ABBREVIATIONS.put("Vector[][]", "java.util.Vector[][]");
307 ABBREVIATIONS.put("WeakHashMap[][]", "java.util.WeakHashMap[][]");
308 }
309
310 /***
311 * Compiles and returns a new type pattern.
312 *
313 * @param pattern the full pattern as a string
314 * @param subtypePatternType the subtype pattern type
315 * @return the pattern
316 */
317 public static TypePattern compileTypePattern(final String pattern, final SubtypePatternType subtypePatternType) {
318 return new TypePattern(pattern, subtypePatternType);
319 }
320
321 /***
322 * Compiles and returns a new name pattern.
323 *
324 * @param pattern the full pattern as a string
325 * @return the pattern
326 */
327 public static NamePattern compileNamePattern(final String pattern) {
328 return new NamePattern(pattern);
329 }
330 }