This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch mvn4
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/mvn4 by this push:
     new e13ad87  Switch a few core plugins to the new api
e13ad87 is described below

commit e13ad87ad25b45b7f0ec5f060bf3063feb35160b
Author: Guillaume Nodet <[email protected]>
AuthorDate: Thu Feb 24 17:00:55 2022 +0100

    Switch a few core plugins to the new api
---
 .../main/java/org/apache/maven/api/Artifact.java   |  35 ++++--
 .../main/java/org/apache/maven/api/Dependency.java |   1 +
 .../java/org/apache/maven/api/MojoExecution.java   |   6 ++
 .../src/main/java/org/apache/maven/api/Node.java   |  13 +--
 .../main/java/org/apache/maven/api/Project.java    |   4 +
 .../main/java/org/apache/maven/api/Toolchain.java  |  10 ++
 .../api/services/ArtifactDeployerRequest.java      |  22 +++-
 .../apache/maven/api/services/ProjectManager.java  |   7 +-
 .../maven/api/services/ToolchainManager.java       |  12 ++-
 ...Manager.java => ToolchainManagerException.java} |  22 ++--
 maven-core-impl/pom.xml                            |   2 +-
 .../org/apache/maven/impl/DefaultDependency.java   |   1 +
 .../java/org/apache/maven/impl/DefaultNode.java    |  13 +--
 .../java/org/apache/maven/impl/DefaultProject.java |   1 +
 .../java/org/apache/maven/impl/DefaultSession.java |  22 +++-
 .../apache/maven/impl/DefaultToolchainManager.java | 120 +++++++++++++++++++++
 .../test/java/org/apache/maven/impl/TestApi.java   |   7 +-
 maven-core/pom.xml                                 |   2 +-
 .../toolchain/DefaultToolchainManagerPrivate.java  |   9 +-
 .../project/DefaultMavenProjectBuilderTest.java    |   1 +
 maven-model/pom.xml                                |   9 ++
 maven-resolver-provider/pom.xml                    |   9 ++
 pom.xml                                            |  17 ++-
 23 files changed, 290 insertions(+), 55 deletions(-)

diff --git a/maven-core-api/src/main/java/org/apache/maven/api/Artifact.java 
b/maven-core-api/src/main/java/org/apache/maven/api/Artifact.java
index 6ef6856..9dcaaa2 100644
--- a/maven-core-api/src/main/java/org/apache/maven/api/Artifact.java
+++ b/maven-core-api/src/main/java/org/apache/maven/api/Artifact.java
@@ -25,6 +25,9 @@ import javax.annotation.concurrent.Immutable;
 import java.nio.file.Path;
 import java.util.Optional;
 
+/**
+ * TODO: split between Coordinates / AttachedArtifact / ResolvedArtifact
+ */
 @Immutable
 public interface Artifact
 {
@@ -46,32 +49,32 @@ public interface Artifact
     String getArtifactId();
 
     /**
-     * The version of the artifact.
+     * The classifier of the artifact.
      *
-     * @return The version.
+     * @return The classifier or an empty string if none, never {@code null}.
      */
     @Nonnull
-    String getVersion();
+    String getClassifier();
 
     /**
-     * The file-extension of the artifact.
+     * The version of the artifact.
      *
-     * @return The extension.
+     * @return The version.
      */
     @Nonnull
-    String getExtension();
+    String getVersion();
 
     /**
-     * The classifier of the artifact.
+     * The file extension of the artifact.
      *
-     * @return The classifier.
+     * @return The extension.
      */
     @Nonnull
-    String getClassifier();
+    String getExtension();
 
     /**
      * Gets the base version of this artifact, for example "1.0-SNAPSHOT". In 
contrast to the {@link #getVersion()}, the
-     * base version will always refer to the unresolved meta version.
+     * base version will always refer to the unresolved version.
      *
      * @return The base version, never {@code null}.
      */
@@ -94,4 +97,16 @@ public interface Artifact
     @Nonnull
     Optional<Path> getPath();
 
+    /**
+     * Unique id identifying this artifact
+     */
+    default String getId()
+    {
+        return getGroupId()
+                + ":" + getArtifactId()
+                + ":" + getExtension()
+                + ( getClassifier().isEmpty() ? "" : ":" + getClassifier() )
+                + ":" + getBaseVersion();
+    }
+
 }
