You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mk...@apache.org on 2007/11/21 18:49:22 UTC

svn commit: r597160 - in /maven/shared/trunk/maven-toolchain: ./ src/main/java/org/apache/maven/toolchain/ src/main/java/org/apache/maven/toolchain/java/

Author: mkleint
Date: Wed Nov 21 09:49:21 2007
New Revision: 597160

URL: http://svn.apache.org/viewvc?rev=597160&view=rev
Log:
rewrite toolchains to use MavenSession plugin context instead of build-context artifact.

Modified:
    maven/shared/trunk/maven-toolchain/pom.xml
    maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/DefaultToolchain.java
    maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/DefaultToolchainManager.java
    maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/Toolchain.java
    maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainFactory.java
    maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainManager.java
    maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainManagerPrivate.java
    maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainPrivate.java
    maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/java/DefaultJavaToolChain.java
    maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/java/DefaultJavaToolchainFactory.java

Modified: maven/shared/trunk/maven-toolchain/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-toolchain/pom.xml?rev=597160&r1=597159&r2=597160&view=diff
==============================================================================
--- maven/shared/trunk/maven-toolchain/pom.xml (original)
+++ maven/shared/trunk/maven-toolchain/pom.xml Wed Nov 21 09:49:21 2007
@@ -19,7 +19,7 @@
         </dependency>
         <dependency>
             <groupId>org.apache.maven</groupId>
-            <artifactId>maven-build-context</artifactId>
+            <artifactId>maven-core</artifactId>
             <version>2.1-SNAPSHOT</version>
         </dependency>
         <dependency>

Modified: maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/DefaultToolchain.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/DefaultToolchain.java?rev=597160&r1=597159&r2=597160&view=diff
==============================================================================
--- maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/DefaultToolchain.java (original)
+++ maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/DefaultToolchain.java Wed Nov 21 09:49:21 2007
@@ -21,6 +21,7 @@
 
 import java.util.HashMap;
 import java.util.Map;
+import org.apache.maven.toolchain.model.ToolchainModel;
 
 /**
  *
@@ -35,13 +36,17 @@
     private Map provides = new HashMap /*<String,RequirementMatcher>*/ (  );
 
     public static final String KEY_TYPE = "type"; //NOI18N
+    
+    private ToolchainModel model;
 
-    protected DefaultToolchain( )
+    protected DefaultToolchain( ToolchainModel model ) 
     {
+        this.model = model;
     }
 
-    protected DefaultToolchain( String type )
+    protected DefaultToolchain( ToolchainModel model, String type )
     {
+        this(model);
         this.type = type;
     }
 
@@ -50,22 +55,10 @@
         return type;
     }
 
-    public final String getStorageKey( )
+    
+    public final ToolchainModel getModel( ) 
     {
-        return "toolchain-" + type; //NOI18N
-    }
-
-    public Map getData( )
-    {
-        Map data = new HashMap( 2 );
-        data.put( KEY_TYPE, type );
-
-        return data;
-    }
-
-    public void setData( Map data )
-    {
-        type = (String) data.get( KEY_TYPE );
+        return model;
     }
 
     public final void addProvideToken( String type,

Modified: maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/DefaultToolchainManager.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/DefaultToolchainManager.java?rev=597160&r1=597159&r2=597160&view=diff
==============================================================================
--- maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/DefaultToolchainManager.java (original)
+++ maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/DefaultToolchainManager.java Wed Nov 21 09:49:21 2007
@@ -27,7 +27,8 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import org.apache.maven.context.BuildContext;
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
 import org.apache.maven.toolchain.model.PersistedToolchains;
 import org.apache.maven.toolchain.model.ToolchainModel;
 import org.apache.maven.toolchain.model.io.xpp3.MavenToolchainsXpp3Reader;
@@ -70,7 +71,7 @@
     {
         try
         {
-            PersistedToolchains pers = readToolchainSettings();
+            PersistedToolchains pers = readToolchainSettings ();
             Map factories = container.lookupMap( ToolchainFactory.ROLE );
             List toRet = new ArrayList(  );
             if ( pers != null )
@@ -82,7 +83,7 @@
                     while ( it.hasNext() )
                     {
                         ToolchainModel toolchainModel = (ToolchainModel) it.next();
-                        ToolchainFactory fact = (ToolchainFactory) factories.get(toolchainModel.getType());
+                        ToolchainFactory fact = (ToolchainFactory) factories.get( toolchainModel.getType() );
                         if ( fact != null )
                         {
                             toRet.add( fact.createToolchain( toolchainModel ) );
@@ -104,7 +105,7 @@
                     toRet.add( tool );
                 }
             }
-            ToolchainPrivate[] tc = new ToolchainPrivate[toRet.size(  )];
+            ToolchainPrivate[] tc = new ToolchainPrivate[ toRet.size() ];
             return (ToolchainPrivate[]) toRet.toArray(tc);
         }
         catch ( ComponentLookupException ex )
@@ -115,34 +116,58 @@
     }
 
     public Toolchain getToolchainFromBuildContext( String type,
-                                                   BuildContext context )
+                                                   MavenSession session )
     {
-        try
+        Map context = retrieveContext(session);
+        if ( "javac".equals( type )) 
         {
-            ToolchainFactory fact = (ToolchainFactory) container.lookup(ToolchainFactory.ROLE, type);
-            Toolchain dt = fact.createToolchain( context );
-            if ( dt != null )
-            {
-                return dt;
-            }
-            return null;
+            //HACK to make compiler plugin happy
+            type = "jdk";
         }
-        catch ( ComponentLookupException ex )
+        Object obj = context.get( getStorageKey( type ) );
+        ToolchainModel model = (ToolchainModel)obj;
+        
+        if ( model != null ) 
         {
-            getLogger().fatalError("Error in component lookup", ex);
-        }
-        catch ( MisconfiguredToolchainException ex )
-        {
-            getLogger().error("Misconfigured toolchain.", ex);
+            try
+            {
+                ToolchainFactory fact = (ToolchainFactory) container.lookup(ToolchainFactory.ROLE, type);
+                return fact.createToolchain( model );
+            }
+            catch ( ComponentLookupException ex )
+            {
+                getLogger().fatalError("Error in component lookup", ex);
+            }
+            catch ( MisconfiguredToolchainException ex )
+            {
+                getLogger().error("Misconfigured toolchain.", ex);
+            }
         }
         return null;
     }
