You are viewing a plain text version of this content. The canonical link for it is here.
Posted to npanday-commits@incubator.apache.org by lc...@apache.org on 2011/12/15 17:07:13 UTC

svn commit: r1214869 [7/11] - in /incubator/npanday/trunk: ./ archetypes/maven-archetype-netexecutable/src/main/resources/archetype-resources/src/main/java/ components/ components/dotnet-artifact/ components/dotnet-artifact/src/main/java/npanday/artifa...

Modified: incubator/npanday/trunk/components/dotnet-vendor/src/main/java/npanday/vendor/impl/VendorInfoRepositoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-vendor/src/main/java/npanday/vendor/impl/VendorInfoRepositoryImpl.java?rev=1214869&r1=1214868&r2=1214869&view=diff
==============================================================================
--- incubator/npanday/trunk/components/dotnet-vendor/src/main/java/npanday/vendor/impl/VendorInfoRepositoryImpl.java (original)
+++ incubator/npanday/trunk/components/dotnet-vendor/src/main/java/npanday/vendor/impl/VendorInfoRepositoryImpl.java Thu Dec 15 17:07:06 2011
@@ -18,22 +18,24 @@
  */
 package npanday.vendor.impl;
 
-import npanday.ArtifactType;
-import npanday.ArtifactTypeHelper;
+import npanday.PlatformUnsupportedException;
 import npanday.model.settings.Framework;
-import npanday.vendor.*;
 import npanday.registry.RepositoryRegistry;
-import npanday.PlatformUnsupportedException;
+import npanday.vendor.InvalidVersionFormatException;
+import npanday.vendor.SettingsRepository;
+import npanday.vendor.Vendor;
+import npanday.vendor.VendorInfo;
+import npanday.vendor.VendorInfoMatchPolicy;
+import npanday.vendor.VendorInfoRepository;
+import npanday.vendor.VendorRequirement;
+import org.codehaus.plexus.logging.LogEnabled;
+import org.codehaus.plexus.logging.Logger;
 
-import java.util.List;
-import java.util.Collections;
+import java.io.File;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
 import java.util.Set;
-import java.util.HashSet;
-import java.io.File;
-
-import org.codehaus.plexus.logging.LogEnabled;
-import org.codehaus.plexus.logging.Logger;
 
 /**
  * Provides an implementation of <code>VendorInfoRepository</code>.
@@ -61,6 +63,11 @@ public class VendorInfoRepositoryImpl
     private List<VendorInfo> cachedVendorInfos;
 
     /**
+     * The version the repository was at, when the cache was built up.
+     */
+    private int cachedVendorInfosContentVersion;
+
+    /**
      * Constructor. This method is intended to be invoked by the plexus-container, not by the application developer.
      */
     public VendorInfoRepositoryImpl()
@@ -75,14 +82,6 @@ public class VendorInfoRepositoryImpl
         this.logger = logger;
     }
 
-    /**
-     * @see npanday.vendor.VendorInfoRepository#exists()
-     */
-    public boolean exists()
-    {
-        return ( repositoryRegistry.find( "npanday-settings" ) != null );
-    }
-
     public void clearCache()
     {
         if ( cachedVendorInfos != null )
@@ -92,34 +91,17 @@ public class VendorInfoRepositoryImpl
         }
     }
 
