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 2006/12/10 23:44:12 UTC
svn commit: r485313 [9/15] - in /incubator/nmaven/trunk: components/
components/dotnet-artifact/ components/dotnet-artifact/src/
components/dotnet-artifact/src/main/
components/dotnet-artifact/src/main/java/
components/dotnet-artifact/src/main/java/org...
Added: incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/MatchPolicyFactory.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/MatchPolicyFactory.java?view=auto&rev=485313
==============================================================================
--- incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/MatchPolicyFactory.java (added)
+++ incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/MatchPolicyFactory.java Sun Dec 10 15:43:51 2006
@@ -0,0 +1,177 @@
+/*
+ * 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 org.apache.maven.dotnet.vendor.impl;
+
+import org.apache.maven.dotnet.vendor.VendorInfoMatchPolicy;
+import org.apache.maven.dotnet.vendor.VendorInfo;
+import org.apache.maven.dotnet.vendor.InvalidVersionFormatException;
+import org.codehaus.plexus.logging.Logger;
+
+/**
+ * Provides factory methods for creating vendor info match policies.
+ *
+ * @author Shane Isbell
+ * @see VendorInfoMatchPolicy
+ */
+final class MatchPolicyFactory
+{
+ /**
+ * A logger for writing log messages
+ */
+ private Logger logger;
+
+ /**
+ * Default constructor
+ */
+ MatchPolicyFactory()
+ {
+ }
+
+ /**
+ * Initialize this factory
+ *
+ * @param logger the plexus logger
+ */
+ void init( Logger logger )
+ {
+ this.logger = logger;
+ }
+
+
+ /**
+ * Returns a match policy for a vendor name. The accepted vendor names are: Microsoft, Mono and DotGNU.
+ *
+ * @param vendorName the name of the vendor to match
+ * @return a match policy for a vendor name
+ */
+ VendorInfoMatchPolicy createVendorNamePolicy( final String vendorName )
+ {
+ return new VendorInfoMatchPolicy()
+ {
+ public boolean match( VendorInfo vendorInfo )
+ {
+ if ( vendorInfo == null )
+ {
+ return false;
+ }
+ return isEqual( vendorInfo.getVendor().getVendorName(), vendorName );
+ }
+ };
+ }
+
+ /**
+ * Returns a match policy for a vendor version. In the case of Microsoft, this will be the same as the framework
+ * version. In the case of Mono and DotGNU, the framework version and vendor version are different.
+ *
+ * @param vendorVersion the vendor version to match
+ * @return a match policy for a vendor version
+ */
+ VendorInfoMatchPolicy createVendorVersionPolicy( final String vendorVersion )
+ {
+ return new VendorInfoMatchPolicy()
+ {
+ public boolean match( VendorInfo vendorInfo )
+ {
+ if ( vendorInfo == null )
+ {
+ return false;
+ }
+ return isEqual( vendorInfo.getVendorVersion(), vendorVersion );
+ }
+ };
+ }
+
+ /**
+ * Returns a match policy for the .NET framework version.
+ *
+ * @param frameworkVersion the .NET framework version to use for matching vendor info objects
+ * @return a match policy for the .NET framework version
+ */
+ VendorInfoMatchPolicy createFrameworkVersionPolicy( final String frameworkVersion )
+ {
+ return new VendorInfoMatchPolicy()
+ {
+ public boolean match( VendorInfo vendorInfo )
+ {
+ if ( vendorInfo == null )
+ {
+ return false;
+ }
+ VersionMatcher versionMatcher = new VersionMatcher();
+ try
+ {
+ return versionMatcher.matchVersion( frameworkVersion, vendorInfo.getFrameworkVersion() );
+ }
+ catch ( InvalidVersionFormatException e )
+ {
+ logger.info( "NMAVEN-101-000: Invalid framework version: Version = " + frameworkVersion, e );
+ return false;
+ }
+ }
+ };
+ }
+
+ /**
+ * Returns a vendor info match policy for matching whether a vendor info is a default entry. The vendor info
+ * match policy's <code>match</code> method will return true if the vendor info is not null and is a
+ * default entry, otherwise it will return false.
+ *
+ * @return a vendor info match policy for matching whether a vendor info is a default entry
+ */
+ VendorInfoMatchPolicy createVendorIsDefaultPolicy()
+ {
+ return new VendorInfoMatchPolicy()
+ {
+ public boolean match( VendorInfo vendorInfo )
+ {
+ if ( vendorInfo == null )
+ {
+ return false;
+ }
+ return vendorInfo.isDefault();
+ }
+ };
+ }
+
+ /**
+ * Returns true if the first value equals the second value, otherwise returns false. This comparison is <i>not</i>
+ * case or white-space sensitive. Null values will be treated as an empty string, so if the first value is null and
+ * the second value is empty (or only contains white-space), this method will return true.
+ *
+ * @param value the first value in the comparison
+ * @param value1 the second value in the comparison
+ * @return true if the first value equals the second value, otherwise returns false.
+ */
+ private boolean isEqual( String value, String value1 )
+ {
+ return normalize( value ).equals( normalize( value1 ) );
+ }
+
+ /**
+ * Normalizes the specified value by 1) making it all lower case and 2) removing all white-space. A null value will
+ * be treated as an empty string.
+ *
+ * @param value the value to normalize
+ * @return a normalized value that is lower case with no white-space
+ */
+ private String normalize( String value )
+ {
+ return ( value != null ) ? value.toLowerCase().trim() : "";
+ }
+}
Propchange: incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/MatchPolicyFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/SettingsRepository.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/SettingsRepository.java?view=auto&rev=485313
==============================================================================
--- incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/SettingsRepository.java (added)
+++ incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/SettingsRepository.java Sun Dec 10 15:43:51 2006
@@ -0,0 +1,183 @@
+/*
+ * 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 org.apache.maven.dotnet.vendor.impl;
+
+import org.apache.maven.dotnet.registry.Repository;
+import org.apache.maven.dotnet.registry.RepositoryRegistry;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+
+import java.io.*;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.ArrayList;
+
+import org.apache.maven.dotnet.model.settings.NMavenSettings;
+import org.apache.maven.dotnet.model.settings.Vendor;
+import org.apache.maven.dotnet.model.settings.DefaultSetup;
+import org.apache.maven.dotnet.model.settings.Framework;
+import org.apache.maven.dotnet.model.settings.io.xpp3.NMavenSettingsXpp3Reader;
+import org.apache.maven.dotnet.PlatformUnsupportedException;
+import org.apache.maven.dotnet.vendor.VendorFactory;
+import org.apache.maven.dotnet.vendor.VendorInfo;
+import org.apache.maven.dotnet.vendor.VendorUnsupportedException;
+
+/**
+ * Provides methods for loading and reading the nmaven-settings config file.
+ *
+ * @author Shane Isbell
+ */
+public class SettingsRepository
+ implements Repository
+{
+
+ /**
+ * List of all vendors from the nmaven-settings file. The <code>Vendor</code> is the raw model type.
+ */
+ private List<Vendor> vendors;
+
+ /**
+ * The default setup: framework version, vendor, vendor version. If no information is provided by the user, then
+ * this information will be used to choose the environment. It may also be used for partial matches, if appropriate.
+ */
+ private DefaultSetup defaultSetup;
+
+ /**
+ * List of all vendors from the nmaven-settings file.
+ */
+ private List<VendorInfo> vendorInfos;
+
+ /**
+ * Constructor. This method is intended to be invoked by the <code>RepositoryRegistry<code>, not by the
+ * application developer.
+ */
+ public SettingsRepository()
+ {
+ }
+
+ /**
+ * @see Repository#load(java.io.InputStream, java.util.Hashtable)
+ */
+ public void load( InputStream inputStream, Hashtable properties )
+ throws IOException
+ {
+ NMavenSettingsXpp3Reader xpp3Reader = new NMavenSettingsXpp3Reader();
+ Reader reader = new InputStreamReader( inputStream );
+ NMavenSettings settings;
+ try
+ {
+ settings = xpp3Reader.read( reader );
+ }
+ catch ( XmlPullParserException e )
+ {
+ e.printStackTrace();
+ throw new IOException( "NMAVEN-104-000: Could not read executable-plugins.xml" );
+ }
+ vendors = settings.getVendors();
+ defaultSetup = settings.getDefaultSetup();
+ vendorInfos = new ArrayList<VendorInfo>();
+
+ for ( Vendor v : vendors )
+ {
+ List<Framework> frameworks = v.getFrameworks();
+ for ( Framework framework : frameworks )
+ {
+ VendorInfo vendorInfo = VendorInfo.Factory.createDefaultVendorInfo();
+ vendorInfo.setVendorVersion( v.getVendorVersion() );
+ vendorInfo.setExecutablePath( new File( framework.getInstallRoot() ) );
+ 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" ) );
+ vendorInfos.add( vendorInfo );
+ }
+ }
+ }
+
+ /**
+ * @see Repository#setRepositoryRegistry(org.apache.maven.dotnet.registry.RepositoryRegistry)
+ */
+ public void setRepositoryRegistry( RepositoryRegistry repositoryRegistry )
+ {
+ }
+
+ /**
+ * Returns all vendor infos from the nmaven-settings file.
+ *
+ * @return all vendor infos from the nmaven-settings file
+ */
+ List<VendorInfo> getVendorInfos()
+ {
+ return vendorInfos;
+ }
+
+ /**
+ * Returns the install root for the .NET framework for the specified parameters. None of the parameter values
+ * should be null.
+ *
+ * @param vendor the vendor name
+ * @param vendorVersion the vendor version
+ * @param frameworkVersion the .NET framework version
+ * @return the install root for the .NET framework
+ * @throws org.apache.maven.dotnet.PlatformUnsupportedException if there is no install root found for the specified parameters
+ */
+ File getInstallRootFor( String vendor, String vendorVersion, String frameworkVersion )
+ throws PlatformUnsupportedException
+ {
+ if ( vendor == null || vendorVersion == null || frameworkVersion == null )
+ {
+ throw new PlatformUnsupportedException( "NMAVEN-104-001: One of more of the parameters is null: Vendor = " +
+ vendor + ", Vendor Version = " + vendorVersion + ", Framework Version = " + frameworkVersion );
+ }
+ for ( Vendor v : vendors )
+ {
+ if ( vendor.equals( v.getVendorName().trim() ) && vendorVersion.equals( v.getVendorVersion().trim() ) )
+ {
+ List<Framework> frameworks = v.getFrameworks();
+ for ( Framework framework : frameworks )
+ {
+ if ( frameworkVersion.equals( framework.getFrameworkVersion().trim() ) )
+ {
+ return new File( framework.getInstallRoot() );
+ }
+ }
+ }
+ }
+ throw new PlatformUnsupportedException( "NMAVEN-104-002: Unable to find install root: Vendor = " + vendor +
+ ", Vendor Version = " + vendorVersion + ", Framework Version = " + frameworkVersion );
+ }
+
+ /**
+ * Returns the default setup: framework version, vendor, vendor version. If no information is provided by the user, then
+ * this information will be used to choose the environment. It may also be used for partial matches, if appropriate.
+ *
+ * @return the default setup: framework version, vendor, vendor version
+ */
+ DefaultSetup getDefaultSetup()
+ {
+ return defaultSetup;
+ }
+
+}
Propchange: incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/SettingsRepository.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/StateMachineProcessorImpl.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/StateMachineProcessorImpl.java?view=auto&rev=485313
==============================================================================
--- incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/StateMachineProcessorImpl.java (added)
+++ incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/StateMachineProcessorImpl.java Sun Dec 10 15:43:51 2006
@@ -0,0 +1,138 @@
+/*
+ * 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 org.apache.maven.dotnet.vendor.impl;
+
+import org.apache.maven.dotnet.vendor.*;
+import org.apache.maven.dotnet.vendor.IllegalStateException;
+import org.apache.maven.dotnet.registry.RepositoryRegistry;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.codehaus.plexus.logging.LogEnabled;
+import org.codehaus.plexus.logging.Logger;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
+
+/**
+ * Provides an implementation of the <code>StateMachineProcessor</code>.
+ *
+ * @author Shane Isbell
+ */
+public class StateMachineProcessorImpl
+ implements StateMachineProcessor, LogEnabled, Initializable
+{
+
+ /**
+ * A registry component of repository (config) files
+ */
+ private RepositoryRegistry repositoryRegistry;
+
+ private VendorInfoRepository vendorInfoRepository;
+
+ private Map<VendorInfoState, VendorInfoTransitionRule> transitionRules;
+
+ /**
+ * A logger for writing log messages
+ */
+ private Logger logger;
+
+ /**
+ * Constructor. This method is intended to be invoked by the plexus-container, not by the application developer.
+ */
+ public StateMachineProcessorImpl()
+ {
+ }
+
+ /**
+ * @see LogEnabled#enableLogging(org.codehaus.plexus.logging.Logger)
+ */
+ public void enableLogging( Logger logger )
+ {
+ this.logger = logger;
+ }
+
+ /**
+ * @see org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable#initialize()
+ */
+ public void initialize()
+ throws InitializationException
+ {
+ VendorInfoTransitionRuleFactory factory = new VendorInfoTransitionRuleFactory();
+ transitionRules = new HashMap<VendorInfoState, VendorInfoTransitionRule>();
+ transitionRules.put( VendorInfoState.MTT, factory.createVendorInfoSetterForMTT() );
+ transitionRules.put( VendorInfoState.MTF, factory.createVendorInfoSetterForMTF() );
+ transitionRules.put( VendorInfoState.MFT, factory.createVendorInfoSetterForMFT() );
+ transitionRules.put( VendorInfoState.NTT, factory.createVendorInfoSetterForNTT() );
+
+ try
+ {
+ factory.init( repositoryRegistry, vendorInfoRepository, logger );
+ logger.debug( "NMAVEN-102-000: Initialized rule factory." );
+ transitionRules.put( VendorInfoState.MFF, factory.createVendorInfoSetterForMFF() );
+ transitionRules.put( VendorInfoState.FTF, factory.createVendorInfoSetterForFTF() );
+ transitionRules.put( VendorInfoState.FFT, factory.createVendorInfoSetterForFFT() );
+ transitionRules.put( VendorInfoState.FTT, factory.createVendorInfoSetterForFTT() );
+ transitionRules.put( VendorInfoState.FFF, factory.createVendorInfoSetterForFFF() );
+ transitionRules.put( VendorInfoState.NFT, factory.createVendorInfoSetterForNFT() );
+ transitionRules.put( VendorInfoState.NTF, factory.createVendorInfoSetterForNTF() );
+ transitionRules.put( VendorInfoState.NFF, factory.createVendorInfoSetterForNTT() );
+ transitionRules.put( VendorInfoState.NFF, factory.createVendorInfoSetterForNFF() );
+ transitionRules.put( VendorInfoState.GFF, factory.createVendorInfoSetterForGFF() );
+ }
+ catch ( org.apache.maven.dotnet.InitializationException e )
+ {
+ logger.debug( "NMAVEN-102-001: Unable to initialize rule factory.", e );
+ transitionRules.put( VendorInfoState.MFF, factory.createVendorInfoSetterForMFF_NoSettings() );
+ transitionRules.put( VendorInfoState.NFT, factory.createVendorInfoSetterForNFT_NoSettings() );
+ transitionRules.put( VendorInfoState.NTF, factory.createVendorInfoSetterForNTF_NoSettings() );
+ transitionRules.put( VendorInfoState.FTF, factory.createVendorInfoSetterForFTF_NoSettings() );
+ transitionRules.put( VendorInfoState.FFT, factory.createVendorInfoSetterForFFT_NoSettings() );
+ transitionRules.put( VendorInfoState.FTT, factory.createVendorInfoSetterForFTT_NoSettings() );
+ transitionRules.put( VendorInfoState.FFF, factory.createVendorInfoSetterForFFF_NoSettings() );
+ transitionRules.put( VendorInfoState.NFF, factory.createVendorInfoSetterForNFF_NoSettings() );
+ transitionRules.put( VendorInfoState.GFF, factory.createVendorInfoSetterForGFF_NoSettings() );
+ }
+ }
+
+ /**
+ * @see StateMachineProcessor#process(org.apache.maven.dotnet.vendor.VendorInfo)
+ */
+ public void process( VendorInfo vendorInfo )
+ throws IllegalStateException
+ {
+ VendorInfoState startState = VendorInfoState.START.getState( vendorInfo );
+ VendorInfoTransitionRule rule = transitionRules.get( startState );
+ if ( rule == null )
+ {
+ throw new IllegalStateException(
+ "NMAVEN-102-002: Could not find rule for state: State = " + startState.name() );
+ }
+ for ( VendorInfoState state = VendorInfoState.START; !state.equals( VendorInfoState.EXIT ); )
+ {
+ state = rule.process( vendorInfo );
+ rule = transitionRules.get( state );
+ if ( rule == null && !state.equals( VendorInfoState.EXIT ) )
+ {
+ throw new IllegalStateException(
+ "NMAVEN-102-003: Could not find rule for state: State = " + state.name() );
+ }
+ }
+ }
+}
Propchange: incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/StateMachineProcessorImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoRepositoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoRepositoryImpl.java?view=auto&rev=485313
==============================================================================
--- incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoRepositoryImpl.java (added)
+++ incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoRepositoryImpl.java Sun Dec 10 15:43:51 2006
@@ -0,0 +1,178 @@
+/*
+ * 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 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.VendorInfoMatchPolicy;
+import org.apache.maven.dotnet.vendor.InvalidVersionFormatException;
+import org.apache.maven.dotnet.registry.RepositoryRegistry;
+import org.apache.maven.dotnet.PlatformUnsupportedException;
+
+import java.util.List;
+import java.util.Collections;
+import java.util.ArrayList;
+import java.util.Set;
+import java.io.File;
+
+import org.codehaus.plexus.logging.LogEnabled;
+import org.codehaus.plexus.logging.Logger;
+
+/**
+ * Provides an implementation of <code>VendorInfoRepository</code>.
+ *
+ * @author Shane Isbell
+ */
+public class VendorInfoRepositoryImpl
+ implements VendorInfoRepository, LogEnabled
+{
+
+ /**
+ * A registry component of repository (config) files
+ */
+ private RepositoryRegistry repositoryRegistry;
+
+ /**
+ * A logger for writing log messages
+ */
+ private Logger logger;
+
+ /**
+ * Constructor. This method is intended to be invoked by the plexus-container, not by the application developer.
+ */
+ public VendorInfoRepositoryImpl()
+ {
+ }
+
+ /**
+ * @see LogEnabled#enableLogging(org.codehaus.plexus.logging.Logger)
+ */
+ public void enableLogging( Logger logger )
+ {
+ this.logger = logger;
+ }
+
+ /**
+ * @see org.apache.maven.dotnet.vendor.VendorInfoRepository#exists()
+ */
+ public boolean exists()
+ {
+ return ( repositoryRegistry.find( "nmaven-settings" ) != null );
+ }
+
+ /**
+ * @see VendorInfoRepository#getInstallRootFor(org.apache.maven.dotnet.vendor.VendorInfo)
+ */
+ public File getInstallRootFor( VendorInfo vendorInfo )
+ throws PlatformUnsupportedException
+ {
+ SettingsRepository settingsRepository = (SettingsRepository) repositoryRegistry.find( "nmaven-settings" );
+ return settingsRepository.getInstallRootFor( vendorInfo.getVendor().getVendorName(),
+ vendorInfo.getVendorVersion(), vendorInfo.getFrameworkVersion() );
+ }
+
+ /**
+ * @see org.apache.maven.dotnet.vendor.VendorInfoRepository#getVendorInfos()
+ */
+ public List<VendorInfo> getVendorInfos()
+ {
+ SettingsRepository settingsRepository = (SettingsRepository) repositoryRegistry.find( "nmaven-settings" );
+ return Collections.unmodifiableList( settingsRepository.getVendorInfos() );
+ }
+
+ /**
+ * @see VendorInfoRepository#getMaxVersion(java.util.Set<String>)
+ */
+ public String getMaxVersion( Set<String> versions )
+ throws InvalidVersionFormatException
+ {
+ return new VersionMatcher().getMaxVersion( versions );
+ }
+
+ /**
+ * @see VendorInfoRepository#getVendorInfosFor(String, String, String, boolean)
+ */
+ public List<VendorInfo> getVendorInfosFor( String vendorName, String vendorVersion, String frameworkVersion,
+ boolean isDefault )
+ {
+ List<VendorInfo> vendorInfos = new ArrayList<VendorInfo>();
+ MatchPolicyFactory matchPolicyFactory = new MatchPolicyFactory();
+ matchPolicyFactory.init( logger );
+
+ List<VendorInfoMatchPolicy> matchPolicies = new ArrayList<VendorInfoMatchPolicy>();
+ if ( vendorName != null )
+ {
+ matchPolicies.add( matchPolicyFactory.createVendorNamePolicy( vendorName ) );
+ }
+ if ( vendorVersion != null )
+ {
+ matchPolicies.add( matchPolicyFactory.createVendorVersionPolicy( vendorVersion ) );
+ }
+ if ( frameworkVersion != null )
+ {
+ matchPolicies.add( matchPolicyFactory.createFrameworkVersionPolicy( frameworkVersion ) );
+ }
+ if ( isDefault )
+ {
+ matchPolicies.add( matchPolicyFactory.createVendorIsDefaultPolicy() );
+ }
+ for ( VendorInfo vendorInfo : getVendorInfos() )
+ {
+ if ( matchVendorInfo( vendorInfo, matchPolicies ) )
+ {
+ vendorInfos.add( vendorInfo );
+ }
+ }
+ return vendorInfos;
+ }
+
+ /**
+ * @see VendorInfoRepository#getVendorInfosFor(org.apache.maven.dotnet.vendor.VendorInfo, boolean)
+ */
+ public List<VendorInfo> getVendorInfosFor( VendorInfo vendorInfo, boolean isDefault )
+ {
+ if ( vendorInfo == null )
+ {
+ return getVendorInfos();
+ }
+ return getVendorInfosFor( ( vendorInfo.getVendor() != null ? vendorInfo.getVendor().getVendorName() : null ),
+ vendorInfo.getVendorVersion(), vendorInfo.getFrameworkVersion(), isDefault );
+ }
+
+ /**
+ * Returns true if the specified vendor info matches <i>all</i> of the specified match policies, otherwise returns
+ * false.
+ *
+ * @param vendorInfo the vendor info to match against the match policies
+ * @param matchPolicies the match policies
+ * @return true if the specified vendor info matches <i>all</i> of the specified match policies, otherwise returns
+ * false
+ */
+ private boolean matchVendorInfo( VendorInfo vendorInfo, List<VendorInfoMatchPolicy> matchPolicies )
+ {
+ for ( VendorInfoMatchPolicy matchPolicy : matchPolicies )
+ {
+ if ( !matchPolicy.match( vendorInfo ) )
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+}
Propchange: incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoRepositoryImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoTransitionRuleFactory.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoTransitionRuleFactory.java?view=auto&rev=485313
==============================================================================
--- incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoTransitionRuleFactory.java (added)
+++ incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoTransitionRuleFactory.java Sun Dec 10 15:43:51 2006
@@ -0,0 +1,787 @@
+/*
+ * 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 org.apache.maven.dotnet.vendor.impl;
+
+import org.apache.maven.dotnet.vendor.*;
+import org.apache.maven.dotnet.InitializationException;
+import org.apache.maven.dotnet.PlatformUnsupportedException;
+import org.apache.maven.dotnet.registry.RepositoryRegistry;
+
+import java.util.List;
+import java.util.Set;
+import java.util.HashSet;
+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
+ */
+final class VendorInfoTransitionRuleFactory
+{
+
+ /**
+ * A registry component of repository (config) files
+ */
+ private RepositoryRegistry repositoryRegistry;
+
+ private SettingsRepository settingsRepository;
+
+ private VendorInfoRepository vendorInfoRepository;
+
+ /**
+ * The default vendor as specified within the nmaven-settings file
+ */
+ private Vendor defaultVendor;
+
+ /**
+ * The default vendor version as specified within the nmaven-settings file
+ */
+ private String defaultVendorVersion;
+
+ /**
+ * The default framework version as specified within the nmaven-settings file
+ */
+ private String defaultFrameworkVersion;
+
+ private List<VendorInfo> vendorInfos;
+
+ /**
+ * A logger for writing log messages
+ */
+ private Logger logger;
+
+ /**
+ * Default constructor
+ */
+ VendorInfoTransitionRuleFactory()
+ {
+ }
+
+ /**
+ * Initializes this factory.
+ *
+ * @param repositoryRegistry the repository registry containing various NMaven config information.
+ * @param vendorInfoRepository the vendor info repository used for accessing the nmaven-settings config file
+ * @param logger the plexus logger
+ * @throws InitializationException if there is a problem initializing this factory
+ */
+ void init( RepositoryRegistry repositoryRegistry, VendorInfoRepository vendorInfoRepository, Logger logger )
+ throws InitializationException
+ {
+ this.repositoryRegistry = repositoryRegistry;
+ this.vendorInfoRepository = vendorInfoRepository;
+ this.logger = logger;
+ if ( repositoryRegistry == null )
+ {
+ throw new InitializationException( "NMAVEN-103-000: Unable to find the repository registry" );
+ }
+
+ settingsRepository = (SettingsRepository) repositoryRegistry.find( "nmaven-settings" );
+ if ( settingsRepository == null )
+ {
+ throw new InitializationException(
+ "NMAVEN-103-001: Settings Repository is null. Aborting initialization of VendorInfoTranstionRuleFactory" );
+
+ }
+
+ try
+ {
+ defaultVendor = VendorFactory.createVendorFromName( settingsRepository.getDefaultSetup().getVendorName() );
+ }
+ catch ( VendorUnsupportedException e )
+ {
+ throw new InitializationException( "NMAVEN-103-002: Unknown Default Vendor: Name = " + defaultVendor );
+ }
+ defaultVendorVersion = settingsRepository.getDefaultSetup().getVendorVersion().trim();
+ defaultFrameworkVersion = settingsRepository.getDefaultSetup().getFrameworkVersion().trim();
+ vendorInfos = settingsRepository.getVendorInfos();
+ }
+
+ /**
+ * Returns the vendor info transition rule for state: Vendor is Novell, vendor version exists, framework version exists.
+ *
+ * @return the vendor info transition rule for state: Vendor is Novell, vendor version exists, framework version exists.
+ */
+ VendorInfoTransitionRule createVendorInfoSetterForNTT()
+ {
+ return new VendorInfoTransitionRule()
+ {
+ public VendorInfoState process( VendorInfo vendorInfo )
+ {
+ logger.debug( "NMAVEN-103-003: Entering State = NTT" );
+ return VendorInfoState.EXIT;
+ }
+ };
+ }
+
+ VendorInfoTransitionRule createVendorInfoSetterForNFF()
+ {
+ return new VendorInfoTransitionRule()
+ {
+ public VendorInfoState process( VendorInfo vendorInfo )
+ {
+ logger.debug( "NMAVEN-103-004: Entering State = NFF" );
+ if ( vendorInfo.getVendor().equals( defaultVendor ) )
+ {
+ vendorInfo.setVendorVersion( defaultVendorVersion );
+ vendorInfo.setFrameworkVersion( defaultFrameworkVersion );
+ return VendorInfoState.EXIT;
+ }
+ else
+ {
+ List<VendorInfo> v = vendorInfoRepository.getVendorInfosFor( vendorInfo, true );
+ if ( !v.isEmpty() )
+ {
+ for ( VendorInfo vi : v )
+ {
+ if ( vi.getVendor().equals( vendorInfo.getVendor() ) )
+ {
+ vendorInfo.setVendorVersion( vi.getVendorVersion() );
+ vendorInfo.setFrameworkVersion( "2.0.50727" );
+ return VendorInfoState.EXIT;
+ }
+ }
+ }
+ else
+ {
+ v = vendorInfoRepository.getVendorInfosFor( vendorInfo, false );
+ for ( VendorInfo vi : v )
+ {
+ if ( vi.getVendor().equals( vendorInfo.getVendor() ) )
+ {
+ vendorInfo.setVendorVersion( vi.getVendorVersion() );
+ vendorInfo.setFrameworkVersion(
+ "2.0.50727" ); //TODO: this should be according to max version
+ return VendorInfoState.EXIT;
+ }
+ }
+ }
+ }
+ return createVendorInfoSetterForNFF_NoSettings().process( vendorInfo );
+ }
+ };
+ }
+
+ VendorInfoTransitionRule createVendorInfoSetterForNFF_NoSettings()
+ {
+ return new VendorInfoTransitionRule()
+ {
+ public VendorInfoState process( VendorInfo vendorInfo )
+ {
+ logger.debug( "NMAVEN-103-005: Entering State = NFF" );
+ vendorInfo.setFrameworkVersion( "2.0.50727" );
+ return VendorInfoState.NFT;
+ }
+ };
+ }
+
+ VendorInfoTransitionRule createVendorInfoSetterForNFT_NoSettings()
+ {
+ return new VendorInfoTransitionRule()
+ {
+ public VendorInfoState process( VendorInfo vendorInfo )
+ {
+ logger.debug( "NMAVEN-103-006: Entering State = NFT" );
+ return VendorInfoState.EXIT; //NO WAY TO KNOW
+ }
+ };
+ }
+
+ VendorInfoTransitionRule createVendorInfoSetterForNFT()
+ {
+ return new VendorInfoTransitionRule()
+ {
+ public VendorInfoState process( VendorInfo vendorInfo )
+ {
+ logger.debug( "NMAVEN-103-007: Entering State = NFT" );
+ if ( vendorInfo.getFrameworkVersion().equals( defaultFrameworkVersion ) )
+ {
+ vendorInfo.setVendorVersion( defaultVendorVersion );
+ vendorInfo.setVendor( defaultVendor );
+ return VendorInfoState.NTT;
+ }
+ else
+ {
+ List<VendorInfo> v = vendorInfoRepository.getVendorInfosFor( vendorInfo, true );
+ if ( !v.isEmpty() )
+ {
+ for ( VendorInfo vi : v )
+ {
+ if ( vi.getFrameworkVersion().equals( vendorInfo.getFrameworkVersion() ) )
+ {
+ vendorInfo.setVendorVersion( vi.getVendorVersion() );
+ vendorInfo.setVendor( vi.getVendor() );
+ return VendorInfoState.NTT;
+ }
+ }
+ return createVendorInfoSetterForNFT_NoSettings().process( vendorInfo );
+ }
+ else
+ {
+ v = vendorInfoRepository.getVendorInfosFor( vendorInfo, false );
+ for ( VendorInfo vi : v )
+ {
+ if ( vi.getFrameworkVersion().equals( vendorInfo.getFrameworkVersion() ) )
+ {
+ vendorInfo.setVendorVersion( vi.getVendorVersion() );
+ vendorInfo.setVendor( vi.getVendor() );
+ return VendorInfoState.NTT;
+ }
+ }
+ return createVendorInfoSetterForNFT_NoSettings().process( vendorInfo );
+ }
+ }
+ }
+ };
+ }
+
+ VendorInfoTransitionRule createVendorInfoSetterForNTF_NoSettings()
+ {
+ return new VendorInfoTransitionRule()
+ {
+ public VendorInfoState process( VendorInfo vendorInfo )
+ {
+ logger.debug( "NMAVEN-103-008: Entering State = NTF" );
+ vendorInfo.setFrameworkVersion( "2.0.50727" );
+ return VendorInfoState.NTT;
+ }
+ };
+ }
+
+ VendorInfoTransitionRule createVendorInfoSetterForNTF()
+ {
+ return new VendorInfoTransitionRule()
+ {
+ public VendorInfoState process( VendorInfo vendorInfo )
+ {
+ logger.debug( "NMAVEN-103-009: Entering State = NTF" );
+ if ( vendorInfo.getVendorVersion().equals( defaultVendorVersion ) )
+ {
+ vendorInfo.setFrameworkVersion( defaultFrameworkVersion );
+ vendorInfo.setVendor( defaultVendor );
+ return VendorInfoState.NTT;
+ }
+ else
+ {
+ List<VendorInfo> v = vendorInfoRepository.getVendorInfosFor( vendorInfo, true );
+ if ( !v.isEmpty() )
+ {
+ for ( VendorInfo vi : v )
+ {
+ if ( vi.getVendorVersion().equals( vendorInfo.getVendorVersion() ) )
+ {
+ vendorInfo.setFrameworkVersion( vi.getFrameworkVersion() );
+ vendorInfo.setVendor( vi.getVendor() );
+ return VendorInfoState.NTT;
+ }
+ }
+ return createVendorInfoSetterForNTF_NoSettings().process( vendorInfo );
+ }
+ else
+ {
+ v = vendorInfoRepository.getVendorInfosFor( vendorInfo, false );
+ for ( VendorInfo vi : v )
+ {
+ if ( vi.getVendorVersion().equals( vendorInfo.getVendorVersion() ) )
+ {
+ vendorInfo.setFrameworkVersion( vi.getFrameworkVersion() );
+ vendorInfo.setVendor( vi.getVendor() );
+ return VendorInfoState.NTT;
+ }
+ }
+ return createVendorInfoSetterForNTF_NoSettings().process( vendorInfo );
+ }
+ }
+ }
+ };
+ }
+
+ VendorInfoTransitionRule createVendorInfoSetterForFTF_NoSettings()
+ {
+ return new VendorInfoTransitionRule()
+ {
+ public VendorInfoState process( VendorInfo vendorInfo )
+ {
+ logger.debug( "NMAVEN-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 )
+ {
+ logger.debug( "NMAVEN-103-011: Entering State = FTF" );
+ if ( vendorInfo.getVendorVersion().equals( defaultVendorVersion ) )
+ {
+ vendorInfo.setFrameworkVersion( defaultFrameworkVersion );
+ vendorInfo.setVendor( defaultVendor );
+ if ( defaultVendor.equals( Vendor.MICROSOFT ) )
+ {
+ return VendorInfoState.MTT;
+ }
+ else if ( defaultVendor.equals( Vendor.MONO ) )
+ {
+ return VendorInfoState.NTT;
+ }
+ else
+ {
+ return VendorInfoState.GTT;
+ }
+ }
+ else
+ {
+ List<VendorInfo> v = vendorInfoRepository.getVendorInfosFor( vendorInfo, true );
+ if ( !v.isEmpty() )
+ {
+ for ( VendorInfo vi : v )
+ {
+ if ( vi.getVendorVersion().equals( vendorInfo.getVendorVersion() ) )
+ {
+ vendorInfo.setFrameworkVersion( vi.getFrameworkVersion() );
+ vendorInfo.setVendor( vi.getVendor() );
+ if ( vi.getVendor().equals( Vendor.MICROSOFT ) )
+ {
+ return VendorInfoState.MTT;
+ }
+ else if ( vi.getVendor().equals( Vendor.MONO ) )
+ {
+ return VendorInfoState.NTT;
+ }
+ else
+ {
+ return VendorInfoState.GTT;
+ }
+ }
+ }
+ return createVendorInfoSetterForFTF_NoSettings().process( vendorInfo );
+ }
+ else
+ {
+ v = vendorInfoRepository.getVendorInfosFor( vendorInfo, false );
+ for ( VendorInfo vi : v )
+ {
+ if ( vi.getVendorVersion().equals( vendorInfo.getVendorVersion() ) )
+ {
+ vendorInfo.setFrameworkVersion( vi.getFrameworkVersion() );
+ vendorInfo.setVendor( vi.getVendor() );
+ if ( vi.getVendor().equals( Vendor.MICROSOFT ) )
+ {
+ return VendorInfoState.MTT;
+ }
+ else if ( vi.getVendor().equals( Vendor.MONO ) )
+ {
+ return VendorInfoState.NTT;
+ }
+ else
+ {
+ return VendorInfoState.GTT;
+ }
+ }
+ }
+ return createVendorInfoSetterForFTF_NoSettings().process( vendorInfo );
+ }
+ }
+ }
+ };
+ }
+
+ VendorInfoTransitionRule createVendorInfoSetterForFFT()
+ {
+ return new VendorInfoTransitionRule()
+ {
+ public VendorInfoState process( VendorInfo vendorInfo )
+ {
+ logger.debug( "NMAVEN-103-012: Entering State = FFT" );
+ if ( vendorInfo.getFrameworkVersion().equals( defaultFrameworkVersion ) )
+ {
+ vendorInfo.setVendorVersion( defaultVendorVersion );
+ vendorInfo.setVendor( defaultVendor );
+ if ( defaultVendor.equals( Vendor.MICROSOFT ) )
+ {
+ return VendorInfoState.MTT;
+ }
+ else if ( defaultVendor.equals( Vendor.MONO ) )
+ {
+ return VendorInfoState.NTT;
+ }
+ else
+ {
+ return VendorInfoState.GTT;
+ }
+ }
+ else
+ {
+ List<VendorInfo> v = vendorInfoRepository.getVendorInfosFor( vendorInfo, true );
+ if ( !v.isEmpty() )
+ {
+ for ( VendorInfo vi : v )
+ {
+ if ( vi.getFrameworkVersion().equals( vendorInfo.getFrameworkVersion() ) )
+ {
+ vendorInfo.setVendorVersion( vi.getVendorVersion() );
+ vendorInfo.setVendor( vi.getVendor() );
+ if ( vi.getVendor().equals( Vendor.MICROSOFT ) )
+ {
+ return VendorInfoState.MTT;
+ }
+ else if ( vi.getVendor().equals( Vendor.MONO ) )
+ {
+ return VendorInfoState.NTT;
+ }
+ else
+ {
+ return VendorInfoState.GTT;
+ }
+ }
+ }
+ }
+ v = vendorInfoRepository.getVendorInfosFor( vendorInfo, false );
+ for ( VendorInfo vi : v )
+ {
+ if ( vi.getFrameworkVersion().equals( vendorInfo.getFrameworkVersion() ) )
+ {
+ vendorInfo.setVendorVersion( vi.getVendorVersion() );
+ vendorInfo.setVendor( vi.getVendor() );
+ if ( vi.getVendor().equals( Vendor.MICROSOFT ) )
+ {
+ return VendorInfoState.MTT;
+ }
+ else if ( vi.getVendor().equals( Vendor.MONO ) )
+ {
+ return VendorInfoState.NTT;
+ }
+ else
+ {
+ return VendorInfoState.GTT;
+ }
+ }
+ }
+ return createVendorInfoSetterForFFT_NoSettings().process( vendorInfo );
+
+ }
+ }
+ };
+ }
+
+ VendorInfoTransitionRule createVendorInfoSetterForFFT_NoSettings()
+ {
+ return new VendorInfoTransitionRule()
+ {
+ public VendorInfoState process( VendorInfo vendorInfo )
+ {
+ logger.debug( "NMAVEN-103-013: Entering State = FFT" );
+ try
+ {
+ vendorInfo.setVendor( VendorFactory.getDefaultVendorForOS() );
+ }
+ catch ( PlatformUnsupportedException e )
+ {
+ return VendorInfoState.EXIT;
+ }
+ return ( vendorInfo.getVendor().equals( Vendor.MICROSOFT ) ) ? VendorInfoState.MFT
+ : VendorInfoState.NFT;
+ }
+ };
+ }
+
+ VendorInfoTransitionRule createVendorInfoSetterForFTT_NoSettings()
+ {
+ return new VendorInfoTransitionRule()
+ {
+ public VendorInfoState process( VendorInfo vendorInfo )
+ {
+ logger.debug( "NMAVEN-103-014: Entering State = FTT" );
+ String vendorVersion = vendorInfo.getVendorVersion();
+ Vendor defaultVendor;
+ try
+ {
+ defaultVendor = VendorFactory.getDefaultVendorForOS();
+ }
+ catch ( PlatformUnsupportedException e )
+ {
+ return VendorInfoState.EXIT;
+ }
+ 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;
+ }
+ }
+ };
+ }
+
+ VendorInfoTransitionRule createVendorInfoSetterForFTT()
+ {
+ return new VendorInfoTransitionRule()
+ {
+ public VendorInfoState process( VendorInfo vendorInfo )
+ {
+ logger.debug( "NMAVEN-103-015: Entering State = FTT" );
+ List<VendorInfo> vendorInfos = vendorInfoRepository.getVendorInfosFor( vendorInfo, false );
+ if ( vendorInfos.isEmpty() )
+ {
+ return createVendorInfoSetterForFTT_NoSettings().process( vendorInfo );
+ }
+ Vendor vendor = vendorInfos.get( 0 ).getVendor();//TODO: Do default branch
+ vendorInfo.setVendor( vendor );
+ if ( vendor.equals( Vendor.MICROSOFT ) )
+ {
+ return VendorInfoState.MTT;
+ }
+ else if ( vendor.equals( Vendor.MONO ) )
+ {
+ return VendorInfoState.NTT;
+ }
+ else
+ {
+ return VendorInfoState.GTT;
+ }
+ }
+ };
+ }
+
+ VendorInfoTransitionRule createVendorInfoSetterForFFF_NoSettings()
+ {
+ return new VendorInfoTransitionRule()
+ {
+ public VendorInfoState process( VendorInfo vendorInfo )
+ {
+ logger.debug( "NMAVEN-103-016: Entering State = FFF" );
+ try
+ {
+ vendorInfo.setVendor( VendorFactory.getDefaultVendorForOS() );
+ }
+ catch ( PlatformUnsupportedException e )
+ {
+ return VendorInfoState.EXIT;
+ }
+ return ( vendorInfo.getVendor().equals( Vendor.MICROSOFT ) ) ? VendorInfoState.MFF
+ : VendorInfoState.NFF;
+ }
+ };
+ }
+
+ VendorInfoTransitionRule createVendorInfoSetterForFFF()
+ {
+ return new VendorInfoTransitionRule()
+ {
+ public VendorInfoState process( VendorInfo vendorInfo )
+ {
+ logger.debug( "NMAVEN-103-017: Entering State = FFF" );
+ vendorInfo.setVendor( defaultVendor );
+ vendorInfo.setVendorVersion( defaultVendorVersion );
+ vendorInfo.setFrameworkVersion( defaultFrameworkVersion );
+ return VendorInfoState.EXIT;
+ }
+ };
+ }
+
+
+ VendorInfoTransitionRule createVendorInfoSetterForMTT()
+ {
+ return new VendorInfoTransitionRule()
+ {
+ public VendorInfoState process( VendorInfo vendorInfo )
+ {
+ logger.debug( "NMAVEN-103-018: Entering State = MTT" );
+ return VendorInfoState.EXIT;
+ }
+ };
+ }
+
+ VendorInfoTransitionRule createVendorInfoSetterForMTF()
+ {
+ return new VendorInfoTransitionRule()
+ {
+ public VendorInfoState process( VendorInfo vendorInfo )
+ {
+ logger.debug( "NMAVEN-103-019: Entering State = MTF" );
+ vendorInfo.setFrameworkVersion( vendorInfo.getVendorVersion() );
+ return VendorInfoState.MTT;
+ }
+ };
+ }
+
+ VendorInfoTransitionRule createVendorInfoSetterForMFT()
+ {
+ return new VendorInfoTransitionRule()
+ {
+ public VendorInfoState process( VendorInfo vendorInfo )
+ {
+ logger.debug( "NMAVEN-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( "NMAVEN-103-021: Entering State = MFF" );
+ File v1 = new File( "C:\\WINDOWS\\Microsoft.NET\\Framework\\v1.1.4322" );
+ File v2 = new File( "C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727" );
+ if ( v2.exists() )
+ {
+ vendorInfo.setFrameworkVersion( "2.0.50727" );
+ vendorInfo.setExecutablePath( v2 );
+ }
+ else if ( v1.exists() )
+ {
+ vendorInfo.setFrameworkVersion( "1.1.4322" );
+ vendorInfo.setExecutablePath( v1 );
+ }
+ else
+ {
+ vendorInfo.setFrameworkVersion( "2.0.50727" );
+ }
+ return VendorInfoState.MFT;
+ }
+ };
+ }
+
+ VendorInfoTransitionRule createVendorInfoSetterForMFF()
+ {
+ return new VendorInfoTransitionRule()
+ {
+ public VendorInfoState process( VendorInfo vendorInfo )
+ {
+ logger.debug( "NMAVEN-103-022: Entering State = MFF" );
+ if ( vendorInfo.getVendor().equals( defaultVendor ) )
+ {
+ vendorInfo.setVendorVersion( defaultVendorVersion );
+ return VendorInfoState.MTF;
+ }
+ else
+ {
+ List<VendorInfo> vendorInfos = vendorInfoRepository.getVendorInfosFor( vendorInfo, false );
+ Set<String> versions = new HashSet<String>();
+ for ( VendorInfo vi : vendorInfos )
+ {
+ String frameworkVersion = vi.getFrameworkVersion();
+ String vendorVersion = vi.getVendorVersion();
+ if ( frameworkVersion != null )
+ {
+ versions.add( frameworkVersion );
+ }
+ if ( vendorVersion != null )
+ {
+ versions.add( vi.getVendorVersion() );
+ }
+ }
+ try
+ {
+ String maxVersion = vendorInfoRepository.getMaxVersion( versions );
+ vendorInfo.setVendorVersion( maxVersion );
+ return VendorInfoState.MTF;
+ }
+ catch ( InvalidVersionFormatException e )
+ {
+ logger.info( "NMAVEN-103-030: Invalid version. Unable to determine best vendor version", e );
+ return createVendorInfoSetterForMFF_NoSettings().process( vendorInfo );
+ }
+ }
+ }
+ };
+ }
+
+ VendorInfoTransitionRule createVendorInfoSetterForGFF_NoSettings()
+ {
+ return new VendorInfoTransitionRule()
+ {
+ public VendorInfoState process( VendorInfo vendorInfo )
+ {
+ logger.debug( "NMAVEN-103-023: Entering State = GFF" );
+ vendorInfo.setFrameworkVersion( "2.0.50727" );
+ vendorInfo.setVendorVersion( "2.0.50727" );
+ return VendorInfoState.EXIT;
+ }
+ };
+ }
+
+ VendorInfoTransitionRule createVendorInfoSetterForGFF()
+ {
+ return new VendorInfoTransitionRule()
+ {
+ public VendorInfoState process( VendorInfo vendorInfo )
+ {
+ logger.debug( "NMAVEN-103-023: Entering State = GFF" );
+ if ( vendorInfo.getVendor().equals( defaultVendor ) )
+ {
+ vendorInfo.setVendorVersion( defaultVendorVersion );
+ vendorInfo.setFrameworkVersion( "2.0.50727" );
+ return VendorInfoState.EXIT;
+ }
+ else
+ {
+ List<VendorInfo> vendorInfos = vendorInfoRepository.getVendorInfosFor( vendorInfo, false );
+ Set<String> versions = new HashSet<String>();
+ for ( VendorInfo vi : vendorInfos )
+ {
+ String vendorVersion = vi.getVendorVersion();
+ if ( vendorVersion != null )
+ {
+ versions.add( vi.getVendorVersion() );
+ }
+ }
+ try
+ {
+ String maxVersion = vendorInfoRepository.getMaxVersion( versions );
+ vendorInfo.setVendorVersion( maxVersion );
+ vendorInfo.setFrameworkVersion( "2.0.50727" );
+ return VendorInfoState.EXIT;
+ }
+ catch ( InvalidVersionFormatException e )
+ {
+ logger.info( "NMAVEN-103-030: Invalid version. Unable to determine best vendor version", e );
+ return createVendorInfoSetterForGFF_NoSettings().process( vendorInfo );
+ }
+ }
+ }
+ };
+ }
+}
Propchange: incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VendorInfoTransitionRuleFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VersionMatcher.java
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VersionMatcher.java?view=auto&rev=485313
==============================================================================
--- incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VersionMatcher.java (added)
+++ incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VersionMatcher.java Sun Dec 10 15:43:51 2006
@@ -0,0 +1,342 @@
+/*
+ * 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 org.apache.maven.dotnet.vendor.impl;
+
+import java.util.regex.Pattern;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.apache.maven.dotnet.vendor.InvalidVersionFormatException;
+
+/**
+ * Provides a way to match versions.
+ *
+ * @author Shane Isbell
+ */
+final class VersionMatcher
+{
+ /**
+ * A pattern for a valid version format: \p{Alnum}[._-]]*[+*]?. This will be used for determining whether a
+ * version is valid.
+ */
+ private static Pattern versionIdMatch = Pattern.compile( "[\\p{Alnum}[._-]]*[+*]?" );
+
+ /**
+ * Constant denoting no modifier
+ */
+ private final static int nullModifier = 0;
+
+ /**
+ * Constant for '+' modifier
+ */
+ private final static int plusModifier = 1;
+
+ /**
+ * Constant for '*' modifier
+ */
+ private final static int starModifier = 2;
+
+ /**
+ * Default constructor
+ */
+ VersionMatcher()
+ {
+ }
+
+ /**
+ * Returns true if the specified parameter versions match, otherwise returns false. [Give full rules here].
+ *
+ * @param req the required version
+ * @param cap the capability version
+ * @return true if the specified versions (req and cap) match
+ * @throws InvalidVersionFormatException if the specified parameters contain an invalid version format
+ */
+ boolean matchVersion( String req, String cap )
+ throws InvalidVersionFormatException
+ {
+ String[] requirement = tokenizeVersion( req );
+ String[] capability = tokenizeVersion( cap );
+
+ int capSize = capability.length;
+ int reqSize = requirement.length;
+
+ int reqModifier = getModifier( requirement );
+ if ( reqModifier == plusModifier )
+ {
+ requirement[reqSize - 1] = requirement[reqSize - 1].replace( '+', ' ' ).trim();
+ }
+ else if ( reqModifier == starModifier )
+ {
+ requirement[reqSize - 1] = requirement[reqSize - 1].replace( '*', ' ' ).trim();
+ }
+
+ if ( reqSize < capSize && reqModifier != starModifier )
+ {
+ requirement = padArray( requirement, capSize );
+ }
+ else if ( capSize < reqSize )
+ {
+ capability = padArray( capability, reqSize );
+ }
+
+ switch ( reqModifier )
+ {
+ case nullModifier:
+ return testExactMatch( requirement, capability );
+ case plusModifier:
+ return testGreaterThanMatch( requirement, capability );
+ case starModifier:
+ return testPrefixMatch( requirement, capability );
+ default:
+ return false;
+ }
+ }
+
+ /**
+ * Returns the maximum version of the given set of versions.
+ *
+ * @param versions a set of versions from which to choose the maximum version
+ * @return the maximum version from the specified set of versions.
+ * @throws InvalidVersionFormatException if the format of one or more of the versions is invalid
+ */
+ String getMaxVersion( Set<String> versions )
+ throws InvalidVersionFormatException
+ {
+ if ( versions.isEmpty() )
+ {
+ return null;
+ }
+ Iterator i = versions.iterator();
+ String maxVersion = (String) i.next();
+ while ( i.hasNext() )
+ {
+ String testValue = (String) i.next();
+ if ( isGreaterThan( testValue, maxVersion ) )
+ {
+ maxVersion = testValue;
+ }
+ }
+ return maxVersion;
+ }
+
+ /**
+ * Returns true if v > v1, otherwise returns false.
+ *
+ * @param v the first value to compare
+ * @param v1 the second value to compare
+ * @return true if v > v1, otherwise returns false
+ */
+ private boolean isGreaterThan( String v, String v1 )
+ throws InvalidVersionFormatException
+ {
+ String[] requirement = tokenizeVersion( v );
+ String[] capability = tokenizeVersion( v1 );
+
+ int capSize = capability.length;
+ int reqSize = requirement.length;
+ if ( reqSize < capSize )
+ {
+ requirement = padArray( requirement, capSize );
+ }
+ else if ( capSize < reqSize )
+ {
+ capability = padArray( capability, reqSize );
+ }
+
+ return testGreaterThanMatch( requirement, capability );
+ }
+
+ /**
+ * Returns an array padded with zeros. This is needed because one version may contain, say 1.2, while another version may
+ * be 1.2.8. We need to add the implied 0 to read 1.2.0 so that the versions can be compared.
+ *
+ * @param value a string array without padded values
+ * @param size the size that the value array needs to be expanded
+ * @return a string array with padded values
+ */
+ private String[] padArray( String[] value, int size )
+ {
+ int valueSize = value.length;
+ int padSize = Math.abs( valueSize - size );
+
+ String[] newValue = new String[size];
+
+ System.arraycopy( value, 0, newValue, 0, valueSize );
+ for ( int i = 0; i < padSize; i++ )
+ {
+ newValue[i + valueSize] = "0";
+ }
+ return newValue;
+ }
+
+ /**
+ * Returns an int denoting a modifier (+, *) within the version. A value of 0 means that there is no modifier, a
+ * value of 1 means that there is a + modifier and a value of 2 means that there is a * modifier.
+ *
+ * @param value a tokenized string array of the version
+ * @return an int denoting a modifier within the version
+ */
+ private int getModifier( String[] value )
+ {
+ String lastValue = value[value.length - 1].trim();
+ char lastChar = lastValue.charAt( lastValue.length() - 1 );
+ if ( lastChar == '+' )
+ {
+ return plusModifier;
+ }
+ else if ( lastChar == '*' )
+ {
+ return starModifier;
+ }
+ else
+ {
+ return nullModifier;
+ }
+ }
+
+ /**
+ * Returns true if the requirement parameter exactly matches (each array value is the same) the capability.
+ *
+ * @param requirement the requirement to match
+ * @param capability the capability to match
+ * @return true if the requirement parameter exactly matches (each array value is the same) the capability
+ */
+ private boolean testExactMatch( String[] requirement, String[] capability )
+ {
+ int reqSize = requirement.length;
+ if ( reqSize != capability.length )
+ {
+ return false;
+ }
+
+ for ( int i = 0; i < reqSize; i++ )
+ {
+ if ( !requirement[i].equals( capability[i] ) )
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private boolean testGreaterThanMatch( String[] requirement, String[] capability )
+ {
+ int reqSize = requirement.length;
+ for ( int i = 0; i < reqSize; i++ )
+ {
+ if ( isNumber( requirement[i] ) && isNumber( capability[i] ) )
+ {
+ try
+ {
+ int compare = new Integer( capability[i] ).compareTo( new Integer( requirement[i] ) );
+ if ( compare < 0 )
+ {
+ return false;
+ }
+ if ( compare > 0 )
+ {
+ return true;
+ }
+ }
+ catch ( NumberFormatException e )
+ {
+ //this should never happen: already done check
+ }
+ }
+ else
+ {
+ for ( int j = 0; j < reqSize - 1; j++ )
+ {
+ char req = requirement[i].charAt( j );
+ char cap = capability[i].charAt( j );
+ if ( req < cap )
+ {
+ return true;
+ }
+ if ( req > cap )
+ {
+ return false;
+ }
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Returns true if the specified number parameter is an integer, otherwise returns false.
+ *
+ * @param number the number to test for an integer format
+ * @return true if the specified number parameter is an integer, otherwise returns false
+ */
+ private boolean isNumber( String number )
+ {
+ try
+ {
+ new Integer( number );
+ return true;
+ }
+ catch ( NumberFormatException e )
+ {
+ return false;
+ }
+ }
+
+ private boolean testPrefixMatch( String[] requirement, String[] capability )
+ {
+ int reqSize = requirement.length;
+ for ( int i = 0; i < reqSize; i++ )
+ {
+ if ( !requirement[i].equals( capability[i] ) )
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Returns a tokenized string array of the version based on the following standard version delimiters: '.', '_', '-'.
+ *
+ * @param version the version to tokenize
+ * @return a tokenized string array of the version based on the following standard version delimiters: '.', '_', '-'
+ * @throws InvalidVersionFormatException if the version format is invalid
+ */
+ private String[] tokenizeVersion( String version )
+ throws InvalidVersionFormatException
+ {
+ if ( !isVersionId( version ) )
+ {
+ throw new InvalidVersionFormatException( "Invalid Version Id: ID = " + version );
+ }
+ return version.split( "[._-]" );
+ }
+
+ /**
+ * Returns true if the specified version is valid (\p{Alnum}[._-]]*[+*]?), otherwise returns false.
+ *
+ * @param version the version to test for validity
+ * @return true if the specified version is valid (\p{Alnum}[._-]]*[+*]?), otherwise returns false
+ */
+ private boolean isVersionId( String version )
+ {
+ return ( version != null ) && versionIdMatch.matcher( version ).matches();
+ }
+
+}
Propchange: incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/VersionMatcher.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/package.html
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/package.html?view=auto&rev=485313
==============================================================================
--- incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/package.html (added)
+++ incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/package.html Sun Dec 10 15:43:51 2006
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+ @(#)package.html
+
+ Copyright 2006 Shane Isbell
+
+ Licensed 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.
+
+-->
+</head>
+<body bgcolor="white">
+ Provides the implementation classes of the <i>org.apache.maven.vendor</i> package.
+</body>
+</html>
\ No newline at end of file
Propchange: incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/impl/package.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/package.html
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/package.html?view=auto&rev=485313
==============================================================================
--- incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/package.html (added)
+++ incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/package.html Sun Dec 10 15:43:51 2006
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+ @(#)package.html
+
+ Copyright 2006 Shane Isbell
+
+ Licensed 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.
+
+-->
+</head>
+<body bgcolor="white">
+ Provides interfaces and classes to assist in determining missing vendor information such as framework version,
+ vendor name and vendor version. The core interface of this package is the <code>StateMachineProcessor</code>. This
+package is only intended to be used by the framework, not the application or Mojo plugin developer.
+</body>
+</html>
\ No newline at end of file
Propchange: incubator/nmaven/trunk/components/dotnet-vendor/src/main/java/org/apache/maven/dotnet/vendor/package.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/nmaven/trunk/components/dotnet-vendor/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/dotnet-vendor/src/main/resources/META-INF/plexus/components.xml?view=auto&rev=485313
==============================================================================
--- incubator/nmaven/trunk/components/dotnet-vendor/src/main/resources/META-INF/plexus/components.xml (added)
+++ incubator/nmaven/trunk/components/dotnet-vendor/src/main/resources/META-INF/plexus/components.xml Sun Dec 10 15:43:51 2006
@@ -0,0 +1,27 @@
+<component-set>
+ <components>
+ <component>
+ <role>org.apache.maven.dotnet.vendor.VendorInfoRepository</role>
+ <implementation>org.apache.maven.dotnet.vendor.impl.VendorInfoRepositoryImpl</implementation>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.dotnet.registry.RepositoryRegistry</role>
+ </requirement>
+ </requirements>
+ </component>
+
+ <component>
+ <role>org.apache.maven.dotnet.vendor.StateMachineProcessor</role>
+ <implementation>org.apache.maven.dotnet.vendor.impl.StateMachineProcessorImpl</implementation>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.dotnet.vendor.VendorInfoRepository</role>
+ </requirement>
+ <requirement>
+ <role>org.apache.maven.dotnet.registry.RepositoryRegistry</role>
+ </requirement>
+ </requirements>
+ </component>
+ </components>
+</component-set>
+
Propchange: incubator/nmaven/trunk/components/dotnet-vendor/src/main/resources/META-INF/plexus/components.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/nmaven/trunk/components/pom.xml
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/pom.xml?view=auto&rev=485313
==============================================================================
--- incubator/nmaven/trunk/components/pom.xml (added)
+++ incubator/nmaven/trunk/components/pom.xml Sun Dec 10 15:43:51 2006
@@ -0,0 +1,51 @@
+<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">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.maven.dotnet</groupId>
+ <artifactId>dotnet-components</artifactId>
+ <packaging>pom</packaging>
+ <version>0.14-SNAPSHOT</version>
+ <name>dotnet-components</name>
+ <modules>
+ <module>dotnet-core</module>
+ <module>dotnet-model</module>
+ <module>dotnet-artifact</module>
+ <module>dotnet-assembler</module>
+ <module>dotnet-executable</module>
+ <module>dotnet-registry</module>
+ <module>dotnet-vendor</module>
+ </modules>
+ <dependencies>
+ <dependency>
+ <groupId>org.easymock</groupId>
+ <artifactId>easymock</artifactId>
+ <version>2.0</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <build>
+
+ <plugins>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <configuration>
+ <descriptor>src/assembly/src.xml</descriptor>
+ <outputDirectory>src/target</outputDirectory>
+ </configuration>
+ </plugin>
+ </plugins>
+
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <artifactId>maven-release-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+</project>
\ No newline at end of file
Propchange: incubator/nmaven/trunk/components/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/nmaven/trunk/components/src/assembly/src.xml
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/components/src/assembly/src.xml?view=auto&rev=485313
==============================================================================
--- incubator/nmaven/trunk/components/src/assembly/src.xml (added)
+++ incubator/nmaven/trunk/components/src/assembly/src.xml Sun Dec 10 15:43:51 2006
@@ -0,0 +1,22 @@
+<assembly>
+ <id>build</id>
+ <formats>
+ <format>tar.gz</format>
+ <format>zip</format>
+ </formats>
+ <includeBaseDirectory>true</includeBaseDirectory>
+ <fileSets>
+ <fileSet>
+ <directory>.</directory>
+ <outputDirectory></outputDirectory>
+ <excludes>
+ <exclude>*.ipr</exclude>
+ <exclude>*.iws</exclude>
+ <exclude>*.iml</exclude>
+ <exclude>src/**</exclude>
+ <exclude>**/src/site/**</exclude>
+ <exclude>**/target/**</exclude>
+ </excludes>
+ </fileSet>
+ </fileSets>
+</assembly>
\ No newline at end of file
Propchange: incubator/nmaven/trunk/components/src/assembly/src.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/nmaven/trunk/integration-tests/imports/maven-core-it-verifier-2.1.jar
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/integration-tests/imports/maven-core-it-verifier-2.1.jar?view=auto&rev=485313
==============================================================================
Binary file - no diff available.
Propchange: incubator/nmaven/trunk/integration-tests/imports/maven-core-it-verifier-2.1.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/nmaven/trunk/integration-tests/tests/NOTICE.txt
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/integration-tests/tests/NOTICE.txt?view=auto&rev=485313
==============================================================================
--- incubator/nmaven/trunk/integration-tests/tests/NOTICE.txt (added)
+++ incubator/nmaven/trunk/integration-tests/tests/NOTICE.txt Sun Dec 10 15:43:51 2006
@@ -0,0 +1 @@
+This product includes software developed by The Apache Software Foundation (http://www.apache.org/).
\ No newline at end of file
Propchange: incubator/nmaven/trunk/integration-tests/tests/NOTICE.txt
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/nmaven/trunk/integration-tests/tests/README.txt
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/integration-tests/tests/README.txt?view=auto&rev=485313
==============================================================================
--- incubator/nmaven/trunk/integration-tests/tests/README.txt (added)
+++ incubator/nmaven/trunk/integration-tests/tests/README.txt Sun Dec 10 15:43:51 2006
@@ -0,0 +1,20 @@
+it0001: CS-MS: Build a .netmodule
+it0002: CS-MS: Build a library that is dependent on a .netmodule
+it0003: CS-MS: Verify that .netmodules are not a compile-time transitive dependency.
+it0004: CS-MS: Run an NUnit test that uses libraries and run-time transitive .netmodule dependencies.
+it0005: CS-MS: Build a webapp and deploy it
+it0006: PATH: Generate a class binding from a schema
+it0007: PATH: Generate a schema from an XML instance and then create a class binding from the generated schema
+it0008: PATH: Generate a WSDL (not included)
+it0009: Test ccnet plugin (run manually: change m2Home in ccnet.config and then type ccnet from the commandline).
+it0010: VB-MS: Build a library that is dependent on a .netmodule
+it0011: CS-MONO: Build a library that is dependent on a .netmodule
+it0012: CS-GNU: Build a .netmodule
+it0013: CS-GNU: Build a library that is dependent on a .netmodule (Disabled: option yet not supported).
+it0014: CS-GNU: Verify that .netmodules are not a compile-time transitive dependency. (Disabled: option not yet supported).
+it0015: CS-GNU: Build a library.
+it0016: CS-GNU: Build a library that is dependent on another library
+it0017: CS-GNU: Run an NUnit test that uses library dependencies.
+it0018: CS-MS-v1.1: Build a library with version 1.1 of the framework (verify manually by looking at the dll manifest)
+it0019: CS-MS-Compact: Build a library with the COMPACT framework (windows only)
+it0020: CS-MS-Resources: Generate resource file and embed into assembly
\ No newline at end of file
Propchange: incubator/nmaven/trunk/integration-tests/tests/README.txt
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/nmaven/trunk/integration-tests/tests/integration-tests.txt
URL: http://svn.apache.org/viewvc/incubator/nmaven/trunk/integration-tests/tests/integration-tests.txt?view=auto&rev=485313
==============================================================================
--- incubator/nmaven/trunk/integration-tests/tests/integration-tests.txt (added)
+++ incubator/nmaven/trunk/integration-tests/tests/integration-tests.txt Sun Dec 10 15:43:51 2006
@@ -0,0 +1,17 @@
+it0001
+it0002
+it0003
+it0004
+it0005
+it0006
+it0007
+it0010
+it0011
+it0012
+it0015
+it0016
+it0017
+it0018
+it0019
+it0020
+it0021
\ No newline at end of file
Propchange: incubator/nmaven/trunk/integration-tests/tests/integration-tests.txt
------------------------------------------------------------------------------
svn:eol-style = native