diff --git a/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/Options.java b/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/Options.java index 3b5a355d323b..d2bf596cd916 100644 --- a/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/Options.java +++ b/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/Options.java @@ -18,10 +18,10 @@ */ package org.apache.maven.api.cli; -import java.util.Collection; import java.util.Map; import java.util.Optional; import java.util.function.Consumer; +import java.util.function.UnaryOperator; import org.apache.maven.api.annotations.Experimental; import org.apache.maven.api.annotations.Nonnull; @@ -201,11 +201,11 @@ public interface Options { /** * Returns a new instance of {@link Options} with values interpolated using the given properties. * - * @param properties a collection of property maps to use for interpolation + * @param callback the callback to use for interpolation * @return a new {@link Options} instance with interpolated values */ @Nonnull - Options interpolate(@Nonnull Collection> properties); + Options interpolate(@Nonnull UnaryOperator callback); /** * Emits warning messages if deprecated options are used. diff --git a/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvn/MavenOptions.java b/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvn/MavenOptions.java index 1603e2747f4b..21f241750e26 100644 --- a/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvn/MavenOptions.java +++ b/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvn/MavenOptions.java @@ -18,10 +18,9 @@ */ package org.apache.maven.api.cli.mvn; -import java.util.Collection; import java.util.List; -import java.util.Map; import java.util.Optional; +import java.util.function.UnaryOperator; import org.apache.maven.api.annotations.Experimental; import org.apache.maven.api.annotations.Nonnull; @@ -217,11 +216,11 @@ public interface MavenOptions extends Options { Optional> goals(); /** - * Returns a new instance of {@link MavenOptions} with values interpolated using the given properties. + * Returns a new instance of {@link MavenOptions} with values interpolated using the given callback. * - * @param properties a collection of property maps to use for interpolation + * @param callback a callback to use for interpolation * @return a new MavenOptions instance with interpolated values */ @Nonnull - MavenOptions interpolate(@Nonnull Collection> properties); + MavenOptions interpolate(@Nonnull UnaryOperator callback); } diff --git a/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvnenc/EncryptOptions.java b/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvnenc/EncryptOptions.java index 910d0375eaaf..9a7da3750217 100644 --- a/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvnenc/EncryptOptions.java +++ b/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvnenc/EncryptOptions.java @@ -18,10 +18,9 @@ */ package org.apache.maven.api.cli.mvnenc; -import java.util.Collection; import java.util.List; -import java.util.Map; import java.util.Optional; +import java.util.function.UnaryOperator; import org.apache.maven.api.annotations.Experimental; import org.apache.maven.api.annotations.Nonnull; @@ -61,9 +60,9 @@ public interface EncryptOptions extends Options { /** * Returns a new instance of EncryptOptions with values interpolated using the given properties. * - * @param properties a collection of property maps to use for interpolation + * @param callback a callback to use for interpolation * @return a new EncryptOptions instance with interpolated values */ @Nonnull - EncryptOptions interpolate(Collection> properties); + EncryptOptions interpolate(UnaryOperator callback); } diff --git a/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvnsh/ShellOptions.java b/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvnsh/ShellOptions.java index a55d4fd33325..4e1a63c6d74e 100644 --- a/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvnsh/ShellOptions.java +++ b/api/maven-api-cli/src/main/java/org/apache/maven/api/cli/mvnsh/ShellOptions.java @@ -18,8 +18,7 @@ */ package org.apache.maven.api.cli.mvnsh; -import java.util.Collection; -import java.util.Map; +import java.util.function.UnaryOperator; import org.apache.maven.api.annotations.Experimental; import org.apache.maven.api.annotations.Nonnull; @@ -36,9 +35,9 @@ public interface ShellOptions extends Options { /** * Returns a new instance of ShellOptions with values interpolated using the given properties. * - * @param properties a collection of property maps to use for interpolation + * @param callback a callback to use for interpolation * @return a new EncryptOptions instance with interpolated values */ @Nonnull - ShellOptions interpolate(Collection> properties); + ShellOptions interpolate(UnaryOperator callback); } diff --git a/api/maven-api-core/src/main/java/org/apache/maven/api/services/Interpolator.java b/api/maven-api-core/src/main/java/org/apache/maven/api/services/Interpolator.java index 18b6924b2f8c..790e938976c0 100644 --- a/api/maven-api-core/src/main/java/org/apache/maven/api/services/Interpolator.java +++ b/api/maven-api-core/src/main/java/org/apache/maven/api/services/Interpolator.java @@ -23,8 +23,9 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.function.BiFunction; +import java.util.function.BinaryOperator; import java.util.function.Function; +import java.util.function.UnaryOperator; import org.apache.maven.api.Service; import org.apache.maven.api.annotations.Experimental; @@ -47,7 +48,7 @@ public interface Interpolator extends Service { * @param properties The map containing key-value pairs to be interpolated. * @param callback The function to resolve variable values not found in the map. */ - default void interpolate(@Nonnull Map properties, @Nullable Function callback) { + default void interpolate(@Nonnull Map properties, @Nullable UnaryOperator callback) { interpolate(properties, callback, null, true); } @@ -59,7 +60,7 @@ default void interpolate(@Nonnull Map properties, @Nullable Func * @param defaultsToEmpty If true, unresolved placeholders are replaced with empty strings. If false, they are left unchanged. */ default void interpolate( - @Nonnull Map map, @Nullable Function callback, boolean defaultsToEmpty) { + @Nonnull Map map, @Nullable UnaryOperator callback, boolean defaultsToEmpty) { interpolate(map, callback, null, defaultsToEmpty); } @@ -72,8 +73,8 @@ default void interpolate( */ void interpolate( @Nonnull Map map, - @Nullable Function callback, - @Nullable BiFunction postprocessor, + @Nullable UnaryOperator callback, + @Nullable BinaryOperator postprocessor, boolean defaultsToEmpty); /** @@ -85,7 +86,7 @@ void interpolate( * @return The interpolated string, or null if the input was null. */ @Nullable - default String interpolate(@Nullable String val, @Nullable Function callback) { + default String interpolate(@Nullable String val, @Nullable UnaryOperator callback) { return interpolate(val, callback, false); } @@ -99,7 +100,7 @@ default String interpolate(@Nullable String val, @Nullable Function callback, boolean defaultsToEmpty) { + @Nullable String val, @Nullable UnaryOperator callback, boolean defaultsToEmpty) { return interpolate(val, callback, null, defaultsToEmpty); } @@ -114,8 +115,8 @@ default String interpolate( @Nullable String interpolate( @Nullable String val, - @Nullable Function callback, - @Nullable BiFunction postprocessor, + @Nullable UnaryOperator callback, + @Nullable BinaryOperator postprocessor, boolean defaultsToEmpty); /** @@ -127,9 +128,9 @@ String interpolate( * * @throws NullPointerException if the input collection is null or contains null elements. */ - static Function chain(Collection> functions) { + static UnaryOperator chain(Collection> functions) { return s -> { - for (Function function : functions) { + for (UnaryOperator function : functions) { String v = function.apply(s); if (v != null) { return v; @@ -140,7 +141,7 @@ static Function chain(Collection chain(Function... functions) { + static UnaryOperator chain(UnaryOperator... functions) { return chain(List.of(functions)); } @@ -150,14 +151,14 @@ static Function chain(Function... functions) { * improving performance for repeated calls with the same input. * * @param callback The original function to be memoized. It takes a String as input and returns a String. - * @return A new {@code Function} that caches the results of the original function. + * @return A new {@code UnaryOperator} that caches the results of the original function. * If the original function returns null for a given input, null will be cached and returned for subsequent calls with the same input. * * @see Function * @see Optional * @see HashMap#computeIfAbsent(Object, Function) */ - static Function memoize(Function callback) { + static UnaryOperator memoize(UnaryOperator callback) { Map> cache = new HashMap<>(); return s -> cache.computeIfAbsent(s, v -> Optional.ofNullable(callback.apply(v))) .orElse(null); diff --git a/api/maven-api-core/src/main/java/org/apache/maven/api/services/SettingsBuilderRequest.java b/api/maven-api-core/src/main/java/org/apache/maven/api/services/SettingsBuilderRequest.java index d1c6750c455a..311f92236239 100644 --- a/api/maven-api-core/src/main/java/org/apache/maven/api/services/SettingsBuilderRequest.java +++ b/api/maven-api-core/src/main/java/org/apache/maven/api/services/SettingsBuilderRequest.java @@ -21,7 +21,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.Optional; -import java.util.function.Function; +import java.util.function.UnaryOperator; import org.apache.maven.api.ProtoSession; import org.apache.maven.api.annotations.Experimental; @@ -72,7 +72,7 @@ public interface SettingsBuilderRequest { * @return the interpolation source for interpolation */ @Nonnull - Optional> getInterpolationSource(); + Optional> getInterpolationSource(); @Nonnull static SettingsBuilderRequest build( @@ -136,7 +136,7 @@ class SettingsBuilderRequestBuilder { Source installationSettingsSource; Source projectSettingsSource; Source userSettingsSource; - Function interpolationSource; + UnaryOperator interpolationSource; public SettingsBuilderRequestBuilder session(ProtoSession session) { this.session = session; @@ -158,7 +158,7 @@ public SettingsBuilderRequestBuilder userSettingsSource(Source userSettingsSourc return this; } - public SettingsBuilderRequestBuilder interpolationSource(Function interpolationSource) { + public SettingsBuilderRequestBuilder interpolationSource(UnaryOperator interpolationSource) { this.interpolationSource = interpolationSource; return this; } @@ -177,7 +177,7 @@ private static class DefaultSettingsBuilderRequest extends BaseRequest interpolationSource; + private final UnaryOperator interpolationSource; @SuppressWarnings("checkstyle:ParameterNumber") DefaultSettingsBuilderRequest( @@ -185,7 +185,7 @@ private static class DefaultSettingsBuilderRequest extends BaseRequest interpolationSource) { + @Nullable UnaryOperator interpolationSource) { super(session); this.installationSettingsSource = installationSettingsSource; this.projectSettingsSource = projectSettingsSource; @@ -213,7 +213,7 @@ public Optional getUserSettingsSource() { @Nonnull @Override - public Optional> getInterpolationSource() { + public Optional> getInterpolationSource() { return Optional.ofNullable(interpolationSource); } } diff --git a/compat/maven-embedder/src/main/java/org/apache/maven/cli/ExtensionConfigurationModule.java b/compat/maven-embedder/src/main/java/org/apache/maven/cli/ExtensionConfigurationModule.java index b0f4b9e9ba20..85bcc8cb1cbb 100644 --- a/compat/maven-embedder/src/main/java/org/apache/maven/cli/ExtensionConfigurationModule.java +++ b/compat/maven-embedder/src/main/java/org/apache/maven/cli/ExtensionConfigurationModule.java @@ -18,7 +18,7 @@ */ package org.apache.maven.cli; -import java.util.function.Function; +import java.util.function.UnaryOperator; import com.google.inject.Binder; import com.google.inject.Module; @@ -36,10 +36,10 @@ public class ExtensionConfigurationModule implements Module { private final CoreExtensionEntry extension; - private final Function callback; + private final UnaryOperator callback; private final DefaultInterpolator interpolator = new DefaultInterpolator(); - public ExtensionConfigurationModule(CoreExtensionEntry extension, Function callback) { + public ExtensionConfigurationModule(CoreExtensionEntry extension, UnaryOperator callback) { this.extension = extension; this.callback = callback; } @@ -51,8 +51,8 @@ public void configure(Binder binder) { if (configuration == null) { configuration = new XmlNodeImpl("configuration"); } - Function cb = Interpolator.memoize(callback); - Function it = s -> interpolator.interpolate(s, cb); + UnaryOperator cb = Interpolator.memoize(callback); + UnaryOperator it = s -> interpolator.interpolate(s, cb); configuration = new ExtensionInterpolator(it).transform(configuration); binder.bind(XmlNode.class) @@ -65,7 +65,7 @@ public void configure(Binder binder) { } static class ExtensionInterpolator extends MavenTransformer { - ExtensionInterpolator(Function transformer) { + ExtensionInterpolator(UnaryOperator transformer) { super(transformer); } diff --git a/compat/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java b/compat/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java index 0b2d95ea2ae1..979b4a523a57 100644 --- a/compat/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java +++ b/compat/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java @@ -45,7 +45,7 @@ import java.util.ServiceLoader; import java.util.Set; import java.util.function.Consumer; -import java.util.function.Function; +import java.util.function.UnaryOperator; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Stream; @@ -643,7 +643,7 @@ void properties(CliRequest cliRequest) throws Exception { populateProperties(cliRequest.commandLine, paths, cliRequest.systemProperties, cliRequest.userProperties); // now that we have properties, interpolate all arguments - Function callback = v -> { + UnaryOperator callback = v -> { String r = paths.getProperty(v); if (r == null) { r = cliRequest.systemProperties.getProperty(v); @@ -724,7 +724,7 @@ protected void configure() { container.setLoggerManager(plexusLoggerManager); - Function extensionSource = expression -> { + UnaryOperator extensionSource = expression -> { String value = cliRequest.userProperties.getProperty(expression); if (value == null) { value = cliRequest.systemProperties.getProperty(expression); @@ -1660,7 +1660,7 @@ void populateProperties( // ---------------------------------------------------------------------- // Load config files // ---------------------------------------------------------------------- - Function callback = + UnaryOperator callback = or(paths::getProperty, prefix("cli.", commandLine::getOptionValue), systemProperties::getProperty); Path mavenConf; @@ -1686,7 +1686,7 @@ void populateProperties( .forEach(k -> System.setProperty(k, userProperties.getProperty(k))); } - private static Function prefix(String prefix, Function cb) { + private static UnaryOperator prefix(String prefix, UnaryOperator cb) { return s -> { String v = null; if (s.startsWith(prefix)) { @@ -1696,9 +1696,9 @@ private static Function prefix(String prefix, Function or(Function... callbacks) { + private static UnaryOperator or(UnaryOperator... callbacks) { return s -> { - for (Function cb : callbacks) { + for (UnaryOperator cb : callbacks) { String r = cb.apply(s); if (r != null) { return r; diff --git a/compat/maven-embedder/src/main/java/org/apache/maven/cli/internal/BootstrapCoreExtensionManager.java b/compat/maven-embedder/src/main/java/org/apache/maven/cli/internal/BootstrapCoreExtensionManager.java index a19c0f81d714..5dc8858b829e 100644 --- a/compat/maven-embedder/src/main/java/org/apache/maven/cli/internal/BootstrapCoreExtensionManager.java +++ b/compat/maven-embedder/src/main/java/org/apache/maven/cli/internal/BootstrapCoreExtensionManager.java @@ -27,7 +27,7 @@ import java.util.List; import java.util.NoSuchElementException; import java.util.Set; -import java.util.function.Function; +import java.util.function.UnaryOperator; import java.util.stream.Collectors; import org.apache.maven.RepositoryUtils; @@ -139,7 +139,7 @@ public List loadCoreExtensions( InternalSession.associate(repoSession, iSession); List repositories = RepositoryUtils.toRepos(request.getPluginArtifactRepositories()); - Function interpolator = createInterpolator(request); + UnaryOperator interpolator = createInterpolator(request); return resolveCoreExtensions(repoSession, repositories, providedArtifacts, extensions, interpolator); } @@ -150,7 +150,7 @@ private List resolveCoreExtensions( List repositories, Set providedArtifacts, List configuration, - Function interpolator) + UnaryOperator interpolator) throws Exception { List extensions = new ArrayList<>(); @@ -208,7 +208,7 @@ private List resolveExtension( RepositorySystemSession repoSession, List repositories, DependencyFilter dependencyFilter, - Function interpolator) + UnaryOperator interpolator) throws ExtensionResolutionException { try { /* TODO: Enhance the PluginDependenciesResolver to provide a @@ -232,9 +232,9 @@ private List resolveExtension( } } - private static Function createInterpolator(MavenExecutionRequest request) { + private static UnaryOperator createInterpolator(MavenExecutionRequest request) { Interpolator interpolator = new DefaultInterpolator(); - Function callback = v -> { + UnaryOperator callback = v -> { String r = request.getUserProperties().getProperty(v); if (r == null) { r = request.getSystemProperties().getProperty(v); diff --git a/compat/maven-embedder/src/main/java/org/apache/maven/cli/props/MavenProperties.java b/compat/maven-embedder/src/main/java/org/apache/maven/cli/props/MavenProperties.java index b2a9479331c7..0a1d955f86d5 100644 --- a/compat/maven-embedder/src/main/java/org/apache/maven/cli/props/MavenProperties.java +++ b/compat/maven-embedder/src/main/java/org/apache/maven/cli/props/MavenProperties.java @@ -42,7 +42,7 @@ import java.util.Locale; import java.util.Map; import java.util.Set; -import java.util.function.Function; +import java.util.function.UnaryOperator; import org.apache.maven.internal.impl.model.DefaultInterpolator; @@ -81,7 +81,7 @@ public class MavenProperties extends AbstractMap { private List header; private List footer; private Path location; - private Function callback; + private UnaryOperator callback; boolean substitute = true; boolean typed; @@ -91,7 +91,7 @@ public MavenProperties(Path location) throws IOException { this(location, null); } - public MavenProperties(Path location, Function callback) throws IOException { + public MavenProperties(Path location, UnaryOperator callback) throws IOException { this.location = location; this.callback = callback; if (Files.exists(location)) { @@ -474,7 +474,7 @@ public void substitute() { substitute(callback); } - public void substitute(Function callback) { + public void substitute(UnaryOperator callback) { new DefaultInterpolator().interpolate(storage, callback); } diff --git a/compat/maven-embedder/src/main/java/org/apache/maven/cli/props/MavenPropertiesLoader.java b/compat/maven-embedder/src/main/java/org/apache/maven/cli/props/MavenPropertiesLoader.java index d83f56850f4b..62bfe2c8382b 100644 --- a/compat/maven-embedder/src/main/java/org/apache/maven/cli/props/MavenPropertiesLoader.java +++ b/compat/maven-embedder/src/main/java/org/apache/maven/cli/props/MavenPropertiesLoader.java @@ -24,7 +24,7 @@ import java.util.Enumeration; import java.util.Map; import java.util.StringTokenizer; -import java.util.function.Function; +import java.util.function.UnaryOperator; import org.apache.maven.internal.impl.model.DefaultInterpolator; @@ -37,7 +37,7 @@ public class MavenPropertiesLoader { "maven.override."; // prefix that marks that system property should override defaults. public static void loadProperties( - java.util.Properties properties, Path path, Function callback, boolean escape) + java.util.Properties properties, Path path, UnaryOperator callback, boolean escape) throws IOException { MavenProperties sp = new MavenProperties(false); if (Files.exists(path)) { @@ -50,7 +50,7 @@ public static void loadProperties( sp.forEach(properties::setProperty); } - public static void substitute(MavenProperties props, Function callback) { + public static void substitute(MavenProperties props, UnaryOperator callback) { for (Enumeration e = props.propertyNames(); e.hasMoreElements(); ) { String name = (String) e.nextElement(); String value = props.getProperty(name); @@ -67,8 +67,8 @@ public static void substitute(MavenProperties props, Function ca props.keySet().removeIf(k -> k.startsWith(OVERRIDE_PREFIX)); } - private static MavenProperties loadPropertiesFile( - Path path, boolean failIfNotFound, Function callback) throws IOException { + private static MavenProperties loadPropertiesFile(Path path, boolean failIfNotFound, UnaryOperator callback) + throws IOException { MavenProperties configProps = new MavenProperties(null, false); if (Files.exists(path) || failIfNotFound) { configProps.load(path); @@ -78,7 +78,7 @@ private static MavenProperties loadPropertiesFile( return configProps; } - private static void loadIncludes(Path configProp, MavenProperties configProps, Function callback) + private static void loadIncludes(Path configProp, MavenProperties configProps, UnaryOperator callback) throws IOException { String includes = configProps.get(INCLUDES_PROPERTY); if (includes != null) { @@ -162,7 +162,7 @@ private static String nextLocation(StringTokenizer st) { } public static String substVars( - String value, String name, Map props, Function callback) { + String value, String name, Map props, UnaryOperator callback) { return DefaultInterpolator.substVars(value, name, null, props, callback, null, false); } } 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 b5eb37166bf6..944504f30404 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 @@ -24,7 +24,7 @@ import java.util.List; import java.util.NoSuchElementException; import java.util.Set; -import java.util.function.Function; +import java.util.function.UnaryOperator; import java.util.stream.Collectors; import org.apache.maven.RepositoryUtils; @@ -137,7 +137,7 @@ public List loadCoreExtensions( InternalSession.associate(repoSession, iSession); List repositories = RepositoryUtils.toRepos(request.getPluginArtifactRepositories()); - Function interpolator = createInterpolator(request); + UnaryOperator interpolator = createInterpolator(request); return resolveCoreExtensions(repoSession, repositories, providedArtifacts, extensions, interpolator); } @@ -148,7 +148,7 @@ private List resolveCoreExtensions( List repositories, Set providedArtifacts, List configuration, - Function interpolator) + UnaryOperator interpolator) throws Exception { List extensions = new ArrayList<>(); @@ -206,7 +206,7 @@ private List resolveExtension( RepositorySystemSession repoSession, List repositories, DependencyFilter dependencyFilter, - Function interpolator) + UnaryOperator interpolator) throws ExtensionResolutionException { try { /* TODO: Enhance the PluginDependenciesResolver to provide a @@ -230,9 +230,9 @@ private List resolveExtension( } } - private static Function createInterpolator(MavenExecutionRequest request) { + private static UnaryOperator createInterpolator(MavenExecutionRequest request) { Interpolator interpolator = new DefaultInterpolator(); - Function callback = v -> { + UnaryOperator callback = v -> { String r = request.getUserProperties().getProperty(v); if (r == null) { r = request.getSystemProperties().getProperty(v); 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 2b04b3abae1d..f9778a42baf8 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 @@ -18,7 +18,7 @@ */ package org.apache.maven.cling.extensions; -import java.util.function.Function; +import java.util.function.UnaryOperator; import com.google.inject.Binder; import com.google.inject.Module; @@ -35,10 +35,10 @@ public class ExtensionConfigurationModule implements Module { private final CoreExtensionEntry extension; - private final Function callback; + private final UnaryOperator callback; private final DefaultInterpolator interpolator = new DefaultInterpolator(); - public ExtensionConfigurationModule(CoreExtensionEntry extension, Function callback) { + public ExtensionConfigurationModule(CoreExtensionEntry extension, UnaryOperator callback) { this.extension = extension; this.callback = callback; } @@ -50,8 +50,8 @@ public void configure(Binder binder) { if (configuration == null) { configuration = new XmlNodeImpl("configuration"); } - Function cb = Interpolator.memoize(callback); - Function it = s -> interpolator.interpolate(s, cb); + UnaryOperator cb = Interpolator.memoize(callback); + UnaryOperator it = s -> interpolator.interpolate(s, cb); configuration = new ExtensionInterpolator(it).transform(configuration); binder.bind(XmlNode.class) @@ -64,7 +64,7 @@ public void configure(Binder binder) { } static class ExtensionInterpolator extends MavenTransformer { - ExtensionInterpolator(Function transformer) { + ExtensionInterpolator(UnaryOperator transformer) { super(transformer); } diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/BaseParser.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/BaseParser.java index e51d6311a7ef..27f4add0afd9 100644 --- a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/BaseParser.java +++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/BaseParser.java @@ -33,7 +33,7 @@ import java.util.Map; import java.util.Objects; import java.util.Properties; -import java.util.function.Function; +import java.util.function.UnaryOperator; import java.util.stream.Collectors; import org.apache.maven.api.Constants; @@ -44,6 +44,7 @@ import org.apache.maven.api.cli.ParserException; import org.apache.maven.api.cli.ParserRequest; import org.apache.maven.api.cli.extensions.CoreExtension; +import org.apache.maven.api.services.Interpolator; import org.apache.maven.cling.internal.extension.io.CoreExtensionsStaxReader; import org.apache.maven.cling.props.MavenPropertiesLoader; import org.apache.maven.cling.utils.CLIReportingUtils; @@ -122,8 +123,8 @@ public InvokerRequest parseInvocation(ParserRequest parserRequest) throws Parser context.userProperties = populateUserProperties(context); // options: interpolate - context.options = context.options.interpolate( - Arrays.asList(context.extraInterpolationSource(), context.userProperties, context.systemProperties)); + context.options = context.options.interpolate(Interpolator.chain( + context.extraInterpolationSource()::get, context.userProperties::get, context.systemProperties::get)); // core extensions context.extensions = readCoreExtensionsDescriptor(context); @@ -263,7 +264,7 @@ protected Map populateUserProperties(LocalContext context) throw // Load config files // ---------------------------------------------------------------------- Map paths = context.extraInterpolationSource(); - Function callback = + UnaryOperator callback = or(paths::get, prefix("cli.", userSpecifiedProperties::get), context.systemProperties::get); Path mavenConf; diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/LookupInvoker.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/LookupInvoker.java index 971e0cedbdde..da4046a2dcde 100644 --- a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/LookupInvoker.java +++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/LookupInvoker.java @@ -31,7 +31,7 @@ import java.util.Map; import java.util.Properties; import java.util.function.Consumer; -import java.util.function.Function; +import java.util.function.UnaryOperator; import org.apache.maven.api.Constants; import org.apache.maven.api.ProtoSession; @@ -563,7 +563,7 @@ protected Runnable settings(C context, boolean emitSettingsWarnings, SettingsBui context.projectSettingsPath = projectSettingsFile; context.userSettingsPath = userSettingsFile; - Function interpolationSource = Interpolator.chain( + UnaryOperator interpolationSource = Interpolator.chain( context.protoSession.getUserProperties()::get, context.protoSession.getSystemProperties()::get); SettingsBuilderRequest settingsRequest = SettingsBuilderRequest.builder() .session(context.protoSession) diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/PlexusContainerCapsuleFactory.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/PlexusContainerCapsuleFactory.java index 56d6cc099f3f..c29bce115027 100644 --- a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/PlexusContainerCapsuleFactory.java +++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/PlexusContainerCapsuleFactory.java @@ -25,7 +25,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import java.util.function.Function; +import java.util.function.UnaryOperator; import com.google.inject.AbstractModule; import com.google.inject.Module; @@ -111,7 +111,7 @@ protected DefaultPlexusContainer container(LookupInvoker invoker, C context) container.setLoggerManager(createLoggerManager()); ProtoSession protoSession = context.protoSession; - Function extensionSource = expression -> { + UnaryOperator extensionSource = expression -> { String value = protoSession.getUserProperties().get(expression); if (value == null) { value = protoSession.getSystemProperties().get(expression); diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/Utils.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/Utils.java index 853cccc9313f..792e882068b7 100644 --- a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/Utils.java +++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/Utils.java @@ -20,22 +20,20 @@ import java.io.IOException; import java.nio.file.Path; -import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Optional; import java.util.Properties; import java.util.ServiceLoader; -import java.util.function.Function; +import java.util.function.UnaryOperator; import org.apache.maven.api.annotations.Nonnull; import org.apache.maven.api.annotations.Nullable; +import org.apache.maven.api.services.Interpolator; import org.apache.maven.api.services.model.RootLocator; import org.apache.maven.cling.logging.Slf4jConfiguration; import org.apache.maven.execution.MavenExecutionRequest; -import org.codehaus.plexus.interpolation.AbstractValueSource; -import org.codehaus.plexus.interpolation.BasicInterpolator; -import org.codehaus.plexus.interpolation.StringSearchInterpolator; +import org.apache.maven.internal.impl.model.DefaultInterpolator; import org.codehaus.plexus.logging.Logger; import static java.util.Objects.requireNonNull; @@ -90,25 +88,12 @@ public static Properties toProperties(Map properties) { } @Nonnull - public static BasicInterpolator createInterpolator(Collection> properties) { - StringSearchInterpolator interpolator = new StringSearchInterpolator(); - interpolator.addValueSource(new AbstractValueSource(false) { - @Override - public Object getValue(String expression) { - for (Map props : properties) { - String val = props.get(expression); - if (val != null) { - return val; - } - } - return null; - } - }); - return interpolator; + public static Interpolator createInterpolator() { + return new DefaultInterpolator(); } @Nonnull - public static Function prefix(String prefix, Function cb) { + public static UnaryOperator prefix(String prefix, UnaryOperator cb) { return s -> { String v = null; if (s.startsWith(prefix)) { @@ -120,9 +105,9 @@ public static Function prefix(String prefix, Function or(Function... callbacks) { + public static UnaryOperator or(UnaryOperator... callbacks) { return s -> { - for (Function cb : callbacks) { + for (UnaryOperator cb : callbacks) { String r = cb.apply(s); if (r != null) { return r; diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/CommonsCliMavenOptions.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/CommonsCliMavenOptions.java index 33ff742d6ba4..0ba2e6e0ab5a 100644 --- a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/CommonsCliMavenOptions.java +++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/CommonsCliMavenOptions.java @@ -19,19 +19,18 @@ package org.apache.maven.cling.invoker.mvn; import java.util.Arrays; -import java.util.Collection; import java.util.List; import java.util.ListIterator; -import java.util.Map; import java.util.Optional; +import java.util.function.UnaryOperator; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Option; import org.apache.commons.cli.ParseException; import org.apache.maven.api.cli.mvn.MavenOptions; +import org.apache.maven.api.services.Interpolator; +import org.apache.maven.api.services.InterpolatorException; import org.apache.maven.cling.invoker.CommonsCliOptions; -import org.codehaus.plexus.interpolation.BasicInterpolator; -import org.codehaus.plexus.interpolation.InterpolationException; import static org.apache.maven.cling.invoker.Utils.createInterpolator; @@ -45,28 +44,27 @@ protected CommonsCliMavenOptions(String source, CLIManager cliManager, CommandLi super(source, cliManager, commandLine); } - private static CommonsCliMavenOptions interpolate( - CommonsCliMavenOptions options, Collection> properties) { + private static CommonsCliMavenOptions interpolate(CommonsCliMavenOptions options, UnaryOperator callback) { try { // now that we have properties, interpolate all arguments - BasicInterpolator interpolator = createInterpolator(properties); + Interpolator interpolator = createInterpolator(); CommandLine.Builder commandLineBuilder = new CommandLine.Builder(); commandLineBuilder.setDeprecatedHandler(o -> {}); for (Option option : options.commandLine.getOptions()) { if (!CLIManager.USER_PROPERTY.equals(option.getOpt())) { List values = option.getValuesList(); for (ListIterator it = values.listIterator(); it.hasNext(); ) { - it.set(interpolator.interpolate(it.next())); + it.set(interpolator.interpolate(it.next(), callback)); } } commandLineBuilder.addOption(option); } for (String arg : options.commandLine.getArgList()) { - commandLineBuilder.addArg(interpolator.interpolate(arg)); + commandLineBuilder.addArg(interpolator.interpolate(arg, callback)); } return new CommonsCliMavenOptions( options.source, (CLIManager) options.cliManager, commandLineBuilder.build()); - } catch (InterpolationException e) { + } catch (InterpolatorException e) { throw new IllegalArgumentException("Could not interpolate CommonsCliOptions", e); } } @@ -249,8 +247,8 @@ public Optional> goals() { } @Override - public MavenOptions interpolate(Collection> properties) { - return interpolate(this, properties); + public MavenOptions interpolate(UnaryOperator callback) { + return interpolate(this, callback); } protected static class CLIManager extends CommonsCliOptions.CLIManager { diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/LayeredMavenOptions.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/LayeredMavenOptions.java index 79c25b8fd42c..353f795913a4 100644 --- a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/LayeredMavenOptions.java +++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvn/LayeredMavenOptions.java @@ -21,9 +21,9 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import java.util.Map; import java.util.Objects; import java.util.Optional; +import java.util.function.UnaryOperator; import org.apache.maven.api.cli.mvn.MavenOptions; import org.apache.maven.cling.invoker.LayeredOptions; @@ -160,10 +160,10 @@ public Optional> goals() { } @Override - public MavenOptions interpolate(Collection> properties) { + public MavenOptions interpolate(UnaryOperator callback) { ArrayList interpolatedOptions = new ArrayList<>(options.size()); for (MavenOptions o : options) { - interpolatedOptions.add(o.interpolate(properties)); + interpolatedOptions.add(o.interpolate(callback)); } return layerMavenOptions(interpolatedOptions); } diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvnenc/CommonsCliEncryptOptions.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvnenc/CommonsCliEncryptOptions.java index c21e3dce9524..d67e93ec0034 100644 --- a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvnenc/CommonsCliEncryptOptions.java +++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvnenc/CommonsCliEncryptOptions.java @@ -18,12 +18,11 @@ */ package org.apache.maven.cling.invoker.mvnenc; -import java.util.Collection; import java.util.List; import java.util.ListIterator; -import java.util.Map; import java.util.Optional; import java.util.function.Consumer; +import java.util.function.UnaryOperator; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Option; @@ -31,9 +30,9 @@ import org.apache.maven.api.cli.Options; import org.apache.maven.api.cli.ParserRequest; import org.apache.maven.api.cli.mvnenc.EncryptOptions; +import org.apache.maven.api.services.Interpolator; +import org.apache.maven.api.services.InterpolatorException; import org.apache.maven.cling.invoker.CommonsCliOptions; -import org.codehaus.plexus.interpolation.BasicInterpolator; -import org.codehaus.plexus.interpolation.InterpolationException; import static org.apache.maven.cling.invoker.Utils.createInterpolator; @@ -51,27 +50,27 @@ protected CommonsCliEncryptOptions(String source, CLIManager cliManager, Command } private static CommonsCliEncryptOptions interpolate( - CommonsCliEncryptOptions options, Collection> properties) { + CommonsCliEncryptOptions options, UnaryOperator callback) { try { // now that we have properties, interpolate all arguments - BasicInterpolator interpolator = createInterpolator(properties); + Interpolator interpolator = createInterpolator(); CommandLine.Builder commandLineBuilder = new CommandLine.Builder(); commandLineBuilder.setDeprecatedHandler(o -> {}); for (Option option : options.commandLine.getOptions()) { if (!CLIManager.USER_PROPERTY.equals(option.getOpt())) { List values = option.getValuesList(); for (ListIterator it = values.listIterator(); it.hasNext(); ) { - it.set(interpolator.interpolate(it.next())); + it.set(interpolator.interpolate(it.next(), callback)); } } commandLineBuilder.addOption(option); } for (String arg : options.commandLine.getArgList()) { - commandLineBuilder.addArg(interpolator.interpolate(arg)); + commandLineBuilder.addArg(interpolator.interpolate(arg, callback)); } return new CommonsCliEncryptOptions( options.source, (CLIManager) options.cliManager, commandLineBuilder.build()); - } catch (InterpolationException e) { + } catch (InterpolatorException e) { throw new IllegalArgumentException("Could not interpolate CommonsCliOptions", e); } } @@ -101,8 +100,8 @@ public Optional> goals() { } @Override - public EncryptOptions interpolate(Collection> properties) { - return interpolate(this, properties); + public EncryptOptions interpolate(UnaryOperator callback) { + return interpolate(this, callback); } @Override diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvnsh/CommonsCliShellOptions.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvnsh/CommonsCliShellOptions.java index 04b1c3675557..a45a973eaa41 100644 --- a/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvnsh/CommonsCliShellOptions.java +++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvnsh/CommonsCliShellOptions.java @@ -18,19 +18,18 @@ */ package org.apache.maven.cling.invoker.mvnsh; -import java.util.Collection; import java.util.List; import java.util.ListIterator; -import java.util.Map; +import java.util.function.UnaryOperator; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Option; import org.apache.commons.cli.ParseException; import org.apache.maven.api.cli.Options; import org.apache.maven.api.cli.mvnsh.ShellOptions; +import org.apache.maven.api.services.Interpolator; +import org.apache.maven.api.services.InterpolatorException; import org.apache.maven.cling.invoker.CommonsCliOptions; -import org.codehaus.plexus.interpolation.BasicInterpolator; -import org.codehaus.plexus.interpolation.InterpolationException; import static org.apache.maven.cling.invoker.Utils.createInterpolator; @@ -47,35 +46,34 @@ protected CommonsCliShellOptions(String source, CLIManager cliManager, CommandLi super(source, cliManager, commandLine); } - private static CommonsCliShellOptions interpolate( - CommonsCliShellOptions options, Collection> properties) { + private static CommonsCliShellOptions interpolate(CommonsCliShellOptions options, UnaryOperator callback) { try { // now that we have properties, interpolate all arguments - BasicInterpolator interpolator = createInterpolator(properties); + Interpolator interpolator = createInterpolator(); CommandLine.Builder commandLineBuilder = new CommandLine.Builder(); commandLineBuilder.setDeprecatedHandler(o -> {}); for (Option option : options.commandLine.getOptions()) { if (!CLIManager.USER_PROPERTY.equals(option.getOpt())) { List values = option.getValuesList(); for (ListIterator it = values.listIterator(); it.hasNext(); ) { - it.set(interpolator.interpolate(it.next())); + it.set(interpolator.interpolate(it.next(), callback)); } } commandLineBuilder.addOption(option); } for (String arg : options.commandLine.getArgList()) { - commandLineBuilder.addArg(interpolator.interpolate(arg)); + commandLineBuilder.addArg(interpolator.interpolate(arg, callback)); } return new CommonsCliShellOptions( options.source, (CLIManager) options.cliManager, commandLineBuilder.build()); - } catch (InterpolationException e) { + } catch (InterpolatorException e) { throw new IllegalArgumentException("Could not interpolate CommonsCliOptions", e); } } @Override - public ShellOptions interpolate(Collection> properties) { - return interpolate(this, properties); + public ShellOptions interpolate(UnaryOperator callback) { + return interpolate(this, callback); } protected static class CLIManager extends CommonsCliOptions.CLIManager { diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/props/MavenProperties.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/props/MavenProperties.java index 2249477490eb..a7d624cc5d9d 100644 --- a/impl/maven-cli/src/main/java/org/apache/maven/cling/props/MavenProperties.java +++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/props/MavenProperties.java @@ -42,7 +42,7 @@ import java.util.Locale; import java.util.Map; import java.util.Set; -import java.util.function.Function; +import java.util.function.UnaryOperator; import org.apache.maven.internal.impl.model.DefaultInterpolator; @@ -80,7 +80,7 @@ public class MavenProperties extends AbstractMap { private List header; private List footer; private Path location; - private Function callback; + private UnaryOperator callback; boolean substitute = true; boolean typed; @@ -90,7 +90,7 @@ public MavenProperties(Path location) throws IOException { this(location, null); } - public MavenProperties(Path location, Function callback) throws IOException { + public MavenProperties(Path location, UnaryOperator callback) throws IOException { this.location = location; this.callback = callback; if (Files.exists(location)) { @@ -473,7 +473,7 @@ public void substitute() { substitute(callback); } - public void substitute(Function callback) { + public void substitute(UnaryOperator callback) { new DefaultInterpolator().interpolate(storage, callback); } diff --git a/impl/maven-cli/src/main/java/org/apache/maven/cling/props/MavenPropertiesLoader.java b/impl/maven-cli/src/main/java/org/apache/maven/cling/props/MavenPropertiesLoader.java index df9b0a6d5a40..3bfb64a6399f 100644 --- a/impl/maven-cli/src/main/java/org/apache/maven/cling/props/MavenPropertiesLoader.java +++ b/impl/maven-cli/src/main/java/org/apache/maven/cling/props/MavenPropertiesLoader.java @@ -24,7 +24,7 @@ import java.util.Enumeration; import java.util.Map; import java.util.StringTokenizer; -import java.util.function.Function; +import java.util.function.UnaryOperator; import org.apache.maven.internal.impl.model.DefaultInterpolator; @@ -36,7 +36,7 @@ public class MavenPropertiesLoader { "maven.override."; // prefix that marks that system property should override defaults. public static void loadProperties( - java.util.Properties properties, Path path, Function callback, boolean escape) + java.util.Properties properties, Path path, UnaryOperator callback, boolean escape) throws IOException { MavenProperties sp = new MavenProperties(false); if (Files.exists(path)) { @@ -49,7 +49,7 @@ public static void loadProperties( sp.forEach(properties::setProperty); } - public static void substitute(MavenProperties props, Function callback) { + public static void substitute(MavenProperties props, UnaryOperator callback) { for (Enumeration e = props.propertyNames(); e.hasMoreElements(); ) { String name = (String) e.nextElement(); String value = props.getProperty(name); @@ -66,8 +66,8 @@ public static void substitute(MavenProperties props, Function ca props.keySet().removeIf(k -> k.startsWith(OVERRIDE_PREFIX)); } - private static MavenProperties loadPropertiesFile( - Path path, boolean failIfNotFound, Function callback) throws IOException { + private static MavenProperties loadPropertiesFile(Path path, boolean failIfNotFound, UnaryOperator callback) + throws IOException { MavenProperties configProps = new MavenProperties(null, false); if (Files.exists(path) || failIfNotFound) { configProps.load(path); @@ -77,7 +77,7 @@ private static MavenProperties loadPropertiesFile( return configProps; } - private static void loadIncludes(Path configProp, MavenProperties configProps, Function callback) + private static void loadIncludes(Path configProp, MavenProperties configProps, UnaryOperator callback) throws IOException { String includes = configProps.get(INCLUDES_PROPERTY); if (includes != null) { @@ -161,7 +161,7 @@ private static String nextLocation(StringTokenizer st) { } public static String substVars( - String value, String name, Map props, Function callback) { + String value, String name, Map props, UnaryOperator callback) { return DefaultInterpolator.substVars(value, name, null, props, callback, null, false); } } diff --git a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/DefaultPluginConfigurationExpander.java b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/DefaultPluginConfigurationExpander.java index 6a6b2153233c..3276bb955867 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/DefaultPluginConfigurationExpander.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/DefaultPluginConfigurationExpander.java @@ -20,7 +20,7 @@ import java.util.ArrayList; import java.util.List; -import java.util.function.Function; +import java.util.function.UnaryOperator; import org.apache.maven.api.di.Named; import org.apache.maven.api.di.Singleton; @@ -90,7 +90,7 @@ private List expandReport(List oldPlugins) { }); } - static List map(List list, Function mapper) { + static List map(List list, UnaryOperator mapper) { List newList = list; for (int i = 0; i < newList.size(); i++) { T oldT = newList.get(i); diff --git a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/DefaultSettingsBuilder.java b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/DefaultSettingsBuilder.java index 397ce985312e..1936ab647d48 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/DefaultSettingsBuilder.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/DefaultSettingsBuilder.java @@ -29,8 +29,8 @@ import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; -import java.util.function.Function; import java.util.function.Supplier; +import java.util.function.UnaryOperator; import org.apache.maven.api.Constants; import org.apache.maven.api.ProtoSession; @@ -232,7 +232,7 @@ private Settings readSettings( private Settings interpolate( Settings settings, SettingsBuilderRequest request, ProblemCollector problems) { - Function src; + UnaryOperator src; if (request.getInterpolationSource().isPresent()) { src = request.getInterpolationSource().get(); } else { @@ -245,7 +245,7 @@ private Settings interpolate( } static class DefSettingsTransformer extends SettingsTransformer { - DefSettingsTransformer(Function transformer) { + DefSettingsTransformer(UnaryOperator transformer) { super(transformer); } @@ -267,7 +267,7 @@ private Settings decrypt( } SecDispatcher secDispatcher = new DefaultSecDispatcher(dispatchers, getSecuritySettings(request.getSession())); final AtomicInteger preMaven4Passwords = new AtomicInteger(0); - Function decryptFunction = str -> { + UnaryOperator decryptFunction = str -> { if (str != null && !str.isEmpty() && !str.contains("${") && secDispatcher.isAnyEncryptedString(str)) { if (secDispatcher.isLegacyEncryptedString(str)) { // add a problem diff --git a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/DefaultToolchainsBuilder.java b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/DefaultToolchainsBuilder.java index 0bcf493cfd51..7f6738256827 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/DefaultToolchainsBuilder.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/DefaultToolchainsBuilder.java @@ -24,7 +24,7 @@ import java.io.IOException; import java.io.InputStream; import java.util.Map; -import java.util.function.Function; +import java.util.function.UnaryOperator; import org.apache.maven.api.di.Inject; import org.apache.maven.api.di.Named; @@ -156,7 +156,7 @@ private PersistedToolchains interpolate( ProblemCollector problems) { Map userProperties = request.getSession().getUserProperties(); Map systemProperties = request.getSession().getSystemProperties(); - Function src = Interpolator.chain(userProperties::get, systemProperties::get); + UnaryOperator src = Interpolator.chain(userProperties::get, systemProperties::get); return new MavenToolchainsTransformer(value -> value != null ? interpolator.interpolate(value, src) : null) .visit(toolchains); } diff --git a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultInterpolator.java b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultInterpolator.java index f73d876c9092..bb96532cafd5 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultInterpolator.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultInterpolator.java @@ -22,8 +22,8 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; -import java.util.function.BiFunction; -import java.util.function.Function; +import java.util.function.BinaryOperator; +import java.util.function.UnaryOperator; import org.apache.maven.api.annotations.Nullable; import org.apache.maven.api.di.Named; @@ -43,8 +43,8 @@ public class DefaultInterpolator implements Interpolator { @Override public void interpolate( Map map, - Function callback, - BiFunction postprocessor, + UnaryOperator callback, + BinaryOperator postprocessor, boolean defaultsToEmpty) { Map org = new HashMap<>(map); for (String name : map.keySet()) { @@ -68,10 +68,7 @@ public void interpolate( @Override public String interpolate( - String val, - Function callback, - BiFunction postprocessor, - boolean defaultsToEmpty) { + String val, UnaryOperator callback, BinaryOperator postprocessor, boolean defaultsToEmpty) { return interpolate(val, null, null, callback, postprocessor, defaultsToEmpty); } @@ -80,8 +77,8 @@ public String interpolate( @Nullable String val, @Nullable String currentKey, @Nullable Set cycleMap, - @Nullable Function callback, - @Nullable BiFunction postprocessor, + @Nullable UnaryOperator callback, + @Nullable BinaryOperator postprocessor, boolean defaultsToEmpty) { return substVars(val, currentKey, cycleMap, null, callback, postprocessor, defaultsToEmpty); } @@ -92,7 +89,7 @@ public String interpolate( * @param properties the property set to perform substitution on * @param callback Callback for substitution */ - public void performSubstitution(Map properties, Function callback) { + public void performSubstitution(Map properties, UnaryOperator callback) { performSubstitution(properties, callback, true); } @@ -104,7 +101,7 @@ public void performSubstitution(Map properties, Function properties, Function callback, boolean defaultsToEmptyString) { + Map properties, UnaryOperator callback, boolean defaultsToEmptyString) { Map org = new HashMap<>(properties); for (String name : properties.keySet()) { properties.compute( @@ -166,7 +163,7 @@ public String substVars( String currentKey, Set cycleMap, Map configProps, - Function callback) { + UnaryOperator callback) { return substVars(val, currentKey, cycleMap, configProps, callback, null, false); } @@ -199,8 +196,8 @@ public static String substVars( String currentKey, Set cycleMap, Map configProps, - Function callback, - BiFunction postprocessor, + UnaryOperator callback, + BinaryOperator postprocessor, boolean defaultsToEmptyString) { return unescape( doSubstVars(val, currentKey, cycleMap, configProps, callback, postprocessor, defaultsToEmptyString)); @@ -211,8 +208,8 @@ private static String doSubstVars( String currentKey, Set cycleMap, Map configProps, - Function callback, - BiFunction postprocessor, + UnaryOperator callback, + BinaryOperator postprocessor, boolean defaultsToEmptyString) { if (val == null || val.isEmpty()) { return val; @@ -291,8 +288,8 @@ private static String processSubstitution( String org, Set cycleMap, Map configProps, - Function callback, - BiFunction postprocessor, + UnaryOperator callback, + BinaryOperator postprocessor, boolean defaultsToEmptyString) { // Process chained operators from left to right @@ -365,8 +362,8 @@ private static String resolveVariable( String variable, Set cycleMap, Map configProps, - Function callback, - BiFunction postprocessor, + UnaryOperator callback, + BinaryOperator postprocessor, boolean defaultsToEmptyString) { // Verify that this is not a recursive variable reference diff --git a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelBuilder.java b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelBuilder.java index 0367d7fd378a..49576268323c 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelBuilder.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelBuilder.java @@ -40,7 +40,6 @@ import java.util.concurrent.Executor; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicReference; -import java.util.function.Function; import java.util.function.Supplier; import java.util.function.UnaryOperator; import java.util.regex.Matcher; @@ -1880,7 +1879,7 @@ private Model interpolateModel(Model model, ModelBuilderRequest request, ModelPr Map map1 = request.getSession().getUserProperties(); Map map2 = model.getProperties(); Map map3 = request.getSession().getSystemProperties(); - Function cb = Interpolator.chain(map1::get, map2::get, map3::get); + UnaryOperator cb = Interpolator.chain(map1::get, map2::get, map3::get); try { String interpolated = interpolator.interpolate(interpolatedModel.getParent().getVersion(), cb); diff --git a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelInterpolator.java b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelInterpolator.java index 444b8c75c19c..72fde20b36ee 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelInterpolator.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelInterpolator.java @@ -26,8 +26,9 @@ import java.util.Map; import java.util.Optional; import java.util.Set; -import java.util.function.BiFunction; +import java.util.function.BinaryOperator; import java.util.function.Function; +import java.util.function.UnaryOperator; import org.apache.maven.api.di.Inject; import org.apache.maven.api.di.Named; @@ -110,8 +111,8 @@ private InnerInterpolator createInterpolator( Map> cache = new HashMap<>(); Function> ucb = v -> Optional.ofNullable(callback(model, projectDir, request, problems, v)); - Function cb = v -> cache.computeIfAbsent(v, ucb).orElse(null); - BiFunction postprocessor = (e, v) -> postProcess(projectDir, request, e, v); + UnaryOperator cb = v -> cache.computeIfAbsent(v, ucb).orElse(null); + BinaryOperator postprocessor = (e, v) -> postProcess(projectDir, request, e, v); return value -> { try { return interpolator.interpolate(value, cb, postprocessor, false); diff --git a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelNormalizer.java b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelNormalizer.java index ea5c2cfb60a2..ae482df29d8c 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelNormalizer.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelNormalizer.java @@ -23,7 +23,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.function.Function; +import java.util.function.UnaryOperator; import org.apache.maven.api.di.Named; import org.apache.maven.api.di.Singleton; @@ -130,7 +130,7 @@ private Dependency injectDependency(Dependency d) { /** * Returns a list suited for the builders, i.e. null if not modified */ - private List injectList(List list, Function modifer) { + private List injectList(List list, UnaryOperator modifer) { List newList = null; for (int i = 0; i < list.size(); i++) { T oldT = list.get(i); diff --git a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelPathTranslator.java b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelPathTranslator.java index 3d08148c1389..1974beb41906 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelPathTranslator.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/DefaultModelPathTranslator.java @@ -22,7 +22,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; -import java.util.function.Function; +import java.util.function.UnaryOperator; import org.apache.maven.api.di.Inject; import org.apache.maven.api.di.Named; @@ -88,7 +88,7 @@ public Model alignToBaseDirectory(Model model, Path basedir, ModelBuilderRequest return model; } - private List map(List resources, Function mapper) { + private List map(List resources, UnaryOperator mapper) { List newResources = null; if (resources != null) { for (int i = 0; i < resources.size(); i++) { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/profile/ConditionParser.java b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/profile/ConditionParser.java index 6e649f00128d..84e1a54419fe 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/profile/ConditionParser.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/model/profile/ConditionParser.java @@ -21,7 +21,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.function.Function; +import java.util.function.UnaryOperator; /** * The {@code ConditionParser} class is responsible for parsing and evaluating expressions. @@ -46,7 +46,7 @@ public interface ExpressionFunction { } private final Map functions; // Map to store functions by their names - private final Function propertyResolver; // Property resolver + private final UnaryOperator propertyResolver; // Property resolver private List tokens; // List of tokens derived from the expression private int current; // Keeps track of the current token index @@ -56,7 +56,7 @@ public interface ExpressionFunction { * @param functions a map of function names to their corresponding {@code ExpressionFunction} implementations * @param propertyResolver the property resolver */ - public ConditionParser(Map functions, Function propertyResolver) { + public ConditionParser(Map functions, UnaryOperator propertyResolver) { this.functions = functions; this.propertyResolver = propertyResolver; } 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 7070905a2e92..eb5787e4f944 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 @@ -20,7 +20,7 @@ import java.util.HashMap; import java.util.Map; -import java.util.function.Function; +import java.util.function.UnaryOperator; import org.apache.maven.api.di.Inject; import org.apache.maven.api.di.Named; @@ -73,7 +73,7 @@ public boolean isActive(Profile profile, ProfileActivationContext context, Model String condition = profile.getActivation().getCondition(); try { Map functions = registerFunctions(context, versionParser); - Function propertyResolver = s -> property(context, s); + UnaryOperator propertyResolver = s -> property(context, s); return toBoolean(new ConditionParser(functions, propertyResolver).parse(condition)); } catch (Exception e) { problems.add( diff --git a/impl/maven-impl/src/test/java/org/apache/maven/internal/impl/model/DefaultInterpolatorTest.java b/impl/maven-impl/src/test/java/org/apache/maven/internal/impl/model/DefaultInterpolatorTest.java index 9a0c9c70a607..bbdd861773fd 100644 --- a/impl/maven-impl/src/test/java/org/apache/maven/internal/impl/model/DefaultInterpolatorTest.java +++ b/impl/maven-impl/src/test/java/org/apache/maven/internal/impl/model/DefaultInterpolatorTest.java @@ -21,7 +21,7 @@ import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; -import java.util.function.Function; +import java.util.function.UnaryOperator; import org.apache.maven.api.services.InterpolatorException; import org.junit.jupiter.api.Test; @@ -207,7 +207,7 @@ private void performSubstitution(Map props) { performSubstitution(props, null); } - private void performSubstitution(Map props, Function callback) { + private void performSubstitution(Map props, UnaryOperator callback) { new DefaultInterpolator().performSubstitution(props, callback); } @@ -215,7 +215,7 @@ private String substVars( String val, String currentKey, Map configProps, - Function callback, + UnaryOperator callback, boolean defaultsToEmptyString) { return new DefaultInterpolator() .substVars(val, currentKey, null, configProps, callback, null, defaultsToEmptyString); 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 c2887d96f788..1cd3bf12010c 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 @@ -19,7 +19,7 @@ package org.apache.maven.internal.impl.model.profile; import java.util.Map; -import java.util.function.Function; +import java.util.function.UnaryOperator; import org.apache.maven.api.model.Model; import org.apache.maven.api.services.model.ProfileActivationContext; @@ -43,7 +43,7 @@ class ConditionParserTest { ConditionParser parser; Map functions; - Function propertyResolver; + UnaryOperator propertyResolver; @BeforeEach void setUp() { diff --git a/src/mdo/transformer.vm b/src/mdo/transformer.vm index 04b6b707b8c2..93178d5614cf 100644 --- a/src/mdo/transformer.vm +++ b/src/mdo/transformer.vm @@ -40,7 +40,7 @@ import java.util.Map; import java.util.Properties; import java.util.Objects; import java.util.function.BinaryOperator; -import java.util.function.Function; +import java.util.function.UnaryOperator; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -54,9 +54,9 @@ import org.apache.maven.internal.xml.XmlNodeImpl; @Generated public class ${className} { - private final Function transformer; + private final UnaryOperator transformer; - public ${className}(Function transformer) { + public ${className}(UnaryOperator transformer) { this.transformer = transformer; } @@ -141,7 +141,7 @@ public class ${className} { #end #end - protected List transform(List list, Function transformer) { + protected List transform(List list, UnaryOperator transformer) { List newList = list; for (int i = 0; i < list.size(); i++) { T oldVal = list.get(i); @@ -156,7 +156,7 @@ public class ${className} { return newList; } - protected Map transform(Map map, Function transformer) { + protected Map transform(Map map, UnaryOperator transformer) { Map newMap = map; for (String key : map.keySet()) { T oldVal = map.get(key);