Package org.aspectj.weaver.tools
Class StandardPointcutParser
java.lang.Object
org.aspectj.weaver.tools.StandardPointcutParser
A PointcutParser can be used to build PointcutExpressions for a user-defined subset of AspectJ's pointcut language
-
Constructor Summary
ModifierConstructorDescriptionprotected
StandardPointcutParser(World world)
Create a pointcut parser that can parse the full AspectJ pointcut language with the following exceptions: Theif, cflow, and cflowbelow
pointcut designators are not supported Pointcut expressions must be self-contained :- they cannot contain references to other named pointcuts The pointcut expression must be anonymous with no formals allowed. -
Method Summary
Modifier and TypeMethodDescriptionprotected Pointcut
concretizePointcutExpression(Pointcut pc, Class<?> inScope, PointcutParameter[] formalParameters)
createPointcutParameter(String name, Class type)
Create a pointcut parameter of the given name and type.static Set<PointcutPrimitive>
static StandardPointcutParser
Returns a pointcut parser that can parse the full AspectJ pointcut language with the following exceptions: Theif, cflow, and cflowbelow
pointcut designators are not supported Pointcut expressions must be self-contained :- they cannot contain references to other named pointcuts The pointcut expression must be anonymous with no formals allowed.static StandardPointcutParser
getPointcutParserSupportingSpecifiedPrimitives(Set supportedPointcutKinds, World world)
Returns a pointcut parser that can parse pointcut expressions built from a user-defined subset of AspectJ's supported pointcut primitives.parsePointcutExpression(String expression)
Parse the given pointcut expression.parsePointcutExpression(String expression, Class inScope, PointcutParameter[] formalParameters)
Parse the given pointcut expression.parseTypePattern(String typePattern)
Parse the given aspectj type pattern, and return a matcher that can be used to match types using it.void
registerPointcutDesignatorHandler(PointcutDesignatorHandler designatorHandler)
Register a new pointcut designator handler with this parser.protected Pointcut
resolvePointcutExpression(String expression, Class<?> inScope, PointcutParameter[] formalParameters)
void
setLintProperties(Properties properties)
Set the lint properties for this parser from the given properties set.
-
Constructor Details
-
StandardPointcutParser
Create a pointcut parser that can parse the full AspectJ pointcut language with the following exceptions:- The
if, cflow, and cflowbelow
pointcut designators are not supported - Pointcut expressions must be self-contained :- they cannot contain references to other named pointcuts
- The pointcut expression must be anonymous with no formals allowed.
- The
-
-
Method Details
-
getAllSupportedPointcutPrimitives
- Returns:
- a Set containing every PointcutPrimitive except if, cflow, and cflowbelow (useful for passing to PointcutParser constructor).
-
getPointcutParserSupportingAllPrimitives
Returns a pointcut parser that can parse the full AspectJ pointcut language with the following exceptions:- The
if, cflow, and cflowbelow
pointcut designators are not supported - Pointcut expressions must be self-contained :- they cannot contain references to other named pointcuts
- The pointcut expression must be anonymous with no formals allowed.
When resolving types in pointcut expressions, the context classloader is used to find types.
- The
-
getPointcutParserSupportingSpecifiedPrimitives
public static StandardPointcutParser getPointcutParserSupportingSpecifiedPrimitives(Set supportedPointcutKinds, World world)Returns a pointcut parser that can parse pointcut expressions built from a user-defined subset of AspectJ's supported pointcut primitives. The following restrictions apply:- The
if, cflow, and cflowbelow
pointcut designators are not supported - Pointcut expressions must be self-contained :- they cannot contain references to other named pointcuts
- The pointcut expression must be anonymous with no formals allowed.
When resolving types in pointcut expressions, the given classloader is used to find types.
- Parameters:
supportedPointcutKinds
- a set of PointcutPrimitives this parser should support- Throws:
UnsupportedOperationException
- if the set contains if, cflow, or cflow below
- The
-
setLintProperties
Set the lint properties for this parser from the given properties set.- Parameters:
properties
-
-
registerPointcutDesignatorHandler
Register a new pointcut designator handler with this parser. This provides an extension mechansim for the integration of domain-specific pointcut designators with the AspectJ pointcut language.- Parameters:
designatorHandler
-
-
createPointcutParameter
Create a pointcut parameter of the given name and type.- Parameters:
name
-type
-- Returns:
-
parsePointcutExpression
public StandardPointcutExpression parsePointcutExpression(String expression) throws UnsupportedPointcutPrimitiveException, IllegalArgumentExceptionParse the given pointcut expression. A global scope is assumed for resolving any type references, and the pointcut must contain no formals (variables to be bound).- Throws:
UnsupportedPointcutPrimitiveException
- if the parser encounters a primitive pointcut expression of a kind not supported by this PointcutParser.IllegalArgumentException
- if the expression is not a well-formed pointcut expression
-
parsePointcutExpression
public StandardPointcutExpression parsePointcutExpression(String expression, Class inScope, PointcutParameter[] formalParameters) throws UnsupportedPointcutPrimitiveException, IllegalArgumentExceptionParse the given pointcut expression. The pointcut is resolved as if it had been declared inside the inScope class (this allows the pointcut to contain unqualified references to other pointcuts declared in the same type for example). The pointcut may contain zero or more formal parameters to be bound at matched join points.- Throws:
UnsupportedPointcutPrimitiveException
- if the parser encounters a primitive pointcut expression of a kind not supported by this PointcutParser.IllegalArgumentException
- if the expression is not a well-formed pointcut expression
-
resolvePointcutExpression
protected Pointcut resolvePointcutExpression(String expression, Class<?> inScope, PointcutParameter[] formalParameters) -
concretizePointcutExpression
protected Pointcut concretizePointcutExpression(Pointcut pc, Class<?> inScope, PointcutParameter[] formalParameters) -
parseTypePattern
Parse the given aspectj type pattern, and return a matcher that can be used to match types using it.- Parameters:
typePattern
- an aspectj type pattern- Returns:
- a type pattern matcher that matches using the given pattern
- Throws:
IllegalArgumentException
- if the type pattern cannot be successfully parsed.
-