You are viewing a plain text version of this content. The canonical link for it is here.
Posted to nmaven-commits@incubator.apache.org by si...@apache.org on 2008/02/04 18:50:12 UTC

svn commit: r618374 - in /incubator/nmaven/trunk/components: ./ maven-dotnet-extensions/ maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/ maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolch...

Author: sisbell
Date: Mon Feb  4 10:50:09 2008
New Revision: 618374

URL: http://svn.apache.org/viewvc?rev=618374&view=rev
Log:
Update toolchain implementation and API.

Added:
    incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/
    incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetConfigurationInfo.java   (with props)
    incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetProviderInfo.java   (with props)
    incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetTagName.java   (with props)
    incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetToolchain.java   (with props)
    incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/policies/
    incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/policies/ProgrammingLanguageMatchPolicy.java   (with props)
    incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/policies/VendorMatchPolicy.java   (with props)
    incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainAnnotation.java   (with props)
    incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainMatchPolicyAnnotation.java   (with props)
Removed:
    incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/model/
    incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/ProgrammingLanguageMatchPolicy.java
    incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/VendorMatchPolicy.java
Modified:
    incubator/nmaven/trunk/components/maven-dotnet-extensions/pom.xml
    incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/resources/META-INF/nmaven/annotation-resources.txt
    incubator/nmaven/trunk/components/maven-dotnet-toolchain/pom.xml
    incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/Toolchain.java
    incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainContext.java
    incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainMatchPolicy.java
    incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/IdMatchPolicy.java
    incubator/nmaven/trunk/components/pom.xml

Modified: incubator/nmaven/trunk/components/maven-dotnet-extensions/pom.xml
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-extensions/pom.xml?rev=618374&r1=618373&r2=618374&view=diff
==============================================================================
--- incubator/nmaven/trunk/components/maven-dotnet-extensions/pom.xml (original)
+++ incubator/nmaven/trunk/components/maven-dotnet-extensions/pom.xml Mon Feb  4 10:50:09 2008
@@ -45,5 +45,10 @@
       <artifactId>maven-dotnet-core</artifactId>
       <version>${pom.version}</version>
     </dependency>
+    <dependency>
+      <groupId>org.apache.maven.dotnet</groupId>
+      <artifactId>maven-dotnet-toolchain</artifactId>
+      <version>${pom.version}</version>
+    </dependency>
   </dependencies> 
 </project>

Added: incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetConfigurationInfo.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetConfigurationInfo.java?rev=618374&view=auto
==============================================================================
--- incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetConfigurationInfo.java (added)
+++ incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetConfigurationInfo.java Mon Feb  4 10:50:09 2008
@@ -0,0 +1,63 @@
+package org.apache.maven.dotnet.extensions.toolchain;
+
+import org.apache.maven.dotnet.toolchain.ConfigurationInfo;
+
+import java.io.File;
+
+public interface DotnetConfigurationInfo
+    extends ConfigurationInfo
+{
+    File getGacRoot();
+
+    File getInstallRoot();
+
+    void setGacRoot( File gacRoot );
+
+    void setInstallRoot( File installRoot );
+
+    public static class Factory
+    {
+        /**
+         * Constructor
+         */
+        private Factory()
+        {
+        }
+
+        /**
+         * Returns a default instance of toolchain configuration
+         *
+         * @return a default instance of toolchain configuration
+         */
+        public static DotnetConfigurationInfo createDefaultDotnetConfigurationInfo()
+        {
+            return new DotnetConfigurationInfo()
+            {
+                private File gacRoot;
+
+                private File installRoot;
+
+                public File getGacRoot()
+                {
+                    return gacRoot;
+                }
+
+                public File getInstallRoot()
+                {
+                    return installRoot;
+                }
+
+                public void setGacRoot( File gacRoot )
+                {
+                    this.gacRoot = gacRoot;
+                }
+
+                public void setInstallRoot( File installRoot )
+                {
+                    this.installRoot = installRoot;
+                }
+            };
+        }
+    }
+
+}