-    private File getInstallRootFor( VendorInfo vendorInfo )
-        throws PlatformUnsupportedException
-    {
-        SettingsRepository settingsRepository = (SettingsRepository) repositoryRegistry.find( "npanday-settings" );
-        return settingsRepository.getInstallRootFor( vendorInfo.getVendor().getVendorName(),
-                                                     vendorInfo.getVendorVersion(), vendorInfo.getFrameworkVersion() );
-    }
-
-    private File getSdkInstallRootFor( VendorInfo vendorInfo )
-        throws PlatformUnsupportedException
-    {
-        SettingsRepository settingsRepository = (SettingsRepository) repositoryRegistry.find( "npanday-settings" );
-        return settingsRepository.getSdkInstallRootFor( vendorInfo.getVendor().getVendorName(),
-                                                        vendorInfo.getVendorVersion(),
-                                                        vendorInfo.getFrameworkVersion() );
-    }
-
-    public VendorInfo getConfiguredVendorInfoByExample(VendorInfo vendorInfoExample)
+    public VendorInfo getSingleVendorInfoByRequirement( VendorRequirement vendorRequirement )
         throws PlatformUnsupportedException
     {
-        List<VendorInfo> infos = getVendorInfosFor(vendorInfoExample, false);
+        List<VendorInfo> infos = getVendorInfosFor( vendorRequirement, false);
         if (infos.size() == 0) {
-           throw new PlatformUnsupportedException( "NPANDAY-200-001: Could not find configuration for " + vendorInfoExample );
+           throw new PlatformUnsupportedException( "NPANDAY-113-001: Could not find configuration for " + vendorRequirement );
         }
 
         if (infos.size() > 2) {
-            // reload default
-            infos = getVendorInfosFor(vendorInfoExample, true);
+            // reloadAll default
+            infos = getVendorInfosFor( vendorRequirement, true);
         }
 
         assert infos.size() == 1;
@@ -129,28 +111,30 @@ public class VendorInfoRepositoryImpl
 
     private List<VendorInfo> getVendorInfos()
     {
+        ensureCache();
+
+        return Collections.unmodifiableList( cachedVendorInfos );
+    }
+
+    private void ensureCache()
+    {
         SettingsRepository settingsRepository = (SettingsRepository) repositoryRegistry.find( "npanday-settings" );
 
-        if ( settingsRepository.isReloaded() )
-        {
-            clearCache();
-            settingsRepository.setReloaded(false);
+        if (settingsRepository.isEmpty()) {
+            logger.warn( "NPANDAY-113-000: The settings repository does not contain any vendor information" );
         }
 
-        try
+        if ( settingsRepository.getContentVersion() > cachedVendorInfosContentVersion )
         {
-            settingsRepository.reload();
-        }
-        catch(Exception e)
-        {
-            //e.printStackTrace();
+            clearCache();
         }
- 
-        if ( cachedVendorInfos != null && cachedVendorInfos.size() > 0 &&  !settingsRepository.isReloaded() )
+
+        if ( cachedVendorInfos != null && cachedVendorInfos.size() > 0 )
         {
-            return Collections.unmodifiableList( cachedVendorInfos );
+            return;
         }
 
+        cachedVendorInfosContentVersion = settingsRepository.getContentVersion();
         cachedVendorInfos = new ArrayList<VendorInfo>();
 
         for ( npanday.model.settings.Vendor v : settingsRepository.getVendors() )
@@ -158,42 +142,9 @@ public class VendorInfoRepositoryImpl
             List<Framework> frameworks = v.getFrameworks();
             for ( Framework framework : frameworks )
             {
-                VendorInfo vendorInfo = VendorInfo.Factory.createDefaultVendorInfo();
-                vendorInfo.setVendorVersion( v.getVendorVersion() );
-                List<File> executablePaths = new ArrayList<File>();
-
-                // add .NET install root as path
-                executablePaths.add(new File( framework.getInstallRoot() ));
-
-                // add .NET-SDK install root as path
-                if(framework.getSdkInstallRoot() != null)
-                {
-                    executablePaths.add( new File(framework.getSdkInstallRoot()));
-                }
-
-                // copy configured additional execution paths
-                if (framework.getExecutablePaths() != null) {
-                    for(Object path: framework.getExecutablePaths()) {
-                        executablePaths.add( new File((String)path) );
-                    }
-                }
-                vendorInfo.setExecutablePaths( executablePaths );
-                vendorInfo.setFrameworkVersion( framework.getFrameworkVersion() );
-                try
-                {
-                    vendorInfo.setVendor( VendorFactory.createVendorFromName(v.getVendorName()) );
-                }
-                catch ( VendorUnsupportedException e )
-                {
-                    continue;
-                }
-                vendorInfo.setDefault(
-                    v.getIsDefault() != null && v.getIsDefault().toLowerCase().trim().equals( "true" ) );
-                cachedVendorInfos.add( vendorInfo );
+                cachedVendorInfos.add( new SettingsBasedVendorInfo( v, framework ) );
             }
         }
-        settingsRepository.setReloaded( false );
-        return Collections.unmodifiableList( cachedVendorInfos );
     }
 
     /**
@@ -243,16 +194,16 @@ public class VendorInfoRepositoryImpl
     }
 
     /**
-     * @see VendorInfoRepository#getVendorInfosFor(npanday.vendor.VendorInfo, boolean)
+     * @see VendorInfoRepository#getVendorInfosFor(npanday.vendor.VendorRequirement, boolean)
      */
-    public List<VendorInfo> getVendorInfosFor( VendorInfo vendorInfo, boolean defaultOnly )
+    public List<VendorInfo> getVendorInfosFor( VendorRequirement vendorRequirement, boolean defaultOnly )
     {
-        if ( vendorInfo == null )
+        if ( vendorRequirement == null )
         {
             return getVendorInfos();
         }
-        return getVendorInfosFor( ( vendorInfo.getVendor() != null ? vendorInfo.getVendor().getVendorName() : null ),
-                                  vendorInfo.getVendorVersion(), vendorInfo.getFrameworkVersion(), defaultOnly );
+        return getVendorInfosFor( ( vendorRequirement.getVendor() != null ? vendorRequirement.getVendor().getVendorName() : null ),
+                                  vendorRequirement.getVendorVersion(), vendorRequirement.getFrameworkVersion(), defaultOnly );
     }
 
     /**
@@ -279,86 +230,18 @@ public class VendorInfoRepositoryImpl
     public File getGlobalAssemblyCacheDirectoryFor( Vendor vendor, String frameworkVersion, String artifactType )
         throws PlatformUnsupportedException
     {
-        // TODO: Duplicate code with CompilerContextImpl.init
+        return getSingleVendorInfoByRequirement( new VendorRequirement( vendor, null, frameworkVersion ) )
+            .getGlobalAssemblyCacheDirectoryFor(artifactType);
+    }
 
-        if (ArtifactTypeHelper.isDotnetGenericGac( artifactType ))
-        {
-            if ( vendor.equals( Vendor.MICROSOFT ) && frameworkVersion.equals( "1.1.4322" ) )
-            {
-                return new File( System.getenv("SystemRoot"), "\\assembly\\GAC\\" );
-            }
-            else if ( vendor.equals( Vendor.MICROSOFT ) )
-            {
-                // Layout changed since 2.0
-                // http://discuss.joelonsoftware.com/default.asp?dotnet.12.383883.5
-                return new File( System.getenv("SystemRoot"), "\\assembly\\GAC_MSIL\\" );
-            }
-            else if ( vendor.equals( Vendor.MONO ) && exists() )
-            {
-                List<VendorInfo> vendorInfos =
-                    getVendorInfosFor( vendor.getVendorName(), null, frameworkVersion, true );
-                Set<String> vendorVersions = new HashSet<String>();
-                for ( VendorInfo vendorInfo : vendorInfos )
-                {
-                    vendorVersions.add( vendorInfo.getVendorVersion() );
-                }
-                String maxVersion;
-                try
-                {
-                    maxVersion = getMaxVersion( vendorVersions );
-                }
-                catch ( InvalidVersionFormatException e )
-                {
-                    throw new PlatformUnsupportedException( "NPANDAY-xxx-000: Invalid version format", e );
-                }
-
-                for ( VendorInfo vendorInfo : vendorInfos )
-                {
-                    if ( vendorInfo.getVendorVersion().equals( maxVersion ) )
-                    {
-                        File sdkInstallRoot = getSdkInstallRootFor( vendorInfo );
-                        File gacRoot = new File( sdkInstallRoot.getParentFile().getAbsolutePath() + "/lib/mono/gac" );
-                        if ( !gacRoot.exists() )
-                        {
-                            throw new PlatformUnsupportedException(
-                                "NPANDAY-xxx-000: The Mono GAC path does not exist: Path = " +
-                                    gacRoot.getAbsolutePath() );
-                        }
-                        return gacRoot;
-                    }
-                }
-                
-                //TODO: MONO Support for Linux (Separate file containg installs)
-            }
-        }
-        else if ( artifactType.equals( ArtifactType.GAC.getPackagingType() ) )
-        {
-            return new File( System.getenv("SystemRoot"), "\\assembly\\GAC\\" );
-        }
-        else if ( artifactType.equals( ArtifactType.GAC_32.getPackagingType() ) )
-        {
-            return new File(System.getenv("SystemRoot"), "\\assembly\\GAC_32\\" );
-        }
-        else if ( artifactType.equals( ArtifactType.GAC_32_4.getPackagingType() ) )
-        {
-            return new File(System.getenv("SystemRoot"), "\\Microsoft.NET\\assembly\\GAC_32\\" );
-        }
-        else if ( artifactType.equals( ArtifactType.GAC_64.getPackagingType() ) )
-        {
-            return new File(System.getenv("SystemRoot"), "\\assembly\\GAC_64\\" );
-        }
-        else if ( artifactType.equals( ArtifactType.GAC_64_4.getPackagingType() ) )
-        {
-            return new File(System.getenv("SystemRoot"), "\\Microsoft.NET\\assembly\\GAC_64\\" );
-        }
-        else if ( artifactType.equals( ArtifactType.GAC_MSIL.getPackagingType() ) )
-        {
-            return new File( System.getenv("SystemRoot"), "\\assembly\\GAC_MSIL\\" );
-        }
-        else if ( artifactType.equals( ArtifactType.GAC_MSIL4.getPackagingType() ) )
-        {
-            return new File( System.getenv("SystemRoot"), "\\Microsoft.NET\\assembly\\GAC_MSIL\\" );
-        }
-        throw new PlatformUnsupportedException("NPANDAY-200-002: Could not locate a valid GAC");
+    public boolean isEmpty()
+    {
+        return getVendorInfos().size() == 0;
+    }
+
+    public void setRepositoryRegistry( RepositoryRegistry repositoryRegistry )
+    {
+        this.repositoryRegistry = repositoryRegistry;
     }
 }
+

Modified: incubator/npanday/trunk/components/dotnet-vendor/src/main/java/npanday/vendor/impl/VendorInfoTransitionRuleFactory.java
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-vendor/src/main/java/npanday/vendor/impl/VendorInfoTransitionRuleFactory.java?rev=1214869&r1=1214868&r2=1214869&view=diff
==============================================================================
--- incubator/npanday/trunk/components/dotnet-vendor/src/main/java/npanday/vendor/impl/VendorInfoTransitionRuleFactory.java (original)
+++ incubator/npanday/trunk/components/dotnet-vendor/src/main/java/npanday/vendor/impl/VendorInfoTransitionRuleFactory.java Thu Dec 15 17:07:06 2011
@@ -18,29 +18,35 @@
  */
 package npanday.vendor.impl;
 
-import npanday.vendor.*;
 import npanday.InitializationException;
 import npanday.PlatformUnsupportedException;
 import npanday.registry.RepositoryRegistry;
+import npanday.vendor.InvalidVersionFormatException;
+import npanday.vendor.SettingsException;
+import npanday.vendor.SettingsRepository;
+import npanday.vendor.SettingsUtil;
+import npanday.vendor.Vendor;
+import npanday.vendor.VendorFactory;
+import npanday.vendor.VendorInfo;
+import npanday.vendor.VendorInfoRepository;
+import npanday.vendor.VendorInfoTransitionRule;
+import npanday.vendor.VendorRequirement;
+import npanday.vendor.VendorRequirementState;
+import org.codehaus.plexus.logging.Logger;
 
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
-import java.util.HashSet;
-import java.util.ArrayList;
-import java.io.File;
-
-import org.codehaus.plexus.logging.Logger;
 
 /**
  * Provides factory methods for creating vendor info transition rules. These rules usually can determine the
  * exact vendor info; but at times, it is a best guess.
  *
  * @author Shane Isbell
- * @see VendorInfoState
+ * @see npanday.vendor.VendorRequirementState
  */
 final class VendorInfoTransitionRuleFactory
 {
-
     private VendorInfoRepository vendorInfoRepository;
 
     /**
@@ -96,6 +102,7 @@ final class VendorInfoTransitionRuleFact
         }
         logger.debug( "NPANDAY-103-036.0: Respository registry: " + repositoryRegistry);
 
+        // TODO: I think we should make sure settingsrepo is filled prio to this
         SettingsRepository settingsRepository = null;
         try
         {
@@ -106,54 +113,9 @@ final class VendorInfoTransitionRuleFact
             throw new InitializationException( "NPANDAY-103-067: Could not get settings." , e);
         }
 
-        if (settingsRepository != null)
-        {
-            try
-            {
-                defaultVendor = VendorFactory.createVendorFromName( settingsRepository.getDefaultSetup().getVendorName() );
-                logger.debug( "NPANDAY-103-036: Default Vendor Initialized: Name = " + defaultVendor );
-            }
-            catch ( VendorUnsupportedException e )
-            {
-                throw new InitializationException( "NPANDAY-103-002: Unknown Default Vendor: Name = " + defaultVendor, e );
-            }
-            defaultVendorVersion = settingsRepository.getDefaultSetup().getVendorVersion().trim();
-            defaultFrameworkVersion = settingsRepository.getDefaultSetup().getFrameworkVersion().trim();
-        }
-    }
-
-    VendorInfoTransitionRule createPostProcessRule()
-    {
-        return new VendorInfoTransitionRule()
-        {
-            public VendorInfoState process( VendorInfo vendorInfo )
-            {
-                logger.debug( "NPANDAY-103-034: Entering State = Post Process, applying executable paths" );
-                if ( ( vendorInfo.getExecutablePaths() == null || vendorInfo.getExecutablePaths().size() == 0 ) &&
-                    vendorInfoRepository.exists() )
-                {
-                    try
-                    {
-                        List<File> existingPaths = new ArrayList<File>();
-                        List<File> configuredExecutablePaths = vendorInfoRepository.getConfiguredVendorInfoByExample(vendorInfo).getExecutablePaths();
-                        for(File path : configuredExecutablePaths){
-                            if (!path.exists()) {
-                                logger.debug( "NPANDAY-103-61: Configured path does not exist and is therefore omitted: " + path );
-                            }
-                            else {
-                                existingPaths.add(path);
-                            }
-                        }
-                        vendorInfo.setExecutablePaths( existingPaths );
-                    }
-                    catch ( PlatformUnsupportedException e )
-                    {
-                        logger.debug( "NPANDAY-103-36: Failed to resolve configured executable paths." );
-                    }
-                }
-                return VendorInfoState.EXIT;
-            }
-        };
+        defaultVendor = VendorFactory.createVendorFromName( settingsRepository.getDefaultSetup().getVendorName() );
+        defaultVendorVersion = settingsRepository.getDefaultSetup().getVendorVersion().trim();
+        defaultFrameworkVersion = settingsRepository.getDefaultSetup().getFrameworkVersion().trim();
     }
 
     /**
@@ -165,10 +127,10 @@ final class VendorInfoTransitionRuleFact
     {
         return new VendorInfoTransitionRule()
         {
-            public VendorInfoState process( VendorInfo vendorInfo )
+            public VendorRequirementState process( VendorRequirement vendorInfo )
             {
                 logger.debug( "NPANDAY-103-003: Entering State = NTT" );
-                return VendorInfoState.POST_PROCESS;
+                return VendorRequirementState.EXIT;
             }
         };
     }
@@ -177,7 +139,7 @@ final class VendorInfoTransitionRuleFact
     {
         return new VendorInfoTransitionRule()
         {
-            public VendorInfoState process( VendorInfo vendorInfo )
+            public VendorRequirementState process( VendorRequirement vendorInfo )
             {
                 logger.debug( "NPANDAY-103-004: Entering State = NFF" );
                 logger.debug( "NPANDAY-103-041: Vendor:" + vendorInfo.getVendor() + ":default vendor:" + defaultVendor );
@@ -186,7 +148,7 @@ final class VendorInfoTransitionRuleFact
                     vendorInfo.setVendorVersion( defaultVendorVersion );
                     logger.debug( "NPANDAY-103-042: Set default framework:" + defaultFrameworkVersion );
                     vendorInfo.setFrameworkVersion( defaultFrameworkVersion );
-                    return VendorInfoState.POST_PROCESS;
+                    return VendorRequirementState.EXIT;
                 }
                 else
                 {
@@ -199,9 +161,10 @@ final class VendorInfoTransitionRuleFact
                             if ( vi.getVendor().equals( vendorInfo.getVendor() ) )
                             {
                                 vendorInfo.setVendorVersion( vi.getVendorVersion() );
-                                logger.debug( "NPANDAY-103-044: Hard code the frameworkd (default framework:" + defaultFrameworkVersion + ")" );
+                                logger.warn( "NPANDAY-103-044: Hard code the frameworkd (default framework:"
+                                                 + defaultFrameworkVersion + ")" );
                                 vendorInfo.setFrameworkVersion( "2.0.50727" );
-                                return VendorInfoState.POST_PROCESS;
+                                return VendorRequirementState.EXIT;
                             }
                         }
                     }
@@ -214,41 +177,16 @@ final class VendorInfoTransitionRuleFact
                             if ( vi.getVendor().equals( vendorInfo.getVendor() ) )
                             {
                                 vendorInfo.setVendorVersion( vi.getVendorVersion() );
-                                logger.debug( "NPANDAY-103-045: Hard code the frameworkd (default framework:" + defaultFrameworkVersion + ")" );
+                                logger.warn( "NPANDAY-103-045: Hard code the frameworkd (default framework:"
+                                                 + defaultFrameworkVersion + ")" );
                                 vendorInfo.setFrameworkVersion(
                                     "2.0.50727" );  //TODO: this should be according to max version
-                                return VendorInfoState.POST_PROCESS;
+                                return VendorRequirementState.EXIT;
                             }
                         }
                     }
                 }
-                return createVendorInfoSetterForNFF_NoSettings().process( vendorInfo );
-            }
-        };
-    }
-
-    VendorInfoTransitionRule createVendorInfoSetterForNFF_NoSettings()
-    {
-        return new VendorInfoTransitionRule()
-        {
-            public VendorInfoState process( VendorInfo vendorInfo )
-            {
-                logger.debug( "NPANDAY-103-005: Entering State = NFF" );
-                logger.debug( "NPANDAY-103-047: Hard code the frameworkd (default framework:" + defaultFrameworkVersion + ")" );
-                vendorInfo.setFrameworkVersion( "2.0.50727" );
-                return VendorInfoState.NFT;
-            }
-        };
-    }
-
-    VendorInfoTransitionRule createVendorInfoSetterForNFT_NoSettings()
-    {
-        return new VendorInfoTransitionRule()
-        {
-            public VendorInfoState process( VendorInfo vendorInfo )
-            {
-                logger.debug( "NPANDAY-103-006: Entering State = NFT" );
-                return VendorInfoState.POST_PROCESS; //NO WAY TO KNOW
+                return VendorRequirementState.EXIT;
             }
         };
     }
@@ -257,14 +195,14 @@ final class VendorInfoTransitionRuleFact
     {
         return new VendorInfoTransitionRule()
         {
-            public VendorInfoState process( VendorInfo vendorInfo )
+            public VendorRequirementState process( VendorRequirement vendorInfo )
             {
                 logger.debug( "NPANDAY-103-007: Entering State = NFT" );
                 if ( vendorInfo.getFrameworkVersion().equals( defaultFrameworkVersion ) &&
                     vendorInfo.getVendor().equals( defaultVendor ) )
                 {
                     vendorInfo.setVendorVersion( defaultVendorVersion );
-                    return VendorInfoState.NTT;
+                    return VendorRequirementState.NTT;
                 }
                 else
                 {
@@ -288,14 +226,14 @@ final class VendorInfoTransitionRuleFact
                             }
                             catch ( InvalidVersionFormatException e )
                             {
-                                logger.warn( "NPANDAY-103-039: Bad npanday-settings.xml file", e );
-                                return createVendorInfoSetterForNFT_NoSettings().process( vendorInfo );
+                                logger.error( "NPANDAY-103-039: Bad npanday-settings.xml file", e );
+                                return VendorRequirementState.EXIT;
                             }
-                            return VendorInfoState.NTT;
+                            return VendorRequirementState.NTT;
                         }
                         else
                         {
-                            return createVendorInfoSetterForNFT_NoSettings().process( vendorInfo );
+                            return VendorRequirementState.EXIT;
                         }
                     }
                     else
@@ -318,36 +256,23 @@ final class VendorInfoTransitionRuleFact
                             }
                             catch ( InvalidVersionFormatException e )
                             {
-                                logger.warn( "NPANDAY-103-040: Bad npanday-settings.xml file", e );
-                                return createVendorInfoSetterForNFT_NoSettings().process( vendorInfo );
+                                logger.error( "NPANDAY-103-040: Bad npanday-settings.xml file", e );
+                                return VendorRequirementState.EXIT;
                             }
-                            return VendorInfoState.NTT;
+                            return VendorRequirementState.NTT;
                         }
-                        return createVendorInfoSetterForNFT_NoSettings().process( vendorInfo );
+                        return VendorRequirementState.EXIT;
                     }
                 }
             }
         };
     }
 
-    VendorInfoTransitionRule createVendorInfoSetterForNTF_NoSettings()
-    {
-        return new VendorInfoTransitionRule()
-        {
-            public VendorInfoState process( VendorInfo vendorInfo )
-            {
-                logger.debug( "NPANDAY-103-008: Entering State = NTF" );
-                vendorInfo.setFrameworkVersion( "2.0.50727" );
-                return VendorInfoState.NTT;
-            }
-        };
-    }
-
     VendorInfoTransitionRule createVendorInfoSetterForNTF()
     {
         return new VendorInfoTransitionRule()
         {
-            public VendorInfoState process( VendorInfo vendorInfo )
+            public VendorRequirementState process( VendorRequirement vendorInfo )
             {
                 logger.debug( "NPANDAY-103-009: Entering State = NTF" );
                 logger.debug( "NPANDAY-103-049: Compare vendor version :" + defaultVendorVersion + ":width:" + vendorInfo.getVendorVersion());
@@ -357,7 +282,7 @@ final class VendorInfoTransitionRuleFact
                     logger.debug( "NPANDAY-103-049: Set to default framework:" + defaultFrameworkVersion + ")" );
                     vendorInfo.setFrameworkVersion( defaultFrameworkVersion );
                     vendorInfo.setVendor( defaultVendor );
-                    return VendorInfoState.NTT;
+                    return VendorRequirementState.NTT;
                 }
                 else
                 {
@@ -382,14 +307,14 @@ final class VendorInfoTransitionRuleFact
                             }
                             catch ( InvalidVersionFormatException e )
                             {
-                                logger.warn( "NPANDAY-103-037: Bad npanday-settings.xml file", e );
-                                return createVendorInfoSetterForNTF_NoSettings().process( vendorInfo );
+                                logger.error( "NPANDAY-103-037: Bad npanday-settings.xml file", e );
+                                return VendorRequirementState.EXIT;
                             }
-                            return VendorInfoState.NTT;
+                            return VendorRequirementState.NTT;
                         }
                         else
                         {
-                            return createVendorInfoSetterForNTF_NoSettings().process( vendorInfo );
+                            return VendorRequirementState.EXIT;
                         }
                     }
                     else
@@ -413,14 +338,14 @@ final class VendorInfoTransitionRuleFact
                             }
                             catch ( InvalidVersionFormatException e )
                             {
-                                logger.warn( "NPANDAY-103-038: Bad npanday-settings.xml file", e );
-                                return createVendorInfoSetterForNTF_NoSettings().process( vendorInfo );
+                                logger.error( "NPANDAY-103-038: Bad npanday-settings.xml file", e );
+                                return VendorRequirementState.EXIT;
                             }
-                            return VendorInfoState.NTT;
+                            return VendorRequirementState.NTT;
                         }
                         else
                         {
-                            return createVendorInfoSetterForNTF_NoSettings().process( vendorInfo );
+                            return VendorRequirementState.EXIT;
                         }
                     }
                 }
@@ -428,33 +353,11 @@ final class VendorInfoTransitionRuleFact
         };
     }
 
-    VendorInfoTransitionRule createVendorInfoSetterForFTF_NoSettings()
-    {
-        return new VendorInfoTransitionRule()
-        {
-            public VendorInfoState process( VendorInfo vendorInfo )
-            {
-                logger.debug( "NPANDAY-103-010: Entering State = FTF" );
-                String vendorVersion = vendorInfo.getVendorVersion();
-                if ( vendorVersion.equals( "2.0.50727" ) || vendorVersion.equals( "1.1.4322" ) )
-                {
-                    vendorInfo.setVendor( Vendor.MICROSOFT );
-                    return VendorInfoState.MTF;
-                }
-                else
-                {
-                    vendorInfo.setVendor( Vendor.MONO );//This could be dotGNU: this is best guess
-                    return VendorInfoState.NTF;
-                }
-            }
-        };
-    }
-
     VendorInfoTransitionRule createVendorInfoSetterForFTF()
     {
         return new VendorInfoTransitionRule()
         {
-            public VendorInfoState process( VendorInfo vendorInfo )
+            public VendorRequirementState process( VendorRequirement vendorInfo )
             {
                 logger.debug( "NPANDAY-103-011: Entering State = FTF" );
                 logger.debug( "NPANDAY-103-067: Compare vendor version :" + defaultVendorVersion + ":width:" + vendorInfo.getVendorVersion());
@@ -467,15 +370,15 @@ final class VendorInfoTransitionRuleFact
                     vendorInfo.setVendor( defaultVendor );
                     if ( defaultVendor.equals( Vendor.MICROSOFT ) )
                     {
-                        return VendorInfoState.MTT;
+                        return VendorRequirementState.MTT;
                     }
                     else if ( defaultVendor.equals( Vendor.MONO ) )
                     {
-                        return VendorInfoState.NTT;
+                        return VendorRequirementState.NTT;
                     }
                     else
                     {
-                        return VendorInfoState.GTT;
+                        return VendorRequirementState.GTT;
                     }
                 }
                 else
@@ -495,19 +398,19 @@ final class VendorInfoTransitionRuleFact
                                 vendorInfo.setVendor( vi.getVendor() );
                                 if ( vi.getVendor().equals( Vendor.MICROSOFT ) )
                                 {
-                                    return VendorInfoState.MTT;
+                                    return VendorRequirementState.MTT;
                                 }
                                 else if ( vi.getVendor().equals( Vendor.MONO ) )
                                 {
-                                    return VendorInfoState.NTT;
+                                    return VendorRequirementState.NTT;
                                 }
                                 else
                                 {
-                                    return VendorInfoState.GTT;
+                                    return VendorRequirementState.GTT;
                                 }
                             }
                         }
-                        return createVendorInfoSetterForFTF_NoSettings().process( vendorInfo );
+                        return VendorRequirementState.EXIT;
                     }
                     else
                     {
@@ -524,19 +427,19 @@ final class VendorInfoTransitionRuleFact
                                 vendorInfo.setVendor( vi.getVendor() );
                                 if ( vi.getVendor().equals( Vendor.MICROSOFT ) )
                                 {
-                                    return VendorInfoState.MTT;
+                                    return VendorRequirementState.MTT;
                                 }
                                 else if ( vi.getVendor().equals( Vendor.MONO ) )
                                 {
-                                    return VendorInfoState.NTT;
+                                    return VendorRequirementState.NTT;
                                 }
                                 else
                                 {
-                                    return VendorInfoState.GTT;
+                                    return VendorRequirementState.GTT;
                                 }
                             }
                         }
-                        return createVendorInfoSetterForFTF_NoSettings().process( vendorInfo );
+                        return VendorRequirementState.EXIT;
                     }
                 }
             }
@@ -547,7 +450,7 @@ final class VendorInfoTransitionRuleFact
     {
         return new VendorInfoTransitionRule()
         {
-            public VendorInfoState process( VendorInfo vendorInfo )
+            public VendorRequirementState process( VendorRequirement vendorInfo )
             {
                 logger.debug( "NPANDAY-103-012: Entering State = FFT" );
                 if ( vendorInfo.getFrameworkVersion().equals( defaultFrameworkVersion ) )
@@ -556,15 +459,15 @@ final class VendorInfoTransitionRuleFact
                     vendorInfo.setVendor( defaultVendor );
                     if ( defaultVendor.equals( Vendor.MICROSOFT ) )
                     {
-                        return VendorInfoState.MTT;
+                        return VendorRequirementState.MTT;
                     }
                     else if ( defaultVendor.equals( Vendor.MONO ) )
                     {
-                        return VendorInfoState.NTT;
+                        return VendorRequirementState.NTT;
                     }
                     else
                     {
-                        return VendorInfoState.GTT;
+                        return VendorRequirementState.GTT;
                     }
                 }
                 else
@@ -575,7 +478,7 @@ final class VendorInfoTransitionRuleFact
                     }
                     catch ( PlatformUnsupportedException e )
                     {
-                        return VendorInfoState.POST_PROCESS;
+                        return VendorRequirementState.EXIT;
                     }
                     List<VendorInfo> v = vendorInfoRepository.getVendorInfosFor( vendorInfo, true );
                     if ( !v.isEmpty() )
@@ -587,15 +490,15 @@ final class VendorInfoTransitionRuleFact
                                 vendorInfo.setVendorVersion( vi.getVendorVersion() );
                                 if ( vi.getVendor().equals( Vendor.MICROSOFT ) )
                                 {
-                                    return VendorInfoState.MTT;
+                                    return VendorRequirementState.MTT;
                                 }
                                 else if ( vi.getVendor().equals( Vendor.MONO ) )
                                 {
-                                    return VendorInfoState.NTT;
+                                    return VendorRequirementState.NTT;
                                 }
                                 else
                                 {
-                                    return VendorInfoState.GTT;
+                                    return VendorRequirementState.GTT;
                                 }
                             }
                         }
@@ -608,72 +511,19 @@ final class VendorInfoTransitionRuleFact
                             vendorInfo.setVendorVersion( vi.getVendorVersion() );
                             if ( vi.getVendor().equals( Vendor.MICROSOFT ) )
                             {
-                                return VendorInfoState.MTT;
+                                return VendorRequirementState.MTT;
                             }
                             else if ( vi.getVendor().equals( Vendor.MONO ) )
                             {
-                                return VendorInfoState.NTT;
+                                return VendorRequirementState.NTT;
                             }
                             else
                             {
-                                return VendorInfoState.GTT;
+                                return VendorRequirementState.GTT;
                             }
                         }
                     }
-                    return createVendorInfoSetterForFFT_NoSettings().process( vendorInfo );
-                }
-            }
-        };
-    }
-
-    VendorInfoTransitionRule createVendorInfoSetterForFFT_NoSettings()
-    {
-        return new VendorInfoTransitionRule()
-        {
-            public VendorInfoState process( VendorInfo vendorInfo )
-            {
-                logger.debug( "NPANDAY-103-013: Entering State = FFT" );
-                try
-                {
-                    vendorInfo.setVendor( VendorFactory.getDefaultVendorForOS() );
-                }
-                catch ( PlatformUnsupportedException e )
-                {
-                    return VendorInfoState.POST_PROCESS;
-                }
-                return ( vendorInfo.getVendor().equals( Vendor.MICROSOFT ) ) ? VendorInfoState.MFT
-                    : VendorInfoState.NFT;
-            }
-        };
-    }
-
-    VendorInfoTransitionRule createVendorInfoSetterForFTT_NoSettings()
-    {
-        return new VendorInfoTransitionRule()
-        {
-            public VendorInfoState process( VendorInfo vendorInfo )
-            {
-                logger.debug( "NPANDAY-103-014: Entering State = FTT" );
-                String vendorVersion = vendorInfo.getVendorVersion();
-                Vendor defaultVendor;
-                try
-                {
-                    defaultVendor = VendorFactory.getDefaultVendorForOS();
-                }
-                catch ( PlatformUnsupportedException e )
-                {
-                    return VendorInfoState.POST_PROCESS;
-                }
-                if ( ( vendorVersion.equals( "2.0.50727" ) || vendorVersion.equals( "1.1.4322" ) ) &&
-                    defaultVendor.equals( Vendor.MICROSOFT ) )
-                {
-                    vendorInfo.setVendor( Vendor.MICROSOFT );
-                    return VendorInfoState.MTT;
-                }
-                else
-                {
-                    vendorInfo.setVendor( Vendor.MONO );//This could be dotGNU: this is best guess
-                    return VendorInfoState.NTT;
+                    return VendorRequirementState.EXIT;
                 }
             }
         };
@@ -683,49 +533,28 @@ final class VendorInfoTransitionRuleFact
     {
         return new VendorInfoTransitionRule()
         {
-            public VendorInfoState process( VendorInfo vendorInfo )
+            public VendorRequirementState process( VendorRequirement vendorInfo )
             {
                 logger.debug( "NPANDAY-103-015: Entering State = FTT" );
                 List<VendorInfo> vendorInfos = vendorInfoRepository.getVendorInfosFor( vendorInfo, false );
                 if ( vendorInfos.isEmpty() )
                 {
-                    return createVendorInfoSetterForFTT_NoSettings().process( vendorInfo );
+                    return VendorRequirementState.EXIT;
                 }
                 Vendor vendor = vendorInfos.get( 0 ).getVendor();//TODO: Do default branch
                 vendorInfo.setVendor( vendor );
                 if ( vendor.equals( Vendor.MICROSOFT ) )
                 {
-                    return VendorInfoState.MTT;
+                    return VendorRequirementState.MTT;
                 }
                 else if ( vendor.equals( Vendor.MONO ) )
                 {
-                    return VendorInfoState.NTT;
+                    return VendorRequirementState.NTT;
                 }
                 else
                 {
-                    return VendorInfoState.GTT;
-                }
-            }
-        };
-    }
-
-    VendorInfoTransitionRule createVendorInfoSetterForFFF_NoSettings()
-    {
-        return new VendorInfoTransitionRule()
-        {
-            public VendorInfoState process( VendorInfo vendorInfo )
-            {
-                logger.debug( "NPANDAY-103-016: Entering State = FFF" );
-                try
-                {
-                    vendorInfo.setVendor( VendorFactory.getDefaultVendorForOS() );
+                    return VendorRequirementState.GTT;
                 }
-                catch ( PlatformUnsupportedException e )
-                {
-                    return VendorInfoState.POST_PROCESS;
-                }
-                return ( vendorInfo.getVendor().equals( Vendor.MICROSOFT ) ) ? VendorInfoState.MFF
-                    : VendorInfoState.NFF;
             }
         };
     }
@@ -734,14 +563,14 @@ final class VendorInfoTransitionRuleFact
     {
         return new VendorInfoTransitionRule()
         {
-            public VendorInfoState process( VendorInfo vendorInfo )
+            public VendorRequirementState process( VendorRequirement vendorInfo )
             {
                 logger.debug( "NPANDAY-103-017: Entering State = FFF" );
                 vendorInfo.setVendor( defaultVendor );
                 vendorInfo.setVendorVersion( defaultVendorVersion );
                 logger.debug( "NPANDAY-103-052: Set to default framework version:" + defaultFrameworkVersion);
                 vendorInfo.setFrameworkVersion( defaultFrameworkVersion );
-                return VendorInfoState.POST_PROCESS;
+                return VendorRequirementState.EXIT;
             }
         };
     }
@@ -751,10 +580,10 @@ final class VendorInfoTransitionRuleFact
     {
         return new VendorInfoTransitionRule()
         {
-            public VendorInfoState process( VendorInfo vendorInfo )
+            public VendorRequirementState process( VendorRequirement vendorInfo )
             {
                 logger.debug( "NPANDAY-103-018: Entering State = MTT" );
-                return VendorInfoState.POST_PROCESS;
+                return VendorRequirementState.EXIT;
             }
         };
     }
@@ -763,12 +592,12 @@ final class VendorInfoTransitionRuleFact
     {
         return new VendorInfoTransitionRule()
         {
-            public VendorInfoState process( VendorInfo vendorInfo )
+            public VendorRequirementState process( VendorRequirement vendorInfo )
             {
                 logger.debug( "NPANDAY-103-019: Entering State = MTF" );
                 logger.debug( "NPANDAY-103-053: Set to framework version:" + vendorInfo.getVendorVersion());
                 vendorInfo.setFrameworkVersion( vendorInfo.getVendorVersion() );
-                return VendorInfoState.MTT;
+                return VendorRequirementState.MTT;
             }
         };
     }
@@ -777,58 +606,11 @@ final class VendorInfoTransitionRuleFact
     {
         return new VendorInfoTransitionRule()
         {
-            public VendorInfoState process( VendorInfo vendorInfo )
+            public VendorRequirementState process( VendorRequirement vendorInfo )
             {
                 logger.debug( "NPANDAY-103-020: Entering State = MTF" );
                 vendorInfo.setVendorVersion( vendorInfo.getFrameworkVersion() );
-                return VendorInfoState.MTT;
-            }
-        };
-    }
-
-    VendorInfoTransitionRule createVendorInfoSetterForMFF_NoSettings()
-    {
-        return new VendorInfoTransitionRule()
-        {
-            public VendorInfoState process( VendorInfo vendorInfo )
-            {
-                logger.debug( "NPANDAY-103-021: Entering State = MFF" );
-                String systemRoot = System.getenv("SystemRoot");
-                String systemDrive = System.getenv("SystemDrive");
-                File v1 = new File( systemRoot, "\\Microsoft.NET\\Framework\\v1.1.4322" );
-                File v2 = new File( systemRoot, "\\Microsoft.NET\\Framework\\v2.0.50727" );
-                File v3 = new File( systemDrive, "\\Program Files\\Microsoft.NET\\SDK\\v1.1" );
-                File v4 = new File( systemDrive, "\\Program Files\\Microsoft.NET\\SDK\\v2.0" );
-                List<File> executablePaths = new ArrayList<File>();
-
-                if ( v2.exists() )
-                {
-                    logger.debug( "NPANDAY-103-055: Hardcode framework version (default:" + defaultFrameworkVersion + ")");
-                    vendorInfo.setFrameworkVersion( "2.0.50727" );
-                    executablePaths.add( v2 );
-                    if ( v4.exists() )
-                    {
-                        executablePaths.add( v4 );
-                    }
-                }
-                else if ( v1.exists() )
-                {
-                    logger.debug( "NPANDAY-103-056: Hardcode framework version (default:" + defaultFrameworkVersion + ")");
-                    vendorInfo.setFrameworkVersion( "1.1.4322" );
-                    executablePaths.add( v1 );
-                    if ( v3.exists() )
-                    {
-                        executablePaths.add( v3 );
-                    }
-                }
-                else
-                {
-                    logger.debug( "NPANDAY-103-057: Hardcode framework version:");
-                    vendorInfo.setFrameworkVersion( "2.0.50727" );
-                }
-
-                vendorInfo.setExecutablePaths( executablePaths );
-                return VendorInfoState.MFT;
+                return VendorRequirementState.MTT;
             }
         };
     }
@@ -837,13 +619,13 @@ final class VendorInfoTransitionRuleFact
     {
         return new VendorInfoTransitionRule()
         {
-            public VendorInfoState process( VendorInfo vendorInfo )
+            public VendorRequirementState process( VendorRequirement vendorInfo )
             {
                 logger.debug( "NPANDAY-103-022: Entering State = MFF" );
                 if ( vendorInfo.getVendor().equals( defaultVendor ) )
                 {
                     vendorInfo.setVendorVersion( defaultVendorVersion );
-                    return VendorInfoState.MTF;
+                    return VendorRequirementState.MTF;
                 }
                 else
                 {
@@ -866,46 +648,32 @@ final class VendorInfoTransitionRuleFact
                     {
                         String maxVersion = vendorInfoRepository.getMaxVersion( versions );
                         vendorInfo.setVendorVersion( maxVersion );
-                        return VendorInfoState.MTF;
+                        return VendorRequirementState.MTF;
                     }
                     catch ( InvalidVersionFormatException e )
                     {
-                        logger.info( "NPANDAY-103-030: Invalid version. Unable to determine best vendor version", e );
-                        return createVendorInfoSetterForMFF_NoSettings().process( vendorInfo );
+                        logger.error( "NPANDAY-103-030: Invalid version. Unable to determine best vendor version", e );
+                        return VendorRequirementState.EXIT;
                     }
                 }
             }
         };
     }
 
-    VendorInfoTransitionRule createVendorInfoSetterForGFF_NoSettings()
-    {
-        return new VendorInfoTransitionRule()
-        {
-            public VendorInfoState process( VendorInfo vendorInfo )
-            {
-                logger.debug( "NPANDAY-103-023: Entering State = GFF" );
-                logger.debug( "NPANDAY-103-058: Hardcode framework version:");
-                vendorInfo.setFrameworkVersion( "2.0.50727" );
-                vendorInfo.setVendorVersion( "2.0.50727" );
-                return VendorInfoState.POST_PROCESS;
-            }
-        };
-    }
-
     VendorInfoTransitionRule createVendorInfoSetterForGFF()
     {
         return new VendorInfoTransitionRule()
         {
-            public VendorInfoState process( VendorInfo vendorInfo )
+            public VendorRequirementState process( VendorRequirement vendorInfo )
             {
                 logger.debug( "NPANDAY-103-035: Entering State = GFF" );
                 if ( vendorInfo.getVendor().equals( defaultVendor ) )
                 {
                     vendorInfo.setVendorVersion( defaultVendorVersion );
-                    logger.debug( "NPANDAY-103-059: Hardcode framework version (default:" + defaultFrameworkVersion + ")" );
+                    logger.warn(
+                        "NPANDAY-103-059: Hardcode framework version (default:" + defaultFrameworkVersion + ")" );
                     vendorInfo.setFrameworkVersion( "2.0.50727" );
-                    return VendorInfoState.POST_PROCESS;
+                    return VendorRequirementState.EXIT;
                 }
                 else
                 {
@@ -925,16 +693,15 @@ final class VendorInfoTransitionRuleFact
                         vendorInfo.setVendorVersion( maxVersion );
                         logger.debug( "NPANDAY-103-060: Hardcode framework version (default:" + defaultFrameworkVersion + ")" );
                         vendorInfo.setFrameworkVersion( "2.0.50727" );
-                        return VendorInfoState.POST_PROCESS;
+                        return VendorRequirementState.EXIT;
                     }
                     catch ( InvalidVersionFormatException e )
                     {
-                        logger.info( "NPANDAY-103-031: Invalid version. Unable to determine best vendor version", e );
-                        return createVendorInfoSetterForGFF_NoSettings().process( vendorInfo );
+                        logger.error( "NPANDAY-103-031: Invalid version. Unable to determine best vendor version", e );
+                        return VendorRequirementState.EXIT;
                     }
                 }
             }
         };
     }
-    //TODO: add additional DotGNU states
 }

Added: incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/VendorRequirementStateTest.java
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/VendorRequirementStateTest.java?rev=1214869&view=auto
==============================================================================
--- incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/VendorRequirementStateTest.java (added)
+++ incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/VendorRequirementStateTest.java Thu Dec 15 17:07:06 2011
@@ -0,0 +1,127 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package npanday.vendor;
+
+import junit.framework.TestCase;
+
+public class VendorRequirementStateTest
+    extends TestCase
+{
+
+    public void testMTT()
+    {
+        VendorRequirementState vendorRequirementState = VendorRequirementState.NULL.getState( VendorTestFactory.getVendorRequirement( Vendor.MICROSOFT, "2.0.50727", "2.0.50727" ) );
+        assert ( VendorRequirementState.MTT.equals( vendorRequirementState ) );
+    }
+
+    public void testMFT()
+    {
+        VendorRequirementState vendorRequirementState = VendorRequirementState.NULL.getState( VendorTestFactory.getVendorRequirement( Vendor.MICROSOFT, null, "2.0.50727" ) );
+        assert ( VendorRequirementState.MFT.equals( vendorRequirementState ) );
+    }
+
+    public void testMFF()
+    {
+        VendorRequirementState vendorRequirementState = VendorRequirementState.NULL.getState( VendorTestFactory.getVendorRequirement( Vendor.MICROSOFT, null, null ) );
+        assert ( VendorRequirementState.MFF.equals( vendorRequirementState ) );
+    }
+
+    public void testMTF()
+    {
+        VendorRequirementState vendorRequirementState = VendorRequirementState.NULL.getState( VendorTestFactory.getVendorRequirement( Vendor.MICROSOFT, "2.0.50727", null ) );
+        assert ( VendorRequirementState.MTF.equals( vendorRequirementState ) );
+    }
+
+    public void testNTT()
+    {
+        VendorRequirementState vendorRequirementState = VendorRequirementState.NULL.getState( VendorTestFactory.getVendorRequirement( Vendor.MONO, "1.1.18", "2.0.50727" ) );
+        assert ( VendorRequirementState.NTT.equals( vendorRequirementState ) );
+    }
+
+    public void testNFT()
+    {
+        VendorRequirementState vendorRequirementState = VendorRequirementState.NULL.getState( VendorTestFactory.getVendorRequirement( Vendor.MONO, null, "2.0.50727" ) );
+        assert ( VendorRequirementState.NFT.equals( vendorRequirementState ) );
+    }
+
+    public void testNFF()
+    {
+        VendorRequirementState vendorRequirementState =
+            VendorRequirementState.NULL.getState( VendorTestFactory.getVendorRequirement( Vendor.MONO, null, null ) );
+        assert ( VendorRequirementState.NFF.equals( vendorRequirementState ) );
+    }
+
+    public void testNTF()
+    {
+        VendorRequirementState vendorRequirementState = VendorRequirementState.NULL.getState( VendorTestFactory.getVendorRequirement( Vendor.MONO, "1.1.18", null ) );
+        assert ( VendorRequirementState.NTF.equals( vendorRequirementState ) );
+    }
+
+    public void testGTT()
+    {
+        VendorRequirementState vendorRequirementState = VendorRequirementState.NULL.getState( VendorTestFactory.getVendorRequirement( Vendor.DOTGNU, "0.7.2", "2.0.50727" ) );
+        assert ( VendorRequirementState.GTT.equals( vendorRequirementState ) );
+    }
+
+    public void testGFT()
+    {
+        VendorRequirementState vendorRequirementState = VendorRequirementState.NULL.getState( VendorTestFactory.getVendorRequirement( Vendor.DOTGNU, null, "2.0.50727" ) );
+        assert ( VendorRequirementState.GFT.equals( vendorRequirementState ) );
+    }
+
+    public void testGFF()
+    {
+        VendorRequirementState vendorRequirementState =
+            VendorRequirementState.NULL.getState( VendorTestFactory.getVendorRequirement( Vendor.DOTGNU, null, null ) );
+        assert ( VendorRequirementState.GFF.equals( vendorRequirementState ) );
+    }
+
+    public void testGTF()
+    {
+        VendorRequirementState vendorRequirementState = VendorRequirementState.NULL.getState( VendorTestFactory.getVendorRequirement( Vendor.DOTGNU, "0.7.2", null ) );
+        assert ( VendorRequirementState.GTF.equals( vendorRequirementState ) );
+    }
+
+    public void testFTT()
+    {
+        VendorRequirementState vendorRequirementState = VendorRequirementState.NULL.getState( VendorTestFactory.getVendorRequirement( null, "0.7.2", "2.0.50727" ) );
+        assert ( VendorRequirementState.FTT.equals( vendorRequirementState ) );
+    }
+
+    public void testFFT()
+    {
+        VendorRequirementState vendorRequirementState =
+            VendorRequirementState.NULL.getState( VendorTestFactory.getVendorRequirement( null, null, "2.0.50727" ) );
+        assert ( VendorRequirementState.FFT.equals( vendorRequirementState ) );
+    }
+
+    public void testFFF()
+    {
+        VendorRequirementState vendorRequirementState =
+            VendorRequirementState.NULL.getState( VendorTestFactory.getVendorRequirement( null, null, null ) );
+        assert ( VendorRequirementState.FFF.equals( vendorRequirementState ) );
+    }
+
+    public void testFTF()
+    {
+        VendorRequirementState vendorRequirementState =
+            VendorRequirementState.NULL.getState( VendorTestFactory.getVendorRequirement( null, "0.7.2", null ) );
+        assert ( VendorRequirementState.FTF.equals( vendorRequirementState ) );
+    }
+}

Modified: incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/VendorTestFactory.java
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/VendorTestFactory.java?rev=1214869&r1=1214868&r2=1214869&view=diff
==============================================================================
--- incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/VendorTestFactory.java (original)
+++ incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/VendorTestFactory.java Thu Dec 15 17:07:06 2011
@@ -19,28 +19,18 @@
 package npanday.vendor;
 
 import npanday.model.settings.DefaultSetup;
-
-import java.io.File;
-import java.util.List;
+import npanday.vendor.impl.MutableVendorInfo;
 
 public class VendorTestFactory
 {
-    public static VendorInfo getVendorInfo( Vendor vendor, String vendorVersion, String frameworkVersion )
+    public static VendorRequirement getVendorRequirement( Vendor vendor, String vendorVersion, String frameworkVersion )
     {
-        VendorInfo vendorInfo = VendorInfo.Factory.createDefaultVendorInfo();
-        vendorInfo.setVendor( vendor );
-        vendorInfo.setFrameworkVersion( frameworkVersion );
-        vendorInfo.setVendorVersion( vendorVersion );
-        return vendorInfo;
+        return new VendorRequirement(vendor, vendorVersion, frameworkVersion);
     }
 
-    public static VendorInfo getVendorInfo( Vendor vendor, String vendorVersion, String frameworkVersion,
-                                            List<File> executablePaths )
+    public static VendorInfo getVendorInfo( Vendor vendor, String vendorVersion, String frameworkVersion )
     {
-        VendorInfo vendorInfo = getVendorInfo(vendor, vendorVersion, frameworkVersion);
-        vendorInfo.setExecutablePaths( executablePaths );
-
-        return vendorInfo;
+        return new MutableVendorInfo( vendor, vendorVersion, frameworkVersion);
     }
 
     public static DefaultSetup getDefaultSetup( String vendorName, String vendorVersion, String frameworkVersion )

Modified: incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/MatchPolicyFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/MatchPolicyFactoryTest.java?rev=1214869&r1=1214868&r2=1214869&view=diff
==============================================================================
--- incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/MatchPolicyFactoryTest.java (original)
+++ incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/MatchPolicyFactoryTest.java Thu Dec 15 17:07:06 2011
@@ -22,7 +22,6 @@ import junit.framework.TestCase;
 import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.codehaus.plexus.logging.Logger;
 import npanday.vendor.VendorInfoMatchPolicy;
-import npanday.vendor.VendorInfo;
 import npanday.vendor.VendorTestFactory;
 import npanday.vendor.Vendor;
 
@@ -83,7 +82,7 @@ public class MatchPolicyFactoryTest
     public void testCreateIsDefaultPolicy_False()
     {
         VendorInfoMatchPolicy matchPolicy = matchPolicyFactory.createVendorIsDefaultPolicy();
-        VendorInfo vendorInfo = VendorInfo.Factory.createDefaultVendorInfo();
+        MutableVendorInfo vendorInfo = new MutableVendorInfo();
         vendorInfo.setDefault( false );
         assertFalse( matchPolicy.match( vendorInfo ) );
     }
@@ -91,7 +90,7 @@ public class MatchPolicyFactoryTest
     public void testCreateIsDefaultPolicy_True()
     {
         VendorInfoMatchPolicy matchPolicy = matchPolicyFactory.createVendorIsDefaultPolicy();
-        VendorInfo vendorInfo = VendorInfo.Factory.createDefaultVendorInfo();
+        MutableVendorInfo vendorInfo = new MutableVendorInfo();
         vendorInfo.setDefault( true );
         assertTrue( matchPolicy.match( vendorInfo ) );
     }

Added: incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/MutableVendorInfo.java
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/MutableVendorInfo.java?rev=1214869&view=auto
==============================================================================
--- incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/MutableVendorInfo.java (added)
+++ incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/MutableVendorInfo.java Thu Dec 15 17:07:06 2011
@@ -0,0 +1,121 @@
+package npanday.vendor.impl;
+
+import npanday.PlatformUnsupportedException;
+import npanday.vendor.Vendor;
+import npanday.vendor.VendorInfo;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ * A pojo implementing {@link VendorInfo}. Use this, if you need a prototype
+ * for searching or you want to build up a copy yourself.
+ *
+ * @author <a href="mailto:lcorneliussen@apache.org">Lars Corneliussen</a>
+ */
+public class MutableVendorInfo
+    implements VendorInfo
+{
+    private Vendor vendor;
+    private String vendorVersion;
+    private String frameworkVersion;
+
+    private File sdkInstallRoot;
+    private File installRoot;
+    private List<File> executablePaths;
+
+    private boolean isDefault;
+
+    public MutableVendorInfo(){
+
+    }
+
+    public MutableVendorInfo( Vendor vendor, String vendorVersion, String frameworkVersion )
+    {
+        this.vendor = vendor;
+        this.vendorVersion = vendorVersion;
+        this.frameworkVersion = frameworkVersion;
+    }
+
+    public boolean isDefault()
+    {
+        return isDefault;
+    }
+
+    public void setDefault( boolean aDefault )
+    {
+        isDefault = aDefault;
+    }
+
+    public List<File> getExecutablePaths()
+    {
+        return executablePaths;
+    }
+
+    public void setExecutablePaths( List<File> executablePaths )
+    {
+        this.executablePaths = executablePaths;
+    }
+
+    public Vendor getVendor()
+    {
+        return vendor;
+    }
+
+    public void setVendor( Vendor vendor )
+    {
+        this.vendor = vendor;
+    }
+
+    public String getVendorVersion()
+    {
+        return vendorVersion;
+    }
+
+    public void setVendorVersion( String vendorVersion )
+    {
+        this.vendorVersion = vendorVersion;
+    }
+
+    public String getFrameworkVersion()
+    {
+        return frameworkVersion;
+    }
+
+    public void setFrameworkVersion( String frameworkVersion )
+    {
+        this.frameworkVersion = frameworkVersion;
+    }
+
+    public File getSdkInstallRoot()
+    {
+        return sdkInstallRoot;
+    }
+
+    public void setSdkInstallRoot( File sdkInstallRoot )
+    {
+        this.sdkInstallRoot = sdkInstallRoot;
+    }
+
+    public File getInstallRoot()
+    {
+        return installRoot;
+    }
+
+    public File getGlobalAssemblyCacheDirectoryFor( String artifactType )
+        throws PlatformUnsupportedException
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public void setInstallRoot( File installRoot )
+    {
+        this.installRoot = installRoot;
+    }
+
+    public String toString()
+    {
+        return "[Manual Vendor Info for " + vendor + " " + vendorVersion + ", Framework Version = "
+            + frameworkVersion + ", Executable Paths = " + ( ( executablePaths != null ) ? executablePaths : "" + "]" );
+    }
+}

Modified: incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/RepositoryRegistryTestStub.java
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/RepositoryRegistryTestStub.java?rev=1214869&r1=1214868&r2=1214869&view=diff
==============================================================================
--- incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/RepositoryRegistryTestStub.java (original)
+++ incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/RepositoryRegistryTestStub.java Thu Dec 15 17:07:06 2011
@@ -18,8 +18,10 @@
  */
 package npanday.vendor.impl;
 
-import npanday.registry.*;
-
+import npanday.registry.NPandayRepositoryException;
+import npanday.registry.Repository;
+import npanday.registry.RepositoryRegistry;
+import npanday.vendor.SettingsRepository;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -35,14 +37,6 @@ final class RepositoryRegistryTestStub
         return false;
     }
 
-    public synchronized void setRepositoryLoader( RepositoryLoader loader )
-    {
-    }
-
-    public synchronized void setRegistryLoader( RegistryLoader loader )
-    {
-    }
-
     public synchronized void loadFromInputStream( InputStream inputStream )
         throws IOException, NPandayRepositoryException
     {

Added: incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/VendorInfoRepositoryTest.java
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/VendorInfoRepositoryTest.java?rev=1214869&view=auto
==============================================================================
--- incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/VendorInfoRepositoryTest.java (added)
+++ incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/VendorInfoRepositoryTest.java Thu Dec 15 17:07:06 2011
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package npanday.vendor.impl;
+
+import junit.framework.TestCase;
+import npanday.PlatformUnsupportedException;
+import npanday.model.settings.DefaultSetup;
+import npanday.model.settings.Framework;
+import npanday.model.settings.Vendor;
+import npanday.registry.NPandayRepositoryException;
+import npanday.vendor.SettingsRepository;
+import npanday.vendor.VendorRequirement;
+import npanday.vendor.VendorTestFactory;
+
+import javax.naming.OperationNotSupportedException;
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+
+public class VendorInfoRepositoryTest
+    extends TestCase
+{
+    public void testGetInstallRoot()
+    {
+        DefaultSetup defaultSetup = VendorTestFactory.getDefaultSetup( "MICROSOFT", "2.0.50727", "2.0.50727" );
+
+        //Supported Types
+        List<Vendor> vendors = new ArrayList<Vendor>();
+        Vendor vendor = new Vendor();
+        vendor.setVendorName("MICROSOFT");
+        vendor.setVendorVersion("2.0.50727");
+
+        Framework framework = new Framework();
+        framework.setFrameworkVersion("2.0.50727");
+        framework.setInstallRoot(System.getenv("SystemRoot") + "\\Microsoft.NET\\Framework\\v2.0.50727");
+        framework.setSdkInstallRoot(System.getenv("SystemDrive") + "\\Program Files\\Microsoft.NET\\SDK\\v2.0");
+        vendor.addFramework( framework );
+
+        vendors.add( vendor );
+
+        SettingsRepository settingsRepository = Factory.createSettingsRepository( vendors, defaultSetup );
+        try
+        {
+            VendorInfoRepositoryImpl repo = new VendorInfoRepositoryImpl();
+            RepositoryRegistryTestStub registry = new RepositoryRegistryTestStub();
+            registry.setSettingRepository( settingsRepository );
+            repo.setRepositoryRegistry( registry );
+
+            File installRoot = repo.getSingleVendorInfoByRequirement(
+                new VendorRequirement( npanday.vendor.Vendor.MICROSOFT, "2.0.50727",  "2.0.50727")).getInstallRoot();
+            assertEquals( new File(System.getenv("SystemRoot") + "\\Microsoft.NET\\Framework\\v2.0.50727"), installRoot );
+        }
+        catch ( PlatformUnsupportedException e )
+        {
+            fail("Unsupported Platform: Message = " + e.getMessage());
+        }
+    }
+
+    private static class Factory
+    {
+        static SettingsRepository createSettingsRepository( final List<Vendor> vendors, final DefaultSetup defaultSetup )
+        {
+            return new SettingsRepository(){
+
+                public List<Vendor> getVendors()
+                {
+                    return vendors;
+                }
+
+                public DefaultSetup getDefaultSetup()
+                {
+                    return defaultSetup;
+                }
+
+                public boolean isEmpty()
+                {
+                    return false;
+                }
+
+                public int getContentVersion()
+                {
+                    return 0;
+                }
+
+                public void load( URL source )
+                    throws NPandayRepositoryException
+                {
+
+                }
+
+                public void clearAll()
+                    throws OperationNotSupportedException
+                {
+
+                }
+
+                public void reloadAll()
+                    throws IOException, NPandayRepositoryException, OperationNotSupportedException
+                {
+
+                }
+
+                public void setProperties( Hashtable props )
+                {
+
+                }
+            };
+        }
+    }
+}

Modified: incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/VendorInfoRepositoryTestStub.java
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/VendorInfoRepositoryTestStub.java?rev=1214869&r1=1214868&r2=1214869&view=diff
==============================================================================
--- incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/VendorInfoRepositoryTestStub.java (original)
+++ incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/VendorInfoRepositoryTestStub.java Thu Dec 15 17:07:06 2011
@@ -24,6 +24,7 @@ import npanday.vendor.InvalidVersionForm
 import npanday.vendor.Vendor;
 
 import npanday.PlatformUnsupportedException;
+import npanday.vendor.VendorRequirement;
 
 import java.io.File;
 import java.util.List;
@@ -47,6 +48,15 @@ public class VendorInfoRepositoryTestStu
         return null;  
     }
 
+    /**
+     * Determines, if the repository is empty. This happens, if the configuration couldn't be read, because no file was
+     * available, or when the underlying SettingsRepository wasn't initialized properly.
+     */
+    public boolean isEmpty()
+    {
+        return vendorInfos != null && vendorInfos.size() > 0;
+    }
+
     public File getInstallRootFor( VendorInfo vendorInfo )
         throws PlatformUnsupportedException
     {
@@ -59,7 +69,7 @@ public class VendorInfoRepositoryTestStu
         return null;
     }
 
-    public VendorInfo getConfiguredVendorInfoByExample(VendorInfo vendorInfoExample) throws PlatformUnsupportedException {
+    public VendorInfo getSingleVendorInfoByRequirement( VendorRequirement vendorRequirement ) throws PlatformUnsupportedException {
         return null;
     }
 
@@ -75,7 +85,7 @@ public class VendorInfoRepositoryTestStu
         return new ArrayList<VendorInfo>();
     }
 
-    public List<VendorInfo> getVendorInfosFor( VendorInfo vendorInfo, boolean isDefault )
+    public List<VendorInfo> getVendorInfosFor( VendorRequirement vendorRequirement, boolean isDefault )
     {
         return vendorInfos;
     }

Modified: incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/VendorInfoTransitionRuleFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/VendorInfoTransitionRuleFactoryTest.java?rev=1214869&r1=1214868&r2=1214869&view=diff
==============================================================================
--- incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/VendorInfoTransitionRuleFactoryTest.java (original)
+++ incubator/npanday/trunk/components/dotnet-vendor/src/test/java/npanday/vendor/impl/VendorInfoTransitionRuleFactoryTest.java Thu Dec 15 17:07:06 2011
@@ -20,23 +20,26 @@ package npanday.vendor.impl;
 
 import junit.framework.TestCase;
 import npanday.InitializationException;
-import npanday.vendor.VendorInfoTransitionRule;
-import npanday.vendor.VendorInfo;
-import npanday.vendor.VendorInfoState;
+import npanday.model.settings.DefaultSetup;
+import npanday.vendor.SettingsRepository;
 import npanday.vendor.Vendor;
+import npanday.vendor.VendorInfo;
+import npanday.vendor.VendorInfoTransitionRule;
+import npanday.vendor.VendorRequirement;
+import npanday.vendor.VendorRequirementState;
 import npanday.vendor.VendorTestFactory;
-import npanday.model.settings.DefaultSetup;
-import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.codehaus.plexus.logging.Logger;
+import org.codehaus.plexus.logging.console.ConsoleLogger;
 
-import java.util.List;
-import java.util.ArrayList;
 import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
 
 public class VendorInfoTransitionRuleFactoryTest
     extends TestCase
 {
     public void testNTF()
+        throws NoSuchFieldException, IllegalAccessException
     {
         List<VendorInfo> vendorInfoList = new ArrayList<VendorInfo>();
         vendorInfoList.add( VendorTestFactory.getVendorInfo( Vendor.MONO, "1.1.18", "1.1.4322" ) );
@@ -46,15 +49,16 @@ public class VendorInfoTransitionRuleFac
             VendorTestFactory.getDefaultSetup( "MICROSOFT", "2.0.50727", "2.0.50727" ), vendorInfoList );
 
         VendorInfoTransitionRule rule = factory.createVendorInfoSetterForNTF();
-        VendorInfo vendorInfo = VendorTestFactory.getVendorInfo( Vendor.MONO, "1.1.18", null );
-        VendorInfoState vendorInfoState = rule.process( vendorInfo );
-        assertEquals( "Incorrect Vendor State", vendorInfoState, VendorInfoState.NTT );
+        VendorRequirement vendorInfo = VendorTestFactory.getVendorRequirement( Vendor.MONO, "1.1.18", null );
+        VendorRequirementState vendorRequirementState = rule.process( vendorInfo );
+        assertEquals( "Incorrect Vendor State", vendorRequirementState, VendorRequirementState.NTT );
         assertEquals( "Incorrect Vendor", Vendor.MONO, vendorInfo.getVendor() );
         assertEquals( "2.0.50727", vendorInfo.getFrameworkVersion() );
         assertEquals( "1.1.18", vendorInfo.getVendorVersion() );
     }
 
     public void testNFF()
+        throws NoSuchFieldException, IllegalAccessException
     {
         List<VendorInfo> vendorInfoList = new ArrayList<VendorInfo>();
         vendorInfoList.add( VendorTestFactory.getVendorInfo( Vendor.MONO, "1.1.18", "1.1.4322" ) );
@@ -64,15 +68,16 @@ public class VendorInfoTransitionRuleFac
             VendorTestFactory.getDefaultSetup( "MICROSOFT", "2.0.50727", "2.0.50727" ), vendorInfoList );
 
         VendorInfoTransitionRule rule = factory.createVendorInfoSetterForNFF();
-        VendorInfo vendorInfo = VendorTestFactory.getVendorInfo( Vendor.MONO, null, null );
-        VendorInfoState vendorInfoState = rule.process( vendorInfo );
-        assertEquals( "Incorrect Vendor State", vendorInfoState, VendorInfoState.POST_PROCESS );
+        VendorRequirement vendorInfo = VendorTestFactory.getVendorRequirement( Vendor.MONO, null, null );
+        VendorRequirementState vendorRequirementState = rule.process( vendorInfo );
+        assertEquals( "Incorrect Vendor State", vendorRequirementState, VendorRequirementState.EXIT );
         assertEquals( Vendor.MONO, vendorInfo.getVendor() );
         assertEquals( "2.0.50727", vendorInfo.getFrameworkVersion() );
         assertEquals( "1.1.18", vendorInfo.getVendorVersion() );
     }
 
     public void testNFF_MatchDefaultVendor()
