6d9095
From c9362d3f23f950bb6987c63c67b06528de3ce100 Mon Sep 17 00:00:00 2001
6d9095
From: Mikolaj Izdebski <mizdebsk@redhat.com>
6d9095
Date: Thu, 23 Jan 2020 12:50:42 +0100
6d9095
Subject: [PATCH] Initial PoC of XMvn toolchain manager
6d9095
6d9095
---
6d9095
 .../aether/XMvnMavenLifecycleParticipant.java | 38 +++++++++++++++++++
6d9095
 1 file changed, 38 insertions(+)
6d9095
6d9095
diff --git a/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMavenLifecycleParticipant.java b/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMavenLifecycleParticipant.java
6d9095
index 0e360488..ddd6151b 100644
6d9095
--- a/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMavenLifecycleParticipant.java
6d9095
+++ b/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMavenLifecycleParticipant.java
6d9095
@@ -15,10 +15,15 @@
6d9095
  */
6d9095
 package org.fedoraproject.xmvn.connector.aether;
6d9095
 
6d9095
+import java.util.Collections;
6d9095
+
6d9095
 import org.apache.maven.AbstractMavenLifecycleParticipant;
6d9095
 import org.apache.maven.MavenExecutionException;
6d9095
 import org.apache.maven.execution.MavenExecutionRequest;
6d9095
 import org.apache.maven.execution.MavenSession;
6d9095
+import org.apache.maven.project.MavenProject;
6d9095
+import org.apache.maven.toolchain.MisconfiguredToolchainException;
6d9095
+import org.apache.maven.toolchain.ToolchainManagerPrivate;
6d9095
 import org.codehaus.plexus.component.annotations.Component;
6d9095
 import org.codehaus.plexus.component.annotations.Requirement;
6d9095
 import org.codehaus.plexus.logging.Logger;
6d9095
@@ -42,6 +47,9 @@ public class XMvnMavenLifecycleParticipant
6d9095
     @Requirement( role = XMvnMojoExecutionListener.class )
6d9095
     private XMvnMojoExecutionListener mojoExecutionListener;
6d9095
 
6d9095
+    @Requirement
6d9095
+    private ToolchainManagerPrivate toolchainManager;
6d9095
+
6d9095
     @Override
6d9095
     public void afterSessionStart( MavenSession session )
6d9095
         throws MavenExecutionException
6d9095
@@ -61,4 +69,34 @@ public class XMvnMavenLifecycleParticipant
6d9095
         chainedListener.addExecutionListener( reportGenerator );
6d9095
         request.setExecutionListener( chainedListener );
6d9095
     }
6d9095
+
6d9095
+    @Override
6d9095
+    public void afterProjectsRead( MavenSession session )
6d9095
+        throws MavenExecutionException
6d9095
+    {
6d9095
+        MavenProject currentProject = session.getCurrentProject();
6d9095
+
6d9095
+        try
6d9095
+        {
6d9095
+            for ( var toolchain : toolchainManager.getToolchainsForType( "jdk", session ) )
6d9095
+            {
6d9095
+                if ( toolchain.matchesRequirements( Collections.singletonMap( "xmvn", "xmvn" ) ) )
6d9095
+                {
6d9095
+                    for ( var project : session.getAllProjects() )
6d9095
+                    {
6d9095
+                        session.setCurrentProject( project );
6d9095
+                        toolchainManager.storeToolchainToBuildContext( toolchain, session );
6d9095
+                    }
6d9095
+                }
6d9095
+            }
6d9095
+        }
6d9095
+        catch ( MisconfiguredToolchainException e )
6d9095
+        {
6d9095
+            throw new MavenExecutionException( "Unable to configure toolchains", e );
6d9095
+        }
6d9095
+        finally
6d9095
+        {
6d9095
+            session.setCurrentProject( currentProject );
6d9095
+        }
6d9095
+    }
6d9095
 }
6d9095
-- 
6d9095
2.21.0
6d9095