org.apache.maven.project.interpolation

## Class AbstractStringBasedModelInterpolator

- java.lang.Object
- - AbstractLogEnabled
  - - org.apache.maven.project.interpolation.AbstractStringBasedModelInterpolator

All Implemented Interfaces:
  ModelInterpolator

Direct Known Subclasses:
  RegexBasedModelInterpolator, StringSearchModelInterpolator

    public abstract class AbstractStringBasedModelInterpolator
    extends AbstractLogEnabled
    implements ModelInterpolator

Use a regular expression search to find and resolve expressions within the POM.

Version:
  $Id: AbstractStringBasedModelInterpolator.java 767323 2009-04-21 22:53:31Z jdcasey $
Author:
  jdcasey Created on Feb 3, 2005

### Field Summary

### Fields inherited from interface org.apache.maven.project.interpolation.ModelInterpolator

`BUILD_TIMESTAMP_FORMAT_PROPERTY, DEFAULT_BUILD_TIMESTAMP_FORMAT, ROLE`

### Constructor Summary

Constructors
`protected` `AbstractStringBasedModelInterpolator()`
`protected` `AbstractStringBasedModelInterpolator(PathTranslator pathTranslator)`

### Method Summary

Methods
`protected abstract Interpolator` `createInterpolator()`
`protected java.util.List<InterpolationPostProcessor>` `createPostProcessors(Model model, java.io.File projectDir, ProjectBuilderConfiguration config)`
`protected java.util.List<ValueSource>` `createValueSources(Model model, java.io.File projectDir, ProjectBuilderConfiguration config)`
`protected Interpolator` `getInterpolator()`
`protected RecursionInterceptor` `getRecursionInterceptor()`
`void` `initialize()`
`Model` `interpolate(Model model, java.io.File projectDir, ProjectBuilderConfiguration config, boolean debugEnabled)`
`Model` `interpolate(Model model, java.util.Map<java.lang.String,?> context)`
`Model` `interpolate(Model model, java.util.Map<java.lang.String,?> context, boolean strict)` Deprecated. Use `ModelInterpolator.interpolate(Model, File, ProjectBuilderConfiguration, boolean)` instead.
`java.lang.String` `interpolate(java.lang.String src, Model model, java.io.File projectDir, ProjectBuilderConfiguration config, boolean debug)` Interpolates all expressions in the src parameter.
`protected java.lang.String` `interpolateInternal(java.lang.String src, java.util.List<ValueSource> valueSources, java.util.List<InterpolationPostProcessor> postProcessors, boolean debug)`
`protected void` `setRecursionInterceptor(RecursionInterceptor recursionInterceptor)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### AbstractStringBasedModelInterpolator

    protected AbstractStringBasedModelInterpolator(PathTranslator pathTranslator)

#### AbstractStringBasedModelInterpolator

    protected AbstractStringBasedModelInterpolator()

Throws:
  `java.io.IOException` - This exception is not thrown any more, and needs to be removed.

### Method Detail

#### interpolate

    public Model interpolate(Model model,
                    java.util.Map<java.lang.String,?> context)
                      throws ModelInterpolationException

Specified by:
  `interpolate` in interface `ModelInterpolator`
Throws:
  `ModelInterpolationException`

#### interpolate

    public Model interpolate(Model model,
                    java.util.Map<java.lang.String,?> context,
                    boolean strict)
                      throws ModelInterpolationException

Deprecated. Use `ModelInterpolator.interpolate(Model, File, ProjectBuilderConfiguration, boolean)` instead.
Serialize the inbound Model instance to a StringWriter, perform the regex replacement to resolve POM expressions, then re-parse into the resolved Model instance.
NOTE: This will result in a different instance of Model being returned!!!

Specified by:
  `interpolate` in interface `ModelInterpolator`
Parameters:
  `model` - The inbound Model instance, to serialize and reference for expression resolution
  `context` - The other context map to be used during resolution
Returns:
  The resolved instance of the inbound Model. This is a different instance!
Throws:
  `ModelInterpolationException`

#### interpolate

    public Model interpolate(Model model,
                    java.io.File projectDir,
                    ProjectBuilderConfiguration config,
                    boolean debugEnabled)
                      throws ModelInterpolationException

Specified by:
  `interpolate` in interface `ModelInterpolator`
Throws:
  `ModelInterpolationException`

#### interpolate

    public java.lang.String interpolate(java.lang.String src,
                               Model model,
                               java.io.File projectDir,
                               ProjectBuilderConfiguration config,
                               boolean debug)
                                 throws ModelInterpolationException

Interpolates all expressions in the src parameter.

The algorithm used for each expression is:

- If it starts with either "pom." or "project.", the expression is evaluated against the model.
- If the value is null, get the value from the context.
- If the value is null, but the context contains the expression, don't replace the expression string with the value, and continue to find other expressions.
- If the value is null, get it from the model properties.

Specified by:
  `interpolate` in interface `ModelInterpolator`
Parameters:
  `overrideContext` -
  `outputDebugMessages` -
Throws:
  `ModelInterpolationException`

#### createValueSources

    protected java.util.List<ValueSource> createValueSources(Model model,
                                                 java.io.File projectDir,
                                                 ProjectBuilderConfiguration config)

#### createPostProcessors

    protected java.util.List<InterpolationPostProcessor> createPostProcessors(Model model,
                                                                  java.io.File projectDir,
                                                                  ProjectBuilderConfiguration config)

#### interpolateInternal

    protected java.lang.String interpolateInternal(java.lang.String src,
                                       java.util.List<ValueSource> valueSources,
                                       java.util.List<InterpolationPostProcessor> postProcessors,
                                       boolean debug)
                                            throws ModelInterpolationException

Throws:
  `ModelInterpolationException`

#### getRecursionInterceptor

    protected RecursionInterceptor getRecursionInterceptor()

#### setRecursionInterceptor

    protected void setRecursionInterceptor(RecursionInterceptor recursionInterceptor)

#### createInterpolator

    protected abstract Interpolator createInterpolator()

#### initialize

    public void initialize()
                    throws InitializationException

Throws:
  `InitializationException`

#### getInterpolator

    protected final Interpolator getInterpolator()