diff --git a/maven-core-api/src/main/java/org/apache/maven/api/Dependency.java 
b/maven-core-api/src/main/java/org/apache/maven/api/Dependency.java
index 0e672f6..d0a966d 100644
--- a/maven-core-api/src/main/java/org/apache/maven/api/Dependency.java
+++ b/maven-core-api/src/main/java/org/apache/maven/api/Dependency.java
@@ -32,6 +32,7 @@ public interface Dependency
     Artifact getArtifact();
 
     // TODO: make that en enum ?
+    @Nonnull
     String getScope();
 
     @Nullable
diff --git 
a/maven-core-api/src/main/java/org/apache/maven/api/MojoExecution.java 
b/maven-core-api/src/main/java/org/apache/maven/api/MojoExecution.java
index 30574b9..cc0d621 100644
--- a/maven-core-api/src/main/java/org/apache/maven/api/MojoExecution.java
+++ b/maven-core-api/src/main/java/org/apache/maven/api/MojoExecution.java
@@ -27,4 +27,10 @@ public interface MojoExecution
 {
     @Nonnull
     Plugin getPlugin();
+
+    @Nonnull
+    String getExecutionId();
+
+    @Nonnull
+    String getGoal();
 }
diff --git a/maven-core-api/src/main/java/org/apache/maven/api/Node.java 
b/maven-core-api/src/main/java/org/apache/maven/api/Node.java
index 6b42a0a..e475268 100644
--- a/maven-core-api/src/main/java/org/apache/maven/api/Node.java
+++ b/maven-core-api/src/main/java/org/apache/maven/api/Node.java
@@ -22,14 +22,12 @@ package org.apache.maven.api;
 import javax.annotation.concurrent.Immutable;
 
 import java.util.List;
+import java.util.Optional;
 import java.util.function.Predicate;
 import java.util.stream.Stream;
 
 /**
  * Represents a dependency node within a Maven project's dependency collector.
- *
- * @author Pim Moerenhout
- * @since 0.12
  */
 @Immutable
 public interface Node
@@ -57,14 +55,9 @@ public interface Node
     List<Repository> getRemoteRepositories();
 
     /**
-     * @return true for an optional dependency.
-     */
-    Boolean getOptional();
-
-    /**
-     * @return The scope on the dependency.
+     * The repository where this artifact has been downloaded from.
      */
-    String getScope();
+    Optional<RemoteRepository> getRepository();
 
     /**
      * Traverses this node and potentially its children using the specified 
visitor.
diff --git a/maven-core-api/src/main/java/org/apache/maven/api/Project.java 
b/maven-core-api/src/main/java/org/apache/maven/api/Project.java
index 4d313e4..d8cb6f0 100644
--- a/maven-core-api/src/main/java/org/apache/maven/api/Project.java
+++ b/maven-core-api/src/main/java/org/apache/maven/api/Project.java
@@ -64,4 +64,8 @@ public interface Project
     @Nonnull
     List<Dependency> getManagedDependencies();
 
+    default String getId()
+    {
+        return getModel().getId();
+    }
 }
diff --git a/maven-core-api/src/main/java/org/apache/maven/api/Toolchain.java 
b/maven-core-api/src/main/java/org/apache/maven/api/Toolchain.java
index a31e5bc..51dcb3b 100644
--- a/maven-core-api/src/main/java/org/apache/maven/api/Toolchain.java
+++ b/maven-core-api/src/main/java/org/apache/maven/api/Toolchain.java
@@ -19,6 +19,8 @@ package org.apache.maven.api;
  * under the License.
  */
 
+import java.util.Map;
+
 /**
  * Toolchain interface.
  */
@@ -38,4 +40,12 @@ public interface Toolchain
      * @return file representing the tool executable, or null if the tool can 
not be found
      */
     String findTool( String toolName );
