From ab7d766c72be45087c2470c4f4a94100e157b4cd Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Sat, 16 Nov 2024 21:36:20 +0100 Subject: [PATCH] Exception usage cleanup (#1910) This is just a cleanup of exception usage (by making them checked, fixing compiler issues, and undoing the change). There are at least two bugs (runtime escapes) fixed in this PR. --- .../main/java/org/apache/maven/api/Session.java | 8 +++++--- .../apache/maven/api/services/ModelBuilder.java | 2 +- .../apache/maven/api/services/ProjectBuilder.java | 7 ++++--- .../transformation/impl/ConsumerPomBuilder.java | 4 ++-- .../DefaultConsumerPomArtifactTransformer.java | 4 ++-- .../transformation/impl/TransformedArtifact.java | 7 +++---- .../maven/internal/impl/AbstractSession.java | 8 +++++--- .../internal/impl/model/DefaultModelBuilder.java | 15 ++++++++------- 8 files changed, 30 insertions(+), 25 deletions(-) diff --git a/api/maven-api-core/src/main/java/org/apache/maven/api/Session.java b/api/maven-api-core/src/main/java/org/apache/maven/api/Session.java index 830bb0f5eddf..7c82a8ef4be0 100644 --- a/api/maven-api-core/src/main/java/org/apache/maven/api/Session.java +++ b/api/maven-api-core/src/main/java/org/apache/maven/api/Session.java @@ -33,6 +33,7 @@ import org.apache.maven.api.model.Repository; import org.apache.maven.api.services.ArtifactCoordinatesFactory; import org.apache.maven.api.services.DependencyCoordinatesFactory; +import org.apache.maven.api.services.VersionResolverException; import org.apache.maven.api.settings.Settings; /** @@ -742,7 +743,7 @@ Map> resolveDependencies( * @see org.apache.maven.api.services.VersionResolver#resolve(Session, ArtifactCoordinates) (String) */ @Nonnull - Version resolveVersion(@Nonnull ArtifactCoordinates artifact); + Version resolveVersion(@Nonnull ArtifactCoordinates artifact) throws VersionResolverException; /** * Expands a version range to a list of matching versions, in ascending order. @@ -758,7 +759,7 @@ Map> resolveDependencies( * @see org.apache.maven.api.services.VersionRangeResolver#resolve(Session, ArtifactCoordinates) (String) */ @Nonnull - List resolveVersionRange(@Nonnull ArtifactCoordinates artifact); + List resolveVersionRange(@Nonnull ArtifactCoordinates artifact) throws VersionResolverException; /** * Expands a version range to a list of matching versions, in ascending order. @@ -775,7 +776,8 @@ Map> resolveDependencies( * @see org.apache.maven.api.services.VersionRangeResolver#resolve(Session, ArtifactCoordinates) (String) */ @Nonnull - List resolveVersionRange(@Nonnull ArtifactCoordinates artifact, List repositories); + List resolveVersionRange(@Nonnull ArtifactCoordinates artifact, List repositories) + throws VersionResolverException; /** * Parses the specified version string, for example "1.0". diff --git a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ModelBuilder.java b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ModelBuilder.java index 4362353185e0..808eeb00780c 100644 --- a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ModelBuilder.java +++ b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ModelBuilder.java @@ -38,5 +38,5 @@ interface ModelBuilderSession { ModelBuilderResult build(ModelBuilderRequest request) throws ModelBuilderException; } - Model buildRawModel(ModelBuilderRequest request); + Model buildRawModel(ModelBuilderRequest request) throws ModelBuilderException; } diff --git a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ProjectBuilder.java b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ProjectBuilder.java index e9e7172b1315..518033b601af 100644 --- a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ProjectBuilder.java +++ b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ProjectBuilder.java @@ -40,7 +40,7 @@ public interface ProjectBuilder extends Service { * @throws IllegalArgumentException if an argument is {@code null} or invalid */ @Nonnull - ProjectBuilderResult build(ProjectBuilderRequest request); + ProjectBuilderResult build(ProjectBuilderRequest request) throws ProjectBuilderException; /** * Creates a {@link org.apache.maven.api.Project} from a POM file. @@ -52,7 +52,8 @@ public interface ProjectBuilder extends Service { * @see #build(ProjectBuilderRequest) */ @Nonnull - default ProjectBuilderResult build(@Nonnull Session session, @Nonnull Source source) { + default ProjectBuilderResult build(@Nonnull Session session, @Nonnull Source source) + throws ProjectBuilderException { return build(ProjectBuilderRequest.build(session, source)); } @@ -66,7 +67,7 @@ default ProjectBuilderResult build(@Nonnull Session session, @Nonnull Source sou * @see #build(ProjectBuilderRequest) */ @Nonnull - default ProjectBuilderResult build(@Nonnull Session session, @Nonnull Path path) { + default ProjectBuilderResult build(@Nonnull Session session, @Nonnull Path path) throws ProjectBuilderException { return build(ProjectBuilderRequest.build(session, path)); } } diff --git a/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/ConsumerPomBuilder.java b/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/ConsumerPomBuilder.java index 70cfec6b866b..7de9934e2b2e 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/ConsumerPomBuilder.java +++ b/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/ConsumerPomBuilder.java @@ -24,7 +24,7 @@ import java.nio.file.Path; import org.apache.maven.api.model.Model; -import org.apache.maven.model.building.ModelBuildingException; +import org.apache.maven.api.services.ModelBuilderException; import org.apache.maven.project.MavenProject; import org.eclipse.aether.RepositorySystemSession; @@ -35,5 +35,5 @@ interface ConsumerPomBuilder { Model build(RepositorySystemSession session, MavenProject project, Path src) - throws ModelBuildingException, IOException, XMLStreamException; + throws ModelBuilderException, IOException, XMLStreamException; } diff --git a/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/DefaultConsumerPomArtifactTransformer.java b/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/DefaultConsumerPomArtifactTransformer.java index 0abd3e160805..60865274a045 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/DefaultConsumerPomArtifactTransformer.java +++ b/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/DefaultConsumerPomArtifactTransformer.java @@ -36,8 +36,8 @@ import org.apache.maven.api.feature.Features; import org.apache.maven.api.model.Model; +import org.apache.maven.api.services.ModelBuilderException; import org.apache.maven.internal.transformation.ConsumerPomArtifactTransformer; -import org.apache.maven.model.building.ModelBuildingException; import org.apache.maven.model.v4.MavenStaxWriter; import org.apache.maven.project.MavenProject; import org.apache.maven.project.artifact.ProjectArtifact; @@ -112,7 +112,7 @@ TransformedArtifact createConsumerPomArtifact( } void transform(MavenProject project, RepositorySystemSession session, Path src, Path tgt) - throws ModelBuildingException, XMLStreamException, IOException { + throws ModelBuilderException, XMLStreamException, IOException { Model model = builder.build(session, project, src); write(model, tgt); } diff --git a/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/TransformedArtifact.java b/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/TransformedArtifact.java index 07e3806d294c..e928e6101896 100644 --- a/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/TransformedArtifact.java +++ b/impl/maven-core/src/main/java/org/apache/maven/internal/transformation/impl/TransformedArtifact.java @@ -31,9 +31,9 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.function.Supplier; +import org.apache.maven.api.services.ModelBuilderException; import org.apache.maven.artifact.DefaultArtifact; import org.apache.maven.internal.transformation.TransformationFailedException; -import org.apache.maven.model.building.ModelBuildingException; import org.apache.maven.project.MavenProject; import org.eclipse.aether.RepositorySystemSession; @@ -97,13 +97,12 @@ public synchronized File getFile() { return null; } return target.toFile(); - } catch (IOException | NoSuchAlgorithmException | XMLStreamException | ModelBuildingException e) { + } catch (IOException | NoSuchAlgorithmException | XMLStreamException | ModelBuilderException e) { throw new TransformationFailedException(e); } } - private String mayUpdate() - throws IOException, NoSuchAlgorithmException, XMLStreamException, ModelBuildingException { + private String mayUpdate() throws IOException, NoSuchAlgorithmException, XMLStreamException, ModelBuilderException { String result; Path src = sourcePathProvider.get(); if (src == null) { diff --git a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/AbstractSession.java b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/AbstractSession.java index 0054e5ada080..e0a59e07ea6f 100644 --- a/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/AbstractSession.java +++ b/impl/maven-impl/src/main/java/org/apache/maven/internal/impl/AbstractSession.java @@ -87,6 +87,7 @@ import org.apache.maven.api.services.VersionParser; import org.apache.maven.api.services.VersionRangeResolver; import org.apache.maven.api.services.VersionResolver; +import org.apache.maven.api.services.VersionResolverException; import org.eclipse.aether.DefaultRepositorySystemSession; import org.eclipse.aether.RepositorySystem; import org.eclipse.aether.RepositorySystemSession; @@ -839,17 +840,18 @@ public VersionConstraint parseVersionConstraint(String versionConstraint) { } @Override - public Version resolveVersion(ArtifactCoordinates artifact) { + public Version resolveVersion(ArtifactCoordinates artifact) throws VersionResolverException { return getService(VersionResolver.class).resolve(this, artifact).getVersion(); } @Override - public List resolveVersionRange(ArtifactCoordinates artifact) { + public List resolveVersionRange(ArtifactCoordinates artifact) throws VersionResolverException { return getService(VersionRangeResolver.class).resolve(this, artifact).getVersions(); } @Override - public List resolveVersionRange(ArtifactCoordinates artifact, List repositories) { + public List resolveVersionRange(ArtifactCoordinates artifact, List repositories) + throws VersionResolverException { return getService(VersionRangeResolver.class) .resolve(this, artifact, repositories) .getVersions(); 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 95a364bdd19c..67198b07c20f 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 @@ -894,7 +894,7 @@ Model readParent(Model childModel) throws ModelBuilderException { return parentModel; } - private Model resolveParent(Model childModel) { + private Model resolveParent(Model childModel) throws ModelBuilderException { Model parentModel = null; if (isBuildRequest()) { parentModel = readParentLocally(childModel); @@ -906,7 +906,7 @@ private Model resolveParent(Model childModel) { } private Model readParentLocally(Model childModel) throws ModelBuilderException { - ModelSource candidateSource = null; + ModelSource candidateSource; Parent parent = childModel.getParent(); String parentPath = parent.getRelativePath(); @@ -1493,7 +1493,7 @@ private Model doReadRawModel() throws ModelBuilderException { /** * Reads the request source's parent. */ - Model readAsParentModel() { + Model readAsParentModel() throws ModelBuilderException { return cache(request.getSource(), PARENT, this::doReadAsParentModel); } @@ -1664,7 +1664,7 @@ private Model doLoadDependencyManagement( importSource = modelResolver.resolveModel( request.getSession(), repositories, dependency, new AtomicReference<>()); } - } catch (ModelBuilderException e) { + } catch (ModelBuilderException | ModelResolverException e) { StringBuilder buffer = new StringBuilder(256); buffer.append("Non-resolvable import POM"); if (!containsCoordinates(e.getMessage(), groupId, artifactId, version)) { @@ -1719,7 +1719,8 @@ private Model doLoadDependencyManagement( return importModel; } - ModelSource resolveReactorModel(String groupId, String artifactId, String version) { + ModelSource resolveReactorModel(String groupId, String artifactId, String version) + throws ModelBuilderException { Set sources = mappedSources.get(new GAKey(groupId, artifactId)); if (sources != null) { for (ModelSource source : sources) { @@ -1737,7 +1738,7 @@ private T cache(String groupId, String artifactId, String version, String ta return cache.computeIfAbsent(groupId, artifactId, version, tag, supplier); } - private T cache(Source source, String tag, Supplier supplier) { + private T cache(Source source, String tag, Supplier supplier) throws ModelBuilderException { return cache.computeIfAbsent(source, tag, supplier); } @@ -1831,7 +1832,7 @@ private static List getSubprojects(Model activated) { public Model buildRawModel(ModelBuilderRequest request) throws ModelBuilderException { ModelBuilderSessionState build = new ModelBuilderSessionState(request); Model model = build.readRawModel(); - if (((ModelProblemCollector) build).hasErrors()) { + if (build.hasErrors()) { throw build.newModelBuilderException(); } return model;