1 4 package com.tc.pattern; 5 6 import com.tc.aspectwerkz.expression.ExpressionContext; 7 import com.tc.aspectwerkz.expression.ExpressionVisitor; 8 import com.tc.aspectwerkz.reflect.ClassInfo; 9 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(final MemberInfo methodInfo) { 30 return m_expressionHelper.createExecutionExpressionContext(methodInfo); 31 } 32 33 public boolean matchesMethod(final String expr, final ExpressionContext exprCntx) { 34 try { 35 String execExpr = ExpressionHelper.expressionPattern2ExecutionExpression(expr); 36 ExpressionVisitor visitor = m_expressionHelper.createExpressionVisitor(execExpr); 37 38 return visitor.match(exprCntx); 39 } catch (Exception e) { 40 return false; 41 } 42 } 43 44 public boolean matchesMember(final String expr, final MemberInfo methodInfo) { 45 return matchesMethod(expr, m_expressionHelper.createExecutionExpressionContext(methodInfo)); 46 } 47 48 public ExpressionContext createWithinExpressionContext(final String className) { 49 return createWithinExpressionContext(m_classInfoFactory.getClassInfo(className)); 50 } 51 52 public ExpressionContext createWithinExpressionContext(final ClassInfo classInfo) { 53 return m_expressionHelper.createWithinExpressionContext(classInfo); 54 } 55 56 public boolean matchesClass(final String expr, final ExpressionContext exprCntx) { 57 try { 58 String withinExpr = ExpressionHelper.expressionPattern2WithinExpression(expr); 59 ExpressionVisitor visitor = m_expressionHelper.createExpressionVisitor(withinExpr); 60 61 return visitor.match(exprCntx); 62 } catch (Exception e) { 63 return false; 64 } 65 } 66 67 public boolean matchesClass(final String expression, final String className) { 68 return matchesClass(expression, m_classInfoFactory.getClassInfo(className)); 69 } 70 71 public boolean matchesClass(final String expr, final ClassInfo classInfo) { 72 return matchesClass(expr, m_expressionHelper.createWithinExpressionContext(classInfo)); 73 } 74 75 public MethodInfo getMethodInfo(int modifiers, String className, String methodName, String description, 76 String [] exceptions) { 77 return new AsmMethodInfo(m_classInfoFactory, modifiers, className, methodName, description, exceptions); 78 } 79 } 80 | Popular Tags |