This is an automated email from the ASF dual-hosted git repository.
gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/master by this push:
new ae655e0e8 [MNG-7553] v4 api enhancements
ae655e0e8 is described below
commit ae655e0e83e47ec7389763bcabe9d84e92862179
Author: Guillaume Nodet <[email protected]>
AuthorDate: Mon Oct 10 20:47:26 2022 +0200
[MNG-7553] v4 api enhancements
* Fix DefaultArtifactManager to allow using both Artifact and Dependency
* Add a TODO for an EventSpy related api
* Add simple string/model conversion on the XmlFactory
* Decouple services creation
* Move services to @Singleton scope
* Add protected constructors as builders should not be created directly
* Fix typos "can not" -> "cannot"
* Add some null checks on build(xx) shortcut methods
* Add a some missing conversion to immutable collections for requests
---
.../main/java/org/apache/maven/api/Listener.java | 1 +
.../main/java/org/apache/maven/api/Toolchain.java | 2 +-
.../services/ArtifactCoordinateFactoryRequest.java | 23 ++++--
.../api/services/ArtifactDeployerRequest.java | 14 ++--
.../maven/api/services/ArtifactFactoryRequest.java | 10 ++-
.../maven/api/services/ArtifactInstaller.java | 4 +-
.../api/services/ArtifactInstallerRequest.java | 12 ++-
.../api/services/ArtifactResolverRequest.java | 15 +++-
.../org/apache/maven/api/services/BaseRequest.java | 2 +-
.../api/services/DependencyCollectorRequest.java | 23 +++---
.../DependencyCoordinateFactoryRequest.java | 26 +++++--
.../apache/maven/api/services/ProjectBuilder.java | 10 +--
.../maven/api/services/ProjectBuilderRequest.java | 20 +++--
.../apache/maven/api/services/xml/XmlFactory.java | 30 ++++++++
.../main/java/org/apache/maven/DefaultMaven.java | 2 +
.../impl/DefaultArtifactCoordinateFactory.java | 2 +
.../internal/impl/DefaultArtifactDeployer.java | 2 +
.../internal/impl/DefaultArtifactFactory.java | 2 +
.../internal/impl/DefaultArtifactInstaller.java | 7 ++
.../internal/impl/DefaultArtifactManager.java | 31 ++++----
.../internal/impl/DefaultArtifactResolver.java | 4 +
.../internal/impl/DefaultDependencyCollector.java | 2 +
.../impl/DefaultDependencyCoordinateFactory.java | 2 +
.../impl/DefaultLocalRepositoryManager.java | 5 ++
.../apache/maven/internal/impl/DefaultLookup.java | 7 ++
.../impl/DefaultMessageBuilderFactory.java | 5 ++
.../internal/impl/DefaultModelXmlFactory.java | 36 ++++++++-
.../maven/internal/impl/DefaultProjectBuilder.java | 4 +
.../maven/internal/impl/DefaultProjectManager.java | 7 ++
.../maven/internal/impl/DefaultPrompter.java | 7 ++
.../internal/impl/DefaultRepositoryFactory.java | 7 ++
.../apache/maven/internal/impl/DefaultSession.java | 87 +++++-----------------
.../maven/internal/impl/DefaultSessionFactory.java | 23 +-----
.../internal/impl/DefaultSettingsXmlFactory.java | 5 ++
.../internal/impl/DefaultToolchainManager.java | 7 ++
.../internal/impl/DefaultToolchainsXmlFactory.java | 6 ++
.../maven/internal/impl/DefaultTypeRegistry.java | 7 ++
.../maven/internal/impl/DefaultVersionParser.java | 5 ++
.../session/scope/internal/SessionScopeModule.java | 2 +
.../maven/AbstractCoreMavenComponentTestCase.java | 33 ++++----
.../org/apache/maven/internal/impl/TestApi.java | 35 +++++----
41 files changed, 345 insertions(+), 189 deletions(-)
diff --git
a/api/maven-api-core/src/main/java/org/apache/maven/api/Listener.java
b/api/maven-api-core/src/main/java/org/apache/maven/api/Listener.java
index 924ddaeaa..f6657da4d 100644
--- a/api/maven-api-core/src/main/java/org/apache/maven/api/Listener.java
+++ b/api/maven-api-core/src/main/java/org/apache/maven/api/Listener.java
@@ -25,6 +25,7 @@ import org.apache.maven.api.annotations.Nonnull;
/**
* A listener for session events.
+ * TODO: open this to other events like {@link
org.apache.maven.eventspy.EventSpy}
*
* @since 4.0
*/
diff --git
a/api/maven-api-core/src/main/java/org/apache/maven/api/Toolchain.java
b/api/maven-api-core/src/main/java/org/apache/maven/api/Toolchain.java
index 2f497194e..1d013ff19 100644
--- a/api/maven-api-core/src/main/java/org/apache/maven/api/Toolchain.java
+++ b/api/maven-api-core/src/main/java/org/apache/maven/api/Toolchain.java
@@ -42,7 +42,7 @@ public interface Toolchain
* Gets the platform tool executable.
*
* @param toolName the tool platform independent tool name.
- * @return file representing the tool executable, or null if the tool can
not be found
+ * @return file representing the tool executable, or null if the tool
cannot be found
*/
String findTool( String toolName );
diff --git
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactCoordinateFactoryRequest.java
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactCoordinateFactoryRequest.java
index 8c8b9af06..c93d249d8 100644
---
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactCoordinateFactoryRequest.java
+++
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactCoordinateFactoryRequest.java
@@ -26,6 +26,8 @@ import org.apache.maven.api.annotations.Immutable;
import org.apache.maven.api.annotations.Nonnull;
import org.apache.maven.api.annotations.NotThreadSafe;
+import static org.apache.maven.api.services.BaseRequest.nonNull;
+
/**
* A request for creating a {@link ArtifactCoordinate} object.
*
@@ -51,11 +53,12 @@ public interface ArtifactCoordinateFactoryRequest
String getType();
- static ArtifactCoordinateFactoryRequest build( Session session, String
groupId, String artifactId,
+ @Nonnull
+ static ArtifactCoordinateFactoryRequest build( @Nonnull Session session,
String groupId, String artifactId,
String version, String
extension )
{
return ArtifactCoordinateFactoryRequest.builder()
- .session( session )
+ .session( nonNull( session, "session cannot be null" ) )
.groupId( groupId )
.artifactId( artifactId )
.version( version )
@@ -63,11 +66,12 @@ public interface ArtifactCoordinateFactoryRequest
.build();
}
- static ArtifactCoordinateFactoryRequest build( Session session, String
groupId, String artifactId,
+ @Nonnull
+ static ArtifactCoordinateFactoryRequest build( @Nonnull Session session,
String groupId, String artifactId,
String version, String
classifier, String extension, String type )
{
return ArtifactCoordinateFactoryRequest.builder()
- .session( session )
+ .session( nonNull( session, "session cannot be null" ) )
.groupId( groupId )
.artifactId( artifactId )
.version( version )
@@ -77,11 +81,12 @@ public interface ArtifactCoordinateFactoryRequest
.build();
}
- static ArtifactCoordinateFactoryRequest build( Session session,
ArtifactCoordinate coordinate )
+ @Nonnull
+ static ArtifactCoordinateFactoryRequest build( @Nonnull Session session,
@Nonnull ArtifactCoordinate coordinate )
{
return ArtifactCoordinateFactoryRequest.builder()
- .session( session )
- .groupId( coordinate.getGroupId() )
+ .session( nonNull( session, "session cannot be null" ) )
+ .groupId( nonNull( coordinate, "coordinate cannot be null"
).getGroupId() )
.artifactId( coordinate.getArtifactId() )
.classifier( coordinate.getClassifier() )
.version( coordinate.getVersion().asString() )
@@ -106,6 +111,10 @@ public interface ArtifactCoordinateFactoryRequest
private String extension;
private String type;
+ ArtifactFactoryRequestBuilder()
+ {
+ }
+
public ArtifactFactoryRequestBuilder session( Session session )
{
this.session = session;
diff --git
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactDeployerRequest.java
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactDeployerRequest.java
index a87c0fbfc..6fb3eecbe 100644
---
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactDeployerRequest.java
+++
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactDeployerRequest.java
@@ -64,9 +64,9 @@ public interface ArtifactDeployerRequest
@Nonnull Collection<Artifact>
artifacts )
{
return builder()
- .session( nonNull( session, "session can not be null" ) )
- .repository( repository )
- .artifacts( artifacts )
+ .session( nonNull( session, "session cannot be null" ) )
+ .repository( nonNull( repository, "repository cannot be null"
) )
+ .artifacts( nonNull( artifacts, "artifacts cannot be null" ) )
.build();
}
@@ -77,6 +77,10 @@ public interface ArtifactDeployerRequest
Collection<Artifact> artifacts;
int retryFailedDeploymentCount;
+ ArtifactDeployerRequestBuilder()
+ {
+ }
+
@Nonnull
public ArtifactDeployerRequestBuilder session( Session session )
{
@@ -123,8 +127,8 @@ public interface ArtifactDeployerRequest
int retryFailedDeploymentCount )
{
super( session );
- this.repository = nonNull( repository, "repository can not be
null" );
- this.artifacts = nonNull( artifacts, "artifacts can not be
null" );
+ this.repository = nonNull( repository, "repository cannot be
null" );
+ this.artifacts = unmodifiable( nonNull( artifacts, "artifacts
cannot be null" ) );
this.retryFailedDeploymentCount = retryFailedDeploymentCount;
}
diff --git
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactFactoryRequest.java
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactFactoryRequest.java
index eb7e3f96c..e351f3863 100644
---
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactFactoryRequest.java
+++
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactFactoryRequest.java
@@ -26,6 +26,8 @@ import org.apache.maven.api.annotations.Nonnull;
import org.apache.maven.api.Session;
import org.apache.maven.api.annotations.NotThreadSafe;
+import static org.apache.maven.api.services.BaseRequest.nonNull;
+
/**
*
*
@@ -55,7 +57,7 @@ public interface ArtifactFactoryRequest
String version, String extension )
{
return ArtifactFactoryRequest.builder()
- .session( session )
+ .session( nonNull( session, "session cannot be null" ) )
.groupId( groupId )
.artifactId( artifactId )
.version( version )
@@ -67,7 +69,7 @@ public interface ArtifactFactoryRequest
String version, String classifier,
String extension, String type )
{
return ArtifactFactoryRequest.builder()
- .session( session )
+ .session( nonNull( session, "session cannot be null" ) )
.groupId( groupId )
.artifactId( artifactId )
.version( version )
@@ -93,6 +95,10 @@ public interface ArtifactFactoryRequest
private String extension;
private String type;
+ ArtifactFactoryRequestBuilder()
+ {
+ }
+
public ArtifactFactoryRequestBuilder session( Session session )
{
this.session = session;
diff --git
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactInstaller.java
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactInstaller.java
index 5b07a88f8..937af5660 100644
---
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactInstaller.java
+++
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactInstaller.java
@@ -46,7 +46,7 @@ public interface ArtifactInstaller extends Service
/**
* @param session the repository session
* @param artifact the {@link Artifact} to install
- * @throws ArtifactInstallerException In case of an error which can be the
a given artifact can not be found or the
+ * @throws ArtifactInstallerException In case of an error which can be the
a given artifact cannot be found or the
* installation has failed.
* @throws IllegalArgumentException in case of parameter {@code session}
is {@code null} or
* {@code artifact} is {@code null}.
@@ -59,7 +59,7 @@ public interface ArtifactInstaller extends Service
/**
* @param session the repository session
* @param artifacts Collection of {@link Artifact MavenArtifacts}
- * @throws ArtifactInstallerException In case of an error which can be the
a given artifact can not be found or the
+ * @throws ArtifactInstallerException In case of an error which can be the
a given artifact cannot be found or the
* installation has failed.
* @throws IllegalArgumentException in case of parameter {@code request}
is {@code null} or parameter
* {@code localRepository} is {@code null} or {@code
localRepository} is not a directory
diff --git
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactInstallerRequest.java
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactInstallerRequest.java
index 772203a85..dda5c09cd 100644
---
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactInstallerRequest.java
+++
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactInstallerRequest.java
@@ -31,6 +31,8 @@ import java.util.Collections;
import org.apache.maven.api.Session;
import org.apache.maven.api.Artifact;
+import static org.apache.maven.api.services.BaseRequest.nonNull;
+
/**
* A request for installing one or more artifacts in the local repository.
*
@@ -57,8 +59,8 @@ public interface ArtifactInstallerRequest
static ArtifactInstallerRequest build( Session session,
Collection<Artifact> artifacts )
{
return builder()
- .session( session )
- .artifacts( artifacts )
+ .session( nonNull( session, "session cannot be null" ) )
+ .artifacts( nonNull( artifacts, "artifacts cannot be null" ) )
.build();
}
@@ -68,6 +70,10 @@ public interface ArtifactInstallerRequest
Session session;
Collection<Artifact> artifacts = Collections.emptyList();
+ ArtifactInstallerRequestBuilder()
+ {
+ }
+
@Nonnull
public ArtifactInstallerRequestBuilder session( @Nonnull Session
session )
{
@@ -98,7 +104,7 @@ public interface ArtifactInstallerRequest
@Nonnull Collection<Artifact>
artifacts )
{
super( session );
- this.artifacts = nonNull( artifacts, "artifacts can not be
null" );
+ this.artifacts = unmodifiable( nonNull( artifacts, "artifacts
cannot be null" ) );
}
@Nonnull
diff --git
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactResolverRequest.java
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactResolverRequest.java
index f35f326f1..3416c76ca 100644
---
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactResolverRequest.java
+++
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ArtifactResolverRequest.java
@@ -28,6 +28,8 @@ import org.apache.maven.api.annotations.Immutable;
import org.apache.maven.api.annotations.Nonnull;
import org.apache.maven.api.annotations.NotThreadSafe;
+import static org.apache.maven.api.services.BaseRequest.nonNull;
+
/**
* A request for resolving an artifact.
*
@@ -50,11 +52,12 @@ public interface ArtifactResolverRequest
}
@Nonnull
- static ArtifactResolverRequest build( Session session, Collection<?
extends ArtifactCoordinate> coordinates )
+ static ArtifactResolverRequest build( @Nonnull Session session,
+ @Nonnull Collection<? extends
ArtifactCoordinate> coordinates )
{
return builder()
- .session( session )
- .coordinates( coordinates )
+ .session( nonNull( session, "session cannot be null" ) )
+ .coordinates( nonNull( coordinates, "coordinates cannot be
null" ) )
.build();
}
@@ -64,6 +67,10 @@ public interface ArtifactResolverRequest
Session session;
Collection<? extends ArtifactCoordinate> coordinates;
+ ArtifactResolverRequestBuilder()
+ {
+ }
+
@Nonnull
public ArtifactResolverRequestBuilder session( Session session )
{
@@ -93,7 +100,7 @@ public interface ArtifactResolverRequest
@Nonnull Collection<? extends
ArtifactCoordinate> coordinates )
{
super( session );
- this.coordinates = nonNull( coordinates, "coordinates can not
be null" );
+ this.coordinates = unmodifiable( nonNull( coordinates,
"coordinates cannot be null" ) );
}
@Nonnull
diff --git
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/BaseRequest.java
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/BaseRequest.java
index 86afa5a20..f3937b28a 100644
---
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/BaseRequest.java
+++
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/BaseRequest.java
@@ -41,7 +41,7 @@ abstract class BaseRequest
protected BaseRequest( @Nonnull Session session )
{
- this.session = nonNull( session, "session can not be null" );
+ this.session = nonNull( session, "session cannot be null" );
}
@Nonnull
diff --git
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/DependencyCollectorRequest.java
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/DependencyCollectorRequest.java
index b0963205d..345db90ba 100644
---
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/DependencyCollectorRequest.java
+++
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/DependencyCollectorRequest.java
@@ -73,8 +73,8 @@ public interface DependencyCollectorRequest
static DependencyCollectorRequest build( @Nonnull Session session,
Artifact root )
{
return builder()
- .session( nonNull( session, "session can not be null" ) )
- .rootArtifact( nonNull( root, "root can not be null" ) )
+ .session( nonNull( session, "session cannot be null" ) )
+ .rootArtifact( nonNull( root, "root cannot be null" ) )
.build();
}
@@ -82,19 +82,17 @@ public interface DependencyCollectorRequest
static DependencyCollectorRequest build( @Nonnull Session session,
@Nonnull DependencyCoordinate root )
{
return builder()
- .session( nonNull( session, "session can not be null" ) )
- .root( nonNull( root, "root can not be null" ) )
+ .session( nonNull( session, "session cannot be null" ) )
+ .root( nonNull( root, "root cannot be null" ) )
.build();
}
@Nonnull
static DependencyCollectorRequest build( @Nonnull Session session,
@Nonnull Project project )
{
- nonNull( session, "session can not be null" );
- nonNull( project, "project can not be null" );
return builder()
- .session( session )
- .rootArtifact( project.getArtifact() )
+ .session( nonNull( session, "session cannot be null" ) )
+ .rootArtifact( nonNull( project, "project cannot be null"
).getArtifact() )
.dependencies( project.getDependencies() )
.managedDependencies( project.getManagedDependencies() )
.build();
@@ -117,6 +115,10 @@ public interface DependencyCollectorRequest
List<DependencyCoordinate> managedDependencies =
Collections.emptyList();
boolean verbose;
+ DependencyCollectorRequestBuilder()
+ {
+ }
+
@Nonnull
public DependencyCollectorRequestBuilder session( @Nonnull Session
session )
{
@@ -279,8 +281,9 @@ public interface DependencyCollectorRequest
super( session );
this.rootArtifact = rootArtifact;
this.root = root;
- this.dependencies = unmodifiable( dependencies );
- this.managedDependencies = unmodifiable( managedDependencies );
+ this.dependencies = unmodifiable( nonNull( dependencies,
"dependencies cannot be null" ) );
+ this.managedDependencies = unmodifiable( nonNull(
managedDependencies,
+ "managedDependencies
cannot be null" ) );
this.verbose = verbose;
}
diff --git
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/DependencyCoordinateFactoryRequest.java
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/DependencyCoordinateFactoryRequest.java
index b42853cd5..2573fe427 100644
---
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/DependencyCoordinateFactoryRequest.java
+++
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/DependencyCoordinateFactoryRequest.java
@@ -32,6 +32,8 @@ import org.apache.maven.api.annotations.Immutable;
import org.apache.maven.api.annotations.Nonnull;
import org.apache.maven.api.annotations.NotThreadSafe;
+import static org.apache.maven.api.services.BaseRequest.nonNull;
+
/**
*
* @since 4.0
@@ -48,11 +50,12 @@ public interface DependencyCoordinateFactoryRequest extends
ArtifactCoordinateFa
@Nonnull
Collection<Exclusion> getExclusions();
- static DependencyCoordinateFactoryRequest build( Session session, String
groupId, String artifactId,
+ @Nonnull
+ static DependencyCoordinateFactoryRequest build( @Nonnull Session session,
String groupId, String artifactId,
String version, String
classifier, String extension, String type )
{
return DependencyCoordinateFactoryRequest.builder()
- .session( session )
+ .session( nonNull( session, "session cannot be null" ) )
.groupId( groupId )
.artifactId( artifactId )
.version( version )
@@ -62,11 +65,12 @@ public interface DependencyCoordinateFactoryRequest extends
ArtifactCoordinateFa
.build();
}
- static DependencyCoordinateFactoryRequest build( Session session,
ArtifactCoordinate coordinate )
+ @Nonnull
+ static DependencyCoordinateFactoryRequest build( @Nonnull Session session,
@Nonnull ArtifactCoordinate coordinate )
{
return builder()
- .session( session )
- .groupId( coordinate.getGroupId() )
+ .session( nonNull( session, "session cannot be null" ) )
+ .groupId( nonNull( coordinate, "coordinate cannot be null"
).getGroupId() )
.artifactId( coordinate.getArtifactId() )
.version( coordinate.getVersion().asString() )
.classifier( coordinate.getClassifier() )
@@ -74,11 +78,12 @@ public interface DependencyCoordinateFactoryRequest extends
ArtifactCoordinateFa
.build();
}
- static DependencyCoordinateFactoryRequest build( Session session,
Dependency dependency )
+ @Nonnull
+ static DependencyCoordinateFactoryRequest build( @Nonnull Session session,
@Nonnull Dependency dependency )
{
return builder()
- .session( session )
- .groupId( dependency.getGroupId() )
+ .session( nonNull( session, "session cannot be null" ) )
+ .groupId( nonNull( dependency, "dependency" ).getGroupId() )
.artifactId( dependency.getArtifactId() )
.version( dependency.getVersion().asString() )
.classifier( dependency.getClassifier() )
@@ -89,6 +94,7 @@ public interface DependencyCoordinateFactoryRequest extends
ArtifactCoordinateFa
.build();
}
+ @Nonnull
static DependencyCoordinateFactoryRequestBuilder builder()
{
return new DependencyCoordinateFactoryRequestBuilder();
@@ -108,6 +114,10 @@ public interface DependencyCoordinateFactoryRequest
extends ArtifactCoordinateFa
private boolean optional;
private Collection<Exclusion> exclusions = Collections.emptyList();
+ DependencyCoordinateFactoryRequestBuilder()
+ {
+ }
+
public DependencyCoordinateFactoryRequestBuilder session( Session
session )
{
this.session = session;
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 d7829752f..e75ea4af5 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
@@ -41,7 +41,7 @@ public interface ProjectBuilder extends Service
*
* @param request {@link ProjectBuilderRequest}
* @return the {@link ProjectBuilderResult} containing the built project
and possible errors
- * @throws ProjectBuilderException if the project can not be created
+ * @throws ProjectBuilderException if the project cannot be created
* @throws IllegalArgumentException if an argument is {@code null} or
invalid
*/
@Nonnull
@@ -52,7 +52,7 @@ public interface ProjectBuilder extends Service
*
* @param session The {@link Session}, must not be {@code null}.
* @param source The {@link ProjectBuilderSource}, must not be {@code
null}.
- * @throws ProjectBuilderException if the project can not be created
+ * @throws ProjectBuilderException if the project cannot be created
* @throws IllegalArgumentException if an argument is {@code null} or
invalid
* @see #build(ProjectBuilderRequest)
*/
@@ -67,7 +67,7 @@ public interface ProjectBuilder extends Service
*
* @param session The {@link Session}, must not be {@code null}.
* @param path The {@link Path}, must not be {@code null}.
- * @throws ProjectBuilderException if the project can not be created
+ * @throws ProjectBuilderException if the project cannot be created
* @throws IllegalArgumentException if an argument is {@code null} or
invalid
* @see #build(ProjectBuilderRequest)
*/
@@ -82,7 +82,7 @@ public interface ProjectBuilder extends Service
*
* @param session The {@link Session}, must not be {@code null}.
* @param artifact The {@link Artifact}, must not be {@code null}.
- * @throws ProjectBuilderException if the project can not be created
+ * @throws ProjectBuilderException if the project cannot be created
* @throws IllegalArgumentException if an argument is {@code null} or
invalid
* @see #build(ProjectBuilderRequest)
*/
@@ -97,7 +97,7 @@ public interface ProjectBuilder extends Service
*
* @param session The {@link Session}, must not be {@code null}.
* @param coordinate The {@link ArtifactCoordinate}, must not be {@code
null}.
- * @throws ProjectBuilderException if the project can not be created
+ * @throws ProjectBuilderException if the project cannot be created
* @throws IllegalArgumentException if an argument is {@code null} or
invalid
* @see #build(ProjectBuilderRequest)
*/
diff --git
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ProjectBuilderRequest.java
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ProjectBuilderRequest.java
index 4b90e8bfd..2e259091a 100644
---
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ProjectBuilderRequest.java
+++
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ProjectBuilderRequest.java
@@ -72,8 +72,8 @@ public interface ProjectBuilderRequest
static ProjectBuilderRequest build( @Nonnull Session session, @Nonnull
ProjectBuilderSource source )
{
return builder()
- .session( nonNull( session, "session can not be null" ) )
- .source( nonNull( source, "source can not be null" ) )
+ .session( nonNull( session, "session cannot be null" ) )
+ .source( nonNull( source, "source cannot be null" ) )
.build();
}
@@ -81,8 +81,8 @@ public interface ProjectBuilderRequest
static ProjectBuilderRequest build( @Nonnull Session session, @Nonnull
Path path )
{
return builder()
- .session( nonNull( session, "session can not be null" ) )
- .path( nonNull( path, "path can not be null" ) )
+ .session( nonNull( session, "session cannot be null" ) )
+ .path( nonNull( path, "path cannot be null" ) )
.build();
}
@@ -90,8 +90,8 @@ public interface ProjectBuilderRequest
static ProjectBuilderRequest build( @Nonnull Session session, @Nonnull
Artifact artifact )
{
return builder()
- .session( nonNull( session, "session can not be null" ) )
- .artifact( nonNull( artifact, "artifact can not be null" ) )
+ .session( nonNull( session, "session cannot be null" ) )
+ .artifact( nonNull( artifact, "artifact cannot be null" ) )
.build();
}
@@ -99,8 +99,8 @@ public interface ProjectBuilderRequest
static ProjectBuilderRequest build( @Nonnull Session session, @Nonnull
ArtifactCoordinate coordinate )
{
return builder()
- .session( nonNull( session, "session can not be null" ) )
- .coordinate( nonNull( coordinate, "coordinate can not be null"
) )
+ .session( nonNull( session, "session cannot be null" ) )
+ .coordinate( nonNull( coordinate, "coordinate cannot be null"
) )
.build();
}
@@ -123,6 +123,10 @@ public interface ProjectBuilderRequest
boolean processPlugins = true;
boolean resolveDependencies = true;
+ ProjectBuilderRequestBuilder()
+ {
+ }
+
public ProjectBuilderRequestBuilder session( Session session )
{
this.session = session;
diff --git
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/xml/XmlFactory.java
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/xml/XmlFactory.java
index 651b1a5fe..f3ee6b775 100644
---
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/xml/XmlFactory.java
+++
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/xml/XmlFactory.java
@@ -22,6 +22,8 @@ package org.apache.maven.api.services.xml;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
import java.io.Writer;
import java.nio.file.Path;
@@ -95,4 +97,32 @@ public interface XmlFactory<T> extends Service
void write( @Nonnull XmlWriterRequest<T> request ) throws
XmlWriterException;
+ /**
+ * Simply parse the given xml string.
+ *
+ * @param xml the input xml string
+ * @return the parsed object
+ * @throws XmlReaderException if an error occurs during the parsing
+ * @see #toXmlString(Object)
+ */
+ default T fromXmlString( @Nonnull String xml ) throws XmlReaderException
+ {
+ return read( new StringReader( xml ) );
+ }
+
+ /**
+ * Simply converts the given content to an xml string.
+ *
+ * @param content the object to convert
+ * @return the xml string representation
+ * @throws XmlWriterException if an error occurs during the transformation
+ * @see #fromXmlString(String)
+ */
+ default String toXmlString( @Nonnull T content ) throws XmlWriterException
+ {
+ StringWriter sw = new StringWriter();
+ write( content, sw );
+ return sw.toString();
+ }
+
}
diff --git a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
index 068b1e696..dd47a2d9a 100644
--- a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
+++ b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
@@ -35,6 +35,7 @@ import org.apache.maven.execution.ProjectDependencyGraph;
import org.apache.maven.graph.GraphBuilder;
import org.apache.maven.graph.ProjectSelector;
import org.apache.maven.internal.aether.DefaultRepositorySystemSessionFactory;
+import org.apache.maven.internal.impl.DefaultSession;
import org.apache.maven.internal.impl.DefaultSessionFactory;
import org.apache.maven.lifecycle.LifecycleExecutionException;
import org.apache.maven.internal.aether.MavenChainedWorkspaceReader;
@@ -240,6 +241,7 @@ public class DefaultMaven
sessionScope.seed( MavenSession.class, session );
sessionScope.seed( Session.class, session.getSession() );
+ sessionScope.seed( DefaultSession.class, (DefaultSession)
session.getSession() );
legacySupport.setSession( session );
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactCoordinateFactory.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactCoordinateFactory.java
index b6edcd572..3412c07e7 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactCoordinateFactory.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactCoordinateFactory.java
@@ -20,6 +20,7 @@ package org.apache.maven.internal.impl;
*/
import javax.inject.Named;
+import javax.inject.Singleton;
import org.apache.maven.api.ArtifactCoordinate;
import org.apache.maven.api.annotations.Nonnull;
@@ -32,6 +33,7 @@ import static org.apache.maven.internal.impl.Utils.cast;
import static org.apache.maven.internal.impl.Utils.nonNull;
@Named
+@Singleton
public class DefaultArtifactCoordinateFactory implements
ArtifactCoordinateFactory
{
@Override
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactDeployer.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactDeployer.java
index f6be945bf..8a0c45541 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactDeployer.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactDeployer.java
@@ -24,6 +24,7 @@ import org.apache.maven.api.RemoteRepository;
import org.apache.maven.api.annotations.Nonnull;
import javax.inject.Inject;
import javax.inject.Named;
+import javax.inject.Singleton;
import java.util.Collection;
import java.util.List;
@@ -46,6 +47,7 @@ import static org.apache.maven.internal.impl.Utils.nonNull;
* Implementation of {@link ArtifactDeployer} service.
*/
@Named
+@Singleton
public class DefaultArtifactDeployer implements ArtifactDeployer
{
private final @Nonnull RepositorySystem repositorySystem;
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactFactory.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactFactory.java
index c5dd9a1c2..25d98185d 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactFactory.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactFactory.java
@@ -20,6 +20,7 @@ package org.apache.maven.internal.impl;
*/
import javax.inject.Named;
+import javax.inject.Singleton;
import org.apache.maven.api.Artifact;
import org.apache.maven.api.annotations.Nonnull;
@@ -32,6 +33,7 @@ import static org.apache.maven.internal.impl.Utils.cast;
import static org.apache.maven.internal.impl.Utils.nonNull;
@Named
+@Singleton
public class DefaultArtifactFactory implements ArtifactFactory
{
@Override
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactInstaller.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactInstaller.java
index dba2fa80a..183db6a8a 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactInstaller.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactInstaller.java
@@ -19,6 +19,10 @@ package org.apache.maven.internal.impl;
* under the License.
*/
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import org.apache.maven.api.annotations.Nonnull;
import java.util.Collection;
@@ -38,11 +42,14 @@ import org.eclipse.aether.metadata.Metadata;
import static org.apache.maven.internal.impl.Utils.cast;
import static org.apache.maven.internal.impl.Utils.nonNull;
+@Named
+@Singleton
public class DefaultArtifactInstaller implements ArtifactInstaller
{
private final RepositorySystem repositorySystem;
+ @Inject
DefaultArtifactInstaller( @Nonnull RepositorySystem repositorySystem )
{
this.repositorySystem = nonNull( repositorySystem );
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactManager.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactManager.java
index 69b9f991e..a4b0961d7 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactManager.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactManager.java
@@ -19,6 +19,10 @@ package org.apache.maven.internal.impl;
* under the License.
*/
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import org.apache.maven.SessionScoped;
import org.apache.maven.api.annotations.Nonnull;
import java.io.File;
@@ -35,14 +39,17 @@ import org.apache.maven.api.Metadata;
import org.apache.maven.api.services.ArtifactManager;
import org.apache.maven.project.MavenProject;
+@Named
+@SessionScoped
public class DefaultArtifactManager implements ArtifactManager
{
@Nonnull
private final DefaultSession session;
- private final Map<Artifact, Path> paths = new ConcurrentHashMap<>();
- private final Map<Artifact, Collection<Metadata>> metadatas = new
ConcurrentHashMap<>();
+ private final Map<String, Path> paths = new ConcurrentHashMap<>();
+ private final Map<String, Collection<Metadata>> metadatas = new
ConcurrentHashMap<>();
+ @Inject
public DefaultArtifactManager( @Nonnull DefaultSession session )
{
this.session = session;
@@ -52,9 +59,9 @@ public class DefaultArtifactManager implements ArtifactManager
@Override
public Optional<Path> getPath( @Nonnull Artifact artifact )
{
+ String id = id( artifact );
if ( session.getMavenSession().getAllProjects() != null )
{
- String id = id( artifact );
for ( MavenProject project :
session.getMavenSession().getAllProjects() )
{
if ( id.equals( id( project.getArtifact() ) ) &&
project.getArtifact().getFile() != null )
@@ -63,7 +70,7 @@ public class DefaultArtifactManager implements ArtifactManager
}
}
}
- Path path = paths.get( artifact );
+ Path path = paths.get( id );
if ( path == null && artifact instanceof DefaultArtifact )
{
File file = ( (DefaultArtifact) artifact ).getArtifact().getFile();
@@ -78,9 +85,9 @@ public class DefaultArtifactManager implements ArtifactManager
@Override
public void setPath( @Nonnull Artifact artifact, Path path )
{
+ String id = id( artifact );
if ( session.getMavenSession().getAllProjects() != null )
{
- String id = id( artifact );
for ( MavenProject project :
session.getMavenSession().getAllProjects() )
{
if ( id.equals( id( project.getArtifact() ) ) )
@@ -92,11 +99,11 @@ public class DefaultArtifactManager implements
ArtifactManager
}
if ( path == null )
{
- paths.remove( artifact );
+ paths.remove( id );
}
else
{
- paths.put( artifact, path );
+ paths.put( id, path );
}
}
@@ -104,14 +111,14 @@ public class DefaultArtifactManager implements
ArtifactManager
@Override
public Collection<Metadata> getAttachedMetadatas( @Nonnull Artifact
artifact )
{
- Collection<Metadata> m = metadatas.get( artifact );
+ Collection<Metadata> m = metadatas.get( id( artifact ) );
return m != null ? Collections.unmodifiableCollection( m ) :
Collections.emptyList();
}
@Override
public void attachMetadata( @Nonnull Artifact artifact, @Nonnull Metadata
metadata )
{
- metadatas.computeIfAbsent( artifact, a -> new CopyOnWriteArrayList<>()
).add( metadata );
+ metadatas.computeIfAbsent( id( artifact ), a -> new
CopyOnWriteArrayList<>() ).add( metadata );
}
private String id( org.apache.maven.artifact.Artifact artifact )
@@ -126,11 +133,7 @@ public class DefaultArtifactManager implements
ArtifactManager
private String id( Artifact artifact )
{
- return artifact.getGroupId()
- + ":" + artifact.getArtifactId()
- + ":" + artifact.getExtension()
- + ( artifact.getClassifier().isEmpty() ? "" : ":" +
artifact.getClassifier() )
- + ":" + artifact.getVersion();
+ return artifact.key();
}
}
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactResolver.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactResolver.java
index dadb37acd..ac1a163a5 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactResolver.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifactResolver.java
@@ -21,6 +21,8 @@ package org.apache.maven.internal.impl;
import org.apache.maven.api.annotations.Nonnull;
import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
import java.nio.file.Path;
import java.util.HashMap;
@@ -43,6 +45,8 @@ import org.eclipse.aether.resolution.ArtifactResult;
import static org.apache.maven.internal.impl.Utils.cast;
import static org.apache.maven.internal.impl.Utils.nonNull;
+@Named
+@Singleton
public class DefaultArtifactResolver implements ArtifactResolver
{
private final RepositorySystem repositorySystem;
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultDependencyCollector.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultDependencyCollector.java
index 83ea3732a..8cf4b181a 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultDependencyCollector.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultDependencyCollector.java
@@ -22,6 +22,7 @@ package org.apache.maven.internal.impl;
import org.apache.maven.api.annotations.Nonnull;
import javax.inject.Inject;
import javax.inject.Named;
+import javax.inject.Singleton;
import java.util.List;
@@ -45,6 +46,7 @@ import static org.apache.maven.internal.impl.Utils.cast;
import static org.apache.maven.internal.impl.Utils.nonNull;
@Named
+@Singleton
public class DefaultDependencyCollector implements DependencyCollector
{
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultDependencyCoordinateFactory.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultDependencyCoordinateFactory.java
index ae765e934..06e0da314 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultDependencyCoordinateFactory.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultDependencyCoordinateFactory.java
@@ -20,6 +20,7 @@ package org.apache.maven.internal.impl;
*/
import javax.inject.Named;
+import javax.inject.Singleton;
import java.util.stream.Collectors;
@@ -34,6 +35,7 @@ import static org.apache.maven.internal.impl.Utils.cast;
import static org.apache.maven.internal.impl.Utils.nonNull;
@Named
+@Singleton
public class DefaultDependencyCoordinateFactory implements
DependencyCoordinateFactory
{
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultLocalRepositoryManager.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultLocalRepositoryManager.java
index 450791df6..ec97dc765 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultLocalRepositoryManager.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultLocalRepositoryManager.java
@@ -19,6 +19,9 @@ package org.apache.maven.internal.impl;
* under the License.
*/
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.nio.file.Path;
import org.apache.maven.api.Artifact;
@@ -28,6 +31,8 @@ import org.apache.maven.api.RemoteRepository;
import org.apache.maven.api.Session;
import org.apache.maven.api.services.LocalRepositoryManager;
+@Named
+@Singleton
public class DefaultLocalRepositoryManager implements LocalRepositoryManager
{
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultLookup.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultLookup.java
index 9df503cd7..1273066f5 100644
--- a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultLookup.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultLookup.java
@@ -19,6 +19,10 @@ package org.apache.maven.internal.impl;
* under the License.
*/
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.List;
import java.util.Map;
@@ -27,11 +31,14 @@ import org.apache.maven.api.services.LookupException;
import org.codehaus.plexus.PlexusContainer;
import
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+@Named
+@Singleton
public class DefaultLookup implements Lookup
{
private final PlexusContainer container;
+ @Inject
public DefaultLookup( PlexusContainer container )
{
this.container = container;
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultMessageBuilderFactory.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultMessageBuilderFactory.java
index 078ca08b1..f04f3087e 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultMessageBuilderFactory.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultMessageBuilderFactory.java
@@ -19,6 +19,9 @@ package org.apache.maven.internal.impl;
* under the License.
*/
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.Objects;
import org.apache.maven.api.annotations.Experimental;
@@ -28,6 +31,8 @@ import org.apache.maven.api.services.MessageBuilderFactory;
import org.apache.maven.shared.utils.logging.MessageUtils;
@Experimental
+@Named
+@Singleton
public class DefaultMessageBuilderFactory implements MessageBuilderFactory
{
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultModelXmlFactory.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultModelXmlFactory.java
index c8079351e..ccb69a8b9 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultModelXmlFactory.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultModelXmlFactory.java
@@ -19,6 +19,9 @@ package org.apache.maven.internal.impl;
* under the License.
*/
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
@@ -28,19 +31,21 @@ import java.nio.file.Files;
import java.nio.file.Path;
import org.apache.maven.api.annotations.Nonnull;
+import org.apache.maven.api.model.InputSource;
+import org.apache.maven.api.model.Model;
import org.apache.maven.api.services.xml.ModelXmlFactory;
import org.apache.maven.api.services.xml.XmlReaderException;
import org.apache.maven.api.services.xml.XmlReaderRequest;
import org.apache.maven.api.services.xml.XmlWriterException;
import org.apache.maven.api.services.xml.XmlWriterRequest;
-import org.apache.maven.api.model.InputSource;
-import org.apache.maven.api.model.Model;
import org.apache.maven.model.v4.MavenXpp3ReaderEx;
import org.apache.maven.model.v4.MavenXpp3WriterEx;
import org.codehaus.plexus.util.ReaderFactory;
import static org.apache.maven.internal.impl.Utils.nonNull;
+@Named
+@Singleton
public class DefaultModelXmlFactory
implements ModelXmlFactory
{
@@ -120,4 +125,31 @@ public class DefaultModelXmlFactory
throw new XmlWriterException( "Unable to write model", e );
}
}
+
+ /**
+ * Simply parse the given xml string.
+ *
+ * @param xml the input xml string
+ * @return the parsed object
+ * @throws XmlReaderException if an error occurs during the parsing
+ * @see #toXmlString(Object)
+ */
+ public static Model fromXml( @Nonnull String xml ) throws
XmlReaderException
+ {
+ return new DefaultModelXmlFactory().fromXmlString( xml );
+ }
+
+ /**
+ * Simply converts the given content to an xml string.
+ *
+ * @param content the object to convert
+ * @return the xml string representation
+ * @throws XmlWriterException if an error occurs during the transformation
+ * @see #fromXmlString(String)
+ */
+ public static String toXml( @Nonnull Model content ) throws
XmlWriterException
+ {
+ return new DefaultModelXmlFactory().toXmlString( content );
+ }
+
}
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectBuilder.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectBuilder.java
index d9911c201..959f8fc69 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectBuilder.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectBuilder.java
@@ -20,6 +20,8 @@ package org.apache.maven.internal.impl;
*/
import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
import java.io.File;
import java.io.IOException;
@@ -52,6 +54,8 @@ import org.apache.maven.project.ProjectBuildingException;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.project.ProjectBuildingResult;
+@Named
+@Singleton
public class DefaultProjectBuilder implements ProjectBuilder
{
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectManager.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectManager.java
index 4a5e62218..6f0855ba9 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectManager.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectManager.java
@@ -19,6 +19,9 @@ package org.apache.maven.internal.impl;
* under the License.
*/
+import javax.inject.Inject;
+import javax.inject.Named;
+
import java.nio.file.Path;
import java.util.Collection;
import java.util.Collections;
@@ -28,6 +31,7 @@ import java.util.Set;
import java.util.stream.Collectors;
import org.apache.maven.RepositoryUtils;
+import org.apache.maven.SessionScoped;
import org.apache.maven.api.Artifact;
import org.apache.maven.api.Node;
import org.apache.maven.api.Project;
@@ -45,6 +49,8 @@ import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.PlexusContainer;
import
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+@Named
+@SessionScoped
public class DefaultProjectManager implements ProjectManager
{
@@ -52,6 +58,7 @@ public class DefaultProjectManager implements ProjectManager
private final ArtifactManager artifactManager;
private final PlexusContainer container;
+ @Inject
public DefaultProjectManager( Session session,
ArtifactManager artifactManager,
PlexusContainer container )
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultPrompter.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultPrompter.java
index e1e87f3e0..2bb642124 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultPrompter.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultPrompter.java
@@ -19,6 +19,10 @@ package org.apache.maven.internal.impl;
* under the License.
*/
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.lang.reflect.Method;
import java.util.List;
@@ -26,12 +30,15 @@ import org.apache.maven.api.services.Prompter;
import org.apache.maven.api.services.PrompterException;
import org.codehaus.plexus.PlexusContainer;
+@Named
+@Singleton
public class DefaultPrompter implements Prompter
{
private static final String PROMPTER_CLASS =
"org.codehaus.plexus.components.interactivity.Prompter";
private final PlexusContainer container;
+ @Inject
public DefaultPrompter( PlexusContainer container )
{
this.container = container;
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultRepositoryFactory.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultRepositoryFactory.java
index c61774c5f..e3abff1db 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultRepositoryFactory.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultRepositoryFactory.java
@@ -19,6 +19,10 @@ package org.apache.maven.internal.impl;
* under the License.
*/
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.nio.file.Path;
import org.apache.maven.api.LocalRepository;
@@ -28,11 +32,14 @@ import org.apache.maven.api.model.Repository;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.repository.RepositoryPolicy;
+@Named
+@Singleton
public class DefaultRepositoryFactory implements RepositoryFactory
{
private final RepositorySystem repositorySystem;
+ @Inject
public DefaultRepositoryFactory( RepositorySystem repositorySystem )
{
this.repositorySystem = repositorySystem;
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSession.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSession.java
index 12af08d6e..6d5b7c6ef 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSession.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSession.java
@@ -41,39 +41,15 @@ import org.apache.maven.api.Session;
import org.apache.maven.api.SessionData;
import org.apache.maven.api.annotations.Nonnull;
import org.apache.maven.api.annotations.Nullable;
-import org.apache.maven.api.services.ArtifactDeployer;
-import org.apache.maven.api.services.ArtifactFactory;
-import org.apache.maven.api.services.ArtifactInstaller;
-import org.apache.maven.api.services.ArtifactManager;
-import org.apache.maven.api.services.ArtifactResolver;
-import org.apache.maven.api.services.ArtifactCoordinateFactory;
-import org.apache.maven.api.services.DependencyCollector;
-import org.apache.maven.api.services.DependencyCoordinateFactory;
-import org.apache.maven.api.services.LocalRepositoryManager;
-import org.apache.maven.api.services.Lookup;
import org.apache.maven.api.services.MavenException;
-import org.apache.maven.api.services.MessageBuilderFactory;
-import org.apache.maven.api.services.ProjectBuilder;
-import org.apache.maven.api.services.ProjectManager;
-import org.apache.maven.api.services.Prompter;
-import org.apache.maven.api.services.RepositoryFactory;
-import org.apache.maven.api.services.ToolchainManager;
-import org.apache.maven.api.services.TypeRegistry;
-import org.apache.maven.api.services.VersionParser;
-import org.apache.maven.api.services.xml.ModelXmlFactory;
-import org.apache.maven.api.services.xml.SettingsXmlFactory;
-import org.apache.maven.api.services.xml.ToolchainsXmlFactory;
import org.apache.maven.api.settings.Settings;
-import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.bridge.MavenRepositorySystem;
import org.apache.maven.execution.MavenSession;
-import org.apache.maven.execution.scope.internal.MojoExecutionScope;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.apache.maven.rtinfo.RuntimeInformation;
-import org.apache.maven.toolchain.DefaultToolchainManagerPrivate;
import org.codehaus.plexus.PlexusContainer;
import
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.eclipse.aether.DefaultRepositorySystemSession;
@@ -89,26 +65,18 @@ public class DefaultSession extends AbstractSession
private final RepositorySystemSession session;
private final RepositorySystem repositorySystem;
private final List<RemoteRepository> repositories;
- private final org.apache.maven.project.ProjectBuilder projectBuilder;
private final MavenRepositorySystem mavenRepositorySystem;
- private final DefaultToolchainManagerPrivate toolchainManagerPrivate;
private final PlexusContainer container;
- private final MojoExecutionScope mojoExecutionScope;
private final RuntimeInformation runtimeInformation;
- private final ArtifactHandlerManager artifactHandlerManager;
private final Map<Class<? extends Service>, Service> services = new
HashMap<>();
@SuppressWarnings( "checkstyle:ParameterNumber" )
public DefaultSession( @Nonnull MavenSession session,
@Nonnull RepositorySystem repositorySystem,
@Nullable List<RemoteRepository> repositories,
- @Nonnull org.apache.maven.project.ProjectBuilder
projectBuilder,
@Nonnull MavenRepositorySystem
mavenRepositorySystem,
- @Nonnull DefaultToolchainManagerPrivate
toolchainManagerPrivate,
@Nonnull PlexusContainer container,
- @Nonnull MojoExecutionScope mojoExecutionScope,
- @Nonnull RuntimeInformation runtimeInformation,
- @Nonnull ArtifactHandlerManager
artifactHandlerManager )
+ @Nonnull RuntimeInformation runtimeInformation )
{
this.mavenSession = nonNull( session );
this.session = mavenSession.getRepositorySession();
@@ -117,38 +85,9 @@ public class DefaultSession extends AbstractSession
? repositories
: mavenSession.getRequest().getRemoteRepositories().stream()
.map( RepositoryUtils::toRepo ).map( this::getRemoteRepository
).collect( Collectors.toList() );
- this.projectBuilder = projectBuilder;
this.mavenRepositorySystem = mavenRepositorySystem;
- this.toolchainManagerPrivate = toolchainManagerPrivate;
this.container = container;
- this.mojoExecutionScope = mojoExecutionScope;
this.runtimeInformation = runtimeInformation;
- this.artifactHandlerManager = artifactHandlerManager;
-
- ArtifactManager artifactManager = new DefaultArtifactManager( this );
- ProjectManager projectManager = new DefaultProjectManager( this,
artifactManager, container );
-
- services.put( ArtifactFactory.class, new DefaultArtifactFactory() );
- services.put( ArtifactResolver.class, new DefaultArtifactResolver(
repositorySystem ) );
- services.put( ArtifactDeployer.class, new DefaultArtifactDeployer(
repositorySystem ) );
- services.put( ArtifactInstaller.class, new DefaultArtifactInstaller(
repositorySystem ) );
- services.put( ArtifactManager.class, artifactManager );
- services.put( DependencyCoordinateFactory.class, new
DefaultDependencyCoordinateFactory() );
- services.put( DependencyCollector.class, new
DefaultDependencyCollector( repositorySystem ) );
- services.put( ProjectBuilder.class, new DefaultProjectBuilder(
projectBuilder ) );
- services.put( ProjectManager.class, projectManager );
- services.put( LocalRepositoryManager.class, new
DefaultLocalRepositoryManager() );
- services.put( RepositoryFactory.class, new DefaultRepositoryFactory(
repositorySystem ) );
- services.put( ToolchainManager.class, new DefaultToolchainManager(
toolchainManagerPrivate ) );
- services.put( ModelXmlFactory.class, new DefaultModelXmlFactory() );
- services.put( SettingsXmlFactory.class, new
DefaultSettingsXmlFactory() );
- services.put( ToolchainsXmlFactory.class, new
DefaultToolchainsXmlFactory() );
- services.put( Prompter.class, new DefaultPrompter( container ) );
- services.put( MessageBuilderFactory.class, new
DefaultMessageBuilderFactory() );
- services.put( VersionParser.class, new DefaultVersionParser() );
- services.put( ArtifactCoordinateFactory.class, new
DefaultArtifactCoordinateFactory() );
- services.put( TypeRegistry.class, new DefaultTypeRegistry(
artifactHandlerManager ) );
- services.put( Lookup.class, new DefaultLookup( container ) );
}
public MavenSession getMavenSession()
@@ -304,16 +243,16 @@ public class DefaultSession extends AbstractSession
.setLocalRepositoryManager( localRepositoryManager );
MavenSession newSession = new MavenSession(
mavenSession.getContainer(), repoSession,
mavenSession.getRequest(), mavenSession.getResult() );
- return new DefaultSession( newSession, repositorySystem, repositories,
projectBuilder, mavenRepositorySystem,
- toolchainManagerPrivate, container, mojoExecutionScope,
runtimeInformation, artifactHandlerManager );
+ return new DefaultSession( newSession, repositorySystem, repositories,
+ mavenRepositorySystem, container, runtimeInformation );
}
@Nonnull
@Override
public Session withRemoteRepositories( @Nonnull List<RemoteRepository>
repositories )
{
- return new DefaultSession( mavenSession, repositorySystem,
repositories, projectBuilder, mavenRepositorySystem,
- toolchainManagerPrivate, container, mojoExecutionScope,
runtimeInformation, artifactHandlerManager );
+ return new DefaultSession( mavenSession, repositorySystem,
repositories,
+ mavenRepositorySystem, container, runtimeInformation );
}
@Nonnull
@@ -321,7 +260,7 @@ public class DefaultSession extends AbstractSession
@SuppressWarnings( "unchecked" )
public <T extends Service> T getService( Class<T> clazz ) throws
NoSuchElementException
{
- T t = (T) services.get( clazz );
+ T t = (T) services.computeIfAbsent( clazz, this::lookup );
if ( t == null )
{
throw new NoSuchElementException( clazz.getName() );
@@ -329,6 +268,20 @@ public class DefaultSession extends AbstractSession
return t;
}
+ private Service lookup( Class<? extends Service> c )
+ {
+ try
+ {
+ return container.lookup( c );
+ }
+ catch ( ComponentLookupException e )
+ {
+ NoSuchElementException nsee = new NoSuchElementException(
c.getName() );
+ e.initCause( e );
+ throw nsee;
+ }
+ }
+
@Nonnull
public RepositorySystemSession getSession()
{
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSessionFactory.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSessionFactory.java
index 4816006ab..b0cb18d76 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSessionFactory.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSessionFactory.java
@@ -24,13 +24,9 @@ import javax.inject.Named;
import javax.inject.Singleton;
import org.apache.maven.api.Session;
-import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.bridge.MavenRepositorySystem;
import org.apache.maven.execution.MavenSession;
-import org.apache.maven.execution.scope.internal.MojoExecutionScope;
-import org.apache.maven.project.ProjectBuilder;
import org.apache.maven.rtinfo.RuntimeInformation;
-import org.apache.maven.toolchain.DefaultToolchainManagerPrivate;
import org.codehaus.plexus.PlexusContainer;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.SessionData;
@@ -40,33 +36,21 @@ import org.eclipse.aether.SessionData;
public class DefaultSessionFactory
{
private final RepositorySystem repositorySystem;
- private final org.apache.maven.project.ProjectBuilder projectBuilder;
private final MavenRepositorySystem mavenRepositorySystem;
- private final DefaultToolchainManagerPrivate toolchainManagerPrivate;
private final PlexusContainer plexusContainer;
- private final MojoExecutionScope mojoExecutionScope;
private final RuntimeInformation runtimeInformation;
- private final ArtifactHandlerManager artifactHandlerManager;
@Inject
@SuppressWarnings( "checkstyle:ParameterNumber" )
public DefaultSessionFactory( RepositorySystem repositorySystem,
- ProjectBuilder projectBuilder,
MavenRepositorySystem mavenRepositorySystem,
- DefaultToolchainManagerPrivate
toolchainManagerPrivate,
PlexusContainer plexusContainer,
- MojoExecutionScope mojoExecutionScope,
- RuntimeInformation runtimeInformation,
- ArtifactHandlerManager
artifactHandlerManager )
+ RuntimeInformation runtimeInformation )
{
this.repositorySystem = repositorySystem;
- this.projectBuilder = projectBuilder;
this.mavenRepositorySystem = mavenRepositorySystem;
- this.toolchainManagerPrivate = toolchainManagerPrivate;
this.plexusContainer = plexusContainer;
- this.mojoExecutionScope = mojoExecutionScope;
this.runtimeInformation = runtimeInformation;
- this.artifactHandlerManager = artifactHandlerManager;
}
public Session getSession( MavenSession mavenSession )
@@ -78,8 +62,7 @@ public class DefaultSessionFactory
private Session newSession( MavenSession mavenSession )
{
return new DefaultSession(
- mavenSession, repositorySystem, null, projectBuilder,
mavenRepositorySystem,
- toolchainManagerPrivate, plexusContainer, mojoExecutionScope,
runtimeInformation,
- artifactHandlerManager );
+ mavenSession, repositorySystem, null,
+ mavenRepositorySystem, plexusContainer, runtimeInformation );
}
}
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSettingsXmlFactory.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSettingsXmlFactory.java
index ee0329fcb..a1f636a0e 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSettingsXmlFactory.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSettingsXmlFactory.java
@@ -19,6 +19,9 @@ package org.apache.maven.internal.impl;
* under the License.
*/
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
@@ -36,6 +39,8 @@ import org.apache.maven.api.settings.Settings;
import org.apache.maven.settings.v4.SettingsXpp3Reader;
import org.apache.maven.settings.v4.SettingsXpp3Writer;
+@Named
+@Singleton
public class DefaultSettingsXmlFactory
implements SettingsXmlFactory
{
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultToolchainManager.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultToolchainManager.java
index f40de6585..5348c4841 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultToolchainManager.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultToolchainManager.java
@@ -19,6 +19,10 @@ package org.apache.maven.internal.impl;
* under the License.
*/
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@@ -33,10 +37,13 @@ import
org.apache.maven.toolchain.DefaultToolchainManagerPrivate;
import org.apache.maven.toolchain.MisconfiguredToolchainException;
import org.apache.maven.toolchain.ToolchainPrivate;
+@Named
+@Singleton
public class DefaultToolchainManager implements ToolchainManager
{
private final DefaultToolchainManagerPrivate toolchainManagerPrivate;
+ @Inject
public DefaultToolchainManager( DefaultToolchainManagerPrivate
toolchainManagerPrivate )
{
this.toolchainManagerPrivate = toolchainManagerPrivate;
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultToolchainsXmlFactory.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultToolchainsXmlFactory.java
index 33e6db4a7..21b499c79 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultToolchainsXmlFactory.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultToolchainsXmlFactory.java
@@ -19,6 +19,9 @@ package org.apache.maven.internal.impl;
* under the License.
*/
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
@@ -36,6 +39,9 @@ import org.apache.maven.api.toolchain.PersistedToolchains;
import org.apache.maven.toolchain.v4.MavenToolchainsXpp3Reader;
import org.apache.maven.toolchain.v4.MavenToolchainsXpp3Writer;
+
+@Named
+@Singleton
public class DefaultToolchainsXmlFactory
implements ToolchainsXmlFactory
{
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultTypeRegistry.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultTypeRegistry.java
index c302752f8..691e64588 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultTypeRegistry.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultTypeRegistry.java
@@ -19,6 +19,10 @@ package org.apache.maven.internal.impl;
* under the License.
*/
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import org.apache.maven.api.Type;
import org.apache.maven.api.annotations.Nonnull;
import org.apache.maven.api.services.TypeRegistry;
@@ -27,11 +31,14 @@ import
org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import static org.apache.maven.internal.impl.Utils.nonNull;
+@Named
+@Singleton
public class DefaultTypeRegistry implements TypeRegistry
{
private final ArtifactHandlerManager manager;
+ @Inject
public DefaultTypeRegistry( ArtifactHandlerManager manager )
{
this.manager = nonNull( manager, "artifactHandlerManager" );
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultVersionParser.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultVersionParser.java
index 03762c997..9ea1cb209 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultVersionParser.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultVersionParser.java
@@ -19,6 +19,9 @@ package org.apache.maven.internal.impl;
* under the License.
*/
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.util.Objects;
import java.util.regex.Pattern;
@@ -33,6 +36,8 @@ import
org.apache.maven.artifact.versioning.InvalidVersionSpecificationException
import static
org.apache.maven.artifact.versioning.VersionRange.createFromVersionSpec;
import static org.apache.maven.internal.impl.Utils.nonNull;
+@Named
+@Singleton
public class DefaultVersionParser implements VersionParser
{
private static final String SNAPSHOT = "SNAPSHOT";
diff --git
a/maven-core/src/main/java/org/apache/maven/session/scope/internal/SessionScopeModule.java
b/maven-core/src/main/java/org/apache/maven/session/scope/internal/SessionScopeModule.java
index ba93ad919..650fd512d 100644
---
a/maven-core/src/main/java/org/apache/maven/session/scope/internal/SessionScopeModule.java
+++
b/maven-core/src/main/java/org/apache/maven/session/scope/internal/SessionScopeModule.java
@@ -25,6 +25,7 @@ import javax.inject.Named;
import org.apache.maven.SessionScoped;
import org.apache.maven.api.Session;
import org.apache.maven.execution.MavenSession;
+import org.apache.maven.internal.impl.DefaultSession;
import org.codehaus.plexus.PlexusContainer;
import
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
@@ -64,5 +65,6 @@ public class SessionScopeModule
bind( MavenSession.class ).toProvider(
SessionScope.seededKeyProvider() ).in( scope );
bind( Session.class ).toProvider( SessionScope.seededKeyProvider()
).in( scope );
+ bind( DefaultSession.class ).toProvider(
SessionScope.seededKeyProvider() ).in( scope );
}
}
diff --git
a/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java
b/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java
index e8327783d..4bd6acb35 100644
---
a/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java
+++
b/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java
@@ -19,16 +19,16 @@ package org.apache.maven;
* under the License.
*/
+import javax.inject.Inject;
+
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collections;
import java.util.List;
import java.util.Properties;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.InvalidRepositoryException;
-import org.apache.maven.artifact.handler.manager.DefaultArtifactHandlerManager;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.execution.DefaultMavenExecutionRequest;
import org.apache.maven.execution.DefaultMavenExecutionResult;
@@ -47,16 +47,14 @@ import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.repository.RepositorySystem;
import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
-import org.codehaus.plexus.testing.PlexusTest;
import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.testing.PlexusTest;
import org.codehaus.plexus.util.FileUtils;
import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.internal.impl.DefaultRepositorySystem;
import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
import org.eclipse.aether.repository.LocalRepository;
-import javax.inject.Inject;
-
import static org.codehaus.plexus.testing.PlexusExtension.getBasedir;
@PlexusTest
@@ -74,7 +72,8 @@ public abstract class AbstractCoreMavenComponentTestCase
abstract protected String getProjectsDirectory();
- protected PlexusContainer getContainer() {
+ protected PlexusContainer getContainer()
+ {
return container;
}
@@ -144,10 +143,10 @@ public abstract class AbstractCoreMavenComponentTestCase
projects.add( project );
if ( includeModules )
{
- for( String module : project.getModules() )
+ for ( String module : project.getModules() )
{
File modulePom = new File( pom.getParentFile(), module );
- if( modulePom.isDirectory() )
+ if ( modulePom.isDirectory() )
{
modulePom = new File( modulePom, "pom.xml" );
}
@@ -171,8 +170,7 @@ public abstract class AbstractCoreMavenComponentTestCase
session.setProjects( projects );
session.setAllProjects( session.getProjects() );
session.setSession( new DefaultSession( session, new
DefaultRepositorySystem(), null,
- null, null, null, null, null,
- null, new DefaultArtifactHandlerManager(
Collections.emptyMap() ) ) );
+ null, null, null ) );
return session;
}
@@ -245,7 +243,7 @@ public abstract class AbstractCoreMavenComponentTestCase
model.setGroupId( groupId );
model.setArtifactId( artifactId );
model.setVersion( version );
- model.setBuild( new Build() );
+ model.setBuild( new Build() );
project = new MavenProject( model );
}
@@ -271,20 +269,23 @@ public abstract class AbstractCoreMavenComponentTestCase
//
public ProjectBuilder addDependency( String groupId, String
artifactId, String version, String scope )
{
- return addDependency( groupId, artifactId, version, scope,
(Exclusion)null );
+ return addDependency( groupId, artifactId, version, scope,
(Exclusion) null );
}
- public ProjectBuilder addDependency( String groupId, String
artifactId, String version, String scope, Exclusion exclusion )
+ public ProjectBuilder addDependency( String groupId, String
artifactId, String version, String scope,
+ Exclusion exclusion )
{
return addDependency( groupId, artifactId, version, scope, null,
exclusion );
}
- public ProjectBuilder addDependency( String groupId, String
artifactId, String version, String scope, String systemPath )
+ public ProjectBuilder addDependency( String groupId, String
artifactId, String version, String scope,
+ String systemPath )
{
return addDependency( groupId, artifactId, version, scope,
systemPath, null );
}
- public ProjectBuilder addDependency( String groupId, String
artifactId, String version, String scope, String systemPath, Exclusion
exclusion )
+ public ProjectBuilder addDependency( String groupId, String
artifactId, String version, String scope,
+ String systemPath, Exclusion
exclusion )
{
Dependency d = new Dependency();
d.setGroupId( groupId );
@@ -292,7 +293,7 @@ public abstract class AbstractCoreMavenComponentTestCase
d.setVersion( version );
d.setScope( scope );
- if ( systemPath != null && scope.equals( Artifact.SCOPE_SYSTEM ) )
+ if ( systemPath != null && scope.equals( Artifact.SCOPE_SYSTEM ) )
{
d.setSystemPath( systemPath );
}
diff --git
a/maven-core/src/test/java/org/apache/maven/internal/impl/TestApi.java
b/maven-core/src/test/java/org/apache/maven/internal/impl/TestApi.java
index f707b5439..b39cc21a8 100644
--- a/maven-core/src/test/java/org/apache/maven/internal/impl/TestApi.java
+++ b/maven-core/src/test/java/org/apache/maven/internal/impl/TestApi.java
@@ -25,20 +25,21 @@ import java.nio.file.Path;
import java.util.Collections;
import java.util.Optional;
+import org.apache.maven.api.Artifact;
import org.apache.maven.api.ArtifactCoordinate;
-import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
-import org.apache.maven.execution.DefaultMavenExecutionRequest;
-import org.apache.maven.execution.MavenSession;
+import org.apache.maven.api.Node;
import org.apache.maven.api.Project;
import org.apache.maven.api.Session;
-import org.apache.maven.api.Artifact;
-import org.apache.maven.api.Node;
import org.apache.maven.api.services.ProjectBuilder;
import org.apache.maven.api.services.ProjectBuilderRequest;
+import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.bridge.MavenRepositorySystem;
+import org.apache.maven.execution.DefaultMavenExecutionRequest;
+import org.apache.maven.execution.MavenSession;
import org.apache.maven.execution.scope.internal.MojoExecutionScope;
import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
import org.apache.maven.rtinfo.RuntimeInformation;
+import org.apache.maven.session.scope.internal.SessionScope;
import org.apache.maven.toolchain.DefaultToolchainManagerPrivate;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.testing.PlexusTest;
@@ -49,9 +50,7 @@ import org.eclipse.aether.repository.RemoteRepository;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNotSame;
import static org.junit.jupiter.api.Assertions.assertTrue;
@PlexusTest
@@ -84,6 +83,9 @@ public class TestApi
@Inject
ArtifactHandlerManager artifactHandlerManager;
+ @Inject
+ SessionScope sessionScope;
+
@BeforeEach
void setup()
{
@@ -91,10 +93,10 @@ public class TestApi
DefaultMavenExecutionRequest mer = new DefaultMavenExecutionRequest();
MavenSession ms = new MavenSession( null, rss, mer, null );
DefaultSession session = new DefaultSession( ms, repositorySystem,
- Collections.emptyList(),
projectBuilder,
- mavenRepositorySystem,
toolchainManagerPrivate,
- plexusContainer,
mojoExecutionScope, runtimeInformation,
- artifactHandlerManager );
+ Collections.emptyList(),
+ mavenRepositorySystem,
+ plexusContainer,
+ runtimeInformation );
DefaultLocalRepository localRepository = new DefaultLocalRepository(
new LocalRepository( "target/test-classes/apiv4-repo" ) );
org.apache.maven.api.RemoteRepository remoteRepository =
session.getRemoteRepository(
@@ -103,14 +105,18 @@ public class TestApi
this.session = session
.withLocalRepository( localRepository )
.withRemoteRepositories( Collections.singletonList(
remoteRepository ) );
+
+ sessionScope.enter();
+ sessionScope.seed( DefaultSession.class, (DefaultSession) this.session
);
}
@Test
void testCreateAndResolveArtifact() throws Exception
{
- ArtifactCoordinate coord = session.createArtifactCoordinate(
"org.codehaus.plexus", "plexus-utils", "1.4.5", "pom" );
+ ArtifactCoordinate coord =
+ session.createArtifactCoordinate( "org.codehaus.plexus",
"plexus-utils", "1.4.5", "pom" );
- Artifact resolved = session.resolveArtifact( coord );
+ Artifact resolved = session.resolveArtifact( coord );
Optional<Path> op = session.getArtifactPath( resolved );
assertTrue( op.isPresent() );
assertNotNull( op.get() );
@@ -121,7 +127,8 @@ public class TestApi
.getProject().get();
assertNotNull( project );
- Artifact artifact = session.createArtifact( "org.codehaus.plexus",
"plexus-container-default", "1.0-alpha-32", "jar" );
+ Artifact artifact =
+ session.createArtifact( "org.codehaus.plexus",
"plexus-container-default", "1.0-alpha-32", "jar" );
Node root = session.collectDependencies( artifact );
assertNotNull( root );
}