From 59f7850fd2cde1c5af1aaa6f2a8a50585e490ff8 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Wed, 11 Sep 2013 18:31:04 +0200 Subject: [PATCH] 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; } -- 1.9.0