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
    Modifier | Constructor and Description
    --- | ---
    `protected` | `AbstractStringBasedModelInterpolator()`
    `protected` | `AbstractStringBasedModelInterpolator(PathTranslator pathTranslator)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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()