01: /*
02: * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
03: */
04: package com.tc.pattern;
05:
06: import com.tc.aspectwerkz.expression.ExpressionContext;
07: import com.tc.aspectwerkz.expression.ExpressionVisitor;
08: import com.tc.aspectwerkz.reflect.ClassInfo;
09: import com.tc.aspectwerkz.reflect.MemberInfo;
10: import com.tc.aspectwerkz.reflect.MethodInfo;
11: import com.tc.object.bytecode.aspectwerkz.AsmMethodInfo;
12: import com.tc.object.bytecode.aspectwerkz.ClassInfoFactory;
13: import com.tc.object.bytecode.aspectwerkz.ExpressionHelper;
14:
15: public class PatternHelper {
16: private static PatternHelper m_helper = new PatternHelper();
17: private ExpressionHelper m_expressionHelper;
18: private ClassInfoFactory m_classInfoFactory;
19:
20: public static final PatternHelper getHelper() {
21: return m_helper;
22: }
23:
24: private PatternHelper() {
25: m_expressionHelper = new ExpressionHelper();
26: m_classInfoFactory = new ClassInfoFactory();
27: }
28:
29: public ExpressionContext createExecutionExpressionContext(
30: final MemberInfo methodInfo) {
31: return m_expressionHelper
32: .createExecutionExpressionContext(methodInfo);
33: }
34:
35: public boolean matchesMethod(final String expr,
36: final ExpressionContext exprCntx) {
37: try {
38: String execExpr = ExpressionHelper
39: .expressionPattern2ExecutionExpression(expr);
40: ExpressionVisitor visitor = m_expressionHelper
41: .createExpressionVisitor(execExpr);
42:
43: return visitor.match(exprCntx);
44: } catch (Exception e) {
45: return false;
46: }
47: }
48:
49: public boolean matchesMember(final String expr,
50: final MemberInfo methodInfo) {
51: return matchesMethod(expr, m_expressionHelper
52: .createExecutionExpressionContext(methodInfo));
53: }
54:
55: public ExpressionContext createWithinExpressionContext(
56: final String className) {
57: return createWithinExpressionContext(m_classInfoFactory
58: .getClassInfo(className));
59: }
60:
61: public ExpressionContext createWithinExpressionContext(
62: final ClassInfo classInfo) {
63: return m_expressionHelper
64: .createWithinExpressionContext(classInfo);
65: }
66:
67: public boolean matchesClass(final String expr,
68: final ExpressionContext exprCntx) {
69: try {
70: String withinExpr = ExpressionHelper
71: .expressionPattern2WithinExpression(expr);
72: ExpressionVisitor visitor = m_expressionHelper
73: .createExpressionVisitor(withinExpr);
74:
75: return visitor.match(exprCntx);
76: } catch (Exception e) {
77: return false;
78: }
79: }
80:
81: public boolean matchesClass(final String expression,
82: final String className) {
83: return matchesClass(expression, m_classInfoFactory
84: .getClassInfo(className));
85: }
86:
87: public boolean matchesClass(final String expr,
88: final ClassInfo classInfo) {
89: return matchesClass(expr, m_expressionHelper
90: .createWithinExpressionContext(classInfo));
91: }
92:
93: public MethodInfo getMethodInfo(int modifiers, String className,
94: String methodName, String description, String[] exceptions) {
95: return new AsmMethodInfo(m_classInfoFactory, modifiers,
96: className, methodName, description, exceptions);
97: }
98: }
|