+        throws NoSuchFieldException, IllegalAccessException
     {
         List<VendorInfo> vendorInfoList = new ArrayList<VendorInfo>();
         vendorInfoList.add( VendorTestFactory.getVendorInfo( Vendor.MONO, "1.1.18", "2.0.50727" ) );
@@ -82,15 +87,16 @@ public class VendorInfoTransitionRuleFac
             VendorTestFactory.getDefaultSetup( "MONO", "1.1.18", "1.1.4322" ), vendorInfoList );
 
         VendorInfoTransitionRule rule = factory.createVendorInfoSetterForNFF();
-        VendorInfo vendorInfo = VendorTestFactory.getVendorInfo( Vendor.MONO, null, null );
-        VendorInfoState vendorInfoState = rule.process( vendorInfo );
-        assertEquals( "Incorrect Vendor State", vendorInfoState, VendorInfoState.POST_PROCESS );
+        VendorRequirement vendorInfo = VendorTestFactory.getVendorRequirement( Vendor.MONO, null, null );
+        VendorRequirementState vendorRequirementState = rule.process( vendorInfo );
+        assertEquals( "Incorrect Vendor State", vendorRequirementState, VendorRequirementState.EXIT );
         assertEquals( Vendor.MONO, vendorInfo.getVendor() );
         assertEquals( "1.1.4322", vendorInfo.getFrameworkVersion() );
         assertEquals( "1.1.18", vendorInfo.getVendorVersion() );
     }
 
     public void testNFT()
