Author: olamy
Date: Mon May 19 16:01:16 2008
New Revision: 658026
URL: http://svn.apache.org/viewvc?rev=658026&view=rev
Log:
fix current trunk.
ScmProviderFactoryBean was throwing an Exception due to the two implementations of the cvs provider (java and native).
Added:
continuum/trunk/continuum-base/continuum-scm/src/test/resources/log4j.xml (with props)
Modified:
continuum/trunk/continuum-base/continuum-scm/pom.xml
continuum/trunk/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/manager/ScmManager.java
continuum/trunk/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/manager/spring/ScmProviderFactoryBean.java
continuum/trunk/continuum-base/continuum-scm/src/test/java/org/apache/continuum/scm/manager/ScmManagerTest.java
Modified: continuum/trunk/continuum-base/continuum-scm/pom.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-base/continuum-scm/pom.xml?rev=658026&r1=658025&r2=658026&view=diff
==============================================================================
--- continuum/trunk/continuum-base/continuum-scm/pom.xml (original)
+++ continuum/trunk/continuum-base/continuum-scm/pom.xml Mon May 19 16:01:16 2008
@@ -30,7 +30,6 @@
org.codehaus.plexus
plexus-spring
- test
org.slf4j
@@ -45,6 +44,18 @@
test
+ org.apache.maven.scm
+ maven-scm-provider-cvsjava
+ ${maven-scm.version}
+ test
+
+
+ org.apache.maven.scm
+ maven-scm-provider-cvsexe
+ ${maven-scm.version}
+ test
+
+
commons-io
commons-io
1.4
Modified: continuum/trunk/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/manager/ScmManager.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/manager/ScmManager.java?rev=658026&r1=658025&r2=658026&view=diff
==============================================================================
--- continuum/trunk/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/manager/ScmManager.java (original)
+++ continuum/trunk/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/manager/ScmManager.java Mon May 19 16:01:16 2008
@@ -23,7 +23,6 @@
import org.apache.maven.scm.log.ScmLogger;
import org.apache.maven.scm.manager.AbstractScmManager;
-import org.apache.maven.scm.provider.ScmProvider;
/**
* Default implementation of the SCM manager.
Modified: continuum/trunk/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/manager/spring/ScmProviderFactoryBean.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/manager/spring/ScmProviderFactoryBean.java?rev=658026&r1=658025&r2=658026&view=diff
==============================================================================
--- continuum/trunk/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/manager/spring/ScmProviderFactoryBean.java (original)
+++ continuum/trunk/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/manager/spring/ScmProviderFactoryBean.java Mon May 19 16:01:16 2008
@@ -4,6 +4,9 @@
import java.util.Map;
import org.apache.maven.scm.provider.ScmProvider;
+import org.codehaus.plexus.spring.PlexusToSpringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactoryUtils;
import org.springframework.beans.factory.BeanInitializationException;
@@ -26,15 +29,25 @@
implements FactoryBean, ApplicationContextAware
{
private ApplicationContext applicationContext;
-
+
+ /**
+ * FIXME : change how we find scm implementations
+ * @see org.springframework.beans.factory.FactoryBean#getObject()
+ */
public Object getObject()
throws Exception
{
Map providers = new HashMap();
- Map beans =
+ /*
+ olamy : comment the pure spring use because we have a duplicate between cvs java and cvs native
+
+ Map beans =
BeanFactoryUtils.beansOfTypeIncludingAncestors( applicationContext, ScmProvider.class );
+
+
for ( ScmProvider provider : beans.values() )
{
+
if ( providers.containsKey( provider.getScmType() ) )
{
throw new BeanInitializationException(
@@ -42,8 +55,14 @@
provider.getScmType() +
". Probably two conflicting scm implementations are present in the classpath." );
}
+
+ if (log.isDebugEnabled())
+ {
+ log.debug( "put provider with type " + provider.getScmType() + " and class " + provider.getClass().getName() );
+ }
providers.put( provider.getScmType(), provider );
- }
+ }*/
+ providers = PlexusToSpringUtils.lookupMap(PlexusToSpringUtils.buildSpringId( ScmProvider.class ), applicationContext );
return providers;
}
Modified: continuum/trunk/continuum-base/continuum-scm/src/test/java/org/apache/continuum/scm/manager/ScmManagerTest.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-base/continuum-scm/src/test/java/org/apache/continuum/scm/manager/ScmManagerTest.java?rev=658026&r1=658025&r2=658026&view=diff
==============================================================================
--- continuum/trunk/continuum-base/continuum-scm/src/test/java/org/apache/continuum/scm/manager/ScmManagerTest.java (original)
+++ continuum/trunk/continuum-base/continuum-scm/src/test/java/org/apache/continuum/scm/manager/ScmManagerTest.java Mon May 19 16:01:16 2008
@@ -19,10 +19,17 @@
* under the License.
*/
+import java.util.Properties;
+
import junit.framework.TestCase;
import org.apache.maven.scm.manager.NoSuchScmProviderException;
+import org.apache.maven.scm.provider.ScmProvider;
+import org.apache.maven.scm.provider.cvslib.cvsexe.CvsExeScmProvider;
+import org.apache.maven.scm.provider.cvslib.cvsjava.CvsJavaScmProvider;
import org.codehaus.plexus.spring.PlexusClassPathXmlApplicationContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
/**
@@ -34,6 +41,8 @@
private ApplicationContext context;
private ScmManager manager;
+
+ private Logger log = LoggerFactory.getLogger( getClass() );
public void setUp()
{
@@ -47,7 +56,41 @@
public void testScmProviders()
throws NoSuchScmProviderException
{
- manager.getScmLogger().info( "Hello, World" );
- assertNotNull( manager.getProviderByType( "svn" ) );
+ Properties backupSysProps = System.getProperties();
+
+ try
+ {
+ manager.getScmLogger().info( "Hello, World" );
+ assertNotNull( manager.getProviderByType( "svn" ) );
+
+ ScmProvider cvsProvider = manager.getProviderByType( "cvs" );
+ assertNotNull( cvsProvider );
+
+ log.info( "cvs provider class " + cvsProvider.getClass().getName() );
+
+ assertEquals( CvsJavaScmProvider.class, cvsProvider.getClass() );
+
+ System.setProperty( "maven.scm.provider.cvs.implementation", "cvs_native" );
+
+ cvsProvider = manager.getProviderByType( "cvs" );
+ assertNotNull( cvsProvider );
+
+ log.info( "cvs provider class " + cvsProvider.getClass().getName() );
+ assertEquals( CvsExeScmProvider.class, cvsProvider.getClass() );
+ System.setProperty( "maven.scm.provider.cvs.implementation", "cvs" );
+
+ cvsProvider = manager.getProviderByType( "cvs" );
+ assertNotNull( cvsProvider );
+
+ log.info( "cvs provider class " + cvsProvider.getClass().getName() );
+
+ assertEquals( CvsJavaScmProvider.class, cvsProvider.getClass() );
+ }
+ finally
+ {
+ System.setProperties( backupSysProps );
+ System.setProperty( "maven.scm.provider.cvs.implementation", "cvs" );
+ }
+
}
}
Added: continuum/trunk/continuum-base/continuum-scm/src/test/resources/log4j.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-base/continuum-scm/src/test/resources/log4j.xml?rev=658026&view=auto
==============================================================================
--- continuum/trunk/continuum-base/continuum-scm/src/test/resources/log4j.xml (added)
+++ continuum/trunk/continuum-base/continuum-scm/src/test/resources/log4j.xml Mon May 19 16:01:16 2008
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
Propchange: continuum/trunk/continuum-base/continuum-scm/src/test/resources/log4j.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: continuum/trunk/continuum-base/continuum-scm/src/test/resources/log4j.xml
------------------------------------------------------------------------------
svn:executable = *
Propchange: continuum/trunk/continuum-base/continuum-scm/src/test/resources/log4j.xml
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"