Propchange: incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetConfigurationInfo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetProviderInfo.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetProviderInfo.java?rev=618374&view=auto
==============================================================================
--- incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetProviderInfo.java (added)
+++ incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetProviderInfo.java Mon Feb  4 10:50:09 2008
@@ -0,0 +1,79 @@
+package org.apache.maven.dotnet.extensions.toolchain;
+
+import org.apache.maven.dotnet.Vendor;
+import org.apache.maven.dotnet.ProgrammingLanguage;
+import org.apache.maven.dotnet.toolchain.ProviderInfo;
+
+public interface DotnetProviderInfo
+    extends ProviderInfo
+{
+    String getId();
+
+    ProgrammingLanguage getProgrammingLanguage();
+
+    Vendor getVendor();
+
+    void setId(String id);
+    
+    void setProgrammingLanguage(ProgrammingLanguage programmingLanguage);
+
+    void setVendor(Vendor vendor);
+
+    public static class Factory
+    {
+        /**
+         * Constructor
+         */
+        private Factory()
+        {
+        }
+
+        /**
+         * Returns a default instance of toolchain configuration
+         *
+         * @return a default instance of toolchain configuration
+         */
+        public static DotnetProviderInfo createDefaultDotnetProviderInfo()
+        {
+            return new DotnetProviderInfo()
+            {
+                private String id;
+
+                private ProgrammingLanguage programmingLanguage;
+
+                private Vendor vendor;
+
+                public String getId()
+                {
+                    return id;
+                }
+
+                public void setId(String id)
+                {
+                    this.id = id;
+                }
+
+                public ProgrammingLanguage getProgrammingLanguage()
+                {
+                    return programmingLanguage;
+                }
+
+                public Vendor getVendor()
+                {
+                    return vendor;
+                }
+
+                public void setProgrammingLanguage( ProgrammingLanguage programmingLanguage )
+                {
+                    this.programmingLanguage = programmingLanguage;
+                }
+
+                public void setVendor( Vendor vendor )
+                {
+                    this.vendor = vendor;
+                }
+            };
+
+        }
+    }
+}

Propchange: incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetProviderInfo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetTagName.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetTagName.java?rev=618374&view=auto
==============================================================================
--- incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetTagName.java (added)
+++ incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetTagName.java Mon Feb  4 10:50:09 2008
@@ -0,0 +1,21 @@
+package org.apache.maven.dotnet.extensions.toolchain;
+
+public enum DotnetTagName
+{
+    Language( "language" ),
+    Vendor( "vendor" ),
+    Version( "version" ),
+    InstallRoot( "installRoot" );
+
+    private final String tagName;
+
+    DotnetTagName( String tagName )
+    {
+        this.tagName = tagName;
+    }
+
+    public String getTagName()
+    {
+        return tagName;
+    }
+}

