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 2007/03/24 02:52:37 UTC

svn commit: r521968 - in /incubator/nmaven/branches/SI_XPT/components/dotnet-vendor: ./ src/main/java/org/apache/maven/dotnet/vendor/ src/main/java/org/apache/maven/dotnet/vendor/impl/ src/test/ src/test/java/ src/test/java/org/ src/test/java/org/apach...

Author: sisbell
Date: Fri Mar 23 19:52:36 2007
New Revision: 521968

URL: http://svn.apache.org/viewvc?view=rev&rev=521968
Log:
Added unit tests to test transition rules. Fixed a number of bugs.

Added:
    incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/
    incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/
    incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/
    incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/
    incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/
    incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/
    incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/
    incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/
    incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/RepositoryRegistryTestStub.java   (with props)
    incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/SettingsRepositoryTestStub.java   (with props)
    incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/VendorInfoRepositoryTestStub.java   (with props)
    incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/VendorInfoTransitionRuleFactoryTest.java   (with props)
Modified:
    incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/pom.xml
    incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/VendorInfoRepository.java
    incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/StateMachineProcessorImpl.java
    incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoTransitionRuleFactory.java
    incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VersionMatcher.java

Modified: incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/pom.xml
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/pom.xml?view=diff&rev=521968&r1=521967&r2=521968
==============================================================================
--- incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/pom.xml (original)
+++ incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/pom.xml Fri Mar 23 19:52:36 2007
@@ -25,4 +25,29 @@
       <version>0.14-SNAPSHOT</version>
     </dependency>
   </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <configuration>
+          <aggregate>true</aggregate>
+        </configuration>
+      </plugin>
+      <plugin>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <configuration>
+          <descriptor>src/assembly/src.xml</descriptor>
+          <outputDirectory>src/target</outputDirectory>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>1.5</source>
+          <target>1.5</target>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
 </project>

Modified: incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/VendorInfoRepository.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/VendorInfoRepository.java?view=diff&rev=521968&r1=521967&r2=521968
==============================================================================
--- incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/VendorInfoRepository.java (original)
+++ incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/VendorInfoRepository.java Fri Mar 23 19:52:36 2007
@@ -92,6 +92,13 @@
     File getInstallRootFor( VendorInfo vendorInfo )
         throws PlatformUnsupportedException;
 
+    /**
+     *  Returns file pointing to the .NET SDK installation root used for compiling artifacts.
+     *
+     * @param vendorInfo the vendor info
+     * @return file pointing to the .NET SDK installation root used for compiling artifacts
+     * @throws PlatformUnsupportedException
+     */
     File getSdkInstallRootFor( VendorInfo vendorInfo )
         throws PlatformUnsupportedException;
 

Modified: incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/StateMachineProcessorImpl.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/StateMachineProcessorImpl.java?view=diff&rev=521968&r1=521967&r2=521968
==============================================================================
--- incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/StateMachineProcessorImpl.java (original)
+++ incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/StateMachineProcessorImpl.java Fri Mar 23 19:52:36 2007
@@ -35,7 +35,7 @@
  *
  * @author Shane Isbell
  */