+        throws NoSuchFieldException, IllegalAccessException
     {
         List<VendorInfo> vendorInfoList = new ArrayList<VendorInfo>();
         vendorInfoList.add( VendorTestFactory.getVendorInfo( Vendor.MONO, "1.1.13", "2.0.50727" ) );
@@ -100,15 +106,16 @@ public class VendorInfoTransitionRuleFac
             VendorTestFactory.getDefaultSetup( "MICROSOFT", "2.0.50727", "2.0.50727" ), vendorInfoList );
 
         VendorInfoTransitionRule rule = factory.createVendorInfoSetterForNFT();
-        VendorInfo vendorInfo = VendorTestFactory.getVendorInfo( Vendor.MONO, null, "2.0.50727" );
-        VendorInfoState vendorInfoState = rule.process( vendorInfo );
-        assertEquals( "Incorrect Vendor State", vendorInfoState, VendorInfoState.NTT );
+        VendorRequirement vendorInfo = VendorTestFactory.getVendorRequirement( Vendor.MONO, null, "2.0.50727" );
+        VendorRequirementState vendorRequirementState = rule.process( vendorInfo );
+        assertEquals( "Incorrect Vendor State", vendorRequirementState, VendorRequirementState.NTT );
         assertEquals( Vendor.MONO, vendorInfo.getVendor() );
         assertEquals( "2.0.50727", vendorInfo.getFrameworkVersion() );
         assertEquals( "1.1.18", vendorInfo.getVendorVersion() );
     }
 
     public void testNFT_WithMatchingDefault()