Propchange: incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetTagName.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetToolchain.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetToolchain.java?rev=618374&view=auto
==============================================================================
--- incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetToolchain.java (added)
+++ incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetToolchain.java Mon Feb  4 10:50:09 2008
@@ -0,0 +1,84 @@
+package org.apache.maven.dotnet.extensions.toolchain;
+
+import org.apache.maven.toolchain.model.ToolchainModel;
+import org.apache.maven.dotnet.Vendor;
+import org.apache.maven.dotnet.ProgrammingLanguage;
+import org.apache.maven.dotnet.toolchain.Toolchain;
+import org.apache.maven.dotnet.toolchain.ToolchainAnnotation;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.ArrayList;
+import java.io.File;
+
+@ToolchainAnnotation(toolchainType = "dotnet")
+public class DotnetToolchain
+    implements Toolchain
+{
+    private ToolchainModel toolchainModel;
+
+    private DotnetProviderInfo toolchainProvider;
+
+    private DotnetConfigurationInfo toolchainConfiguration;
+
+    public DotnetProviderInfo getProviderInfo()
+    {
+        return toolchainProvider;
+    }
+
+    public DotnetConfigurationInfo getConfigurationInfo()
+    {
+        return toolchainConfiguration;
+    }
+
+    public void init( ToolchainModel toolchainModel )
+    {
+        if ( toolchainModel == null )
+        {
+            throw new IllegalArgumentException( "toolchainModel" );
+        }
+
+        this.toolchainModel = toolchainModel;
+        toolchainProvider = DotnetProviderInfo.Factory.createDefaultDotnetProviderInfo();
+        toolchainConfiguration = DotnetConfigurationInfo.Factory.createDefaultDotnetConfigurationInfo();
+
+        Xpp3Dom providesModel = (Xpp3Dom) toolchainModel.getProvides();
+        List<Xpp3Dom> provides = new ArrayList<Xpp3Dom>( Arrays.asList( providesModel.getChildren() ) );
+        for ( Xpp3Dom dom : provides )
+        {
+            if ( dom.getName().equals( DotnetTagName.Vendor.getTagName() ) )
+            {
+                toolchainProvider.setVendor( Vendor.valueOf( dom.getValue() ) );
+            }
+            else if ( dom.getName().equals( DotnetTagName.Version.getTagName() ) )
+            {
+
+            }
+            else if ( dom.getName().equals( DotnetTagName.Language.getTagName()) )
+            {
+                toolchainProvider.setProgrammingLanguage( ProgrammingLanguage.valueOf( dom.getValue() ) );
+            }
+        }
+
+        Xpp3Dom configurationModel = (Xpp3Dom) toolchainModel.getConfiguration();
+        List<Xpp3Dom> configurations = new ArrayList<Xpp3Dom>( Arrays.asList( configurationModel.getChildren() ) );
+        for ( Xpp3Dom dom : configurations )
+        {
+            if ( dom.getName().equals( "installRoot" ) )
+            {
+                toolchainConfiguration.setInstallRoot( new File( dom.getValue() ) );
+            }
+            else if ( dom.getName().equals( "gacRoot" ) )
+            {
+                toolchainConfiguration.setGacRoot( new File( dom.getValue() ) );
+            }
+        }
+    }
+
+    public boolean verifyToolchain()
+    {
+        return true;
+        //return ( installRoot != null && installRoot.exists() && vendor != null && !vendor.equals( Vendor.NULL ) );
+    }
+}

Propchange: incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/DotnetToolchain.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/policies/ProgrammingLanguageMatchPolicy.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/policies/ProgrammingLanguageMatchPolicy.java?rev=618374&view=auto
==============================================================================
--- incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/policies/ProgrammingLanguageMatchPolicy.java (added)
+++ incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/policies/ProgrammingLanguageMatchPolicy.java Mon Feb  4 10:50:09 2008
@@ -0,0 +1,35 @@
+package org.apache.maven.dotnet.extensions.toolchain.policies;
+
+import org.apache.maven.dotnet.ProgrammingLanguage;
+import org.apache.maven.dotnet.extensions.toolchain.DotnetToolchain;
+import org.apache.maven.dotnet.toolchain.Toolchain;
+import org.apache.maven.dotnet.toolchain.ToolchainMatchPolicy;
+import org.apache.maven.dotnet.toolchain.ToolchainMatchPolicyAnnotation;
+
+@ToolchainMatchPolicyAnnotation(tagName = "language", toolchainType = "dotnet")
+public class ProgrammingLanguageMatchPolicy
+    implements ToolchainMatchPolicy
+{
+    private ProgrammingLanguage programmingLanguage;
+
+    public ProgrammingLanguageMatchPolicy( String programmingLanguage )
+    {
+        //TODO:
+    }
+
+    public ProgrammingLanguageMatchPolicy( ProgrammingLanguage programmingLanguage )
+    {
+        this.programmingLanguage = programmingLanguage;
+    }
+
+    public boolean match( Toolchain toolchain )
+    {
+        if ( toolchain == null || ! ( toolchain instanceof DotnetToolchain ) )
+        {
+            throw new IllegalArgumentException( "toolchain" );
+        }
+
+        DotnetToolchain dotnetToolchain = (DotnetToolchain) toolchain;
+        return programmingLanguage.equals(dotnetToolchain.getProviderInfo().getProgrammingLanguage());
+    }
+}