-public class StateMachineProcessorImpl
+public final class StateMachineProcessorImpl
     implements StateMachineProcessor, LogEnabled, Initializable
 {
 

Modified: incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoTransitionRuleFactory.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoTransitionRuleFactory.java?view=diff&rev=521968&r1=521967&r2=521968
==============================================================================
--- incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoTransitionRuleFactory.java (original)
+++ incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoTransitionRuleFactory.java Fri Mar 23 19:52:36 2007
@@ -41,13 +41,6 @@
 final class VendorInfoTransitionRuleFactory
 {
 
-    /**
-     * A registry component of repository (config) files
-     */
-    private RepositoryRegistry repositoryRegistry;
-
-    private SettingsRepository settingsRepository;
-
     private VendorInfoRepository vendorInfoRepository;
 
     /**
@@ -65,14 +58,17 @@
      */
     private String defaultFrameworkVersion;
 
-    private List<VendorInfo> vendorInfos;
-
     /**
      * A logger for writing log messages
      */
     private Logger logger;
 
     /**
+     * A version matcher
+     */
+    VersionMatcher versionMatcher;
+
+    /**
      * Default constructor
      */
     VendorInfoTransitionRuleFactory()
@@ -90,7 +86,6 @@
     void init( RepositoryRegistry repositoryRegistry, VendorInfoRepository vendorInfoRepository, Logger logger )
         throws InitializationException
     {
-        this.repositoryRegistry = repositoryRegistry;
         this.vendorInfoRepository = vendorInfoRepository;
         this.logger = logger;
         if ( repositoryRegistry == null )
@@ -98,12 +93,11 @@
             throw new InitializationException( "NMAVEN-103-000: Unable to find the repository registry" );
         }
 
-        settingsRepository = (SettingsRepository) repositoryRegistry.find( "nmaven-settings" );
+        SettingsRepository settingsRepository = (SettingsRepository) repositoryRegistry.find( "nmaven-settings" );
         if ( settingsRepository == null )
         {
             throw new InitializationException(
                 "NMAVEN-103-001: Settings Repository is null. Aborting initialization of VendorInfoTranstionRuleFactory" );
-
         }
 
         try
@@ -117,7 +111,7 @@
         }
         defaultVendorVersion = settingsRepository.getDefaultSetup().getVendorVersion().trim();
         defaultFrameworkVersion = settingsRepository.getDefaultSetup().getFrameworkVersion().trim();
-        vendorInfos = settingsRepository.getVendorInfos();
+        this.versionMatcher = new VersionMatcher();
     }
 
     VendorInfoTransitionRule createPostProcessRule()
