This is an automated email from the ASF dual-hosted git repository. rzo1 pushed a commit to branch cleanup/submit-tools-resolver-2 in repository https://gitbox.apache.org/repos/asf/storm.git
commit 2acc08dc844c75a0213835b5f49a0c318c081322 Author: Richard Zowalla <[email protected]> AuthorDate: Fri May 1 20:51:00 2026 +0200 storm-submit-tools: modernize Java code, no API surface changes Safe modernization of the dependency resolver tool, keeping maven-resolver 1.9.27 and the existing transport-http stack: - Drop Guava Iterables.filter/Predicate for Stream API + method ref - Replace deprecated new URL(String) with URI/URI.toURL (URL ctor is flagged for removal in JDK 20+) - catch (Throwable) -> catch (Exception); let Errors propagate - DependencyResolver: setRoot(deps[0])+addDependency(rest) was a subtle bug (the first dep was promoted to "root" of the resolution which alters scope/exclusion handling); replaced with setDependencies(deps) - Collections.EMPTY_LIST -> Collections.emptyList(); size()==0 -> isEmpty() - Drop unused Booter.newLocalRepository() - Make RepositorySystemFactory and Booter final + private ctor Note on a possible Resolver 2.x / supplier-pattern upgrade: the maven-resolver-supplier artifact in the 2.x line is still alpha (last release 2.0.0-alpha-8); Maven 4 is at rc-5 with a new org.apache.maven.api.Session abstraction that is a much larger code change. Keeping the existing DefaultServiceLocator path until that ecosystem stabilizes; the Java cleanups here apply regardless of which supplier path we eventually pick. --- .../submit/command/DependencyResolverMain.java | 34 +++++++++------------- .../org/apache/storm/submit/dependency/Booter.java | 18 ++++-------- .../submit/dependency/DependencyResolver.java | 9 ++---- .../submit/dependency/RepositorySystemFactory.java | 9 +++--- 4 files changed, 26 insertions(+), 44 deletions(-) diff --git a/storm-submit-tools/src/main/java/org/apache/storm/submit/command/DependencyResolverMain.java b/storm-submit-tools/src/main/java/org/apache/storm/submit/command/DependencyResolverMain.java index cd5a4a472..ccfaa2766 100644 --- a/storm-submit-tools/src/main/java/org/apache/storm/submit/command/DependencyResolverMain.java +++ b/storm-submit-tools/src/main/java/org/apache/storm/submit/command/DependencyResolverMain.java @@ -19,12 +19,11 @@ package org.apache.storm.submit.command; import com.google.common.base.Preconditions; -import com.google.common.base.Predicate; -import com.google.common.collect.Iterables; import java.io.File; import java.net.MalformedURLException; -import java.net.URL; +import java.net.URI; +import java.net.URISyntaxException; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; @@ -33,6 +32,7 @@ import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import net.minidev.json.JSONValue; @@ -70,7 +70,7 @@ public class DependencyResolverMain { * @throws ParseException If there's parsing error on option parse. * @throws MalformedURLException If proxy URL is malformed. */ - public static void main(String[] args) throws ParseException, MalformedURLException { + public static void main(String[] args) throws ParseException, MalformedURLException, URISyntaxException { Options options = buildOptions(); CommandLineParser parser = new DefaultParser(); CommandLine commandLine = parser.parse(options, args); @@ -117,28 +117,21 @@ public class DependencyResolverMain { List<ArtifactResult> artifactResults = resolver.resolve(dependencies); - Iterable<ArtifactResult> missingArtifacts = filterMissingArtifacts(artifactResults); - if (missingArtifacts.iterator().hasNext()) { + List<ArtifactResult> missingArtifacts = artifactResults.stream() + .filter(ArtifactResult::isMissing) + .collect(Collectors.toList()); + if (!missingArtifacts.isEmpty()) { printMissingArtifactsToSysErr(missingArtifacts); throw new RuntimeException("Some artifacts are not resolved"); } System.out.println(JSONValue.toJSONString(transformArtifactResultToArtifactToPaths(artifactResults))); System.out.flush(); - } catch (Throwable e) { + } catch (Exception e) { throw new RuntimeException(e); } } - private static Iterable<ArtifactResult> filterMissingArtifacts(List<ArtifactResult> artifactResults) { - return Iterables.filter(artifactResults, new Predicate<ArtifactResult>() { - @Override - public boolean apply(ArtifactResult artifactResult) { - return artifactResult.isMissing(); - } - }); - } - private static void printMissingArtifactsToSysErr(Iterable<ArtifactResult> missingArtifacts) { for (ArtifactResult artifactResult : missingArtifacts) { System.err.println("ArtifactResult : " + artifactResult + " / Errors : " + artifactResult.getExceptions()); @@ -173,14 +166,15 @@ public class DependencyResolverMain { return remoteRepositories; } - private static Proxy parseProxyArg(String proxyUrl, String proxyUsername, String proxyPassword) throws MalformedURLException { - URL url = new URL(proxyUrl); + private static Proxy parseProxyArg(String proxyUrl, String proxyUsername, String proxyPassword) + throws MalformedURLException, URISyntaxException { + URI uri = new URI(proxyUrl); if (StringUtils.isNotEmpty(proxyUsername) && StringUtils.isNotEmpty(proxyPassword)) { AuthenticationBuilder authBuilder = new AuthenticationBuilder(); authBuilder.addUsername(proxyUsername).addPassword(proxyPassword); - return new Proxy(url.getProtocol(), url.getHost(), url.getPort(), authBuilder.build()); + return new Proxy(uri.getScheme(), uri.getHost(), uri.getPort(), authBuilder.build()); } else { - return new Proxy(url.getProtocol(), url.getHost(), url.getPort()); + return new Proxy(uri.getScheme(), uri.getHost(), uri.getPort()); } } diff --git a/storm-submit-tools/src/main/java/org/apache/storm/submit/dependency/Booter.java b/storm-submit-tools/src/main/java/org/apache/storm/submit/dependency/Booter.java index 87b5e7688..94c82d395 100644 --- a/storm-submit-tools/src/main/java/org/apache/storm/submit/dependency/Booter.java +++ b/storm-submit-tools/src/main/java/org/apache/storm/submit/dependency/Booter.java @@ -27,10 +27,10 @@ import org.eclipse.aether.RepositorySystemSession; import org.eclipse.aether.repository.LocalRepository; import org.eclipse.aether.repository.RemoteRepository; -/** - * Manage mvn repository. - */ -public class Booter { +public final class Booter { + private Booter() { + } + public static RepositorySystem newRepositorySystem() { return RepositorySystemFactory.newRepositorySystem(); } @@ -38,20 +38,12 @@ public class Booter { public static RepositorySystemSession newRepositorySystemSession( RepositorySystem system, String localRepoPath) { DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession(); - - LocalRepository localRepo = - new LocalRepository(new File(localRepoPath).getAbsolutePath()); + LocalRepository localRepo = new LocalRepository(new File(localRepoPath).getAbsolutePath()); session.setLocalRepositoryManager(system.newLocalRepositoryManager(session, localRepo)); - return session; } public static RemoteRepository newCentralRepository() { return new RemoteRepository.Builder("central", "default", "https://repo1.maven.org/maven2/").build(); } - - public static RemoteRepository newLocalRepository() { - return new RemoteRepository.Builder("local", - "default", "file://" + System.getProperty("user.home") + "/.m2/repository").build(); - } } diff --git a/storm-submit-tools/src/main/java/org/apache/storm/submit/dependency/DependencyResolver.java b/storm-submit-tools/src/main/java/org/apache/storm/submit/dependency/DependencyResolver.java index 5eb3bd506..e99b72377 100644 --- a/storm-submit-tools/src/main/java/org/apache/storm/submit/dependency/DependencyResolver.java +++ b/storm-submit-tools/src/main/java/org/apache/storm/submit/dependency/DependencyResolver.java @@ -108,15 +108,12 @@ public class DependencyResolver { public List<ArtifactResult> resolve(List<Dependency> dependencies) throws DependencyResolutionException, ArtifactResolutionException { - if (dependencies.size() == 0) { - return Collections.EMPTY_LIST; + if (dependencies.isEmpty()) { + return Collections.emptyList(); } CollectRequest collectRequest = new CollectRequest(); - collectRequest.setRoot(dependencies.get(0)); - for (int idx = 1; idx < dependencies.size(); idx++) { - collectRequest.addDependency(dependencies.get(idx)); - } + collectRequest.setDependencies(dependencies); for (RemoteRepository repository : remoteRepositories) { collectRequest.addRepository(repository); diff --git a/storm-submit-tools/src/main/java/org/apache/storm/submit/dependency/RepositorySystemFactory.java b/storm-submit-tools/src/main/java/org/apache/storm/submit/dependency/RepositorySystemFactory.java index 0783baff6..f9a04c32a 100644 --- a/storm-submit-tools/src/main/java/org/apache/storm/submit/dependency/RepositorySystemFactory.java +++ b/storm-submit-tools/src/main/java/org/apache/storm/submit/dependency/RepositorySystemFactory.java @@ -28,10 +28,10 @@ import org.eclipse.aether.spi.connector.transport.TransporterFactory; import org.eclipse.aether.transport.file.FileTransporterFactory; import org.eclipse.aether.transport.http.HttpTransporterFactory; -/** - * Get maven repository instance. - */ -public class RepositorySystemFactory { +public final class RepositorySystemFactory { + private RepositorySystemFactory() { + } + public static RepositorySystem newRepositorySystem() { DefaultServiceLocator locator = MavenRepositorySystemUtils.newServiceLocator(); locator.addService(RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class); @@ -47,5 +47,4 @@ public class RepositorySystemFactory { return locator.getService(RepositorySystem.class); } - }