+    
+    private Map retrieveContext( MavenSession session ) 
+    {
+        PluginDescriptor desc = new PluginDescriptor();
+        desc.setGroupId( PluginDescriptor.getDefaultPluginGroupId() );
+        desc.setArtifactId( PluginDescriptor.getDefaultPluginArtifactId ("toolchains") );
+        
+        return  session.getPluginContext( desc, session.getCurrentProject() );
+        
+    }
 
     public void storeToolchainToBuildContext( ToolchainPrivate toolchain,
-                                              BuildContext context )
+                                              MavenSession session )
+    {
+        Map context = retrieveContext( session );
+        context.put( getStorageKey( toolchain.getType() ), toolchain.getModel () );
+    }
+    
+    public static final String getStorageKey( String type )
     {
-        context.store( toolchain );
+        return "toolchain-" + type; //NOI18N
     }
+    
 
     private PersistedToolchains readToolchainSettings( )
         throws MisconfiguredToolchainException

Modified: maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/Toolchain.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/Toolchain.java?rev=597160&r1=597159&r2=597160&view=diff
==============================================================================
--- maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/Toolchain.java (original)
+++ maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/Toolchain.java Wed Nov 21 09:49:21 2007
@@ -19,14 +19,12 @@
 
 package org.apache.maven.toolchain;
 
-import org.apache.maven.context.ManagedBuildData;
 
 /**
  * @author Milos Kleint
  * @author Jason van Zyl
  */
 public interface Toolchain
-    extends ManagedBuildData
 {
 
     String getType( );

Modified: maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainFactory.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainFactory.java?rev=597160&r1=597159&r2=597160&view=diff
==============================================================================
--- maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainFactory.java (original)
+++ maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainFactory.java Wed Nov 21 09:49:21 2007
@@ -19,7 +19,6 @@
 
 package org.apache.maven.toolchain;
 
-import org.apache.maven.context.BuildContext;
 import org.apache.maven.toolchain.model.ToolchainModel;
 
 /**
@@ -29,10 +28,7 @@
 public interface ToolchainFactory
 {
 
-    String ROLE = ToolchainFactory.class.getName(  );
-
-    Toolchain createToolchain( BuildContext context )
-        throws MisconfiguredToolchainException;
+    String ROLE = ToolchainFactory.class.getName();
 
     /**
      * Create instance of toolchain.

Modified: maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainManager.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainManager.java?rev=597160&r1=597159&r2=597160&view=diff
==============================================================================
--- maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainManager.java (original)
+++ maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainManager.java Wed Nov 21 09:49:21 2007
@@ -19,7 +19,8 @@
 
 package org.apache.maven.toolchain;
 
-import org.apache.maven.context.BuildContext;
+import org.apache.maven.execution.MavenSession;
+
 
 /**
  *
@@ -35,6 +36,6 @@
      * to be used from plugins capable of working with toolchains.
      */
     Toolchain getToolchainFromBuildContext( String type,
-                                            BuildContext context );
+                                            MavenSession context );
 
 }

