org.springframework.aop.aspectj
Class TypePatternClassFilter

java.lang.Object
  extended by org.springframework.aop.aspectj.TypePatternClassFilter
All Implemented Interfaces:
ClassFilter

public class TypePatternClassFilter
extends java.lang.Object
implements ClassFilter

Spring AOP ClassFilter implementation using AspectJ type matching.

Since:
2.0
Author:
Rod Johnson

Field Summary
private  TypePatternMatcher aspectJTypePatternMatcher
           
private  java.lang.String typePattern
           
 
Fields inherited from interface org.springframework.aop.ClassFilter
TRUE
 
Constructor Summary
TypePatternClassFilter()
          Creates a new instance of the TypePatternClassFilter class.
TypePatternClassFilter(java.lang.String typePattern)
          Create a fully configured TypePatternClassFilter using the given type pattern.
 
Method Summary
 java.lang.String getTypePattern()
           
 boolean matches(java.lang.Class clazz)
          Should the pointcut apply to the given interface or target class?
private  java.lang.String replaceBooleanOperators(java.lang.String pcExpr)
          If a type pattern has been specified in XML, the user cannot write and as "&&" (though && will work).
 void setTypePattern(java.lang.String typePattern)
          Set the AspectJ type pattern to match.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

typePattern

private java.lang.String typePattern

aspectJTypePatternMatcher

private TypePatternMatcher aspectJTypePatternMatcher
Constructor Detail

TypePatternClassFilter

public TypePatternClassFilter()
Creates a new instance of the TypePatternClassFilter class.

This is the JavaBean constructor; be sure to set the typePattern property, else a no doubt fatal IllegalStateException will be thrown when the matches(Class) method is first invoked.


TypePatternClassFilter

public TypePatternClassFilter(java.lang.String typePattern)
Create a fully configured TypePatternClassFilter using the given type pattern.

Parameters:
typePattern - the type pattern that AspectJ weaver should parse
Throws:
java.lang.IllegalArgumentException - if the supplied typePattern is null or is recognized as invalid
Method Detail

setTypePattern

public void setTypePattern(java.lang.String typePattern)
Set the AspectJ type pattern to match.

Examples include: org.springframework.beans.* This will match any class or interface in the given package. org.springframework.beans.ITestBean+ This will match the ITestBean interface and any class that implements it.

These conventions are established by AspectJ, not Spring AOP.

Parameters:
typePattern - the type pattern that AspectJ weaver should parse
Throws:
java.lang.IllegalArgumentException - if the supplied typePattern is null or is recognized as invalid

getTypePattern

public java.lang.String getTypePattern()

matches

public boolean matches(java.lang.Class clazz)
Should the pointcut apply to the given interface or target class?

Specified by:
matches in interface ClassFilter
Parameters:
clazz - candidate target class
Returns:
whether the advice should apply to this candidate target class
Throws:
java.lang.IllegalStateException - if no setTypePattern(String) has been set

replaceBooleanOperators

private java.lang.String replaceBooleanOperators(java.lang.String pcExpr)
If a type pattern has been specified in XML, the user cannot write and as "&&" (though && will work). We also allow and between two sub-expressions.

This method converts back to && for the AspectJ pointcut parser.