Propchange: incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/policies/ProgrammingLanguageMatchPolicy.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/policies/VendorMatchPolicy.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/policies/VendorMatchPolicy.java?rev=618374&view=auto
==============================================================================
--- incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/policies/VendorMatchPolicy.java (added)
+++ incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/policies/VendorMatchPolicy.java Mon Feb  4 10:50:09 2008
@@ -0,0 +1,35 @@
+package org.apache.maven.dotnet.extensions.toolchain.policies;
+
+import org.apache.maven.dotnet.Vendor;
+import org.apache.maven.dotnet.extensions.toolchain.DotnetToolchain;
+import org.apache.maven.dotnet.toolchain.Toolchain;
+import org.apache.maven.dotnet.toolchain.ToolchainMatchPolicy;
+import org.apache.maven.dotnet.toolchain.ToolchainMatchPolicyAnnotation;
+
+@ToolchainMatchPolicyAnnotation(tagName = "vendor", toolchainType = "dotnet")
+public class VendorMatchPolicy
+    implements ToolchainMatchPolicy
+{
+    private Vendor vendor;
+
+    public VendorMatchPolicy(String vendor)
+    {
+        //TODO:
+    }
+
+    public VendorMatchPolicy( Vendor vendor )
+    {
+        this.vendor = vendor;
+    }
+
+    public boolean match( Toolchain toolchain )
+    {
+        if ( toolchain == null || ! ( toolchain instanceof DotnetToolchain ) )
+        {
+            throw new IllegalArgumentException( "toolchain" );
+        }
+
+        DotnetToolchain dotnetToolchain = (DotnetToolchain) toolchain;
+        return vendor.equals(dotnetToolchain.getProviderInfo().getVendor());
+    }
+}

Propchange: incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/java/org/apache/maven/dotnet/extensions/toolchain/policies/VendorMatchPolicy.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/resources/META-INF/nmaven/annotation-resources.txt
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/resources/META-INF/nmaven/annotation-resources.txt?rev=618374&r1=618373&r2=618374&view=diff
==============================================================================
--- incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/resources/META-INF/nmaven/annotation-resources.txt (original)
+++ incubator/nmaven/trunk/components/maven-dotnet-extensions/src/main/resources/META-INF/nmaven/annotation-resources.txt Mon Feb  4 10:50:09 2008
@@ -1,4 +1,8 @@
 org.apache.maven.dotnet.extensions.assembler.DefaultAssemblyInfoMarshaller
 org.apache.maven.dotnet.extensions.assembler.JavaAssemblyInfoMarshaller
 org.apache.maven.dotnet.extensions.assembler.VBAssemblyInfoMarshaller
-org.apache.maven.dotnet.extensions.compiler.CSharpClassCompiler
\ No newline at end of file
+org.apache.maven.dotnet.extensions.compiler.CSharpClassCompiler
+org.apache.maven.dotnet.toolchain.policies.IdMatchPolicy
+org.apache.maven.dotnet.extensions.toolchain.policies.ProgrammingLanguageMatchPolicy
+org.apache.maven.dotnet.extensions.toolchain.policies.VendorMatchPolicy
+org.apache.maven.dotnet.extensions.toolchain.DotnetToolchain
\ No newline at end of file

Modified: incubator/nmaven/trunk/components/maven-dotnet-toolchain/pom.xml
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-toolchain/pom.xml?rev=618374&r1=618373&r2=618374&view=diff
==============================================================================
--- incubator/nmaven/trunk/components/maven-dotnet-toolchain/pom.xml (original)
+++ incubator/nmaven/trunk/components/maven-dotnet-toolchain/pom.xml Mon Feb  4 10:50:09 2008
@@ -18,17 +18,23 @@
 specific language governing permissions and limitations
 under the License.
 -->
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
-  <parent> 
-    <groupId>org.apache.maven.dotnet</groupId>  
-    <version>0.15-incubating-SNAPSHOT</version>  
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <parent>
+    <groupId>org.apache.maven.dotnet</groupId>
+    <version>0.15-incubating-SNAPSHOT</version>
     <artifactId>maven-dotnet-components</artifactId>
-  </parent>  
-  <modelVersion>4.0.0</modelVersion>  
-  <groupId>org.apache.maven.dotnet</groupId>  
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.dotnet</groupId>
   <artifactId>maven-dotnet-toolchain</artifactId>
   <name>maven-dotnet-toolchain</name>
   <description>NMaven</description>
   <dependencies>