@@ -127,8 +121,8 @@
             public VendorInfoState process( VendorInfo vendorInfo )
             {
                 logger.debug( "NMAVEN-103-034: Entering State = Post Process" );
-                if ( (vendorInfo.getExecutablePaths() == null ||
-                    vendorInfo.getExecutablePaths().size() == 0) && vendorInfoRepository.exists() )
+                if ( ( vendorInfo.getExecutablePaths() == null || vendorInfo.getExecutablePaths().size() == 0 ) &&
+                    vendorInfoRepository.exists() )
                 {
                     File sdkInstallRoot = null;
                     try
@@ -256,10 +250,10 @@
             public VendorInfoState process( VendorInfo vendorInfo )
             {
                 logger.debug( "NMAVEN-103-007: Entering State = NFT" );
-                if ( vendorInfo.getFrameworkVersion().equals( defaultFrameworkVersion ) )
+                if ( vendorInfo.getFrameworkVersion().equals( defaultFrameworkVersion ) &&
+                    vendorInfo.getVendor().equals( defaultVendor ) )
                 {
                     vendorInfo.setVendorVersion( defaultVendorVersion );
-                    vendorInfo.setVendor( defaultVendor );
                     return VendorInfoState.NTT;
                 }
                 else
@@ -267,29 +261,60 @@
                     List<VendorInfo> v = vendorInfoRepository.getVendorInfosFor( vendorInfo, true );
                     if ( !v.isEmpty() )
                     {
+                        Set<String> vendorVersions = new HashSet<String>();
                         for ( VendorInfo vi : v )
                         {
-                            if ( vi.getFrameworkVersion().equals( vendorInfo.getFrameworkVersion() ) )
+                           if ( vi.getFrameworkVersion().equals( vendorInfo.getFrameworkVersion() ) )
                             {
-                                vendorInfo.setVendorVersion( vi.getVendorVersion() );
-                                vendorInfo.setVendor( vi.getVendor() );
-                                return VendorInfoState.NTT;
+                                vendorVersions.add( vi.getVendorVersion() );
                             }
                         }
-                        return createVendorInfoSetterForNFT_NoSettings().process( vendorInfo );
+
+                        if ( vendorVersions.size() > 0 )
+                        {
+                            try
+                            {
+                                vendorInfo.setVendorVersion(
+                                    vendorInfoRepository.getMaxVersion( vendorVersions ) );
+                            }
+                            catch ( InvalidVersionFormatException e )
+                            {
+                                logger.warn( "NMAVEN-103-039: Bad nmaven-settings.xml file", e );
+                                return createVendorInfoSetterForNFT_NoSettings().process( vendorInfo );
+                            }
+                            return VendorInfoState.NTT;
+                        }
+                        else
+                        {
+                           return createVendorInfoSetterForNFT_NoSettings().process( vendorInfo );
+                        }
                     }
                     else
                     {
                         v = vendorInfoRepository.getVendorInfosFor( vendorInfo, false );
+                        Set<String> vendorVersions = new HashSet<String>();
                         for ( VendorInfo vi : v )
                         {
-                            if ( vi.getFrameworkVersion().equals( vendorInfo.getFrameworkVersion() ) )
+                           if ( vi.getFrameworkVersion().equals( vendorInfo.getFrameworkVersion() ) )
                             {
-                                vendorInfo.setVendorVersion( vi.getVendorVersion() );
-                                vendorInfo.setVendor( vi.getVendor() );
-                                return VendorInfoState.NTT;
+                                vendorVersions.add( vi.getVendorVersion() );
                             }
                         }
+
+                        if ( vendorVersions.size() > 0 )
+                        {
+                            try
+                            {
+                                vendorInfo.setVendorVersion(
+                                    vendorInfoRepository.getMaxVersion( vendorVersions ) );
+                            }
+                            catch ( InvalidVersionFormatException e )
+                            {
+                                logger.warn( "NMAVEN-103-040: Bad nmaven-settings.xml file", e );
+                                return createVendorInfoSetterForNFT_NoSettings().process( vendorInfo );
+                            }
+                            return VendorInfoState.NTT;
+                        }
                         return createVendorInfoSetterForNFT_NoSettings().process( vendorInfo );
                     }
                 }
@@ -328,30 +353,64 @@
                     List<VendorInfo> v = vendorInfoRepository.getVendorInfosFor( vendorInfo, true );
                     if ( !v.isEmpty() )
                     {
+                        Set<String> frameworkVersions = new HashSet<String>();
                         for ( VendorInfo vi : v )
                         {
                             if ( vi.getVendorVersion().equals( vendorInfo.getVendorVersion() ) )
                             {
-                                vendorInfo.setFrameworkVersion( vi.getFrameworkVersion() );
-                                vendorInfo.setVendor( vi.getVendor() );
-                                return VendorInfoState.NTT;
+                                frameworkVersions.add( vi.getFrameworkVersion() );
+                            }
+                        }
+
+                        if ( frameworkVersions.size() > 0 )
+                        {
+                            try
+                            {
+                                vendorInfo.setFrameworkVersion(
+                                    vendorInfoRepository.getMaxVersion( frameworkVersions ) );
+                            }
+                            catch ( InvalidVersionFormatException e )
+                            {
+                                logger.warn( "NMAVEN-103-037: Bad nmaven-settings.xml file", e );
+                                return createVendorInfoSetterForNTF_NoSettings().process( vendorInfo );
                             }
+                            return VendorInfoState.NTT;
+                        }
+                        else
+                        {
+                            return createVendorInfoSetterForNTF_NoSettings().process( vendorInfo );
                         }
-                        return createVendorInfoSetterForNTF_NoSettings().process( vendorInfo );
                     }
                     else
                     {
                         v = vendorInfoRepository.getVendorInfosFor( vendorInfo, false );
+                        Set<String> frameworkVersions = new HashSet<String>();
                         for ( VendorInfo vi : v )
                         {
                             if ( vi.getVendorVersion().equals( vendorInfo.getVendorVersion() ) )
                             {
-                                vendorInfo.setFrameworkVersion( vi.getFrameworkVersion() );
-                                vendorInfo.setVendor( vi.getVendor() );
-                                return VendorInfoState.NTT;
+                                frameworkVersions.add( vi.getFrameworkVersion() );
+                            }
+                        }
+
+                        if ( frameworkVersions.size() > 0 )
+                        {
+                            try
+                            {
+                                vendorInfo.setFrameworkVersion(
+                                    vendorInfoRepository.getMaxVersion( frameworkVersions ) );
+                            }
+                            catch ( InvalidVersionFormatException e )
+                            {
+                                logger.warn( "NMAVEN-103-038: Bad nmaven-settings.xml file", e );
+                                return createVendorInfoSetterForNTF_NoSettings().process( vendorInfo );
                             }
+                            return VendorInfoState.NTT;
+                        }
+                        else
+                        {
+                            return createVendorInfoSetterForNTF_NoSettings().process( vendorInfo );
                         }
-                        return createVendorInfoSetterForNTF_NoSettings().process( vendorInfo );
                     }
                 }
             }