+
+    /**
+     * Let the toolchain decide if it matches requirements defined
+     * in the toolchain plugin configuration.
+     * @param requirements Map&lt;String, String&gt; key value pair, may not 
be {@code null}
+     * @return {@code true} if the requirements match, otherwise {@code false}
+     */
+    boolean matchesRequirements( Map<String, String> requirements );
 }
\ No newline at end of file
diff --git 
a/maven-core-api/src/main/java/org/apache/maven/api/services/ArtifactDeployerRequest.java
 
b/maven-core-api/src/main/java/org/apache/maven/api/services/ArtifactDeployerRequest.java
index f3363eb..f3d865b 100644
--- 
a/maven-core-api/src/main/java/org/apache/maven/api/services/ArtifactDeployerRequest.java
+++ 
b/maven-core-api/src/main/java/org/apache/maven/api/services/ArtifactDeployerRequest.java
@@ -42,6 +42,8 @@ public interface ArtifactDeployerRequest
     @Nonnull
     Collection<Artifact> getArtifacts();
 
+    int getRetryFailedDeploymentCount();
+
     @Nonnull
     static ArtifactDeployerRequestBuilder builder()
     {
@@ -63,6 +65,7 @@ public interface ArtifactDeployerRequest
         Session session;
         RemoteRepository repository;
         Collection<Artifact> artifacts;
+        int retryFailedDeploymentCount;
 
         @Nonnull
         public ArtifactDeployerRequestBuilder session( Session session )
@@ -84,10 +87,16 @@ public interface ArtifactDeployerRequest
             return this;
         }
 
+        public ArtifactDeployerRequestBuilder retryFailedDeploymentCount( int 
retryFailedDeploymentCount )
+        {
+            this.retryFailedDeploymentCount = retryFailedDeploymentCount;
+            return this;
+        }
+
         @Nonnull
         public ArtifactDeployerRequest build()
         {
-            return new DefaultArtifactDeployerRequest( session, repository, 
artifacts );
+            return new DefaultArtifactDeployerRequest( session, repository, 
artifacts, retryFailedDeploymentCount );
         }
 
         private static class DefaultArtifactDeployerRequest extends BaseRequest
@@ -96,14 +105,17 @@ public interface ArtifactDeployerRequest
 
             private final RemoteRepository repository;
             private final Collection<Artifact> artifacts;
+            private final int retryFailedDeploymentCount;
 
             DefaultArtifactDeployerRequest( @Nonnull Session session,
                                             @Nonnull RemoteRepository 
repository,
-                                            @Nonnull Collection<Artifact> 
artifacts )
+                                            @Nonnull Collection<Artifact> 
artifacts,
+                                            int retryFailedDeploymentCount )
             {
                 super( session );
                 this.repository = requireNonNull( repository, "repository" );
                 this.artifacts = unmodifiable( artifacts, "artifacts" );
+                this.retryFailedDeploymentCount = retryFailedDeploymentCount;
             }
 
             @Nonnull
@@ -119,6 +131,12 @@ public interface ArtifactDeployerRequest
             {
                 return artifacts;
             }
+
+            @Override
+            public int getRetryFailedDeploymentCount()
+            {
+                return retryFailedDeploymentCount;
+            }
         }
 
     }
diff --git 
a/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectManager.java
 
b/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectManager.java
index a8456c6..8b6e96b 100644
--- 
a/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectManager.java
+++ 
b/maven-core-api/src/main/java/org/apache/maven/api/services/ProjectManager.java
@@ -48,9 +48,12 @@ public interface ProjectManager extends Service
     @Nonnull
     Collection<Artifact> getAttachedArtifacts( Project project );
 
-    void attachArtifact( Project project, String type, Path path );
+    default void attachArtifact( Project project, String type, Path path )
+    {
+        attachArtifact( project, type, "", path );
+    }
 
-    void attachArtifact( Project project, String trim, String trim1, Path path 
);
+    void attachArtifact( Project project, String type, String classifier, Path 
path );
 
     List<String> getCompileSourceRoots( Project project );
 
diff --git 
a/maven-core-api/src/main/java/org/apache/maven/api/services/ToolchainManager.java
 
