diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/extensions/BootstrapCoreExtensionManager.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/extensions/BootstrapCoreExtensionManager.java index 944504f30404..f28293994787 100644 --- a/impl/maven-cli/src/main/java/org/apache/maven/cling/extensions/BootstrapCoreExtensionManager.java +++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/extensions/BootstrapCoreExtensionManager.java @@ -108,6 +108,8 @@ public class BootstrapCoreExtensionManager { private final RepositorySystem repoSystem; + private final Interpolator interpolator; + @Inject public BootstrapCoreExtensionManager( DefaultPluginDependenciesResolver pluginDependenciesResolver, @@ -115,7 +117,8 @@ public BootstrapCoreExtensionManager( CoreExports coreExports, PlexusContainer container, @Nullable @Named("ide") WorkspaceReader ideWorkspaceReader, - RepositorySystem repoSystem) { + RepositorySystem repoSystem, + Interpolator interpolator) { this.pluginDependenciesResolver = pluginDependenciesResolver; this.repositorySystemSessionFactory = repositorySystemSessionFactory; this.coreExports = coreExports; @@ -123,6 +126,7 @@ public BootstrapCoreExtensionManager( this.parentRealm = container.getContainerRealm(); this.ideWorkspaceReader = ideWorkspaceReader; this.repoSystem = repoSystem; + this.interpolator = interpolator; } public List loadCoreExtensions( @@ -230,8 +234,7 @@ private List resolveExtension( } } - private static UnaryOperator createInterpolator(MavenExecutionRequest request) { - Interpolator interpolator = new DefaultInterpolator(); + private UnaryOperator createInterpolator(MavenExecutionRequest request) { UnaryOperator callback = v -> { String r = request.getUserProperties().getProperty(v); if (r == null) { diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/extensions/ExtensionConfigurationModule.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/extensions/ExtensionConfigurationModule.java index f9778a42baf8..89d987a07585 100644 --- a/impl/maven-cli/src/main/java/org/apache/maven/cling/extensions/ExtensionConfigurationModule.java +++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/extensions/ExtensionConfigurationModule.java @@ -36,6 +36,7 @@ public class ExtensionConfigurationModule implements Module { private final CoreExtensionEntry extension; private final UnaryOperator callback; + private final DefaultInterpolator interpolator = new DefaultInterpolator(); public ExtensionConfigurationModule(CoreExtensionEntry extension, UnaryOperator callback) { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/profile/ConditionProfileActivator.java b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/profile/ConditionProfileActivator.java index eb5787e4f944..a1c2fbd5fe29 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/profile/ConditionProfileActivator.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/profile/ConditionProfileActivator.java @@ -28,12 +28,12 @@ import org.apache.maven.api.model.Activation; import org.apache.maven.api.model.Profile; import org.apache.maven.api.services.BuilderProblem.Severity; +import org.apache.maven.api.services.Interpolator; import org.apache.maven.api.services.ModelProblem.Version; import org.apache.maven.api.services.ModelProblemCollector; import org.apache.maven.api.services.VersionParser; import org.apache.maven.api.services.model.ProfileActivationContext; import org.apache.maven.api.services.model.ProfileActivator; -import org.apache.maven.internal.impl.model.DefaultInterpolator; import static org.apache.maven.internal.impl.model.profile.ConditionParser.toBoolean; @@ -47,14 +47,18 @@ public class ConditionProfileActivator implements ProfileActivator { private final VersionParser versionParser; + private final Interpolator interpolator; + /** * Constructs a new ConditionProfileActivator with the necessary dependencies. * * @param versionParser The parser for handling version comparisons + * @param interpolator The interpolator for interpolating the values in the given map using the provided callback function */ @Inject - public ConditionProfileActivator(VersionParser versionParser) { + public ConditionProfileActivator(VersionParser versionParser, Interpolator interpolator) { this.versionParser = versionParser; + this.interpolator = interpolator; } /** @@ -106,7 +110,7 @@ public boolean presentInConfig(Profile profile, ProfileActivationContext context * @param versionParser The parser for handling version comparisons * @return A map of function names to their implementations */ - public static Map registerFunctions( + public Map registerFunctions( ProfileActivationContext context, VersionParser versionParser) { Map functions = new HashMap<>(); @@ -156,9 +160,9 @@ public static Map registerFunctions( * @return The value of the property, or null if not found * @throws IllegalArgumentException if the number of arguments is not exactly one */ - static String property(ProfileActivationContext context, String name) { + String property(ProfileActivationContext context, String name) { String value = doGetProperty(context, name); - return new DefaultInterpolator().interpolate(value, s -> doGetProperty(context, s)); + return interpolator.interpolate(value, s -> doGetProperty(context, s)); } static String doGetProperty(ProfileActivationContext context, String name) { diff --git a/impl/maven-impl/src/test/java/org/apache/maven/internal/impl/model/profile/ConditionParserTest.java b/impl/maven-impl/src/test/java/org/apache/maven/internal/impl/model/profile/ConditionParserTest.java index 1cd3bf12010c..8631849722d6 100644 --- a/impl/maven-impl/src/test/java/org/apache/maven/internal/impl/model/profile/ConditionParserTest.java +++ b/impl/maven-impl/src/test/java/org/apache/maven/internal/impl/model/profile/ConditionParserTest.java @@ -52,8 +52,9 @@ void setUp() { new DefaultVersionParser(new DefaultModelVersionParser(new GenericVersionScheme())); DefaultRootLocator rootLocator = new DefaultRootLocator(); - functions = ConditionProfileActivator.registerFunctions(context, versionParser); - propertyResolver = s -> ConditionProfileActivator.property(context, s); + ConditionProfileActivator activator = new ConditionProfileActivator(versionParser, new DefaultInterpolator()); + functions = activator.registerFunctions(context, versionParser); + propertyResolver = s -> activator.property(context, s); parser = new ConditionParser(functions, propertyResolver); } diff --git a/impl/maven-impl/src/test/java/org/apache/maven/internal/impl/model/profile/ConditionProfileActivatorTest.java b/impl/maven-impl/src/test/java/org/apache/maven/internal/impl/model/profile/ConditionProfileActivatorTest.java index 6dd31e293f3a..09666b66225c 100644 --- a/impl/maven-impl/src/test/java/org/apache/maven/internal/impl/model/profile/ConditionProfileActivatorTest.java +++ b/impl/maven-impl/src/test/java/org/apache/maven/internal/impl/model/profile/ConditionProfileActivatorTest.java @@ -53,7 +53,8 @@ public class ConditionProfileActivatorTest extends AbstractProfileActivatorTest< @Override void setUp() throws Exception { activator = new ConditionProfileActivator( - new DefaultVersionParser(new DefaultModelVersionParser(new GenericVersionScheme()))); + new DefaultVersionParser(new DefaultModelVersionParser(new GenericVersionScheme())), + new DefaultInterpolator()); Path file = tempDir.resolve("file.txt"); Files.createFile(file);