Modified: incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VersionMatcher.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VersionMatcher.java?view=diff&rev=521968&r1=521967&r2=521968
==============================================================================
--- incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VersionMatcher.java (original)
+++ incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VersionMatcher.java Fri Mar 23 19:52:36 2007
@@ -127,12 +127,32 @@
         while ( i.hasNext() )
         {
             String testValue = (String) i.next();
-            if ( isGreaterThan( testValue, maxVersion ) )
+            if ( isGreaterThan(maxVersion, testValue ) )
             {
                 maxVersion = testValue;
             }
         }
         return maxVersion;
+    }
+
+    String getMinVersion( Set<String> versions )
+        throws InvalidVersionFormatException
+    {
+        if ( versions.isEmpty() )
+        {
+            return null;
+        }
+        Iterator i = versions.iterator();
+        String minVersion = (String) i.next();
+        while ( i.hasNext() )
+        {
+            String testValue = (String) i.next();
+            if ( isGreaterThan( testValue, minVersion ) )
+            {
+                minVersion = testValue;
+            }
+        }
+        return minVersion;
     }
 
     /**

Added: incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/RepositoryRegistryTestStub.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/RepositoryRegistryTestStub.java?view=auto&rev=521968
==============================================================================
--- incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/RepositoryRegistryTestStub.java (added)
+++ incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/RepositoryRegistryTestStub.java Fri Mar 23 19:52:36 2007
@@ -0,0 +1,72 @@
+package org.apache.maven.dotnet.vendor.impl;
+
+import org.apache.maven.dotnet.registry.RepositoryRegistry;
+import org.apache.maven.dotnet.registry.RepositoryLoader;
+import org.apache.maven.dotnet.registry.RegistryLoader;
+import org.apache.maven.dotnet.registry.Repository;
+
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Set;
+
+final class RepositoryRegistryTestStub
+    implements RepositoryRegistry
+{
+    private SettingsRepository settingsRepository;
+
+    public boolean isEmpty()
+    {
+        return false;
+    }
+
+    public synchronized void setRepositoryLoader( RepositoryLoader loader )
+    {
+    }
+
+    public synchronized void setRegistryLoader( RegistryLoader loader )
+    {
+    }
+
+    public synchronized void loadFromInputStream( InputStream inputStream )
+        throws IOException
+    {
+    }
+
+    public synchronized void loadFromFile( String fileName )
+        throws IOException
+    {
+    }
+
+    public synchronized void loadFromResource( String fileName, Class sourceClass )
+        throws IOException
+    {
+    }
+
+    public synchronized void addRepository( String name, Repository repository )
+    {
+    }
+
+    public synchronized Repository find( String name )
+    {
+        return settingsRepository;
+    }
+
+    public synchronized void removeRepository( String name )
+    {
+    }
+
+    public synchronized Set getRepositoryNames()
+    {
+        return null;
+    }
+
+    public synchronized void empty()
+    {
+    }
+
+    void setSettingRepository(SettingsRepository settingsRepository)
+    {
+        this.settingsRepository = settingsRepository;
+    }
+}

Propchange: incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/RepositoryRegistryTestStub.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/SettingsRepositoryTestStub.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/SettingsRepositoryTestStub.java?view=auto&rev=521968
==============================================================================
--- incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/SettingsRepositoryTestStub.java (added)
+++ incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/SettingsRepositoryTestStub.java Fri Mar 23 19:52:36 2007
@@ -0,0 +1,18 @@
+package org.apache.maven.dotnet.vendor.impl;
+
+import org.apache.maven.dotnet.model.settings.DefaultSetup;
+
+final class SettingsRepositoryTestStub extends SettingsRepository
+{
+    private DefaultSetup defaultSetup;
+
+    DefaultSetup getDefaultSetup()
+    {
+        return defaultSetup;
+    }
+
+    void setDefaultSetup(DefaultSetup defaultSetup)
+    {
+        this.defaultSetup = defaultSetup;
+    }
+}

Propchange: incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/SettingsRepositoryTestStub.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/VendorInfoRepositoryTestStub.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/VendorInfoRepositoryTestStub.java?view=auto&rev=521968
==============================================================================
--- incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/VendorInfoRepositoryTestStub.java (added)
+++ incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/VendorInfoRepositoryTestStub.java Fri Mar 23 19:52:36 2007
@@ -0,0 +1,63 @@
+package org.apache.maven.dotnet.vendor.impl;
+
+import org.apache.maven.dotnet.vendor.VendorInfoRepository;
+import org.apache.maven.dotnet.vendor.VendorInfo;
+import org.apache.maven.dotnet.vendor.InvalidVersionFormatException;
+
+import org.apache.maven.dotnet.PlatformUnsupportedException;
+
+import java.io.File;
+import java.util.List;
+import java.util.Set;
+import java.util.ArrayList;
+
+public class VendorInfoRepositoryTestStub
+    implements VendorInfoRepository
+{
+
+    private List<VendorInfo> vendorInfos;
+
+    public boolean exists()
+    {
+        return true;
+    }
+
+    public File getInstallRootFor( VendorInfo vendorInfo )
+        throws PlatformUnsupportedException
+    {
+        return null;
+    }
+
+    public File getSdkInstallRootFor( VendorInfo vendorInfo )
+        throws PlatformUnsupportedException
+    {
+        return null;
+    }
+
+    public List<VendorInfo> getVendorInfos()
+    {
+        return new ArrayList<VendorInfo>();
+    }
+
+    public String getMaxVersion( Set<String> versions )
+        throws InvalidVersionFormatException
+    {
+        return new VersionMatcher().getMaxVersion( versions );
+    }
+
+    public List<VendorInfo> getVendorInfosFor( String vendorName, String vendorVersion, String frameworkVersion,
+                                               boolean isDefault )
+    {
+        return new ArrayList<VendorInfo>();
+    }
+
+    public List<VendorInfo> getVendorInfosFor( VendorInfo vendorInfo, boolean isDefault )
+    {
+        return vendorInfos;
+    }
+
+    void setVendorInfos( List<VendorInfo> vendorInfos )
+    {
+        this.vendorInfos = vendorInfos;
+    }
+}

Propchange: incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/VendorInfoRepositoryTestStub.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/VendorInfoTransitionRuleFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/VendorInfoTransitionRuleFactoryTest.java?view=auto&rev=521968
==============================================================================
--- incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/VendorInfoTransitionRuleFactoryTest.java (added)
+++ incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/VendorInfoTransitionRuleFactoryTest.java Fri Mar 23 19:52:36 2007
@@ -0,0 +1,164 @@
+package org.apache.maven.dotnet.vendor.impl;
+
+import junit.framework.TestCase;
+import org.apache.maven.dotnet.InitializationException;
+import org.apache.maven.dotnet.vendor.VendorInfoTransitionRule;
+import org.apache.maven.dotnet.vendor.VendorInfo;
+import org.apache.maven.dotnet.vendor.VendorInfoState;
+import org.apache.maven.dotnet.vendor.Vendor;
+import org.apache.maven.dotnet.model.settings.DefaultSetup;
+import org.codehaus.plexus.logging.console.ConsoleLogger;
+import org.codehaus.plexus.logging.Logger;
+
+import java.util.List;
+import java.util.ArrayList;
+
+public class VendorInfoTransitionRuleFactoryTest
+    extends TestCase
+{
+    public void testNTF()
+    {
+        List<VendorInfo> vendorInfoList = new ArrayList<VendorInfo>();
+        vendorInfoList.add( Factory.getVendorInfo( Vendor.MONO, "1.1.18", "1.1.4322" ) );
+        vendorInfoList.add( Factory.getVendorInfo( Vendor.MONO, "1.1.18", "2.0.50727" ) );
+
+        VendorInfoTransitionRuleFactory factory = Factory.getVendorInfoTransitionRuleFactory(
+            Factory.getDefaultSetup( "MICROSOFT", "2.0.50727", "2.0.50727" ), vendorInfoList );
+
+        VendorInfoTransitionRule rule = factory.createVendorInfoSetterForNTF();
+        VendorInfo vendorInfo = Factory.getVendorInfo( Vendor.MONO, "1.1.18", null );
+        VendorInfoState vendorInfoState = rule.process( vendorInfo );
+        assertEquals( "Incorrect Vendor State", vendorInfoState, VendorInfoState.NTT );
+        assertEquals( Vendor.MONO, vendorInfo.getVendor() );
+        assertEquals( "2.0.50727", vendorInfo.getFrameworkVersion() );
+        assertEquals( "1.1.18", vendorInfo.getVendorVersion() );
+    }
+
+    public void testNFF()
+    {
+        List<VendorInfo> vendorInfoList = new ArrayList<VendorInfo>();
+        vendorInfoList.add( Factory.getVendorInfo( Vendor.MONO, "1.1.18", "1.1.4322" ) );
+        vendorInfoList.add( Factory.getVendorInfo( Vendor.MONO, "1.1.18", "2.0.50727" ) );
+
+        VendorInfoTransitionRuleFactory factory = Factory.getVendorInfoTransitionRuleFactory(
+            Factory.getDefaultSetup( "MICROSOFT", "2.0.50727", "2.0.50727" ), vendorInfoList );
+
+        VendorInfoTransitionRule rule = factory.createVendorInfoSetterForNFF();
+        VendorInfo vendorInfo = Factory.getVendorInfo( Vendor.MONO, null, null );
+        VendorInfoState vendorInfoState = rule.process( vendorInfo );
+        assertEquals( "Incorrect Vendor State", vendorInfoState, VendorInfoState.POST_PROCESS );
+        assertEquals( Vendor.MONO, vendorInfo.getVendor() );
+        assertEquals( "2.0.50727", vendorInfo.getFrameworkVersion() );
+        assertEquals( "1.1.18", vendorInfo.getVendorVersion() );
+    }
+
+    public void testNFF_MatchDefaultVendor()
+    {
+        List<VendorInfo> vendorInfoList = new ArrayList<VendorInfo>();
+        vendorInfoList.add( Factory.getVendorInfo( Vendor.MONO, "1.1.18", "2.0.50727" ) );
+        vendorInfoList.add( Factory.getVendorInfo( Vendor.MONO, "1.1.18", "1.1.4322" ) );
+
+        VendorInfoTransitionRuleFactory factory = Factory.getVendorInfoTransitionRuleFactory(
+            Factory.getDefaultSetup( "MONO", "1.1.18", "1.1.4322" ), vendorInfoList );
+
+        VendorInfoTransitionRule rule = factory.createVendorInfoSetterForNFF();
+        VendorInfo vendorInfo = Factory.getVendorInfo( Vendor.MONO, null, null );
+        VendorInfoState vendorInfoState = rule.process( vendorInfo );
+        assertEquals( "Incorrect Vendor State", vendorInfoState, VendorInfoState.POST_PROCESS );
+        assertEquals( Vendor.MONO, vendorInfo.getVendor() );
+        assertEquals( "1.1.4322", vendorInfo.getFrameworkVersion() );
+        assertEquals( "1.1.18", vendorInfo.getVendorVersion() );
+    }
+
+    public void testNFT()
+    {
+        List<VendorInfo> vendorInfoList = new ArrayList<VendorInfo>();
+        vendorInfoList.add( Factory.getVendorInfo( Vendor.MONO, "1.1.13", "2.0.50727" ) );
+        vendorInfoList.add( Factory.getVendorInfo( Vendor.MONO, "1.1.18", "2.0.50727" ) );
+
+        VendorInfoTransitionRuleFactory factory = Factory.getVendorInfoTransitionRuleFactory(
+            Factory.getDefaultSetup( "MICROSOFT", "2.0.50727", "2.0.50727" ), vendorInfoList );
+
+        VendorInfoTransitionRule rule = factory.createVendorInfoSetterForNFT();
+        VendorInfo vendorInfo = Factory.getVendorInfo( Vendor.MONO, null, "2.0.50727" );
+        VendorInfoState vendorInfoState = rule.process( vendorInfo );
+        assertEquals( "Incorrect Vendor State", vendorInfoState, VendorInfoState.NTT );
+        assertEquals( Vendor.MONO, vendorInfo.getVendor() );
+        assertEquals( "2.0.50727", vendorInfo.getFrameworkVersion() );
+        assertEquals( "1.1.18", vendorInfo.getVendorVersion() );
+    }
+
+    public void testNFT_WithMatchingDefault()
+    {
+        List<VendorInfo> vendorInfoList = new ArrayList<VendorInfo>();
+        vendorInfoList.add( Factory.getVendorInfo( Vendor.MONO, "1.1.18", "2.0.50727" ) );
+
+        VendorInfoTransitionRuleFactory factory = Factory.getVendorInfoTransitionRuleFactory(
+            Factory.getDefaultSetup( "MONO", "1.1.18", "2.0.50727" ), vendorInfoList );
+
+        VendorInfoTransitionRule rule = factory.createVendorInfoSetterForNFT();
+        VendorInfo vendorInfo = Factory.getVendorInfo( Vendor.MONO, null, "2.0.50727" );
+        VendorInfoState vendorInfoState = rule.process( vendorInfo );
+        assertEquals( "Incorrect Vendor State", vendorInfoState, VendorInfoState.NTT );
+        assertEquals( Vendor.MONO, vendorInfo.getVendor() );
+        assertEquals( "2.0.50727", vendorInfo.getFrameworkVersion() );
+        assertEquals( "1.1.18", vendorInfo.getVendorVersion() );
+    }
+
+    public void testNFT_CantFindMatchingVendorInfo()
+    {
+        VendorInfoTransitionRuleFactory factory = Factory.getVendorInfoTransitionRuleFactory(
+            Factory.getDefaultSetup( "MICROSOFT", "2.0.50727", "2.0.50727" ), new ArrayList<VendorInfo>() );
+
+        VendorInfoTransitionRule rule = factory.createVendorInfoSetterForNFT();
+        VendorInfo vendorInfo = Factory.getVendorInfo( Vendor.MONO, null, "2.0.50727" );
+        VendorInfoState vendorInfoState = rule.process( vendorInfo );
+        assertEquals( "Incorrect Vendor State", vendorInfoState, VendorInfoState.POST_PROCESS );
+    }
+
+    private static class Factory
+    {
+        static VendorInfoTransitionRuleFactory getVendorInfoTransitionRuleFactory( DefaultSetup defaultSetup,
+                                                                                   List<VendorInfo> vendorInfos )
+        {
+            SettingsRepositoryTestStub settingsRepository = new SettingsRepositoryTestStub();
+            settingsRepository.setDefaultSetup( defaultSetup );
+
+            RepositoryRegistryTestStub repositoryRegistry = new RepositoryRegistryTestStub();
+            repositoryRegistry.setSettingRepository( settingsRepository );
+
+            VendorInfoRepositoryTestStub vendorInfoRepository = new VendorInfoRepositoryTestStub();
+            vendorInfoRepository.setVendorInfos( vendorInfos );
+
+            VendorInfoTransitionRuleFactory factory = new VendorInfoTransitionRuleFactory();
+            try
+            {
+                factory.init( repositoryRegistry, vendorInfoRepository,
+                              new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+            }
+            catch ( InitializationException e )
+            {
+                e.printStackTrace();
+            }
+            return factory;
+        }
+
+        static VendorInfo getVendorInfo( Vendor vendor, String vendorVersion, String frameworkVersion )
+        {
+            VendorInfo vendorInfo = VendorInfo.Factory.createDefaultVendorInfo();
+            vendorInfo.setVendor( vendor );
+            vendorInfo.setFrameworkVersion( frameworkVersion );
+            vendorInfo.setVendorVersion( vendorVersion );
+            return vendorInfo;
+        }
+
+        static DefaultSetup getDefaultSetup( String vendorName, String vendorVersion, String frameworkVersion )
+        {
+            DefaultSetup defaultSetup = new DefaultSetup();
+            defaultSetup.setVendorName( vendorName );
+            defaultSetup.setVendorVersion( vendorVersion );
+            defaultSetup.setFrameworkVersion( frameworkVersion );
+            return defaultSetup;
+        }
+    }
+}

Propchange: incubator/nmaven/branches/SI_XPT/components/dotnet-vendor/src/test/java/org/apache/maven/dotnet/vendor/impl/VendorInfoTransitionRuleFactoryTest.java
------------------------------------------------------------------------------
    svn:eol-style = native