+        throws NoSuchFieldException, IllegalAccessException
     {
         List<VendorInfo> vendorInfoList = new ArrayList<VendorInfo>();
         vendorInfoList.add( VendorTestFactory.getVendorInfo( Vendor.MONO, "1.1.18", "2.0.50727" ) );
@@ -117,45 +124,39 @@ public class VendorInfoTransitionRuleFac
             VendorTestFactory.getDefaultSetup( "MONO", "1.1.18", "2.0.50727" ), vendorInfoList );
 
         VendorInfoTransitionRule rule = factory.createVendorInfoSetterForNFT();
-        VendorInfo vendorInfo = VendorTestFactory.getVendorInfo( Vendor.MONO, null, "2.0.50727" );
-        VendorInfoState vendorInfoState = rule.process( vendorInfo );
-        assertEquals( "Incorrect Vendor State", vendorInfoState, VendorInfoState.NTT );
+        VendorRequirement vendorInfo = VendorTestFactory.getVendorRequirement( Vendor.MONO, null, "2.0.50727" );
+        VendorRequirementState vendorRequirementState = rule.process( vendorInfo );
+        assertEquals( "Incorrect Vendor State", vendorRequirementState, VendorRequirementState.NTT );
         assertEquals( Vendor.MONO, vendorInfo.getVendor() );
         assertEquals( "2.0.50727", vendorInfo.getFrameworkVersion() );
         assertEquals( "1.1.18", vendorInfo.getVendorVersion() );
     }
 
     public void testNFT_CantFindMatchingVendorInfo()