-  </dependencies> 
+    <dependency>
+      <groupId>org.apache.maven.dotnet</groupId>
+      <artifactId>maven-dotnet-toolchain-model</artifactId>
+      <version>${pom.version}</version>
+    </dependency>
+  </dependencies>
 </project>

Modified: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/Toolchain.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/Toolchain.java?rev=618374&r1=618373&r2=618374&view=diff
==============================================================================
--- incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/Toolchain.java (original)
+++ incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/Toolchain.java Mon Feb  4 10:50:09 2008
@@ -6,8 +6,6 @@
 {
     ConfigurationInfo getConfigurationInfo();
 
-    ToolchainModel getToolchainModel();
-
     ProviderInfo getProviderInfo();
 
     void init( ToolchainModel toolchainModel );

Added: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainAnnotation.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainAnnotation.java?rev=618374&view=auto
==============================================================================
--- incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainAnnotation.java (added)
+++ incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainAnnotation.java Mon Feb  4 10:50:09 2008
@@ -0,0 +1,13 @@
+package org.apache.maven.dotnet.toolchain;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.lang.annotation.ElementType;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface ToolchainAnnotation
+{
+    String toolchainType();
+}

Propchange: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainAnnotation.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainContext.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainContext.java?rev=618374&r1=618373&r2=618374&view=diff
==============================================================================
--- incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainContext.java (original)
+++ incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainContext.java Mon Feb  4 10:50:09 2008
@@ -2,17 +2,26 @@
 
 import org.apache.maven.toolchain.model.ToolchainModel;
 import org.apache.maven.toolchain.model.PersistedToolchains;
-import org.apache.maven.dotnet.toolchain.model.DotnetToolchain;
 import org.apache.maven.dotnet.toolchain.policies.IdMatchPolicy;
 
 import java.util.Collection;
 import java.util.List;
 import java.util.ArrayList;
+import java.util.Map;
+import java.util.Enumeration;
+import java.net.URL;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.IOException;
 
 public class ToolchainContext
 {
     private PersistedToolchains toolchainModels;
 
+    private Class toolchainClass;
+
+    private List<Class> matchPolicyClasses;
+
     public Toolchain getToolchainById( String id )
         throws ToolchainNotFoundException
     {
@@ -34,31 +43,96 @@
         return (Toolchain) toolchains.toArray()[0];
     }
 
+    public Collection<ToolchainMatchPolicy> getToolchainMatchPoliciesForParameters( Map<String, String> parameters )
+    {
+        List<ToolchainMatchPolicy> toolchainMatchPolicies = new ArrayList<ToolchainMatchPolicy>();
+
+        for ( String key : parameters.keySet() )
+        {
+            for ( Class matchPolicyClass : matchPolicyClasses )
+            {
+                ToolchainMatchPolicyAnnotation matchAnnotation =
+                    (ToolchainMatchPolicyAnnotation) matchPolicyClass.getAnnotation(
+                        ToolchainMatchPolicyAnnotation.class );
+                if ( matchAnnotation != null && matchAnnotation.tagName().equals( key ) )
+                {
+                    //TODO:
+                    //instantiate
+                    //add to collection
+                }
+            }
+        }
+        return toolchainMatchPolicies;
+    }
+
     public Collection<Toolchain> getToolchainsFor( Collection<ToolchainMatchPolicy> toolchainMatchPolicies )
     {
         List<Toolchain> toolchains = new ArrayList<Toolchain>();
         for ( ToolchainModel model : (List<ToolchainModel>) toolchainModels.getToolchains() )
         {
-            Toolchain toolchain = new DotnetToolchain();//exact type should be configured in toolchains.xml
+            Toolchain toolchain = null;// = new DotnetToolchain();//TODO:
             toolchain.init( model );
 
             if ( toolchainMatchPolicies == null || isMatch( toolchain, toolchainMatchPolicies ) )
             {
                 toolchains.add( toolchain );
             }
-
         }
         return toolchains;
     }
 
-    public void init( PersistedToolchains toolchainModels )
+    public void init( PersistedToolchains toolchainModels, String toolchainType )
+        throws IOException
     {
         if ( toolchainModels == null )
         {
             throw new IllegalArgumentException( "toolchainModels" );
         }
 
+        if ( toolchainType == null )
+        {
+            throw new IllegalArgumentException( "toolchainType" );
+        }
+
         this.toolchainModels = toolchainModels;
+        this.matchPolicyClasses = new ArrayList<Class>();
+
+        Enumeration<URL> resources =
+            this.getClass().getClassLoader().getResources( "/META-INF/nmaven/annotation-resources.txt" );
+
+        while ( resources.hasMoreElements() )
+        {
+            URL url = resources.nextElement();
+            BufferedReader reader = new BufferedReader( new InputStreamReader( url.openStream() ) );
+            String annotatedClassName;
+            while ( ( annotatedClassName = reader.readLine() ) != null )
+            {
+                Class annotatedClass;
+                try
+                {
+                    annotatedClass = Class.forName( annotatedClassName );
+                }
+                catch ( ClassNotFoundException e )
+                {
+                    throw new IOException( e.getMessage() );
+                }
+
+                ToolchainAnnotation annotation =
+                    (ToolchainAnnotation) annotatedClass.getAnnotation( ToolchainAnnotation.class );
+                if ( annotation != null && annotation.toolchainType().equals( toolchainType ) )
+                {
+                    toolchainClass = annotatedClass;
+                }
+
+                ToolchainMatchPolicyAnnotation matchAnnotation =
+                    (ToolchainMatchPolicyAnnotation) annotatedClass.getAnnotation(
+                        ToolchainMatchPolicyAnnotation.class );
+                if ( matchAnnotation != null && matchAnnotation.toolchainType().equals( toolchainType ) )
+                {
+                    matchPolicyClasses.add( annotatedClass );
+                }
+            }
+        }
     }
 
     private static boolean isMatch( Toolchain toolchain, Collection<ToolchainMatchPolicy> toolchainMatchPolicies )

Modified: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainMatchPolicy.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainMatchPolicy.java?rev=618374&r1=618373&r2=618374&view=diff
==============================================================================
--- incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainMatchPolicy.java (original)
+++ incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainMatchPolicy.java Mon Feb  4 10:50:09 2008
@@ -3,4 +3,5 @@
 public interface ToolchainMatchPolicy
 {
     boolean match( Toolchain toolchain );
+
 }

Added: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainMatchPolicyAnnotation.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainMatchPolicyAnnotation.java?rev=618374&view=auto
==============================================================================
--- incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainMatchPolicyAnnotation.java (added)
+++ incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainMatchPolicyAnnotation.java Mon Feb  4 10:50:09 2008
@@ -0,0 +1,15 @@
+package org.apache.maven.dotnet.toolchain;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.lang.annotation.ElementType;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface ToolchainMatchPolicyAnnotation
+{
+    String tagName();
+
+    String toolchainType();
+}

Propchange: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainMatchPolicyAnnotation.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/IdMatchPolicy.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/IdMatchPolicy.java?rev=618374&r1=618373&r2=618374&view=diff
==============================================================================
--- incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/IdMatchPolicy.java (original)
+++ incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/IdMatchPolicy.java Mon Feb  4 10:50:09 2008
@@ -2,7 +2,9 @@
 
 import org.apache.maven.dotnet.toolchain.ToolchainMatchPolicy;
 import org.apache.maven.dotnet.toolchain.Toolchain;
+import org.apache.maven.dotnet.toolchain.ToolchainMatchPolicyAnnotation;
 
+@ToolchainMatchPolicyAnnotation(tagName = "id", toolchainType = "any")
 public class IdMatchPolicy
     implements ToolchainMatchPolicy
 {

Modified: incubator/nmaven/trunk/components/pom.xml
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/pom.xml?rev=618374&r1=618373&r2=618374&view=diff
==============================================================================
--- incubator/nmaven/trunk/components/pom.xml (original)
+++ incubator/nmaven/trunk/components/pom.xml Mon Feb  4 10:50:09 2008
@@ -38,6 +38,8 @@
     <module>maven-dotnet-core</module>
     <module>maven-dotnet-compiler</module>
     <module>maven-dotnet-extensions</module>
+    <module>maven-dotnet-toolchain</module>
+    <module>maven-dotnet-toolchain-model</module>
   </modules>
   <profiles>
     <profile>