Author: sisbell Date: Tue Jan 29 12:53:42 2008 New Revision: 616516 URL: http://svn.apache.org/viewvc?rev=616516&view=rev Log: Changed the toolchain model. Complete impl.
Added: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ConfigurationInfo.java (with props) incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ProviderInfo.java (with props) incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainNotFoundException.java (with props) 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/model/DotnetConfigurationInfo.java (with props) incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/model/DotnetProviderInfo.java (with props) incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/model/DotnetToolchain.java (with props) incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/ incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/IdMatchPolicy.java (with props) incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/ProgrammingLanguageMatchPolicy.java (with props) incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/VendorMatchPolicy.java (with props) Removed: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/DotnetToolchain.java incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ProgrammingLanguageMatchPolicy.java incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/VendorMatchPolicy.java Modified: 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 Added: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ConfigurationInfo.java URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ConfigurationInfo.java?rev=616516&view=auto ============================================================================== --- incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ConfigurationInfo.java (added) +++ incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ConfigurationInfo.java Tue Jan 29 12:53:42 2008 @@ -0,0 +1,5 @@ +package org.apache.maven.dotnet.toolchain; + +public interface ConfigurationInfo +{ +} Propchange: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ConfigurationInfo.java ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ProviderInfo.java URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ProviderInfo.java?rev=616516&view=auto ============================================================================== --- incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ProviderInfo.java (added) +++ incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ProviderInfo.java Tue Jan 29 12:53:42 2008 @@ -0,0 +1,6 @@ +package org.apache.maven.dotnet.toolchain; + +public interface ProviderInfo +{ + String getId(); +} Propchange: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ProviderInfo.java ------------------------------------------------------------------------------ svn:eol-style = native 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=616516&r1=616515&r2=616516&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 Tue Jan 29 12:53:42 2008 @@ -4,7 +4,13 @@ public interface Toolchain { + ConfigurationInfo getConfigurationInfo(); + ToolchainModel getToolchainModel(); - public void init(ToolchainModel toolchainModel); + ProviderInfo getProviderInfo(); + + void init( ToolchainModel toolchainModel ); + + boolean verifyToolchain(); } 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=616516&r1=616515&r2=616516&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 Tue Jan 29 12:53:42 2008 @@ -2,6 +2,8 @@ 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; @@ -11,6 +13,27 @@ { private PersistedToolchains toolchainModels; + public Toolchain getToolchainById( String id ) + throws ToolchainNotFoundException + { + if ( id == null ) + { + throw new IllegalArgumentException( "id" ); + } + + List<ToolchainMatchPolicy> matchPolicies = new ArrayList<ToolchainMatchPolicy>(); + matchPolicies.add( new IdMatchPolicy( id ) ); + + Collection<Toolchain> toolchains = this.getToolchainsFor( matchPolicies ); + + if ( toolchains.toArray().length > 1 ) + { + throw new ToolchainNotFoundException(); + } + + return (Toolchain) toolchains.toArray()[0]; + } + public Collection<Toolchain> getToolchainsFor( Collection<ToolchainMatchPolicy> toolchainMatchPolicies ) { List<Toolchain> toolchains = new ArrayList<Toolchain>(); @@ -28,6 +51,16 @@ return toolchains; } + public void init( PersistedToolchains toolchainModels ) + { + if ( toolchainModels == null ) + { + throw new IllegalArgumentException( "toolchainModels" ); + } + + this.toolchainModels = toolchainModels; + } + private static boolean isMatch( Toolchain toolchain, Collection<ToolchainMatchPolicy> toolchainMatchPolicies ) { for ( ToolchainMatchPolicy policy : toolchainMatchPolicies ) @@ -38,15 +71,5 @@ } } return true; - } - - public void init( PersistedToolchains toolchainModels ) - { - if ( toolchainModels == null ) - { - throw new IllegalArgumentException( "toolchainModels" ); - } - - this.toolchainModels = toolchainModels; } } Added: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainNotFoundException.java URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainNotFoundException.java?rev=616516&view=auto ============================================================================== --- incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainNotFoundException.java (added) +++ incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainNotFoundException.java Tue Jan 29 12:53:42 2008 @@ -0,0 +1,5 @@ +package org.apache.maven.dotnet.toolchain; + +public class ToolchainNotFoundException extends Exception +{ +} Propchange: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/ToolchainNotFoundException.java ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/model/DotnetConfigurationInfo.java URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/model/DotnetConfigurationInfo.java?rev=616516&view=auto ============================================================================== --- incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/model/DotnetConfigurationInfo.java (added) +++ incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/model/DotnetConfigurationInfo.java Tue Jan 29 12:53:42 2008 @@ -0,0 +1,64 @@ +package org.apache.maven.dotnet.toolchain.model; + +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-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/model/DotnetConfigurationInfo.java ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/model/DotnetProviderInfo.java URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/model/DotnetProviderInfo.java?rev=616516&view=auto ============================================================================== --- incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/model/DotnetProviderInfo.java (added) +++ incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/model/DotnetProviderInfo.java Tue Jan 29 12:53:42 2008 @@ -0,0 +1,75 @@ +package org.apache.maven.dotnet.toolchain.model; + +import org.apache.maven.dotnet.Vendor; +import org.apache.maven.dotnet.ProgrammingLanguage; +import org.apache.maven.dotnet.toolchain.ProviderInfo; + +public interface DotnetProviderInfo + extends ProviderInfo +{ + ProgrammingLanguage getProgrammingLanguage(); + + Vendor getVendor(); + + 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-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/model/DotnetProviderInfo.java ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/model/DotnetToolchain.java URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/model/DotnetToolchain.java?rev=616516&view=auto ============================================================================== --- incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/model/DotnetToolchain.java (added) +++ incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/model/DotnetToolchain.java Tue Jan 29 12:53:42 2008 @@ -0,0 +1,87 @@ +package org.apache.maven.dotnet.toolchain.model; + +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.codehaus.plexus.util.xml.Xpp3Dom; + +import java.util.List; +import java.util.Arrays; +import java.util.ArrayList; +import java.io.File; + +public class DotnetToolchain + implements Toolchain +{ + private ToolchainModel toolchainModel; + + private DotnetProviderInfo toolchainProvider; + + private DotnetConfigurationInfo toolchainConfiguration; + + public ToolchainModel getToolchainModel() + { + return toolchainModel; + } + + 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( "vendor" ) ) + { + toolchainProvider.setVendor( Vendor.valueOf( dom.getValue() ) ); + } + else if ( dom.getName().equals( "version" ) ) + { + + } + else if ( dom.getName().equals( "language" ) ) + { + 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-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/model/DotnetToolchain.java ------------------------------------------------------------------------------ svn:eol-style = native Added: 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=616516&view=auto ============================================================================== --- incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/IdMatchPolicy.java (added) +++ incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/IdMatchPolicy.java Tue Jan 29 12:53:42 2008 @@ -0,0 +1,26 @@ +package org.apache.maven.dotnet.toolchain.policies; + +import org.apache.maven.dotnet.toolchain.ToolchainMatchPolicy; +import org.apache.maven.dotnet.toolchain.Toolchain; + +public class IdMatchPolicy + implements ToolchainMatchPolicy +{ + + private String id; + + public IdMatchPolicy( String id ) + { + this.id = id; + } + + public boolean match( Toolchain toolchain ) + { + if ( toolchain == null ) + { + throw new IllegalArgumentException( "toolchain" ); + } + + return toolchain.getProviderInfo().getId().equals( id ); + } +} Propchange: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/IdMatchPolicy.java ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/ProgrammingLanguageMatchPolicy.java URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/ProgrammingLanguageMatchPolicy.java?rev=616516&view=auto ============================================================================== --- incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/ProgrammingLanguageMatchPolicy.java (added) +++ incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/ProgrammingLanguageMatchPolicy.java Tue Jan 29 12:53:42 2008 @@ -0,0 +1,28 @@ +package org.apache.maven.dotnet.toolchain.policies; + +import org.apache.maven.dotnet.ProgrammingLanguage; +import org.apache.maven.dotnet.toolchain.Toolchain; +import org.apache.maven.dotnet.toolchain.ToolchainMatchPolicy; +import org.apache.maven.dotnet.toolchain.model.DotnetToolchain; + +public class ProgrammingLanguageMatchPolicy + implements ToolchainMatchPolicy +{ + private ProgrammingLanguage programmingLanguage; + + 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-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/ProgrammingLanguageMatchPolicy.java ------------------------------------------------------------------------------ svn:eol-style = native Added: incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/VendorMatchPolicy.java URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/VendorMatchPolicy.java?rev=616516&view=auto ============================================================================== --- incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/VendorMatchPolicy.java (added) +++ incubator/nmaven/trunk/components/maven-dotnet-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/VendorMatchPolicy.java Tue Jan 29 12:53:42 2008 @@ -0,0 +1,28 @@ +package org.apache.maven.dotnet.toolchain.policies; + +import org.apache.maven.dotnet.Vendor; +import org.apache.maven.dotnet.toolchain.Toolchain; +import org.apache.maven.dotnet.toolchain.ToolchainMatchPolicy; +import org.apache.maven.dotnet.toolchain.model.DotnetToolchain; + +public class VendorMatchPolicy + implements ToolchainMatchPolicy +{ + private Vendor vendor; + + 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-toolchain/src/main/java/org/apache/maven/dotnet/toolchain/policies/VendorMatchPolicy.java ------------------------------------------------------------------------------ svn:eol-style = native