+        throws NoSuchFieldException, IllegalAccessException
     {
         VendorInfoTransitionRuleFactory factory = Factory.getVendorInfoTransitionRuleFactory(
             VendorTestFactory.getDefaultSetup( "MICROSOFT", "2.0.50727", "2.0.50727" ), new ArrayList<VendorInfo>() );
 
         VendorInfoTransitionRule rule = factory.createVendorInfoSetterForNFT();
-        VendorInfo vendorInfo = VendorTestFactory.getVendorInfo( Vendor.MONO, null, "2.0.50727" );
-        VendorInfoState vendorInfoState = rule.process( vendorInfo );
-        assertEquals( "Incorrect Vendor State", vendorInfoState, VendorInfoState.POST_PROCESS );
+        VendorRequirement vendorInfo = VendorTestFactory.getVendorRequirement( Vendor.MONO, null, "2.0.50727" );
+        VendorRequirementState vendorRequirementState = rule.process( vendorInfo );
+        assertEquals( "Incorrect Vendor State", vendorRequirementState, VendorRequirementState.EXIT );
     }
 
     private static class Factory
     {
         static VendorInfoTransitionRuleFactory getVendorInfoTransitionRuleFactory( DefaultSetup defaultSetup,
                                                                                    List<VendorInfo> vendorInfos )
+            throws NoSuchFieldException, IllegalAccessException
         {
-            SettingsRepository settingsRepository = new SettingsRepository();
-            try
-            {
-                Field field = settingsRepository.getClass().getDeclaredField( "defaultSetup" );
-                field.setAccessible( true );
-                field.set( settingsRepository, defaultSetup );
-            }
-            catch ( NoSuchFieldException e )
-            {
-                e.printStackTrace();
-            }
-            catch ( IllegalAccessException e )
-            {
-                e.printStackTrace();
-            }
+            FileBasedSettingsRepository settingsRepository = new FileBasedSettingsRepository();
+            settingsRepository.enableLogging( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+
+            Field field = settingsRepository.getClass().getDeclaredField( "defaultSetup" );
+            field.setAccessible( true );
+            field.set( settingsRepository, defaultSetup );
+
             RepositoryRegistryTestStub repositoryRegistry = new RepositoryRegistryTestStub();
             repositoryRegistry.setSettingRepository( settingsRepository );
 

Modified: incubator/npanday/trunk/components/pom.xml
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/components/pom.xml?rev=1214869&r1=1214868&r2=1214869&view=diff
==============================================================================
--- incubator/npanday/trunk/components/pom.xml (original)
+++ incubator/npanday/trunk/components/pom.xml Thu Dec 15 17:07:06 2011
@@ -18,35 +18,62 @@ KIND, either express or implied.  See th
 specific language governing permissions and limitations
 under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" 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> 
+<project xmlns="http://maven.apache.org/POM/4.0.0" 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.npanday</groupId>
-    <version>1.5.0-incubating-SNAPSHOT</version>  
-    <artifactId>npanday-project</artifactId> 
-  </parent>  
-  <modelVersion>4.0.0</modelVersion>  
-  <artifactId>dotnet-components</artifactId>  
-  <packaging>pom</packaging>  
-  <name>NPanday :: Java Components</name>  
-  <modules> 
-    <module>dotnet-artifact</module>  
-    <module>dotnet-assembler</module>  
-    <module>dotnet-core</module>  
-    <module>dotnet-dao-project</module>  
+    <version>1.5.0-incubating-SNAPSHOT</version>
+    <artifactId>npanday-project</artifactId>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>dotnet-components</artifactId>
+  <packaging>pom</packaging>
+  <name>NPanday :: Java Components</name>
+  <modules>
+    <module>dotnet-artifact</module>
+    <module>dotnet-assembler</module>
+    <module>dotnet-core</module>
+    <module>dotnet-dao-project</module>
     <module>dotnet-executable</module>
-    <module>dotnet-model</module>  
-    <module>dotnet-plugin</module>  
-    <module>dotnet-registry</module>  
-    <module>dotnet-vendor</module> 
+    <module>dotnet-model</module>
+    <module>dotnet-plugin</module>
+    <module>dotnet-registry</module>
+    <module>dotnet-vendor</module>
   </modules>
-<reporting> 
+  <dependencies>
+    <dependency>
+      <groupId>com.google.guava</groupId>
+      <artifactId>guava</artifactId>
+      <!-- version is defined in parent pom -->
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.8.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.gmock</groupId>
+      <artifactId>gmock</artifactId>
+      <version>0.8.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.groovy</groupId>
+      <artifactId>groovy-all</artifactId>
+      <version>1.7.0</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <reporting>
     <excludeDefaults>true</excludeDefaults>
-     <plugins>  
-      <plugin>      
+    <plugins>
+      <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>emma-maven-plugin</artifactId>
         <version>1.0-alpha-2</version>
       </plugin>
     </plugins>
-</reporting>    
+  </reporting>
 </project>