b/maven-core-api/src/main/java/org/apache/maven/api/services/ToolchainManager.java
index b92ef4f..2740477 100644
--- 
a/maven-core-api/src/main/java/org/apache/maven/api/services/ToolchainManager.java
+++ 
b/maven-core-api/src/main/java/org/apache/maven/api/services/ToolchainManager.java
@@ -27,7 +27,15 @@ import org.apache.maven.api.Toolchain;
 
 public interface ToolchainManager extends Service
 {
-    List<Toolchain> getToolchains( Session session, String jdk, Map<String, 
String> jdkToolchain );
+    List<Toolchain> getToolchains( Session session, String type, Map<String, 
String> requirements )
+            throws ToolchainManagerException;
 
-    Toolchain getToolchainFromBuildContext( Session session, String jdk );
+    Toolchain getToolchainFromBuildContext( Session session, String type )
+            throws ToolchainManagerException;
+
+    List<Toolchain> getToolchainsForType( Session session, String type )
+            throws ToolchainManagerException;
+
+    void storeToolchainToBuildContext( Session session, Toolchain toolchain )
+            throws ToolchainManagerException;
 }
diff --git 
a/maven-core-api/src/main/java/org/apache/maven/api/services/ToolchainManager.java
 
b/maven-core-api/src/main/java/org/apache/maven/api/services/ToolchainManagerException.java
similarity index 71%
copy from 
maven-core-api/src/main/java/org/apache/maven/api/services/ToolchainManager.java
copy to 
maven-core-api/src/main/java/org/apache/maven/api/services/ToolchainManagerException.java
index b92ef4f..727e66d 100644
--- 
a/maven-core-api/src/main/java/org/apache/maven/api/services/ToolchainManager.java
+++ 
b/maven-core-api/src/main/java/org/apache/maven/api/services/ToolchainManagerException.java
@@ -19,15 +19,19 @@ package org.apache.maven.api.services;
  * under the License.
  */
 
-import java.util.List;
-import java.util.Map;
-
-import org.apache.maven.api.Session;
-import org.apache.maven.api.Toolchain;
-
-public interface ToolchainManager extends Service
+/**
+ * The Exception class in case a resolving does not work.
+ */
+public class ToolchainManagerException
+    extends MavenException
 {
-    List<Toolchain> getToolchains( Session session, String jdk, Map<String, 
String> jdkToolchain );
+    /**
+     * @param message The message to give.
+     * @param e The {@link Exception}.
+     */
+    public ToolchainManagerException( String message, Exception e )
+    {
+        super( message, e );
+    }
 
-    Toolchain getToolchainFromBuildContext( Session session, String jdk );
 }
diff --git a/maven-core-impl/pom.xml b/maven-core-impl/pom.xml
index 8fc09bc..65551b4 100644
--- a/maven-core-impl/pom.xml
+++ b/maven-core-impl/pom.xml
@@ -26,7 +26,7 @@
     <version>4.0.0-alpha-1-SNAPSHOT</version>
   </parent>
 
-  <artifactId>maven-core-api-impl</artifactId>
+  <artifactId>maven-core-impl</artifactId>
   <name>Apache Maven Core API Implementation</name>
 
   <dependencies>
diff --git 
a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultDependency.java 
b/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultDependency.java
index 27c76c4..5822d8c 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultDependency.java
+++ b/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultDependency.java
@@ -53,6 +53,7 @@ public class DefaultDependency implements Dependency
         return session.getArtifact( dependency.getArtifact() );
     }
 
+    @Nonnull
     @Override
     public String getScope()
     {
diff --git 
a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultNode.java 
b/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultNode.java
index 6d97e94..85d95b4 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultNode.java
+++ b/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultNode.java
@@ -20,12 +20,14 @@ package org.apache.maven.impl;
  */
 
 import java.util.List;
+import java.util.Optional;
 import java.util.function.Predicate;
 
 import org.apache.maven.api.Artifact;
 import org.apache.maven.api.Dependency;
 import org.apache.maven.api.Node;
 import org.apache.maven.api.NodeVisitor;
+import org.apache.maven.api.RemoteRepository;
 import org.apache.maven.api.Repository;
 
 public class DefaultNode implements Node
@@ -66,15 +68,10 @@ public class DefaultNode implements Node
     }
 
     @Override
