yes, I thought it was going to be merged later with the whole branch On Thu, May 15, 2008 at 1:47 PM, Emmanuel Venisse <[EMAIL PROTECTED]> wrote: > Carlos, > > Can merge it in trunk? > > Emmanuel > > On Wed, May 7, 2008 at 11:07 PM, <[EMAIL PROTECTED]> wrote: > >> Author: carlos >> Date: Wed May 7 14:07:26 2008 >> New Revision: 654275 >> >> URL: http://svn.apache.org/viewvc?rev=654275&view=rev >> Log: >> Automatically inject ScmProvider implementations >> >> Added: >> >> >> continuum/branches/builder/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/manager/spring/ >> >> >> continuum/branches/builder/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/manager/spring/ScmProviderFactoryBean.java >> (with props) >> Modified: >> continuum/branches/builder/continuum-base/continuum-scm/pom.xml >> >> >> continuum/branches/builder/continuum-base/continuum-scm/src/test/java/org/apache/continuum/scm/manager/ScmManagerTest.java >> >> >> continuum/branches/builder/continuum-base/continuum-scm/src/test/resources/org/apache/continuum/scm/manager/ScmManagerTest.xml >> >> Modified: continuum/branches/builder/continuum-base/continuum-scm/pom.xml >> URL: >> http://svn.apache.org/viewvc/continuum/branches/builder/continuum-base/continuum-scm/pom.xml?rev=654275&r1=654274&r2=654275&view=diff >> >> ============================================================================== >> --- continuum/branches/builder/continuum-base/continuum-scm/pom.xml >> (original) >> +++ continuum/branches/builder/continuum-base/continuum-scm/pom.xml Wed May >> 7 14:07:26 2008 >> @@ -26,9 +26,13 @@ >> <groupId>org.springframework</groupId> >> <artifactId>spring-context</artifactId> >> <version>${spring.version}</version> >> - <scope>test</scope> >> </dependency> >> <dependency> >> + <groupId>org.codehaus.plexus</groupId> >> + <artifactId>plexus-spring</artifactId> >> + <scope>test</scope> >> + </dependency> >> + <dependency> >> <groupId>org.slf4j</groupId> >> <artifactId>slf4j-simple</artifactId> >> <version>1.5.0</version> >> >> Added: >> continuum/branches/builder/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/manager/spring/ScmProviderFactoryBean.java >> URL: >> http://svn.apache.org/viewvc/continuum/branches/builder/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/manager/spring/ScmProviderFactoryBean.java?rev=654275&view=auto >> >> ============================================================================== >> --- >> continuum/branches/builder/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/manager/spring/ScmProviderFactoryBean.java >> (added) >> +++ >> continuum/branches/builder/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/manager/spring/ScmProviderFactoryBean.java >> Wed May 7 14:07:26 2008 >> @@ -0,0 +1,66 @@ >> +package org.apache.continuum.scm.manager.spring; >> + >> +import java.util.HashMap; >> +import java.util.Map; >> + >> +import org.apache.maven.scm.provider.ScmProvider; >> +import org.springframework.beans.BeansException; >> +import org.springframework.beans.factory.BeanFactoryUtils; >> +import org.springframework.beans.factory.BeanInitializationException; >> +import org.springframework.beans.factory.FactoryBean; >> +import org.springframework.context.ApplicationContext; >> +import org.springframework.context.ApplicationContextAware; >> + >> +/** >> + * <p> >> + * Factory bean to inject all beans of type [EMAIL PROTECTED] ScmProvider} >> + * </p> >> + * <p> >> + * <code><bean id="scmProviders" >> class="org.apache.continuum.scm.manager.spring.ScmManagerFactoryBean"/> >> + </code> >> + * </p> >> + * >> + * @author Carlos Sanchez <[EMAIL PROTECTED]> >> + */ >> +public class ScmProviderFactoryBean >> + implements FactoryBean, ApplicationContextAware >> +{ >> + private ApplicationContext applicationContext; >> + >> + public Object getObject() >> + throws Exception >> + { >> + Map<String, ScmProvider> providers = new HashMap<String, >> ScmProvider>(); >> + Map<String, ScmProvider> beans = >> + BeanFactoryUtils.beansOfTypeIncludingAncestors( >> applicationContext, ScmProvider.class ); >> + for ( ScmProvider provider : beans.values() ) >> + { >> + if ( providers.containsKey( provider.getScmType() ) ) >> + { >> + throw new BeanInitializationException( >> + "There are to >> ScmProvider beans in the appllication context for Scm type " + >> + >> provider.getScmType() + >> + ". Probably two >> conflicting scm implementations are present in the classpath." ); >> + } >> + providers.put( provider.getScmType(), provider ); >> + } >> + return providers; >> + } >> + >> + public Class getObjectType() >> + { >> + return Map.class; >> + } >> + >> + public boolean isSingleton() >> + { >> + return true; >> + } >> + >> + public void setApplicationContext( ApplicationContext >> applicationContext ) >> + throws BeansException >> + { >> + this.applicationContext = applicationContext; >> + } >> + >> +} >> >> Propchange: >> continuum/branches/builder/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/manager/spring/ScmProviderFactoryBean.java >> >> ------------------------------------------------------------------------------ >> svn:eol-style = native >> >> Propchange: >> continuum/branches/builder/continuum-base/continuum-scm/src/main/java/org/apache/continuum/scm/manager/spring/ScmProviderFactoryBean.java >> >> ------------------------------------------------------------------------------ >> svn:keywords = "Author Date Id Revision" >> >> Modified: >> continuum/branches/builder/continuum-base/continuum-scm/src/test/java/org/apache/continuum/scm/manager/ScmManagerTest.java >> URL: >> http://svn.apache.org/viewvc/continuum/branches/builder/continuum-base/continuum-scm/src/test/java/org/apache/continuum/scm/manager/ScmManagerTest.java?rev=654275&r1=654274&r2=654275&view=diff >> >> ============================================================================== >> --- >> continuum/branches/builder/continuum-base/continuum-scm/src/test/java/org/apache/continuum/scm/manager/ScmManagerTest.java >> (original) >> +++ >> continuum/branches/builder/continuum-base/continuum-scm/src/test/java/org/apache/continuum/scm/manager/ScmManagerTest.java >> Wed May 7 14:07:26 2008 >> @@ -19,11 +19,11 @@ >> * under the License. >> */ >> >> +import junit.framework.TestCase; >> + >> import org.apache.maven.scm.manager.NoSuchScmProviderException; >> +import org.codehaus.plexus.spring.PlexusClassPathXmlApplicationContext; >> import org.springframework.context.ApplicationContext; >> -import org.springframework.context.support.ClassPathXmlApplicationContext; >> - >> -import junit.framework.TestCase; >> >> /** >> * @todo replace with a spring integration test >> @@ -38,7 +38,8 @@ >> public void setUp() >> { >> context = >> - new ClassPathXmlApplicationContext( new String[] { >> "classpath*:META-INF/spring-context.xml", >> + new PlexusClassPathXmlApplicationContext( new String[] { >> "classpath*:META-INF/spring-context.xml", >> + "classpath*:META-INF/plexus/components.xml", >> "classpath*:" + getClass().getName().replace( '.', '/' ) + >> ".xml" } ); >> manager = (ScmManager) context.getBean( "scmManager" ); >> } >> @@ -47,6 +48,6 @@ >> throws NoSuchScmProviderException >> { >> manager.getScmLogger().info( "Hello, World" ); >> - assertNotNull( manager.getProviderByType( "svnexe" ) ); >> + assertNotNull( manager.getProviderByType( "svn" ) ); >> } >> } >> >> Modified: >> continuum/branches/builder/continuum-base/continuum-scm/src/test/resources/org/apache/continuum/scm/manager/ScmManagerTest.xml >> URL: >> http://svn.apache.org/viewvc/continuum/branches/builder/continuum-base/continuum-scm/src/test/resources/org/apache/continuum/scm/manager/ScmManagerTest.xml?rev=654275&r1=654274&r2=654275&view=diff >> >> ============================================================================== >> --- >> continuum/branches/builder/continuum-base/continuum-scm/src/test/resources/org/apache/continuum/scm/manager/ScmManagerTest.xml >> (original) >> +++ >> continuum/branches/builder/continuum-base/continuum-scm/src/test/resources/org/apache/continuum/scm/manager/ScmManagerTest.xml >> Wed May 7 14:07:26 2008 >> @@ -6,15 +6,9 @@ >> >> <bean id="scmManager" >> class="org.apache.continuum.scm.manager.ScmManager"> >> - <!-- TODO: better way to add the providers without having to >> redeclare all this? --> >> <property name="scmLogger" ref="scmLogger" /> >> <property name="scmProviders"> >> - <map> >> - <entry key="svnexe"> >> - <bean >> - >> class="org.apache.maven.scm.provider.svn.svnexe.SvnExeScmProvider" /> >> - </entry> >> - </map> >> + <bean >> class="org.apache.continuum.scm.manager.spring.ScmProviderFactoryBean"/> >> </property> >> </bean> >> </beans> >> >> >> >
-- I could give you my word as a Spaniard. No good. I've known too many Spaniards. -- The Princess Bride
