From: Bill B. <pat...@us...> - 2004-05-03 23:05:57
|
User: patriot1burke Date: 04/05/03 16:05:20 Modified: src/main/org/jboss/aop/introduction InterfaceIntroduction.java Log: added complex type expressions to introductions Revision Changes Path 1.3 +30 -3 jboss-aop/src/main/org/jboss/aop/introduction/InterfaceIntroduction.java Index: InterfaceIntroduction.java =================================================================== RCS file: /cvsroot/jboss/jboss-aop/src/main/org/jboss/aop/introduction/InterfaceIntroduction.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- InterfaceIntroduction.java 30 Apr 2004 03:14:35 -0000 1.2 +++ InterfaceIntroduction.java 3 May 2004 23:05:19 -0000 1.3 @@ -12,9 +12,12 @@ import javassist.CtClass; import org.jboss.aop.Advisor; import org.jboss.aop.AspectManager; +import org.jboss.aop.ClassAdvisor; import org.jboss.aop.annotation.AnnotationElement; import org.jboss.aop.pointcut.Util; +import org.jboss.aop.pointcut.TypeMatcher; import org.jboss.aop.pointcut.ast.ClassExpression; +import org.jboss.aop.pointcut.ast.ASTStart; import java.util.ArrayList; @@ -22,7 +25,7 @@ * * * @author <a href="mailto:bi...@jb...">Bill Burke</a> - * @version $Revision: 1.2 $ + * @version $Revision: 1.3 $ * */ public class InterfaceIntroduction @@ -61,6 +64,7 @@ protected String[] interfaces; protected ArrayList mixins = new ArrayList(); protected ClassExpression classExpr; + protected ASTStart ast; public InterfaceIntroduction(String name, String exp, String[] interfaces) { @@ -69,6 +73,13 @@ this.classExpr = new ClassExpression(exp); } + public InterfaceIntroduction(String name, ASTStart ast, String[] interfaces) + { + this.name = name; + this.ast = ast; + this.interfaces = interfaces; + } + public String getName() { return name; @@ -117,15 +128,31 @@ public String getClassExpr() { + if (classExpr == null) return null; return classExpr.getOriginal(); } + public ASTStart getAst() + { + return ast; + } + public boolean matches(Advisor advisor, CtClass clazz) throws Exception { - return Util.matchesClassExpr(classExpr, clazz, advisor); + if (classExpr != null) return Util.matchesClassExpr(classExpr, clazz, advisor); + else + { + TypeMatcher matcher = new TypeMatcher((ClassAdvisor)advisor, clazz); + return ((Boolean)ast.jjtAccept(matcher, null)).booleanValue(); + } } public boolean matches(Advisor advisor, Class clazz) { - return Util.matchesClassExpr(classExpr, clazz, advisor); + if (classExpr != null) return Util.matchesClassExpr(classExpr, clazz, advisor); + else + { + TypeMatcher matcher = new TypeMatcher((ClassAdvisor)advisor, clazz); + return ((Boolean)ast.jjtAccept(matcher, null)).booleanValue(); + } } } |