Blob Blame History Raw
From 5b975bc4bb0d61c686fb3f0fbdbf4a8f6d23e26c Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizdebsk@redhat.com>
Date: Wed, 11 Sep 2013 18:31:04 +0200
Subject: [PATCH 1/2] Add support for XMvn workspace reader

---
 .../org/eclipse/aether/internal/ant/AntRepoSys.java | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/src/main/java/org/eclipse/aether/internal/ant/AntRepoSys.java b/src/main/java/org/eclipse/aether/internal/ant/AntRepoSys.java
index 76cc927..ee1d444 100644
--- a/src/main/java/org/eclipse/aether/internal/ant/AntRepoSys.java
+++ b/src/main/java/org/eclipse/aether/internal/ant/AntRepoSys.java
@@ -15,6 +15,7 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStreamReader;
+import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -84,6 +85,7 @@ import org.eclipse.aether.repository.AuthenticationSelector;
 import org.eclipse.aether.repository.LocalRepositoryManager;
 import org.eclipse.aether.repository.MirrorSelector;
 import org.eclipse.aether.repository.ProxySelector;
+import org.eclipse.aether.repository.WorkspaceReader;
 import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
 import org.eclipse.aether.spi.connector.transport.TransporterFactory;
 import org.eclipse.aether.spi.log.Logger;
@@ -91,6 +93,7 @@ import org.eclipse.aether.transport.classpath.ClasspathTransporterFactory;
 import org.eclipse.aether.transport.file.FileTransporterFactory;
 import org.eclipse.aether.transport.http.HttpTransporterFactory;
 import org.eclipse.aether.util.repository.AuthenticationBuilder;
+import org.eclipse.aether.util.repository.ChainedWorkspaceReader;
 import org.eclipse.aether.util.repository.ConservativeAuthenticationSelector;
 import org.eclipse.aether.util.repository.DefaultAuthenticationSelector;
 import org.eclipse.aether.util.repository.DefaultMirrorSelector;
@@ -234,6 +237,24 @@ public class AntRepoSys
 
         session.setWorkspaceReader( ProjectWorkspaceReader.getInstance() );
 
+        if ( project.getProperty( "xmvn.ant.enable" ) != null )
+        {
+            try
+            {
+                Class containerClass = Class.forName( "org.codehaus.plexus.DefaultPlexusContainer" );
+                Object container = containerClass.newInstance();
+                Method lookupMethod = containerClass.getMethod( "lookup", Class.class, String.class );
+                Object xmvnReader = lookupMethod.invoke( container, WorkspaceReader.class, "ide" );
+                WorkspaceReader chainReader = new ChainedWorkspaceReader( session.getWorkspaceReader(), (WorkspaceReader) xmvnReader);
+                session.setWorkspaceReader( chainReader );
+            }
+            catch ( Exception e )
+            {
+                project.log( "Failed to launch XMvn: " + e.getMessage(), e, Project.MSG_WARN );
+                e.printStackTrace();
+            }
+        }
+
         return session;
     }
 
-- 
2.1.0