Skip to content

Commit d9c3e79

Browse files
committed
[MNG-8515] Use specialized methods
* UnaryOperator<String> instead of Function<String, String> * BinaryOperator<String> instead of BiFunction<String, String, String>
1 parent 11e5ae0 commit d9c3e79

36 files changed

+154
-158
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import java.util.Map;
2222
import java.util.Optional;
2323
import java.util.function.Consumer;
24-
import java.util.function.Function;
24+
import java.util.function.UnaryOperator;
2525

2626
import org.apache.maven.api.annotations.Experimental;
2727
import org.apache.maven.api.annotations.Nonnull;
@@ -205,7 +205,7 @@ public interface Options {
205205
* @return a new {@link Options} instance with interpolated values
206206
*/
207207
@Nonnull
208-
Options interpolate(@Nonnull Function<String, String> callback);
208+
Options interpolate(@Nonnull UnaryOperator<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: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
import java.util.List;
2222
import java.util.Optional;
23-
import java.util.function.Function;
23+
import java.util.function.UnaryOperator;
2424

2525
import org.apache.maven.api.annotations.Experimental;
2626
import org.apache.maven.api.annotations.Nonnull;
@@ -222,5 +222,5 @@ public interface MavenOptions extends Options {
222222
* @return a new MavenOptions instance with interpolated values
223223
*/
224224
@Nonnull
225-
MavenOptions interpolate(@Nonnull Function<String, String> callback);
225+
MavenOptions interpolate(@Nonnull UnaryOperator<String> callback);
226226
}

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

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

2121
import java.util.List;
2222
import java.util.Optional;
23-
import java.util.function.Function;
23+
import java.util.function.UnaryOperator;
2424

2525
import org.apache.maven.api.annotations.Experimental;
2626
import org.apache.maven.api.annotations.Nonnull;
@@ -64,5 +64,5 @@ public interface EncryptOptions extends Options {
6464
* @return a new EncryptOptions instance with interpolated values
6565
*/
6666
@Nonnull
67-
EncryptOptions interpolate(Function<String, String> callback);
67+
EncryptOptions interpolate(UnaryOperator<String> callback);
6868
}

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

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

21-
import java.util.function.Function;
21+
import java.util.function.UnaryOperator;
2222

2323
import org.apache.maven.api.annotations.Experimental;
2424
import org.apache.maven.api.annotations.Nonnull;
@@ -39,5 +39,5 @@ public interface ShellOptions extends Options {
3939
* @return a new EncryptOptions instance with interpolated values
4040
*/
4141
@Nonnull
42-
ShellOptions interpolate(Function<String, String> callback);
42+
ShellOptions interpolate(UnaryOperator<String> callback);
4343
}

api/maven-api-core/src/main/java/org/apache/maven/api/services/Interpolator.java

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@
2323
import java.util.List;
2424
import java.util.Map;
2525
import java.util.Optional;
26-
import java.util.function.BiFunction;
26+
import java.util.function.BinaryOperator;
2727
import java.util.function.Function;
28+
import java.util.function.UnaryOperator;
2829

2930
import org.apache.maven.api.Service;
3031
import org.apache.maven.api.annotations.Experimental;
@@ -47,7 +48,7 @@ public interface Interpolator extends Service {
4748
* @param properties The map containing key-value pairs to be interpolated.
4849
* @param callback The function to resolve variable values not found in the map.
4950
*/
50-
default void interpolate(@Nonnull Map<String, String> properties, @Nullable Function<String, String> callback) {
51+
default void interpolate(@Nonnull Map<String, String> properties, @Nullable UnaryOperator<String> callback) {
5152
interpolate(properties, callback, null, true);
5253
}
5354

@@ -59,7 +60,7 @@ default void interpolate(@Nonnull Map<String, String> properties, @Nullable Func
5960
* @param defaultsToEmpty If true, unresolved placeholders are replaced with empty strings. If false, they are left unchanged.
6061
*/
6162
default void interpolate(
62-
@Nonnull Map<String, String> map, @Nullable Function<String, String> callback, boolean defaultsToEmpty) {
63+
@Nonnull Map<String, String> map, @Nullable UnaryOperator<String> callback, boolean defaultsToEmpty) {
6364
interpolate(map, callback, null, defaultsToEmpty);
6465
}
6566

@@ -72,8 +73,8 @@ default void interpolate(
7273
*/
7374
void interpolate(
7475
@Nonnull Map<String, String> map,
75-
@Nullable Function<String, String> callback,
76-
@Nullable BiFunction<String, String, String> postprocessor,
76+
@Nullable UnaryOperator<String> callback,
77+
@Nullable BinaryOperator<String> postprocessor,
7778
boolean defaultsToEmpty);
7879

7980
/**
@@ -85,7 +86,7 @@ void interpolate(
8586
* @return The interpolated string, or null if the input was null.
8687
*/
8788
@Nullable
88-
default String interpolate(@Nullable String val, @Nullable Function<String, String> callback) {
89+
default String interpolate(@Nullable String val, @Nullable UnaryOperator<String> callback) {
8990
return interpolate(val, callback, false);
9091
}
9192

@@ -99,7 +100,7 @@ default String interpolate(@Nullable String val, @Nullable Function<String, Stri
99100
*/
100101
@Nullable
101102
default String interpolate(
102-
@Nullable String val, @Nullable Function<String, String> callback, boolean defaultsToEmpty) {
103+
@Nullable String val, @Nullable UnaryOperator<String> callback, boolean defaultsToEmpty) {
103104
return interpolate(val, callback, null, defaultsToEmpty);
104105
}
105106

@@ -114,8 +115,8 @@ default String interpolate(
114115
@Nullable
115116
String interpolate(
116117
@Nullable String val,
117-
@Nullable Function<String, String> callback,
118-
@Nullable BiFunction<String, String, String> postprocessor,
118+
@Nullable UnaryOperator<String> callback,
119+
@Nullable BinaryOperator<String> postprocessor,
119120
boolean defaultsToEmpty);
120121

121122
/**
@@ -127,9 +128,9 @@ String interpolate(
127128
*
128129
* @throws NullPointerException if the input collection is null or contains null elements.
129130
*/
130-
static Function<String, String> chain(Collection<? extends Function<String, String>> functions) {
131+
static UnaryOperator<String> chain(Collection<? extends UnaryOperator<String>> functions) {
131132
return s -> {
132-
for (Function<String, String> function : functions) {
133+
for (UnaryOperator<String> function : functions) {
133134
String v = function.apply(s);
134135
if (v != null) {
135136
return v;
@@ -140,7 +141,7 @@ static Function<String, String> chain(Collection<? extends Function<String, Stri
140141
}
141142

142143
@SafeVarargs
143-
static Function<String, String> chain(Function<String, String>... functions) {
144+
static UnaryOperator<String> chain(UnaryOperator<String>... functions) {
144145
return chain(List.of(functions));
145146
}
146147

@@ -150,14 +151,14 @@ static Function<String, String> chain(Function<String, String>... functions) {
150151
* improving performance for repeated calls with the same input.
151152
*
152153
* @param callback The original function to be memoized. It takes a String as input and returns a String.
153-
* @return A new {@code Function<String, String>} that caches the results of the original function.
154+
* @return A new {@code UnaryOperator<String>} that caches the results of the original function.
154155
* If the original function returns null for a given input, null will be cached and returned for subsequent calls with the same input.
155156
*
156157
* @see Function
157158
* @see Optional
158159
* @see HashMap#computeIfAbsent(Object, Function)
159160
*/
160-
static Function<String, String> memoize(Function<String, String> callback) {
161+
static UnaryOperator<String> memoize(UnaryOperator<String> callback) {
161162
Map<String, Optional<String>> cache = new HashMap<>();
162163
return s -> cache.computeIfAbsent(s, v -> Optional.ofNullable(callback.apply(v)))
163164
.orElse(null);

api/maven-api-core/src/main/java/org/apache/maven/api/services/SettingsBuilderRequest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import java.nio.file.Files;
2222
import java.nio.file.Path;
2323
import java.util.Optional;
24-
import java.util.function.Function;
24+
import java.util.function.UnaryOperator;
2525

2626
import org.apache.maven.api.ProtoSession;
2727
import org.apache.maven.api.annotations.Experimental;
@@ -72,7 +72,7 @@ public interface SettingsBuilderRequest {
7272
* @return the interpolation source for interpolation
7373
*/
7474
@Nonnull
75-
Optional<Function<String, String>> getInterpolationSource();
75+
Optional<UnaryOperator<String>> getInterpolationSource();
7676

7777
@Nonnull
7878
static SettingsBuilderRequest build(
@@ -136,7 +136,7 @@ class SettingsBuilderRequestBuilder {
136136
Source installationSettingsSource;
137137
Source projectSettingsSource;
138138
Source userSettingsSource;
139-
Function<String, String> interpolationSource;
139+
UnaryOperator<String> interpolationSource;
140140

141141
public SettingsBuilderRequestBuilder session(ProtoSession session) {
142142
this.session = session;
@@ -158,7 +158,7 @@ public SettingsBuilderRequestBuilder userSettingsSource(Source userSettingsSourc
158158
return this;
159159
}
160160

161-
public SettingsBuilderRequestBuilder interpolationSource(Function<String, String> interpolationSource) {
161+
public SettingsBuilderRequestBuilder interpolationSource(UnaryOperator<String> interpolationSource) {
162162
this.interpolationSource = interpolationSource;
163163
return this;
164164
}
@@ -177,15 +177,15 @@ private static class DefaultSettingsBuilderRequest extends BaseRequest<ProtoSess
177177
private final Source installationSettingsSource;
178178
private final Source projectSettingsSource;
179179
private final Source userSettingsSource;
180-
private final Function<String, String> interpolationSource;
180+
private final UnaryOperator<String> interpolationSource;
181181

182182
@SuppressWarnings("checkstyle:ParameterNumber")
183183
DefaultSettingsBuilderRequest(
184184
@Nonnull ProtoSession session,
185185
@Nullable Source installationSettingsSource,
186186
@Nullable Source projectSettingsSource,
187187
@Nullable Source userSettingsSource,
188-
@Nullable Function<String, String> interpolationSource) {
188+
@Nullable UnaryOperator<String> interpolationSource) {
189189
super(session);
190190
this.installationSettingsSource = installationSettingsSource;
191191
this.projectSettingsSource = projectSettingsSource;
@@ -213,7 +213,7 @@ public Optional<Source> getUserSettingsSource() {
213213

214214
@Nonnull
215215
@Override
216-
public Optional<Function<String, String>> getInterpolationSource() {
216+
public Optional<UnaryOperator<String>> getInterpolationSource() {
217217
return Optional.ofNullable(interpolationSource);
218218
}
219219
}

compat/maven-embedder/src/main/java/org/apache/maven/cli/ExtensionConfigurationModule.java

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

21-
import java.util.function.Function;
21+
import java.util.function.UnaryOperator;
2222

2323
import com.google.inject.Binder;
2424
import com.google.inject.Module;
@@ -36,10 +36,10 @@
3636
public class ExtensionConfigurationModule implements Module {
3737

3838
private final CoreExtensionEntry extension;
39-
private final Function<String, String> callback;
39+
private final UnaryOperator<String> callback;
4040
private final DefaultInterpolator interpolator = new DefaultInterpolator();
4141

42-
public ExtensionConfigurationModule(CoreExtensionEntry extension, Function<String, String> callback) {
42+
public ExtensionConfigurationModule(CoreExtensionEntry extension, UnaryOperator<String> callback) {
4343
this.extension = extension;
4444
this.callback = callback;
4545
}
@@ -51,8 +51,8 @@ public void configure(Binder binder) {
5151
if (configuration == null) {
5252
configuration = new XmlNodeImpl("configuration");
5353
}
54-
Function<String, String> cb = Interpolator.memoize(callback);
55-
Function<String, String> it = s -> interpolator.interpolate(s, cb);
54+
UnaryOperator<String> cb = Interpolator.memoize(callback);
55+
UnaryOperator<String> it = s -> interpolator.interpolate(s, cb);
5656
configuration = new ExtensionInterpolator(it).transform(configuration);
5757

5858
binder.bind(XmlNode.class)
@@ -65,7 +65,7 @@ public void configure(Binder binder) {
6565
}
6666

6767
static class ExtensionInterpolator extends MavenTransformer {
68-
ExtensionInterpolator(Function<String, String> transformer) {
68+
ExtensionInterpolator(UnaryOperator<String> transformer) {
6969
super(transformer);
7070
}
7171

compat/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
import java.util.ServiceLoader;
4646
import java.util.Set;
4747
import java.util.function.Consumer;
48-
import java.util.function.Function;
48+
import java.util.function.UnaryOperator;
4949
import java.util.regex.Matcher;
5050
import java.util.regex.Pattern;
5151
import java.util.stream.Stream;
@@ -643,7 +643,7 @@ void properties(CliRequest cliRequest) throws Exception {
643643
populateProperties(cliRequest.commandLine, paths, cliRequest.systemProperties, cliRequest.userProperties);
644644

645645
// now that we have properties, interpolate all arguments
646-
Function<String, String> callback = v -> {
646+
UnaryOperator<String> callback = v -> {
647647
String r = paths.getProperty(v);
648648
if (r == null) {
649649
r = cliRequest.systemProperties.getProperty(v);
@@ -724,7 +724,7 @@ protected void configure() {
724724

725725
container.setLoggerManager(plexusLoggerManager);
726726

727-
Function<String, String> extensionSource = expression -> {
727+
UnaryOperator<String> extensionSource = expression -> {
728728
String value = cliRequest.userProperties.getProperty(expression);
729729
if (value == null) {
730730
value = cliRequest.systemProperties.getProperty(expression);
@@ -1660,7 +1660,7 @@ void populateProperties(
16601660
// ----------------------------------------------------------------------
16611661
// Load config files
16621662
// ----------------------------------------------------------------------
1663-
Function<String, String> callback =
1663+
UnaryOperator<String> callback =
16641664
or(paths::getProperty, prefix("cli.", commandLine::getOptionValue), systemProperties::getProperty);
16651665

16661666
Path mavenConf;
@@ -1686,7 +1686,7 @@ void populateProperties(
16861686
.forEach(k -> System.setProperty(k, userProperties.getProperty(k)));
16871687
}
16881688

1689-
private static Function<String, String> prefix(String prefix, Function<String, String> cb) {
1689+
private static UnaryOperator<String> prefix(String prefix, UnaryOperator<String> cb) {
16901690
return s -> {
16911691
String v = null;
16921692
if (s.startsWith(prefix)) {
@@ -1696,9 +1696,9 @@ private static Function<String, String> prefix(String prefix, Function<String, S
16961696
};
16971697
}
16981698

1699-
private static Function<String, String> or(Function<String, String>... callbacks) {
1699+
private static UnaryOperator<String> or(UnaryOperator<String>... callbacks) {
17001700
return s -> {
1701-
for (Function<String, String> cb : callbacks) {
1701+
for (UnaryOperator<String> cb : callbacks) {
17021702
String r = cb.apply(s);
17031703
if (r != null) {
17041704
return r;

compat/maven-embedder/src/main/java/org/apache/maven/cli/internal/BootstrapCoreExtensionManager.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import java.util.List;
2828
import java.util.NoSuchElementException;
2929
import java.util.Set;
30-
import java.util.function.Function;
30+
import java.util.function.UnaryOperator;
3131
import java.util.stream.Collectors;
3232

3333
import org.apache.maven.RepositoryUtils;
@@ -139,7 +139,7 @@ public List<CoreExtensionEntry> loadCoreExtensions(
139139
InternalSession.associate(repoSession, iSession);
140140

141141
List<RemoteRepository> repositories = RepositoryUtils.toRepos(request.getPluginArtifactRepositories());
142-
Function<String, String> interpolator = createInterpolator(request);
142+
UnaryOperator<String> interpolator = createInterpolator(request);
143143

144144
return resolveCoreExtensions(repoSession, repositories, providedArtifacts, extensions, interpolator);
145145
}
@@ -150,7 +150,7 @@ private List<CoreExtensionEntry> resolveCoreExtensions(
150150
List<RemoteRepository> repositories,
151151
Set<String> providedArtifacts,
152152
List<CoreExtension> configuration,
153-
Function<String, String> interpolator)
153+
UnaryOperator<String> interpolator)
154154
throws Exception {
155155
List<CoreExtensionEntry> extensions = new ArrayList<>();
156156

@@ -208,7 +208,7 @@ private List<Artifact> resolveExtension(
208208
RepositorySystemSession repoSession,
209209
List<RemoteRepository> repositories,
210210
DependencyFilter dependencyFilter,
211-
Function<String, String> interpolator)
211+
UnaryOperator<String> interpolator)
212212
throws ExtensionResolutionException {
213213
try {
214214
/* TODO: Enhance the PluginDependenciesResolver to provide a
@@ -232,9 +232,9 @@ private List<Artifact> resolveExtension(
232232
}
233233
}
234234

235-
private static Function<String, String> createInterpolator(MavenExecutionRequest request) {
235+
private static UnaryOperator<String> createInterpolator(MavenExecutionRequest request) {
236236
Interpolator interpolator = new DefaultInterpolator();
237-
Function<String, String> callback = v -> {
237+
UnaryOperator<String> callback = v -> {
238238
String r = request.getUserProperties().getProperty(v);
239239
if (r == null) {
240240
r = request.getSystemProperties().getProperty(v);

0 commit comments

Comments
 (0)