Class PrefixAwareRecursionInterceptor
java.lang.Object
org.codehaus.plexus.interpolation.PrefixAwareRecursionInterceptor
- All Implemented Interfaces:
RecursionInterceptor
RecursionInterceptor
implementation that provides support for expressions
with multiple synonyms, such as project.build.directory == pom.build.directory ==
build.directory in Maven's POM.- Author:
- jdcasey
-
Field Summary
-
Constructor Summary
ConstructorDescriptionPrefixAwareRecursionInterceptor
(Collection<String> possiblePrefixes) Use the specified expression prefixes to detect synonyms.PrefixAwareRecursionInterceptor
(Collection<String> possiblePrefixes, boolean watchUnprefixedExpressions) Use the specified expression prefixes to detect synonyms, and specify whether unprefixed expressions can be considered synonyms. -
Method Summary
Modifier and TypeMethodDescriptionvoid
clear()
Reset the interceptorvoid
expressionResolutionFinished
(String expression) Signal to the interceptor that the all efforts to resolve the given expression have completed - whether successfully or not is irrelevant - and that the expression should not be tracked for recursion any longer.void
expressionResolutionStarted
(String expression) Log the intention to start resolving the given expression.getExpressionCycle
(String expression) When an expression is determined to be a recursive reference, this method returns the sublist of tracked expressions that participate in this cycle.boolean
hasRecursiveExpression
(String expression) Check whether the given value contains an expression that is currently being tracked by this interceptor.
-
Field Details
-
DEFAULT_START_TOKEN
- See Also:
-
DEFAULT_END_TOKEN
- See Also:
-
-
Constructor Details
-
PrefixAwareRecursionInterceptor
public PrefixAwareRecursionInterceptor(Collection<String> possiblePrefixes, boolean watchUnprefixedExpressions) Use the specified expression prefixes to detect synonyms, and specify whether unprefixed expressions can be considered synonyms.- Parameters:
possiblePrefixes
- The collection of expression prefixes supportedwatchUnprefixedExpressions
- Whether to consider unprefixed expressions as synonyms
-
PrefixAwareRecursionInterceptor
Use the specified expression prefixes to detect synonyms. Consider unprefixed expressions synonyms as well.- Parameters:
possiblePrefixes
- The collection of expression prefixes supported
-
-
Method Details
-
hasRecursiveExpression
Description copied from interface:RecursionInterceptor
Check whether the given value contains an expression that is currently being tracked by this interceptor. If so, that expression is still in the process of being resolved, and this constitutes an expression cycle.- Specified by:
hasRecursiveExpression
in interfaceRecursionInterceptor
- Parameters:
expression
- The value to check for expression cycles.- Returns:
- True if the value contains tracked expressions; false otherwise.
-
expressionResolutionFinished
Description copied from interface:RecursionInterceptor
Signal to the interceptor that the all efforts to resolve the given expression have completed - whether successfully or not is irrelevant - and that the expression should not be tracked for recursion any longer.- Specified by:
expressionResolutionFinished
in interfaceRecursionInterceptor
- Parameters:
expression
- The expression to stop tracking.
-
expressionResolutionStarted
Description copied from interface:RecursionInterceptor
Log the intention to start resolving the given expression. This signals the interceptor to start tracking that expression to make sure it doesn't come up again until after it has been resolved (or, fails to resolve).- Specified by:
expressionResolutionStarted
in interfaceRecursionInterceptor
- Parameters:
expression
- The expression to be resolved.
-
getExpressionCycle
When an expression is determined to be a recursive reference, this method returns the sublist of tracked expressions that participate in this cycle. Otherwise, if the expression isn't present in the in-process stack, returnCollections.EMPTY_LIST
. Also, if the expression doesn't have a matched prefix from this interceptor's list, and unprefixed expressions aren't allowed then returnCollections.EMPTY_LIST
.- Specified by:
getExpressionCycle
in interfaceRecursionInterceptor
- Parameters:
expression
- the expression to start with.- Returns:
- The list of expressions that participate in the cycle caused by the given expression.
-
clear
public void clear()Description copied from interface:RecursionInterceptor
Reset the interceptor- Specified by:
clear
in interfaceRecursionInterceptor
-