Modified: maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainManagerPrivate.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainManagerPrivate.java?rev=597160&r1=597159&r2=597160&view=diff
==============================================================================
--- maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainManagerPrivate.java (original)
+++ maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainManagerPrivate.java Wed Nov 21 09:49:21 2007
@@ -20,7 +20,8 @@
 
 package org.apache.maven.toolchain;
 
-import org.apache.maven.context.BuildContext;
+import org.apache.maven.execution.MavenSession;
+
 
 /**
  * Component for use by the maven-toolchains-plugin only.
@@ -40,6 +41,6 @@
      * Stores the toolchain into build context.
      */
     void storeToolchainToBuildContext( ToolchainPrivate toolchain,
-                                       BuildContext context );
+                                       MavenSession context );
     
 }

Modified: maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainPrivate.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainPrivate.java?rev=597160&r1=597159&r2=597160&view=diff
==============================================================================
--- maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainPrivate.java (original)
+++ maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainPrivate.java Wed Nov 21 09:49:21 2007
@@ -20,6 +20,7 @@
 package org.apache.maven.toolchain;
 
 import java.util.Map;
+import org.apache.maven.toolchain.model.ToolchainModel;
 
 /**
  * a private contract between the toolchains plugin and the components.
@@ -30,4 +31,7 @@
 {
 
     Map getRequirementMatchers( );
+    
+    ToolchainModel getModel( );
+    
 }

Modified: maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/java/DefaultJavaToolChain.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/java/DefaultJavaToolChain.java?rev=597160&r1=597159&r2=597160&view=diff
==============================================================================
--- maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/java/DefaultJavaToolChain.java (original)
+++ maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/java/DefaultJavaToolChain.java Wed Nov 21 09:49:21 2007
@@ -22,6 +22,7 @@
 import java.io.File;
 import java.util.Map;
 import org.apache.maven.toolchain.DefaultToolchain;
+import org.apache.maven.toolchain.model.ToolchainModel;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.Os;
 import org.codehaus.plexus.util.Os;
@@ -38,9 +39,9 @@
 
     public static final String KEY_JAVAHOME = "jdkHome"; //NOI18N
 
-    public DefaultJavaToolChain( )
+    public DefaultJavaToolChain( ToolchainModel model)
     {
-        super( "jdk" );
+        super( model, "jdk" );
     }
 
     public String getJavaHome( )
@@ -69,18 +70,6 @@
         return null;
     }
 
-    public Map getData( )
-    {
-        Map map = super.getData(  );
-        map.put( KEY_JAVAHOME, javaHome );
-        return map;
-    }
-
-    public void setData( Map data )
-    {
-        super.setData( data );
-        javaHome = (String) data.get(KEY_JAVAHOME);
-    }
 
     private static File findTool( String toolName, File installFolder )
     {

Modified: maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/java/DefaultJavaToolchainFactory.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/java/DefaultJavaToolchainFactory.java?rev=597160&r1=597159&r2=597160&view=diff
==============================================================================
--- maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/java/DefaultJavaToolchainFactory.java (original)
+++ maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/java/DefaultJavaToolchainFactory.java Wed Nov 21 09:49:21 2007
@@ -20,7 +20,7 @@
 package org.apache.maven.toolchain.java;
 
 import java.io.File;
-import org.apache.maven.context.BuildContext;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.toolchain.MisconfiguredToolchainException;
 import org.apache.maven.toolchain.RequirementMatcherFactory;
 import org.apache.maven.toolchain.Toolchain;
@@ -45,7 +45,10 @@
     public ToolchainPrivate createToolchain( ToolchainModel model )
         throws MisconfiguredToolchainException
     {
-        DefaultJavaToolChain jtc = new DefaultJavaToolChain(  );
+        if (model == null) {
+            return null;
+        }
+        DefaultJavaToolChain jtc = new DefaultJavaToolChain( model );
         Xpp3Dom dom = (Xpp3Dom) model.getConfiguration();
         Xpp3Dom javahome = dom.getChild( DefaultJavaToolChain.KEY_JAVAHOME );
         if ( javahome == null )
@@ -92,18 +95,6 @@
     {
         //not sure it's necessary to provide a default toolchain here.
         //only version can be eventually supplied, and 
-        return null;
-    }
-
-    public Toolchain createToolchain( BuildContext context )
-        throws MisconfiguredToolchainException
-    {
-        DefaultJavaToolChain jtc = new DefaultJavaToolChain();
-        boolean retrieve = context.retrieve( jtc );
-        if ( retrieve )
-        {
-            return jtc;
-        }
         return null;
     }
 }