Skip to content

Commit 11e5ae0

Browse files
committed
[MNG-8515] Replace plexus interpolator with the new interpolator service
1 parent 28f6047 commit 11e5ae0

File tree

10 files changed

+53
-73
lines changed

10 files changed

+53
-73
lines changed

api/maven-api-cli/src/main/java/org/apache/maven/api/cli/Options.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
*/
1919
package org.apache.maven.api.cli;
2020

21-
import java.util.Collection;
2221
import java.util.Map;
2322
import java.util.Optional;
2423
import java.util.function.Consumer;
24+
import java.util.function.Function;
2525

2626
import org.apache.maven.api.annotations.Experimental;
2727
import org.apache.maven.api.annotations.Nonnull;
@@ -201,11 +201,11 @@ public interface Options {
201201
/**
202202
* Returns a new instance of {@link Options} with values interpolated using the given properties.
203203
*
204-
* @param properties a collection of property maps to use for interpolation
204+
* @param callback the callback to use for interpolation
205205
* @return a new {@link Options} instance with interpolated values
206206
*/
207207
@Nonnull
208-
Options interpolate(@Nonnull Collection<Map<String, String>> properties);
208+
Options interpolate(@Nonnull Function<String, String> callback);
209209

210210
/**
211211
* Emits warning messages if deprecated options are used.

api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvn/MavenOptions.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,9 @@
1818
*/
1919
package org.apache.maven.api.cli.mvn;
2020

21-
import java.util.Collection;
2221
import java.util.List;
23-
import java.util.Map;
2422
import java.util.Optional;
23+
import java.util.function.Function;
2524

2625
import org.apache.maven.api.annotations.Experimental;
2726
import org.apache.maven.api.annotations.Nonnull;
@@ -217,11 +216,11 @@ public interface MavenOptions extends Options {
217216
Optional<List<String>> goals();
218217

219218
/**
220-
* Returns a new instance of {@link MavenOptions} with values interpolated using the given properties.
219+
* Returns a new instance of {@link MavenOptions} with values interpolated using the given callback.
221220
*
222-
* @param properties a collection of property maps to use for interpolation
221+
* @param callback a callback to use for interpolation
223222
* @return a new MavenOptions instance with interpolated values
224223
*/
225224
@Nonnull
226-
MavenOptions interpolate(@Nonnull Collection<Map<String, String>> properties);
225+
MavenOptions interpolate(@Nonnull Function<String, String> callback);
227226
}

api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvnenc/EncryptOptions.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,9 @@
1818
*/
1919
package org.apache.maven.api.cli.mvnenc;
2020

21-
import java.util.Collection;
2221
import java.util.List;
23-
import java.util.Map;
2422
import java.util.Optional;
23+
import java.util.function.Function;
2524

2625
import org.apache.maven.api.annotations.Experimental;
2726
import org.apache.maven.api.annotations.Nonnull;
@@ -61,9 +60,9 @@ public interface EncryptOptions extends Options {
6160
/**
6261
* Returns a new instance of EncryptOptions with values interpolated using the given properties.
6362
*
64-
* @param properties a collection of property maps to use for interpolation
63+
* @param callback a callback to use for interpolation
6564
* @return a new EncryptOptions instance with interpolated values
6665
*/
6766
@Nonnull
68-
EncryptOptions interpolate(Collection<Map<String, String>> properties);
67+
EncryptOptions interpolate(Function<String, String> callback);
6968
}

api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvnsh/ShellOptions.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@
1818
*/
1919
package org.apache.maven.api.cli.mvnsh;
2020

21-
import java.util.Collection;
22-
import java.util.Map;
21+
import java.util.function.Function;
2322

2423
import org.apache.maven.api.annotations.Experimental;
2524
import org.apache.maven.api.annotations.Nonnull;
@@ -36,9 +35,9 @@ public interface ShellOptions extends Options {
3635
/**
3736
* Returns a new instance of ShellOptions with values interpolated using the given properties.
3837
*
39-
* @param properties a collection of property maps to use for interpolation
38+
* @param callback a callback to use for interpolation
4039
* @return a new EncryptOptions instance with interpolated values
4140
*/
4241
@Nonnull
43-
ShellOptions interpolate(Collection<Map<String, String>> properties);
42+
ShellOptions interpolate(Function<String, String> callback);
4443
}

impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/BaseParser.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import org.apache.maven.api.cli.ParserException;
4545
import org.apache.maven.api.cli.ParserRequest;
4646
import org.apache.maven.api.cli.extensions.CoreExtension;
47+
import org.apache.maven.api.services.Interpolator;
4748
import org.apache.maven.cling.internal.extension.io.CoreExtensionsStaxReader;
4849
import org.apache.maven.cling.props.MavenPropertiesLoader;
4950
import org.apache.maven.cling.utils.CLIReportingUtils;
@@ -122,8 +123,8 @@ public InvokerRequest parseInvocation(ParserRequest parserRequest) throws Parser
122123
context.userProperties = populateUserProperties(context);
123124

124125
// options: interpolate
125-
context.options = context.options.interpolate(
126-
Arrays.asList(context.extraInterpolationSource(), context.userProperties, context.systemProperties));
126+
context.options = context.options.interpolate(Interpolator.chain(
127+
context.extraInterpolationSource()::get, context.userProperties::get, context.systemProperties::get));
127128

128129
// core extensions
129130
context.extensions = readCoreExtensionsDescriptor(context);

impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/Utils.java

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
import java.io.IOException;
2222
import java.nio.file.Path;
23-
import java.util.Collection;
2423
import java.util.HashMap;
2524
import java.util.Map;
2625
import java.util.Optional;
@@ -30,12 +29,11 @@
3029

3130
import org.apache.maven.api.annotations.Nonnull;
3231
import org.apache.maven.api.annotations.Nullable;
32+
import org.apache.maven.api.services.Interpolator;
3333
import org.apache.maven.api.services.model.RootLocator;
3434
import org.apache.maven.cling.logging.Slf4jConfiguration;
3535
import org.apache.maven.execution.MavenExecutionRequest;
36-
import org.codehaus.plexus.interpolation.AbstractValueSource;
37-
import org.codehaus.plexus.interpolation.BasicInterpolator;
38-
import org.codehaus.plexus.interpolation.StringSearchInterpolator;
36+
import org.apache.maven.internal.impl.model.DefaultInterpolator;
3937
import org.codehaus.plexus.logging.Logger;
4038

4139
import static java.util.Objects.requireNonNull;
@@ -90,21 +88,8 @@ public static Properties toProperties(Map<String, String> properties) {
9088
}
9189

9290
@Nonnull
93-
public static BasicInterpolator createInterpolator(Collection<Map<String, String>> properties) {
94-
StringSearchInterpolator interpolator = new StringSearchInterpolator();
95-
interpolator.addValueSource(new AbstractValueSource(false) {
96-
@Override
97-
public Object getValue(String expression) {
98-
for (Map<String, String> props : properties) {
99-
String val = props.get(expression);
100-
if (val != null) {
101-
return val;
102-
}
103-
}
104-
return null;
105-
}
106-
});
107-
return interpolator;
91+
public static Interpolator createInterpolator() {
92+
return new DefaultInterpolator();
10893
}
10994

11095
@Nonnull

impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/CommonsCliMavenOptions.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,18 @@
1919
package org.apache.maven.cling.invoker.mvn;
2020

2121
import java.util.Arrays;
22-
import java.util.Collection;
2322
import java.util.List;
2423
import java.util.ListIterator;
25-
import java.util.Map;
2624
import java.util.Optional;
25+
import java.util.function.Function;
2726

2827
import org.apache.commons.cli.CommandLine;
2928
import org.apache.commons.cli.Option;
3029
import org.apache.commons.cli.ParseException;
3130
import org.apache.maven.api.cli.mvn.MavenOptions;
31+
import org.apache.maven.api.services.Interpolator;
32+
import org.apache.maven.api.services.InterpolatorException;
3233
import org.apache.maven.cling.invoker.CommonsCliOptions;
33-
import org.codehaus.plexus.interpolation.BasicInterpolator;
34-
import org.codehaus.plexus.interpolation.InterpolationException;
3534

3635
import static org.apache.maven.cling.invoker.Utils.createInterpolator;
3736

@@ -46,27 +45,27 @@ protected CommonsCliMavenOptions(String source, CLIManager cliManager, CommandLi
4645
}
4746

4847
private static CommonsCliMavenOptions interpolate(
49-
CommonsCliMavenOptions options, Collection<Map<String, String>> properties) {
48+
CommonsCliMavenOptions options, Function<String, String> callback) {
5049
try {
5150
// now that we have properties, interpolate all arguments
52-
BasicInterpolator interpolator = createInterpolator(properties);
51+
Interpolator interpolator = createInterpolator();
5352
CommandLine.Builder commandLineBuilder = new CommandLine.Builder();
5453
commandLineBuilder.setDeprecatedHandler(o -> {});
5554
for (Option option : options.commandLine.getOptions()) {
5655
if (!CLIManager.USER_PROPERTY.equals(option.getOpt())) {
5756
List<String> values = option.getValuesList();
5857
for (ListIterator<String> it = values.listIterator(); it.hasNext(); ) {
59-
it.set(interpolator.interpolate(it.next()));
58+
it.set(interpolator.interpolate(it.next(), callback));
6059
}
6160
}
6261
commandLineBuilder.addOption(option);
6362
}
6463
for (String arg : options.commandLine.getArgList()) {
65-
commandLineBuilder.addArg(interpolator.interpolate(arg));
64+
commandLineBuilder.addArg(interpolator.interpolate(arg, callback));
6665
}
6766
return new CommonsCliMavenOptions(
6867
options.source, (CLIManager) options.cliManager, commandLineBuilder.build());
69-
} catch (InterpolationException e) {
68+
} catch (InterpolatorException e) {
7069
throw new IllegalArgumentException("Could not interpolate CommonsCliOptions", e);
7170
}
7271
}
@@ -249,8 +248,8 @@ public Optional<List<String>> goals() {
249248
}
250249

251250
@Override
252-
public MavenOptions interpolate(Collection<Map<String, String>> properties) {
253-
return interpolate(this, properties);
251+
public MavenOptions interpolate(Function<String, String> callback) {
252+
return interpolate(this, callback);
254253
}
255254

256255
protected static class CLIManager extends CommonsCliOptions.CLIManager {

impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/LayeredMavenOptions.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121
import java.util.ArrayList;
2222
import java.util.Collection;
2323
import java.util.List;
24-
import java.util.Map;
2524
import java.util.Objects;
2625
import java.util.Optional;
26+
import java.util.function.Function;
2727

2828
import org.apache.maven.api.cli.mvn.MavenOptions;
2929
import org.apache.maven.cling.invoker.LayeredOptions;
@@ -160,10 +160,10 @@ public Optional<List<String>> goals() {
160160
}
161161

162162
@Override
163-
public MavenOptions interpolate(Collection<Map<String, String>> properties) {
163+
public MavenOptions interpolate(Function<String, String> callback) {
164164
ArrayList<MavenOptions> interpolatedOptions = new ArrayList<>(options.size());
165165
for (MavenOptions o : options) {
166-
interpolatedOptions.add(o.interpolate(properties));
166+
interpolatedOptions.add(o.interpolate(callback));
167167
}
168168
return layerMavenOptions(interpolatedOptions);
169169
}

impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvnenc/CommonsCliEncryptOptions.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,21 @@
1818
*/
1919
package org.apache.maven.cling.invoker.mvnenc;
2020

21-
import java.util.Collection;
2221
import java.util.List;
2322
import java.util.ListIterator;
24-
import java.util.Map;
2523
import java.util.Optional;
2624
import java.util.function.Consumer;
25+
import java.util.function.Function;
2726

2827
import org.apache.commons.cli.CommandLine;
2928
import org.apache.commons.cli.Option;
3029
import org.apache.commons.cli.ParseException;
3130
import org.apache.maven.api.cli.Options;
3231
import org.apache.maven.api.cli.ParserRequest;
3332
import org.apache.maven.api.cli.mvnenc.EncryptOptions;
33+
import org.apache.maven.api.services.Interpolator;
34+
import org.apache.maven.api.services.InterpolatorException;
3435
import org.apache.maven.cling.invoker.CommonsCliOptions;
35-
import org.codehaus.plexus.interpolation.BasicInterpolator;
36-
import org.codehaus.plexus.interpolation.InterpolationException;
3736

3837
import static org.apache.maven.cling.invoker.Utils.createInterpolator;
3938

@@ -51,27 +50,27 @@ protected CommonsCliEncryptOptions(String source, CLIManager cliManager, Command
5150
}
5251

5352
private static CommonsCliEncryptOptions interpolate(
54-
CommonsCliEncryptOptions options, Collection<Map<String, String>> properties) {
53+
CommonsCliEncryptOptions options, Function<String, String> callback) {
5554
try {
5655
// now that we have properties, interpolate all arguments
57-
BasicInterpolator interpolator = createInterpolator(properties);
56+
Interpolator interpolator = createInterpolator();
5857
CommandLine.Builder commandLineBuilder = new CommandLine.Builder();
5958
commandLineBuilder.setDeprecatedHandler(o -> {});
6059
for (Option option : options.commandLine.getOptions()) {
6160
if (!CLIManager.USER_PROPERTY.equals(option.getOpt())) {
6261
List<String> values = option.getValuesList();
6362
for (ListIterator<String> it = values.listIterator(); it.hasNext(); ) {
64-
it.set(interpolator.interpolate(it.next()));
63+
it.set(interpolator.interpolate(it.next(), callback));
6564
}
6665
}
6766
commandLineBuilder.addOption(option);
6867
}
6968
for (String arg : options.commandLine.getArgList()) {
70-
commandLineBuilder.addArg(interpolator.interpolate(arg));
69+
commandLineBuilder.addArg(interpolator.interpolate(arg, callback));
7170
}
7271
return new CommonsCliEncryptOptions(
7372
options.source, (CLIManager) options.cliManager, commandLineBuilder.build());
74-
} catch (InterpolationException e) {
73+
} catch (InterpolatorException e) {
7574
throw new IllegalArgumentException("Could not interpolate CommonsCliOptions", e);
7675
}
7776
}
@@ -101,8 +100,8 @@ public Optional<List<String>> goals() {
101100
}
102101

103102
@Override
104-
public EncryptOptions interpolate(Collection<Map<String, String>> properties) {
105-
return interpolate(this, properties);
103+
public EncryptOptions interpolate(Function<String, String> callback) {
104+
return interpolate(this, callback);
106105
}
107106

108107
@Override

impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvnsh/CommonsCliShellOptions.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,18 @@
1818
*/
1919
package org.apache.maven.cling.invoker.mvnsh;
2020

21-
import java.util.Collection;
2221
import java.util.List;
2322
import java.util.ListIterator;
24-
import java.util.Map;
23+
import java.util.function.Function;
2524

2625
import org.apache.commons.cli.CommandLine;
2726
import org.apache.commons.cli.Option;
2827
import org.apache.commons.cli.ParseException;
2928
import org.apache.maven.api.cli.Options;
3029
import org.apache.maven.api.cli.mvnsh.ShellOptions;
30+
import org.apache.maven.api.services.Interpolator;
31+
import org.apache.maven.api.services.InterpolatorException;
3132
import org.apache.maven.cling.invoker.CommonsCliOptions;
32-
import org.codehaus.plexus.interpolation.BasicInterpolator;
33-
import org.codehaus.plexus.interpolation.InterpolationException;
3433

3534
import static org.apache.maven.cling.invoker.Utils.createInterpolator;
3635

@@ -48,34 +47,34 @@ protected CommonsCliShellOptions(String source, CLIManager cliManager, CommandLi
4847
}
4948

5049
private static CommonsCliShellOptions interpolate(
51-
CommonsCliShellOptions options, Collection<Map<String, String>> properties) {
50+
CommonsCliShellOptions options, Function<String, String> callback) {
5251
try {
5352
// now that we have properties, interpolate all arguments
54-
BasicInterpolator interpolator = createInterpolator(properties);
53+
Interpolator interpolator = createInterpolator();
5554
CommandLine.Builder commandLineBuilder = new CommandLine.Builder();
5655
commandLineBuilder.setDeprecatedHandler(o -> {});
5756
for (Option option : options.commandLine.getOptions()) {
5857
if (!CLIManager.USER_PROPERTY.equals(option.getOpt())) {
5958
List<String> values = option.getValuesList();
6059
for (ListIterator<String> it = values.listIterator(); it.hasNext(); ) {
61-
it.set(interpolator.interpolate(it.next()));
60+
it.set(interpolator.interpolate(it.next(), callback));
6261
}
6362
}
6463
commandLineBuilder.addOption(option);
6564
}
6665
for (String arg : options.commandLine.getArgList()) {
67-
commandLineBuilder.addArg(interpolator.interpolate(arg));
66+
commandLineBuilder.addArg(interpolator.interpolate(arg, callback));
6867
}
6968
return new CommonsCliShellOptions(
7069
options.source, (CLIManager) options.cliManager, commandLineBuilder.build());
71-
} catch (InterpolationException e) {
70+
} catch (InterpolatorException e) {
7271
throw new IllegalArgumentException("Could not interpolate CommonsCliOptions", e);
7372
}
7473
}
7574

7675
@Override
77-
public ShellOptions interpolate(Collection<Map<String, String>> properties) {
78-
return interpolate(this, properties);
76+
public ShellOptions interpolate(Function<String, String> callback) {
77+
return interpolate(this, callback);
7978
}
8079

8180
protected static class CLIManager extends CommonsCliOptions.CLIManager {

0 commit comments

Comments
 (0)