Blame SOURCES/0001-Initial-PoC-of-XMvn-toolchain-manager.patch

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