-    public Boolean getOptional()
+    public Optional<RemoteRepository> getRepository()
     {
-        return node.getDependency().getOptional();
-    }
-
-    @Override
-    public String getScope()
-    {
-        return node.getDependency().getScope();
+        // TODO
+        throw new UnsupportedOperationException( "Not implemented yet" );
     }
 
     @Override
diff --git 
a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultProject.java 
b/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultProject.java
index e9b90df..bc0de16 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultProject.java
+++ b/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultProject.java
@@ -129,6 +129,7 @@ public class DefaultProject implements Project
                         dependency.getVersion(), dependency.getType() );
             }
 
+            @Nonnull
             @Override
             public String getScope()
             {
diff --git 
a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultSession.java 
b/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultSession.java
index 5edf26c..291ea13 100644
--- a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultSession.java
+++ b/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultSession.java
@@ -48,8 +48,10 @@ import org.apache.maven.api.Node;
 import org.apache.maven.api.Project;
 import org.apache.maven.api.LocalRepository;
 import org.apache.maven.api.RemoteRepository;
+import org.apache.maven.api.services.ToolchainManager;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.bridge.MavenRepositorySystem;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.api.services.ArtifactResolver;
 import org.apache.maven.api.services.ArtifactDeployer;
@@ -62,6 +64,7 @@ import org.apache.maven.api.services.ProjectBuilder;
 import org.apache.maven.api.services.ProjectDeployer;
 import org.apache.maven.api.services.ProjectInstaller;
 import org.apache.maven.settings.Settings;
+import org.apache.maven.toolchain.DefaultToolchainManagerPrivate;
 import org.eclipse.aether.DefaultRepositorySystemSession;
 import org.eclipse.aether.RepositorySystem;
 import org.eclipse.aether.RepositorySystemSession;
@@ -78,6 +81,7 @@ public class DefaultSession implements Session
     private final List<RemoteRepository> repositories;
     private final org.apache.maven.project.ProjectBuilder projectBuilder;
     private final MavenRepositorySystem mavenRepositorySystem;
+    private final DefaultToolchainManagerPrivate toolchainManagerPrivate;
     private LocalRepositoryProvider localRepositoryProvider;
     private final List<Listener> listeners = new CopyOnWriteArrayList<>();
 
@@ -97,7 +101,8 @@ public class DefaultSession implements Session
                            @Nonnull LocalRepositoryManagerFactory 
localRepositoryManagerFactory,
                            @Nonnull List<RemoteRepository> repositories,
                            @Nonnull org.apache.maven.project.ProjectBuilder 
projectBuilder,
-                           @Nonnull MavenRepositorySystem 
mavenRepositorySystem )
+                           @Nonnull MavenRepositorySystem 
mavenRepositorySystem,
+                           @Nonnull DefaultToolchainManagerPrivate 
toolchainManagerPrivate )
     {
         this.session = Objects.requireNonNull( session );
         this.repositorySystem = Objects.requireNonNull( repositorySystem );
@@ -105,6 +110,12 @@ public class DefaultSession implements Session
         this.repositories = Objects.requireNonNull( repositories );
         this.projectBuilder = projectBuilder;
         this.mavenRepositorySystem = mavenRepositorySystem;
+        this.toolchainManagerPrivate = toolchainManagerPrivate;
+    }
+
+    MavenSession getMavenSession()
+    {
+        return null;
     }
 
     @Nonnull
@@ -195,7 +206,7 @@ public class DefaultSession implements Session
                     .setLocalRepositoryManager( localRepositoryManager );
 
             return new DefaultSession( newSession, repositorySystem, 
localRepositoryManagerFactory,
-                                       repositories, projectBuilder, 
mavenRepositorySystem );
+                                       repositories, projectBuilder, 
mavenRepositorySystem, toolchainManagerPrivate );
         }
         catch ( NoLocalRepositoryManagerException e )
         {
@@ -209,7 +220,7 @@ public class DefaultSession implements Session
     public Session withRemoteRepositories( @Nonnull List<RemoteRepository> 
repositories )
     {
         return new DefaultSession( session, repositorySystem, 
localRepositoryManagerFactory,
-                                   repositories, projectBuilder, 
mavenRepositorySystem );
+                                   repositories, projectBuilder, 
mavenRepositorySystem, toolchainManagerPrivate );
     }
 
     @Nonnull
