Class FieldBasedObjectInterpolator
java.lang.Object
org.codehaus.plexus.interpolation.object.FieldBasedObjectInterpolator
- All Implemented Interfaces:
ObjectInterpolator
Reflectively traverses an object graph and uses an
Interpolator
instance to resolve any String fields in the
graph.
NOTE: This code is based on a reimplementation of ModelInterpolator in maven-project 2.1.0-M1, which became a performance bottleneck when the interpolation process became a hotspot.
- Author:
- jdcasey
-
Field Summary
Modifier and TypeFieldDescription -
Constructor Summary
ConstructorDescriptionUse the default settings for blacklisted fields and packages, where fields named 'parent' and classes in packages starting with 'java' will not be interpolated.FieldBasedObjectInterpolator
(Set<String> blacklistedFieldNames, Set<String> blacklistedPackagePrefixes) Use the given black-lists to limit the interpolation of fields and classes (by package). -
Method Summary
Modifier and TypeMethodDescriptionstatic void
Clear out the Reflection caches kept for the most expensive operations encountered: field lookup and primitive queries for fields.Retrieve theList
of warnings (ObjectInterpolationWarning
instances) generated during the last interpolation execution.boolean
Returns true if the last interpolation execution generated warnings.void
interpolate
(Object target, BasicInterpolator interpolator) Using reflective field access and mutation, traverse the object graph from the given starting point and interpolate any Strings found in that graph using the givenInterpolator
.void
interpolate
(Object target, BasicInterpolator interpolator, RecursionInterceptor recursionInterceptor) Using reflective field access and mutation, traverse the object graph from the given starting point and interpolate any Strings found in that graph using the givenInterpolator
.
-
Field Details
-
DEFAULT_BLACKLISTED_FIELD_NAMES
-
DEFAULT_BLACKLISTED_PACKAGE_PREFIXES
-
-
Constructor Details
-
FieldBasedObjectInterpolator
public FieldBasedObjectInterpolator()Use the default settings for blacklisted fields and packages, where fields named 'parent' and classes in packages starting with 'java' will not be interpolated. -
FieldBasedObjectInterpolator
public FieldBasedObjectInterpolator(Set<String> blacklistedFieldNames, Set<String> blacklistedPackagePrefixes) Use the given black-lists to limit the interpolation of fields and classes (by package).- Parameters:
blacklistedFieldNames
- The list of field names to ignoreblacklistedPackagePrefixes
- The list of package prefixes whose classes should be ignored
-
-
Method Details
-
clearCaches
public static void clearCaches()Clear out the Reflection caches kept for the most expensive operations encountered: field lookup and primitive queries for fields. These caches are static since they apply at the class level, not the instance level. -
hasWarnings
public boolean hasWarnings()Returns true if the last interpolation execution generated warnings.- Specified by:
hasWarnings
in interfaceObjectInterpolator
- Returns:
- true/false.
-
getWarnings
Retrieve theList
of warnings (ObjectInterpolationWarning
instances) generated during the last interpolation execution.- Specified by:
getWarnings
in interfaceObjectInterpolator
- Returns:
- The list of warnings.
-
interpolate
public void interpolate(Object target, BasicInterpolator interpolator) throws InterpolationException Using reflective field access and mutation, traverse the object graph from the given starting point and interpolate any Strings found in that graph using the givenInterpolator
. Limits to this process can be managed using the black lists configured in the constructor.- Specified by:
interpolate
in interfaceObjectInterpolator
- Parameters:
target
- The starting point of the object graph to traverseinterpolator
- TheInterpolator
used to resolve any Strings encountered during traversal. NOTE: UsesSimpleRecursionInterceptor
.- Throws:
InterpolationException
- in case of an error.
-
interpolate
public void interpolate(Object target, BasicInterpolator interpolator, RecursionInterceptor recursionInterceptor) throws InterpolationException Using reflective field access and mutation, traverse the object graph from the given starting point and interpolate any Strings found in that graph using the givenInterpolator
. Limits to this process can be managed using the black lists configured in the constructor.- Specified by:
interpolate
in interfaceObjectInterpolator
- Parameters:
target
- The starting point of the object graph to traverseinterpolator
- TheInterpolator
used to resolve any Strings encountered during traversal.recursionInterceptor
- TheRecursionInterceptor
used to detect cyclical expressions in the graph- Throws:
InterpolationException
- in case of an error.
-