@@ -265,6 +276,10 @@ public class DefaultSession implements Session
         {
             return (T) new DefaultRepositoryFactory( repositorySystem );
         }
+        else if ( clazz == ToolchainManager.class )
+        {
+            return (T) new DefaultToolchainManager( toolchainManagerPrivate );
+        }
         throw new NoSuchElementException( clazz.getName() );
     }
 
@@ -478,4 +493,5 @@ public class DefaultSession implements Session
     {
         return Collections.unmodifiableCollection( listeners );
     }
+
 }
diff --git 
a/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultToolchainManager.java
 
b/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultToolchainManager.java
new file mode 100644
index 0000000..a8912f7
--- /dev/null
+++ 
b/maven-core-impl/src/main/java/org/apache/maven/impl/DefaultToolchainManager.java
@@ -0,0 +1,120 @@
+package org.apache.maven.impl;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.maven.api.Session;
+import org.apache.maven.api.Toolchain;
+import org.apache.maven.api.services.ToolchainManager;
+import org.apache.maven.api.services.ToolchainManagerException;
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.toolchain.DefaultToolchainManagerPrivate;
+import org.apache.maven.toolchain.MisconfiguredToolchainException;
+import org.apache.maven.toolchain.ToolchainPrivate;
+
+public class DefaultToolchainManager implements ToolchainManager
+{
+    private final DefaultToolchainManagerPrivate toolchainManagerPrivate;
+
+    public DefaultToolchainManager( DefaultToolchainManagerPrivate 
toolchainManagerPrivate )
+    {
+        this.toolchainManagerPrivate = toolchainManagerPrivate;
+    }
+
+    @Override
+    public List<Toolchain> getToolchains( Session session, String type, 
Map<String, String> requirements )
+            throws ToolchainManagerException
+    {
+        MavenSession s = ( ( DefaultSession ) session ).getMavenSession();
+        List<org.apache.maven.toolchain.Toolchain> toolchains =
+                toolchainManagerPrivate.getToolchains( s, type, requirements );
+        return new MappedList<>( toolchains, this::toToolchain );
+    }
+
+    @Override
+    public Toolchain getToolchainFromBuildContext( Session session, String 
type )
+            throws ToolchainManagerException
+    {
+        MavenSession s = ( ( DefaultSession ) session ).getMavenSession();
+        return toToolchain( 
toolchainManagerPrivate.getToolchainFromBuildContext( type, s ) );
+    }
+
+    @Override
+    public List<Toolchain> getToolchainsForType( Session session, String type )
+            throws ToolchainManagerException
+    {
+        try
+        {
+            MavenSession s = ( (DefaultSession) session ).getMavenSession();
+            ToolchainPrivate[] toolchains = 
toolchainManagerPrivate.getToolchainsForType( type, s );
+            return new MappedList<>( Arrays.asList( toolchains ), 
this::toToolchain );
+        }
+        catch ( MisconfiguredToolchainException e )
+        {
+            throw new ToolchainManagerException( "Unable to get toochains for 
type " + type, e );
+        }
+    }
+
+    @Override
+    public void storeToolchainToBuildContext( Session session, Toolchain 
toolchain )
+            throws ToolchainManagerException
+    {
+        MavenSession s = ( ( DefaultSession ) session ).getMavenSession();
+        org.apache.maven.toolchain.ToolchainPrivate tc =
+                (org.apache.maven.toolchain.ToolchainPrivate) ( 
(ToolchainWrapper) toolchain ).toolchain;
+        toolchainManagerPrivate.storeToolchainToBuildContext( tc, s );
+    }
+
+    private Toolchain toToolchain( org.apache.maven.toolchain.Toolchain 
toolchain )
+    {
+        return new ToolchainWrapper( toolchain );
+    }
+
+    private static class ToolchainWrapper implements Toolchain
+    {
+        private final org.apache.maven.toolchain.Toolchain toolchain;
+
+        ToolchainWrapper( org.apache.maven.toolchain.Toolchain toolchain )
+        {
+            this.toolchain = toolchain;
+        }
+
+        @Override
+        public String getType()
+        {
+            return toolchain.getType();
+        }
+
+        @Override
+        public String findTool( String toolName )
+        {
+            return toolchain.findTool( toolName );
+        }
+
+        @Override
+        public boolean matchesRequirements( Map<String, String> requirements )
+        {
+            return ( (ToolchainPrivate) toolchain ).matchesRequirements( 
requirements );
+        }
+    }
+}
diff --git a/maven-core-impl/src/test/java/org/apache/maven/impl/TestApi.java 
b/maven-core-impl/src/test/java/org/apache/maven/impl/TestApi.java
index b91dcf0..dc8a383 100644
--- a/maven-core-impl/src/test/java/org/apache/maven/impl/TestApi.java
+++ b/maven-core-impl/src/test/java/org/apache/maven/impl/TestApi.java
@@ -33,6 +33,7 @@ import org.apache.maven.api.services.ProjectBuilderRequest;
 import org.apache.maven.api.services.RepositoryFactory;
 import org.apache.maven.bridge.MavenRepositorySystem;
 import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
+import org.apache.maven.toolchain.DefaultToolchainManagerPrivate;
 import org.codehaus.plexus.testing.PlexusTest;
 import org.eclipse.aether.RepositorySystem;
 import org.eclipse.aether.RepositorySystemSession;
@@ -65,12 +66,16 @@ public class TestApi
     @Inject
     MavenRepositorySystem mavenRepositorySystem;
 
+    @Inject
+    DefaultToolchainManagerPrivate toolchainManagerPrivate;
+
     @BeforeEach
     void setup()
     {
         RepositorySystemSession rss = MavenRepositorySystemUtils.newSession();
         DefaultSession session = new DefaultSession( rss, repositorySystem, 
localRepositoryManagerFactory,
-                                                     Collections.emptyList(), 
projectBuilder, mavenRepositorySystem );
+                                                     Collections.emptyList(), 
projectBuilder, mavenRepositorySystem,
+                                                     toolchainManagerPrivate );
         DefaultLocalRepository localRepository = new DefaultLocalRepository(
                 new LocalRepository( "target/repo" ) );
         org.apache.maven.api.RemoteRepository remoteRepository = 
session.getRemoteRepository(
diff --git a/maven-core/pom.xml b/maven-core/pom.xml
index f46fdeb..39f2e5f 100644
--- a/maven-core/pom.xml
+++ b/maven-core/pom.xml
@@ -219,7 +219,7 @@ under the License.
         <groupId>org.codehaus.modello</groupId>
         <artifactId>modello-maven-plugin</artifactId>
         <configuration>
-          <version>1.1.0</version>
+          <version>2.0.0</version>
           <!-- This is a required attribute and is intentionally left empty -->
           <models></models>
         </configuration>
diff --git 
a/maven-core/src/main/java/org/apache/maven/toolchain/DefaultToolchainManagerPrivate.java
 
b/maven-core/src/main/java/org/apache/maven/toolchain/DefaultToolchainManagerPrivate.java
index 8a90f18..732d3f6 100644
--- 
a/maven-core/src/main/java/org/apache/maven/toolchain/DefaultToolchainManagerPrivate.java
+++ 
b/maven-core/src/main/java/org/apache/maven/toolchain/DefaultToolchainManagerPrivate.java
@@ -22,6 +22,7 @@ package org.apache.maven.toolchain;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 import javax.inject.Inject;
 import javax.inject.Named;
@@ -77,13 +78,17 @@ public class DefaultToolchainManagerPrivate
             {
                 for ( ToolchainModel toolchainModel : availableToolchains )
                 {
-                    toRet.add( fact.createToolchain( toolchainModel ) );
+                    ToolchainPrivate tool = fact.createToolchain( 
toolchainModel );
+                    if ( tool != null && Objects.equals( type, tool.getType() 
) )
+                    {
+                        toRet.add( tool );
+                    }
                 }
             }
 
             // add default toolchain
             ToolchainPrivate tool = fact.createDefaultToolchain();
-            if ( tool != null )
+            if ( tool != null && Objects.equals( type, tool.getType() ) )
             {
                 toRet.add( tool );
             }
diff --git 
a/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
 
b/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
index 727f28d..108ef23 100644
--- 
a/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
+++ 
b/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
@@ -195,6 +195,7 @@ public class DefaultMavenProjectBuilderTest
         assertNotNull( result.getDependencyResolutionResult() );
     }
 
+    @Test
     public void testImportScopePomResolvesFromPropertyBasedRepository()
             throws Exception
     {
diff --git a/maven-model/pom.xml b/maven-model/pom.xml
index 83f4bf5..5fa60a5 100644
--- a/maven-model/pom.xml
+++ b/maven-model/pom.xml
@@ -69,6 +69,15 @@ under the License.
           </execution>
         </executions>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <excludes>
+            <exclude>**/package-info.java</exclude>
+          </excludes>
+        </configuration>
+      </plugin>
     </plugins>
   </build>
 
diff --git a/maven-resolver-provider/pom.xml b/maven-resolver-provider/pom.xml
index 0027e34..1227764 100644
--- a/maven-resolver-provider/pom.xml
+++ b/maven-resolver-provider/pom.xml
@@ -152,6 +152,15 @@ under the License.
         <groupId>org.eclipse.sisu</groupId>
         <artifactId>sisu-maven-plugin</artifactId>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <excludes>
+            <exclude>**/package-info.java</exclude>
+          </excludes>
+        </configuration>
+      </plugin>
     </plugins>
   </build>
 
diff --git a/pom.xml b/pom.xml
index f85830c..83a811b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,17 +53,18 @@ under the License.
     <commonsLangVersion>3.12.0</commonsLangVersion>
     <junitVersion>5.8.1</junitVersion>
     <mockitoVersion>3.2.0</mockitoVersion>
-    <plexusVersion>2.1.0</plexusVersion>
+    <plexusVersion>2.2.0-SNAPSHOT</plexusVersion>
     <plexusInterpolationVersion>1.26</plexusInterpolationVersion>
     <plexusUtilsVersion>3.3.0</plexusUtilsVersion>
     <guiceVersion>4.2.3</guiceVersion>
     <guavaVersion>30.1-jre</guavaVersion>
     <guavafailureaccessVersion>1.0.1</guavafailureaccessVersion>
     <sisuVersion>0.3.5</sisuVersion>
+    <sisuPluginVersion>0.9.0-SNAPSHOT</sisuPluginVersion>
     <wagonVersion>3.5.2-SNAPSHOT</wagonVersion>
     <securityDispatcherVersion>2.0</securityDispatcherVersion>
     <cipherVersion>2.0</cipherVersion>
-    <modelloVersion>1.11</modelloVersion>
+    <modelloVersion>2.0.0</modelloVersion>
     <jxpathVersion>1.3</jxpathVersion>
     <resolverVersion>1.8.0-SNAPSHOT</resolverVersion>
     <slf4jVersion>1.7.32</slf4jVersion>
@@ -474,6 +475,14 @@ under the License.
       <plugins>
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-remote-resources-plugin</artifactId>
+          <version>1.7.1-SNAPSHOT</version>
+          <configuration>
+            <useProjectsHash>true</useProjectsHash>
+          </configuration>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-checkstyle-plugin</artifactId>
           <version>3.1.2</version>
           <dependencies>
@@ -505,7 +514,7 @@ under the License.
         <plugin>
           <groupId>org.eclipse.sisu</groupId>
           <artifactId>sisu-maven-plugin</artifactId>
-          <version>${sisuVersion}</version>
+          <version>${sisuPluginVersion}</version>
           <executions>
             <execution>
               <goals>
@@ -596,7 +605,7 @@ under the License.
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>animal-sniffer-maven-plugin</artifactId>
-        <version>1.20</version>
+        <version>1.21</version>
         <configuration>
           <signature>
             <groupId>org.codehaus.mojo.signature</groupId>

Reply via email to