]> source.dussan.org Git - archiva.git/commitdiff
[MRM-1473] remove use of plexus-spring
authorOlivier Lamy <olamy@apache.org>
Thu, 26 May 2011 20:53:32 +0000 (20:53 +0000)
committerOlivier Lamy <olamy@apache.org>
Thu, 26 May 2011 20:53:32 +0000 (20:53 +0000)
ok for archiva-artifact-converter
introduce a new bridge tru sisu-guice to be able to use maven apis components

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1128078 13f79535-47bb-0310-9956-ffa450edef68

14 files changed:
archiva-modules/archiva-base/archiva-artifact-converter/pom.xml
archiva-modules/archiva-base/archiva-artifact-converter/src/main/java/org/apache/maven/archiva/converter/artifact/LegacyToDefaultConverter.java
archiva-modules/archiva-base/archiva-artifact-converter/src/main/java/org/apache/maven/archiva/converter/artifact/Messages.java
archiva-modules/archiva-base/archiva-artifact-converter/src/main/resources/META-INF/spring-context.xml [new file with mode: 0644]
archiva-modules/archiva-base/archiva-artifact-converter/src/test/java/org/apache/maven/archiva/converter/artifact/LegacyToDefaultConverterTest.java
archiva-modules/archiva-base/archiva-artifact-converter/src/test/resources/spring-context.xml [new file with mode: 0644]
archiva-modules/archiva-base/archiva-converter/src/main/java/org/apache/maven/archiva/converter/legacy/DefaultLegacyRepositoryConverter.java
archiva-modules/archiva-base/archiva-converter/src/main/java/org/apache/maven/archiva/converter/legacy/LegacyConverterArtifactConsumer.java
archiva-modules/archiva-base/archiva-converter/src/main/resources/META-INF/spring-context.xml [new file with mode: 0644]
archiva-modules/archiva-base/archiva-plexus-bridge/pom.xml [new file with mode: 0644]
archiva-modules/archiva-base/archiva-plexus-bridge/src/main/java/org/apache/archiva/common/plexusbridge/PlexusSisuBridge.java [new file with mode: 0644]
archiva-modules/archiva-base/archiva-plexus-bridge/src/main/resources/META-INF/spring-context.xml [new file with mode: 0644]
archiva-modules/archiva-base/pom.xml
pom.xml

index 2c18c5effbcb8fd63dcebcfb006aef0b7476e31f..c5ae11579048890ebe069853123c2e1a440a9071 100644 (file)
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-artifact-manager</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.archiva</groupId>
+      <artifactId>archiva-plexus-bridge</artifactId>
+    </dependency>
     <dependency>
       <groupId>org.apache.archiva</groupId>
       <artifactId>archiva-transaction</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-context</artifactId>
+    </dependency>
     <dependency>
       <groupId>org.apache.maven.shared</groupId>
       <artifactId>maven-model-converter</artifactId>
       <artifactId>slf4j-simple</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-test</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
   <build>
     <plugins>
       <plugin>
-        <groupId>org.codehaus.plexus</groupId>
-        <artifactId>plexus-component-metadata</artifactId>
-        <executions>
-          <execution>
-            <goals>
-              <goal>generate-metadata</goal>
-            </goals>
-          </execution>
-        </executions>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <systemPropertyVariables>
+            <basedir>${basedir}</basedir>
+          </systemPropertyVariables>
+        </configuration>
       </plugin>
     </plugins>
   </build>
index 707cbcbc65243b5b7d1f60cecaba5d91816af3cd..b1976c37574c2b6a1a0462625620b718d7a0d136 100644 (file)
@@ -19,19 +19,7 @@ package org.apache.maven.archiva.converter.artifact;
  * under the License.
  */
 
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.regex.Matcher;
-
+import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.maven.archiva.transaction.FileTransaction;
@@ -54,30 +42,52 @@ import org.apache.maven.model.Relocation;
 import org.apache.maven.model.converter.ModelConverter;
 import org.apache.maven.model.converter.PomTranslationException;
 import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.codehaus.plexus.digest.Digester;
 import org.codehaus.plexus.digest.DigesterException;
+import org.codehaus.plexus.digest.Md5Digester;
+import org.codehaus.plexus.digest.Sha1Digester;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+import javax.inject.Inject;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.regex.Matcher;
 
 /**
- * LegacyToDefaultConverter 
+ * LegacyToDefaultConverter
  *
  * @version $Id$
- * 
- * @plexus.component role="org.apache.maven.archiva.converter.artifact.ArtifactConverter" 
- *      role-hint="legacy-to-default"
+ * @plexus.component role="org.apache.maven.archiva.converter.artifact.ArtifactConverter"
+ * role-hint="legacy-to-default"
  */
+@Service( "artifactConverter#legacy-to-default" )
 public class LegacyToDefaultConverter
     implements ArtifactConverter
 {
     /**
-     * {@link List}&lt;{@link Digester}>
-     * 
-     * @plexus.requirement role="org.codehaus.plexus.digest.Digester"
+     * {@link List}&lt;{@link Digester}
+     * plexus.requirement role="org.codehaus.plexus.digest.Digester"
      */
     private List<Digester> digesters;
 
+    @Inject
+    private PlexusSisuBridge plexusSisuBridge;
+
     /**
-     * @plexus.requirement
+     * plexus.requirement
      */
     private ModelConverter translator;
 
@@ -92,16 +102,26 @@ public class LegacyToDefaultConverter
     private ArtifactHandlerManager artifactHandlerManager;
 
     /**
-     * @plexus.configuration default-value="false"
+     * plexus.configuration default-value="false"
      */
     private boolean force;
 
     /**
-     * @plexus.configuration default-value="false"
+     * plexus.configuration default-value="false"
      */
     private boolean dryrun;
 
-    private Map<Artifact,List<String>> warnings = new HashMap<Artifact,List<String>>();
+    private Map<Artifact, List<String>> warnings = new HashMap<Artifact, List<String>>();
+
+    @PostConstruct
+    public void initialize()
+        throws ComponentLookupException
+    {
+        this.digesters = plexusSisuBridge.lookupList( Digester.class );
+        translator = plexusSisuBridge.lookup( ModelConverter.class );
+        artifactFactory = plexusSisuBridge.lookup( ArtifactFactory.class );
+        artifactHandlerManager = plexusSisuBridge.lookup( ArtifactHandlerManager.class );
+    }
 
     public void convert( Artifact artifact, ArtifactRepository targetRepository )
         throws ArtifactConversionException
@@ -162,17 +182,18 @@ public class LegacyToDefaultConverter
             }
             catch ( TransactionException e )
             {
-                throw new ArtifactConversionException( Messages.getString( "transaction.failure", e.getMessage() ), e ); //$NON-NLS-1$
+                throw new ArtifactConversionException( Messages.getString( "transaction.failure", e.getMessage() ),
+                                                       e ); //$NON-NLS-1$
             }
         }
     }
 
-    @SuppressWarnings("unchecked")
+    @SuppressWarnings( "unchecked" )
     private boolean copyPom( Artifact artifact, ArtifactRepository targetRepository, FileTransaction transaction )
         throws ArtifactConversionException
     {
-        Artifact pom = artifactFactory.createProjectArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact
-            .getVersion() );
+        Artifact pom = artifactFactory.createProjectArtifact( artifact.getGroupId(), artifact.getArtifactId(),
+                                                              artifact.getVersion() );
         pom.setBaseVersion( artifact.getBaseVersion() );
         ArtifactRepository repository = artifact.getRepository();
         File file = new File( repository.getBasedir(), repository.pathOf( pom ) );
@@ -197,7 +218,7 @@ public class LegacyToDefaultConverter
             catch ( IOException e )
             {
                 throw new ArtifactConversionException(
-                                                       Messages.getString( "unable.to.read.source.pom", e.getMessage() ), e ); //$NON-NLS-1$
+                    Messages.getString( "unable.to.read.source.pom", e.getMessage() ), e ); //$NON-NLS-1$
             }
 
             if ( checksumsValid && contents.indexOf( "modelVersion" ) >= 0 ) //$NON-NLS-1$
@@ -218,8 +239,8 @@ public class LegacyToDefaultConverter
                 }
                 catch ( IOException e )
                 {
-                    throw new ArtifactConversionException( Messages
-                        .getString( "unable.to.write.target.pom", e.getMessage() ), e ); //$NON-NLS-1$
+                    throw new ArtifactConversionException(
+                        Messages.getString( "unable.to.write.target.pom", e.getMessage() ), e ); //$NON-NLS-1$
                 }
             }
             else
@@ -229,20 +250,22 @@ public class LegacyToDefaultConverter
                 StringWriter writer = null;
                 try
                 {
-                    org.apache.maven.model.v3_0_0.io.xpp3.MavenXpp3Reader v3Reader = new org.apache.maven.model.v3_0_0.io.xpp3.MavenXpp3Reader();
+                    org.apache.maven.model.v3_0_0.io.xpp3.MavenXpp3Reader v3Reader =
+                        new org.apache.maven.model.v3_0_0.io.xpp3.MavenXpp3Reader();
                     org.apache.maven.model.v3_0_0.Model v3Model = v3Reader.read( stringReader );
 
                     if ( doRelocation( artifact, v3Model, targetRepository, transaction ) )
                     {
-                        Artifact relocatedPom = artifactFactory.createProjectArtifact( artifact.getGroupId(), artifact
-                            .getArtifactId(), artifact.getVersion() );
+                        Artifact relocatedPom =
+                            artifactFactory.createProjectArtifact( artifact.getGroupId(), artifact.getArtifactId(),
+                                                                   artifact.getVersion() );
                         targetFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( relocatedPom ) );
                     }
 
                     Model v4Model = translator.translate( v3Model );
 
-                    translator.validateV4Basics( v4Model, v3Model.getGroupId(), v3Model.getArtifactId(), v3Model
-                        .getVersion(), v3Model.getPackage() );
+                    translator.validateV4Basics( v4Model, v3Model.getGroupId(), v3Model.getArtifactId(),
+                                                 v3Model.getVersion(), v3Model.getPackage() );
 
                     writer = new StringWriter();
                     MavenXpp3Writer Xpp3Writer = new MavenXpp3Writer();
@@ -264,7 +287,8 @@ public class LegacyToDefaultConverter
                 }
                 catch ( IOException e )
                 {
-                    throw new ArtifactConversionException( Messages.getString( "unable.to.write.converted.pom" ), e ); //$NON-NLS-1$
+                    throw new ArtifactConversionException( Messages.getString( "unable.to.write.converted.pom" ),
+                                                           e ); //$NON-NLS-1$
                 }
                 catch ( PomTranslationException e )
                 {
@@ -290,8 +314,10 @@ public class LegacyToDefaultConverter
         boolean result = true;
         for ( Digester digester : digesters )
         {
-            result &= verifyChecksum( file, file.getName() + "." + getDigesterFileExtension( digester ), digester, //$NON-NLS-1$
-                                      artifact, "failure.incorrect." + getDigesterFileExtension( digester ) ); //$NON-NLS-1$
+            result &= verifyChecksum( file, file.getName() + "." + getDigesterFileExtension( digester ), digester,
+                                      //$NON-NLS-1$
+                                      artifact,
+                                      "failure.incorrect." + getDigesterFileExtension( digester ) ); //$NON-NLS-1$
         }
         return result;
     }
@@ -395,15 +421,18 @@ public class LegacyToDefaultConverter
         }
         catch ( FileNotFoundException e )
         {
-            throw new ArtifactConversionException( Messages.getString( "error.reading.target.metadata" ), e ); //$NON-NLS-1$
+            throw new ArtifactConversionException( Messages.getString( "error.reading.target.metadata" ),
+                                                   e ); //$NON-NLS-1$
         }
         catch ( IOException e )
         {
-            throw new ArtifactConversionException( Messages.getString( "error.reading.target.metadata" ), e ); //$NON-NLS-1$
+            throw new ArtifactConversionException( Messages.getString( "error.reading.target.metadata" ),
+                                                   e ); //$NON-NLS-1$
         }
         catch ( XmlPullParserException e )
         {
-            throw new ArtifactConversionException( Messages.getString( "error.reading.target.metadata" ), e ); //$NON-NLS-1$
+            throw new ArtifactConversionException( Messages.getString( "error.reading.target.metadata" ),
+                                                   e ); //$NON-NLS-1$
         }
         finally
         {
@@ -420,7 +449,8 @@ public class LegacyToDefaultConverter
         boolean result = true;
 
         RepositoryMetadata repositoryMetadata = new ArtifactRepositoryMetadata( artifact );
-        File file = new File( repository.getBasedir(), repository.pathOfRemoteRepositoryMetadata( repositoryMetadata ) );
+        File file =
+            new File( repository.getBasedir(), repository.pathOfRemoteRepositoryMetadata( repositoryMetadata ) );
         if ( file.exists() )
         {
             Metadata metadata = readMetadata( file );
@@ -438,7 +468,7 @@ public class LegacyToDefaultConverter
         return result;
     }
 
-    @SuppressWarnings("unchecked")
+    @SuppressWarnings( "unchecked" )
     private boolean validateMetadata( Metadata metadata, RepositoryMetadata repositoryMetadata, Artifact artifact )
     {
         String groupIdKey;
@@ -544,8 +574,8 @@ public class LegacyToDefaultConverter
                                  Metadata newMetadata, FileTransaction transaction )
         throws ArtifactConversionException
     {
-        File file = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( artifactMetadata ) );
+        File file = new File( targetRepository.getBasedir(),
+                              targetRepository.pathOfRemoteRepositoryMetadata( artifactMetadata ) );
 
         Metadata metadata;
         boolean changed;
@@ -576,7 +606,8 @@ public class LegacyToDefaultConverter
             }
             catch ( IOException e )
             {
-                throw new ArtifactConversionException( Messages.getString( "error.writing.target.metadata" ), e ); //$NON-NLS-1$
+                throw new ArtifactConversionException( Messages.getString( "error.writing.target.metadata" ),
+                                                       e ); //$NON-NLS-1$
             }
             finally
             {
@@ -590,13 +621,15 @@ public class LegacyToDefaultConverter
         throws IOException
     {
         Properties properties = v3Model.getProperties();
-        if ( properties.containsKey( "relocated.groupId" ) || properties.containsKey( "relocated.artifactId" ) //$NON-NLS-1$ //$NON-NLS-2$
+        if ( properties.containsKey( "relocated.groupId" ) || properties.containsKey( "relocated.artifactId" )
+            //$NON-NLS-1$ //$NON-NLS-2$
             || properties.containsKey( "relocated.version" ) ) //$NON-NLS-1$
         {
             String newGroupId = properties.getProperty( "relocated.groupId", v3Model.getGroupId() ); //$NON-NLS-1$
             properties.remove( "relocated.groupId" ); //$NON-NLS-1$
 
-            String newArtifactId = properties.getProperty( "relocated.artifactId", v3Model.getArtifactId() ); //$NON-NLS-1$
+            String newArtifactId =
+                properties.getProperty( "relocated.artifactId", v3Model.getArtifactId() ); //$NON-NLS-1$
             properties.remove( "relocated.artifactId" ); //$NON-NLS-1$
 
             String newVersion = properties.getProperty( "relocated.version", v3Model.getVersion() ); //$NON-NLS-1$
@@ -684,4 +717,65 @@ public class LegacyToDefaultConverter
     {
         return warnings;
     }
+
+
+    public List<Digester> getDigesters()
+    {
+        return digesters;
+    }
+
+    public void setDigesters( List<Digester> digesters )
+    {
+        this.digesters = digesters;
+    }
+
+    public ModelConverter getTranslator()
+    {
+        return translator;
+    }
+
+    public void setTranslator( ModelConverter translator )
+    {
+        this.translator = translator;
+    }
+
+    public ArtifactFactory getArtifactFactory()
+    {
+        return artifactFactory;
+    }
+
+    public void setArtifactFactory( ArtifactFactory artifactFactory )
+    {
+        this.artifactFactory = artifactFactory;
+    }
+
+    public ArtifactHandlerManager getArtifactHandlerManager()
+    {
+        return artifactHandlerManager;
+    }
+
+    public void setArtifactHandlerManager( ArtifactHandlerManager artifactHandlerManager )
+    {
+        this.artifactHandlerManager = artifactHandlerManager;
+    }
+
+    public boolean isForce()
+    {
+        return force;
+    }
+
+    public void setForce( boolean force )
+    {
+        this.force = force;
+    }
+
+    public boolean isDryrun()
+    {
+        return dryrun;
+    }
+
+    public void setDryrun( boolean dryrun )
+    {
+        this.dryrun = dryrun;
+    }
 }
diff --git a/archiva-modules/archiva-base/archiva-artifact-converter/src/main/resources/META-INF/spring-context.xml b/archiva-modules/archiva-base/archiva-artifact-converter/src/main/resources/META-INF/spring-context.xml
new file mode 100644 (file)
index 0000000..b1f54e8
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+
+<!--
+  ~ 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.
+  -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:context="http://www.springframework.org/schema/context"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
+           http://www.springframework.org/schema/context 
+           http://www.springframework.org/schema/context/spring-context-3.0.xsd"
+       default-lazy-init="true">
+
+  <context:annotation-config/>
+  <context:component-scan base-package="org.apache.maven.archiva.converter.artifact"/>
+
+</beans>
\ No newline at end of file
index 31e1e1a1c3a000669e4bb7b10bbe14c520135f0a..9154d06e8290d4432e3ab4448ef516a22a23c88f 100644 (file)
@@ -19,15 +19,8 @@ package org.apache.maven.archiva.converter.artifact;
  * under the License.
  */
 
-import java.io.File;
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.regex.Matcher;
-
+import junit.framework.TestCase;
+import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
 import org.apache.commons.io.FileUtils;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
@@ -37,15 +30,32 @@ import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
 import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
 import org.apache.maven.artifact.repository.metadata.SnapshotArtifactRepositoryMetadata;
-import org.codehaus.plexus.spring.PlexusInSpringTestCase;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.context.ApplicationContext;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import javax.inject.Inject;
+import java.io.File;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.regex.Matcher;
 
 /**
- * LegacyToDefaultConverterTest 
+ * LegacyToDefaultConverterTest
  *
  * @version $Id$
  */
+@RunWith( SpringJUnit4ClassRunner.class )
+@ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } )
 public class LegacyToDefaultConverterTest
-    extends PlexusInSpringTestCase
+    extends TestCase
 {
     private ArtifactRepository sourceRepository;
 
@@ -55,38 +65,58 @@ public class LegacyToDefaultConverterTest
 
     private ArtifactFactory artifactFactory;
 
+    @Inject
+    private PlexusSisuBridge plexusSisuBridge;
+
+    @Inject
+    private ApplicationContext applicationContext;
+
     private static final int SLEEP_MILLIS = 100;
 
-    protected void setUp()
+    @Before
+    public void init()
         throws Exception
     {
         super.setUp();
 
-        ArtifactRepositoryFactory factory = (ArtifactRepositoryFactory) lookup( ArtifactRepositoryFactory.ROLE );
+        ArtifactRepositoryFactory factory = plexusSisuBridge.lookup( ArtifactRepositoryFactory.class );
 
-        ArtifactRepositoryLayout layout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, "legacy" );
+        ArtifactRepositoryLayout layout =
+            (ArtifactRepositoryLayout) plexusSisuBridge.lookup( ArtifactRepositoryLayout.class, "legacy" );
 
         File sourceBase = getTestFile( "src/test/source-repository" );
-        sourceRepository = factory.createArtifactRepository( "source", sourceBase.toURL().toString(), layout, null,
-                                                             null );
+        sourceRepository =
+            factory.createArtifactRepository( "source", sourceBase.toURL().toString(), layout, null, null );
 
-        layout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, "default" );
+        layout = (ArtifactRepositoryLayout) plexusSisuBridge.lookup( ArtifactRepositoryLayout.class, "default" );
 
         File targetBase = getTestFile( "target/test-target-repository" );
         copyDirectoryStructure( getTestFile( "src/test/target-repository" ), targetBase );
 
-        targetRepository = factory.createArtifactRepository( "target", targetBase.toURL().toString(), layout, null,
-                                                             null );
+        targetRepository =
+            factory.createArtifactRepository( "target", targetBase.toURL().toString(), layout, null, null );
 
-        artifactConverter = (ArtifactConverter) lookup( ArtifactConverter.ROLE, "legacy-to-default" );
+        artifactConverter =
+            applicationContext.getBean( "artifactConverter#legacy-to-default", ArtifactConverter.class );
 
-        artifactFactory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
+        artifactConverter.clearWarnings();
+        artifactFactory = (ArtifactFactory) plexusSisuBridge.lookup( ArtifactFactory.class );
     }
 
-    protected void tearDown()
-        throws Exception
+    public static File getTestFile( String path )
     {
-        super.tearDown();
+        return new File( getBasedir(), path );
+    }
+
+    public static String getBasedir()
+    {
+        String basedir = System.getProperty( "basedir" );
+        if ( basedir == null )
+        {
+            basedir = new File( "" ).getAbsolutePath();
+        }
+
+        return basedir;
     }
 
     private void copyDirectoryStructure( File sourceDirectory, File destinationDirectory )
@@ -123,8 +153,8 @@ public class LegacyToDefaultConverterTest
                 {
                     if ( !destination.exists() && !destination.mkdirs() )
                     {
-                        throw new IOException( "Could not create destination directory '"
-                            + destination.getAbsolutePath() + "'." );
+                        throw new IOException(
+                            "Could not create destination directory '" + destination.getAbsolutePath() + "'." );
                     }
                     copyDirectoryStructure( file, destination );
                 }
@@ -136,6 +166,7 @@ public class LegacyToDefaultConverterTest
         }
     }
 
+    @Test
     public void testV4PomConvert()
         throws Exception
     {
@@ -143,13 +174,13 @@ public class LegacyToDefaultConverterTest
 
         Artifact artifact = createArtifact( "test", "v4artifact", "1.0.0" );
         ArtifactMetadata artifactMetadata = new ArtifactRepositoryMetadata( artifact );
-        File artifactMetadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( artifactMetadata ) );
+        File artifactMetadataFile = new File( targetRepository.getBasedir(),
+                                              targetRepository.pathOfRemoteRepositoryMetadata( artifactMetadata ) );
         artifactMetadataFile.delete();
 
         ArtifactMetadata versionMetadata = new SnapshotArtifactRepositoryMetadata( artifact );
-        File versionMetadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( versionMetadata ) );
+        File versionMetadataFile = new File( targetRepository.getBasedir(),
+                                             targetRepository.pathOfRemoteRepositoryMetadata( versionMetadata ) );
         versionMetadataFile.delete();
 
         File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
@@ -181,6 +212,7 @@ public class LegacyToDefaultConverterTest
         compareFiles( expectedMetadataFile, versionMetadataFile );
     }
 
+    @Test
     public void testV3PomConvert()
         throws Exception
     {
@@ -188,13 +220,13 @@ public class LegacyToDefaultConverterTest
 
         Artifact artifact = createArtifact( "test", "v3artifact", "1.0.0" );
         ArtifactMetadata artifactMetadata = new ArtifactRepositoryMetadata( artifact );
-        File artifactMetadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( artifactMetadata ) );
+        File artifactMetadataFile = new File( targetRepository.getBasedir(),
+                                              targetRepository.pathOfRemoteRepositoryMetadata( artifactMetadata ) );
         artifactMetadataFile.delete();
 
         ArtifactMetadata versionMetadata = new SnapshotArtifactRepositoryMetadata( artifact );
-        File versionMetadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( versionMetadata ) );
+        File versionMetadataFile = new File( targetRepository.getBasedir(),
+                                             targetRepository.pathOfRemoteRepositoryMetadata( versionMetadata ) );
         versionMetadataFile.delete();
 
         artifactConverter.convert( artifact, targetRepository );
@@ -224,18 +256,19 @@ public class LegacyToDefaultConverterTest
         compareFiles( expectedMetadataFile, versionMetadataFile );
     }
 
+    @Test
     public void testV3PomConvertWithRelocation()
         throws Exception
     {
         Artifact artifact = createArtifact( "test", "relocated-v3artifact", "1.0.0" );
         ArtifactMetadata artifactMetadata = new ArtifactRepositoryMetadata( artifact );
-        File artifactMetadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( artifactMetadata ) );
+        File artifactMetadataFile = new File( targetRepository.getBasedir(),
+                                              targetRepository.pathOfRemoteRepositoryMetadata( artifactMetadata ) );
         artifactMetadataFile.delete();
 
         ArtifactMetadata versionMetadata = new SnapshotArtifactRepositoryMetadata( artifact );
-        File versionMetadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( versionMetadata ) );
+        File versionMetadataFile = new File( targetRepository.getBasedir(),
+                                             targetRepository.pathOfRemoteRepositoryMetadata( versionMetadata ) );
         versionMetadataFile.delete();
 
         artifactConverter.convert( artifact, targetRepository );
@@ -243,7 +276,8 @@ public class LegacyToDefaultConverterTest
 
         File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
         assertTrue( "Check if relocated artifact created", artifactFile.exists() );
-        assertTrue( "Check if relocated artifact matches", FileUtils.contentEquals( artifactFile, artifact.getFile() ) );
+        assertTrue( "Check if relocated artifact matches",
+                    FileUtils.contentEquals( artifactFile, artifact.getFile() ) );
         Artifact pomArtifact = createArtifact( "relocated-test", "relocated-v3artifact", "1.0.0", "1.0.0", "pom" );
         File pomFile = getTestFile( "src/test/expected-files/" + targetRepository.pathOf( pomArtifact ) );
         File testFile = getTestFile( "target/test-target-repository/" + targetRepository.pathOf( pomArtifact ) );
@@ -256,6 +290,7 @@ public class LegacyToDefaultConverterTest
         compareFiles( artifactFile, testFile );
     }
 
+    @Test
     public void testV3PomWarningsOnConvert()
         throws Exception
     {
@@ -263,13 +298,13 @@ public class LegacyToDefaultConverterTest
 
         Artifact artifact = createArtifact( "test", "v3-warnings-artifact", "1.0.0" );
         ArtifactMetadata artifactMetadata = new ArtifactRepositoryMetadata( artifact );
-        File artifactMetadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( artifactMetadata ) );
+        File artifactMetadataFile = new File( targetRepository.getBasedir(),
+                                              targetRepository.pathOfRemoteRepositoryMetadata( artifactMetadata ) );
         artifactMetadataFile.delete();
 
         ArtifactMetadata versionMetadata = new SnapshotArtifactRepositoryMetadata( artifact );
-        File versionMetadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( versionMetadata ) );
+        File versionMetadataFile = new File( targetRepository.getBasedir(),
+                                             targetRepository.pathOfRemoteRepositoryMetadata( versionMetadata ) );
         versionMetadataFile.delete();
 
         artifactConverter.convert( artifact, targetRepository );
@@ -296,13 +331,13 @@ public class LegacyToDefaultConverterTest
 
         Artifact artifact = createArtifact( "test", "v4artifact", version );
         ArtifactMetadata artifactMetadata = new ArtifactRepositoryMetadata( artifact );
-        File artifactMetadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( artifactMetadata ) );
+        File artifactMetadataFile = new File( targetRepository.getBasedir(),
+                                              targetRepository.pathOfRemoteRepositoryMetadata( artifactMetadata ) );
         artifactMetadataFile.delete();
 
         ArtifactMetadata snapshotMetadata = new SnapshotArtifactRepositoryMetadata( artifact );
-        File snapshotMetadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( snapshotMetadata ) );
+        File snapshotMetadataFile = new File( targetRepository.getBasedir(),
+                                              targetRepository.pathOfRemoteRepositoryMetadata( snapshotMetadata ) );
         snapshotMetadataFile.delete();
 
         artifactConverter.convert( artifact, targetRepository );
@@ -332,6 +367,7 @@ public class LegacyToDefaultConverterTest
         compareFiles( expectedMetadataFile, snapshotMetadataFile );
     }
 
+    @Test
     public void testV3SnapshotPomConvert()
         throws Exception
     {
@@ -339,13 +375,13 @@ public class LegacyToDefaultConverterTest
 
         Artifact artifact = createArtifact( "test", "v3artifact", "1.0.0-SNAPSHOT" );
         ArtifactMetadata artifactMetadata = new ArtifactRepositoryMetadata( artifact );
-        File artifactMetadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( artifactMetadata ) );
+        File artifactMetadataFile = new File( targetRepository.getBasedir(),
+                                              targetRepository.pathOfRemoteRepositoryMetadata( artifactMetadata ) );
         artifactMetadataFile.delete();
 
         ArtifactMetadata snapshotMetadata = new SnapshotArtifactRepositoryMetadata( artifact );
-        File snapshotMetadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( snapshotMetadata ) );
+        File snapshotMetadataFile = new File( targetRepository.getBasedir(),
+                                              targetRepository.pathOfRemoteRepositoryMetadata( snapshotMetadata ) );
         snapshotMetadataFile.delete();
 
         artifactConverter.convert( artifact, targetRepository );
@@ -375,6 +411,7 @@ public class LegacyToDefaultConverterTest
         compareFiles( expectedMetadataFile, snapshotMetadataFile );
     }
 
+    @Test
     public void testV4SnapshotPomConvert()
         throws Exception
     {
@@ -383,6 +420,7 @@ public class LegacyToDefaultConverterTest
         assertTrue( true );
     }
 
+    @Test
     public void testV4TimestampedSnapshotPomConvert()
         throws Exception
     {
@@ -392,12 +430,14 @@ public class LegacyToDefaultConverterTest
         assertTrue( true );
     }
 
+    @Test
     public void testMavenOnePluginConversion()
         throws Exception
     {
-        Artifact artifact = createArtifact( "org.apache.maven.plugins", "maven-foo-plugin", "1.0", "1.0",
-                                            "maven-plugin" );
-        artifact.setFile( new File( getBasedir(), "src/test/source-repository/test/plugins/maven-foo-plugin-1.0.jar" ) );
+        Artifact artifact =
+            createArtifact( "org.apache.maven.plugins", "maven-foo-plugin", "1.0", "1.0", "maven-plugin" );
+        artifact.setFile(
+            new File( getBasedir(), "src/test/source-repository/test/plugins/maven-foo-plugin-1.0.jar" ) );
         artifactConverter.convert( artifact, targetRepository );
         // There is a warning but I can't figure out how to look at it. Eyeballing the results it appears
         // the plugin is being coverted correctly.
@@ -418,6 +458,7 @@ public class LegacyToDefaultConverterTest
          */
     }
 
+    @Test
     public void testV3TimestampedSnapshotPomConvert()
         throws Exception
     {
@@ -425,13 +466,13 @@ public class LegacyToDefaultConverterTest
 
         Artifact artifact = createArtifact( "test", "v3artifact", "1.0.0-20060105.130101-3" );
         ArtifactMetadata artifactMetadata = new ArtifactRepositoryMetadata( artifact );
-        File artifactMetadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( artifactMetadata ) );
+        File artifactMetadataFile = new File( targetRepository.getBasedir(),
+                                              targetRepository.pathOfRemoteRepositoryMetadata( artifactMetadata ) );
         artifactMetadataFile.delete();
 
         ArtifactMetadata snapshotMetadata = new SnapshotArtifactRepositoryMetadata( artifact );
-        File snapshotMetadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( snapshotMetadata ) );
+        File snapshotMetadataFile = new File( targetRepository.getBasedir(),
+                                              targetRepository.pathOfRemoteRepositoryMetadata( snapshotMetadata ) );
         snapshotMetadataFile.delete();
 
         artifactConverter.convert( artifact, targetRepository );
@@ -461,6 +502,7 @@ public class LegacyToDefaultConverterTest
         compareFiles( expectedMetadataFile, snapshotMetadataFile );
     }
 
+    @Test
     public void testNoPomConvert()
         throws Exception
     {
@@ -484,6 +526,7 @@ public class LegacyToDefaultConverterTest
         assertFalse( "No source POM", sourcePomFile.exists() );
     }
 
+    @Test
     public void testIncorrectSourceChecksumMd5()
         throws Exception
     {
@@ -501,11 +544,12 @@ public class LegacyToDefaultConverterTest
         assertFalse( "Check artifact not created", file.exists() );
 
         ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact );
-        File metadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( metadata ) );
+        File metadataFile =
+            new File( targetRepository.getBasedir(), targetRepository.pathOfRemoteRepositoryMetadata( metadata ) );
         assertFalse( "Check metadata not created", metadataFile.exists() );
     }
 
+    @Test
     public void testIncorrectSourceChecksumSha1()
         throws Exception
     {
@@ -523,11 +567,12 @@ public class LegacyToDefaultConverterTest
         assertFalse( "Check artifact not created", file.exists() );
 
         ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact );
-        File metadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( metadata ) );
+        File metadataFile =
+            new File( targetRepository.getBasedir(), targetRepository.pathOfRemoteRepositoryMetadata( metadata ) );
         assertFalse( "Check metadata not created", metadataFile.exists() );
     }
 
+    @Test
     public void testUnmodifiedArtifact()
         throws Exception, InterruptedException
     {
@@ -563,6 +608,7 @@ public class LegacyToDefaultConverterTest
         assertEquals( "Check POM unmodified", origPomTime, targetPomFile.lastModified() );
     }
 
+    @Test
     public void testModifedArtifactFails()
         throws Exception
     {
@@ -598,17 +644,19 @@ public class LegacyToDefaultConverterTest
         assertEquals( "Check unmodified", origPomTime, targetPomFile.lastModified() );
 
         ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact );
-        File metadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( metadata ) );
+        File metadataFile =
+            new File( targetRepository.getBasedir(), targetRepository.pathOfRemoteRepositoryMetadata( metadata ) );
         assertFalse( "Check metadata not created", metadataFile.exists() );
     }
 
+    @Test
     public void testForcedUnmodifiedArtifact()
         throws Exception
     {
         // test unmodified artifact is still converted when set to force
 
-        artifactConverter = (ArtifactConverter) lookup( ArtifactConverter.ROLE, "force-repository-converter" );
+        artifactConverter =
+            applicationContext.getBean( "artifactConverter#force-repository-converter", ArtifactConverter.class );
 
         Artifact artifact = createArtifact( "test", "unmodified-artifact", "1.0.0" );
         Artifact pomArtifact = createPomArtifact( artifact );
@@ -636,17 +684,19 @@ public class LegacyToDefaultConverterTest
         assertFalse( "Check modified", origTime == targetPomFile.lastModified() );
 
         ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact );
-        File metadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( metadata ) );
+        File metadataFile =
+            new File( targetRepository.getBasedir(), targetRepository.pathOfRemoteRepositoryMetadata( metadata ) );
         assertTrue( "Check metadata created", metadataFile.exists() );
     }
 
+    @Test
     public void testDryRunSuccess()
         throws Exception
     {
         // test dry run does nothing on a run that will be successful, and returns success
 
-        artifactConverter = (ArtifactConverter) lookup( ArtifactConverter.ROLE, "dryrun-repository-converter" );
+        artifactConverter =
+            applicationContext.getBean( "artifactConverter#dryrun-repository-converter", ArtifactConverter.class );
 
         Artifact artifact = createArtifact( "test", "dryrun-artifact", "1.0.0" );
         Artifact pomArtifact = createPomArtifact( artifact );
@@ -666,17 +716,19 @@ public class LegacyToDefaultConverterTest
         assertFalse( "Check target POM doesn't exist", targetPomFile.exists() );
 
         ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact );
-        File metadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( metadata ) );
+        File metadataFile =
+            new File( targetRepository.getBasedir(), targetRepository.pathOfRemoteRepositoryMetadata( metadata ) );
         assertFalse( "Check metadata not created", metadataFile.exists() );
     }
 
+    @Test
     public void testDryRunFailure()
         throws Exception
     {
         // test dry run does nothing on a run that will fail, and returns failure
 
-        artifactConverter = (ArtifactConverter) lookup( ArtifactConverter.ROLE, "dryrun-repository-converter" );
+        artifactConverter =
+            applicationContext.getBean( "artifactConverter#dryrun-repository-converter", ArtifactConverter.class );
 
         Artifact artifact = createArtifact( "test", "modified-artifact", "1.0.0" );
         Artifact pomArtifact = createPomArtifact( artifact );
@@ -707,11 +759,12 @@ public class LegacyToDefaultConverterTest
         assertEquals( "Check unmodified", origPomTime, targetPomFile.lastModified() );
 
         ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact );
-        File metadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( metadata ) );
+        File metadataFile =
+            new File( targetRepository.getBasedir(), targetRepository.pathOfRemoteRepositoryMetadata( metadata ) );
         assertFalse( "Check metadata not created", metadataFile.exists() );
     }
 
+    @Test
     public void testRollbackArtifactCreated()
         throws Exception
     {
@@ -719,13 +772,13 @@ public class LegacyToDefaultConverterTest
 
         Artifact artifact = createArtifact( "test", "rollback-created-artifact", "1.0.0" );
         ArtifactMetadata artifactMetadata = new ArtifactRepositoryMetadata( artifact );
-        File artifactMetadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( artifactMetadata ) );
+        File artifactMetadataFile = new File( targetRepository.getBasedir(),
+                                              targetRepository.pathOfRemoteRepositoryMetadata( artifactMetadata ) );
         FileUtils.deleteDirectory( artifactMetadataFile.getParentFile() );
 
         ArtifactMetadata versionMetadata = new SnapshotArtifactRepositoryMetadata( artifact );
-        File versionMetadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( versionMetadata ) );
+        File versionMetadataFile = new File( targetRepository.getBasedir(),
+                                             targetRepository.pathOfRemoteRepositoryMetadata( versionMetadata ) );
 
         File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
 
@@ -744,7 +797,7 @@ public class LegacyToDefaultConverterTest
                     break;
                 }
             }
-            
+
             if ( found )
             {
                 break;
@@ -758,6 +811,7 @@ public class LegacyToDefaultConverterTest
         assertFalse( "check metadata rolled back", versionMetadataFile.exists() );
     }
 
+    @Test
     public void testMultipleArtifacts()
         throws Exception
     {
@@ -782,14 +836,15 @@ public class LegacyToDefaultConverterTest
 
             artifact = createPomArtifact( artifact );
             File pomFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
-            File expectedPomFile = getTestFile( "src/test/expected-files/converted-" + artifact.getArtifactId()
-                + ".pom" );
+            File expectedPomFile =
+                getTestFile( "src/test/expected-files/converted-" + artifact.getArtifactId() + ".pom" );
             assertTrue( "Check POM created", pomFile.exists() );
 
             compareFiles( expectedPomFile, pomFile );
         }
     }
 
+    @Test
     public void testInvalidSourceArtifactMetadata()
         throws Exception
     {
@@ -804,16 +859,18 @@ public class LegacyToDefaultConverterTest
         artifactConverter.convert( artifact, targetRepository );
         checkWarnings( artifactConverter, 2 );
 
-        assertHasWarningReason( artifactConverter, Messages.getString( "failure.incorrect.artifactMetadata.versions" ) );
+        assertHasWarningReason( artifactConverter,
+                                Messages.getString( "failure.incorrect.artifactMetadata.versions" ) );
 
         assertFalse( "Check artifact not created", file.exists() );
 
         ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact );
-        File metadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( metadata ) );
+        File metadataFile =
+            new File( targetRepository.getBasedir(), targetRepository.pathOfRemoteRepositoryMetadata( metadata ) );
         assertFalse( "Check metadata not created", metadataFile.exists() );
     }
 
+    @Test
     public void testInvalidSourceSnapshotMetadata()
         throws Exception
     {
@@ -828,16 +885,18 @@ public class LegacyToDefaultConverterTest
         artifactConverter.convert( artifact, targetRepository );
         checkWarnings( artifactConverter, 2 );
 
-        assertHasWarningReason( artifactConverter, Messages.getString( "failure.incorrect.snapshotMetadata.snapshot" ) );
+        assertHasWarningReason( artifactConverter,
+                                Messages.getString( "failure.incorrect.snapshotMetadata.snapshot" ) );
 
         assertFalse( "Check artifact not created", file.exists() );
 
         ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact );
-        File metadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( metadata ) );
+        File metadataFile =
+            new File( targetRepository.getBasedir(), targetRepository.pathOfRemoteRepositoryMetadata( metadata ) );
         assertFalse( "Check metadata not created", metadataFile.exists() );
     }
 
+    @Test
     public void testMergeArtifactMetadata()
         throws Exception
     {
@@ -859,8 +918,8 @@ public class LegacyToDefaultConverterTest
         compareFiles( sourcePomFile, pomFile );
 
         ArtifactMetadata artifactMetadata = new ArtifactRepositoryMetadata( artifact );
-        File artifactMetadataFile = new File( targetRepository.getBasedir(), targetRepository
-            .pathOfRemoteRepositoryMetadata( artifactMetadata ) );
+        File artifactMetadataFile = new File( targetRepository.getBasedir(),
+                                              targetRepository.pathOfRemoteRepositoryMetadata( artifactMetadata ) );
         assertTrue( "Check artifact metadata created", artifactMetadataFile.exists() );
 
         File expectedMetadataFile = getTestFile( "src/test/expected-files/newversion-artifact-metadata.xml" );
@@ -868,15 +927,17 @@ public class LegacyToDefaultConverterTest
         compareFiles( expectedMetadataFile, artifactMetadataFile );
     }
 
+    @Test
     public void testSourceAndTargetRepositoriesMatch()
         throws Exception
     {
         // test that it fails if the same
 
-        ArtifactRepositoryFactory factory = (ArtifactRepositoryFactory) lookup( ArtifactRepositoryFactory.ROLE );
+        ArtifactRepositoryFactory factory = plexusSisuBridge.lookup( ArtifactRepositoryFactory.class );
 
-        sourceRepository = factory.createArtifactRepository( "source", targetRepository.getUrl(), targetRepository
-            .getLayout(), null, null );
+        sourceRepository =
+            factory.createArtifactRepository( "source", targetRepository.getUrl(), targetRepository.getLayout(), null,
+                                              null );
 
         Artifact artifact = createArtifact( "test", "repository-artifact", "1.0" );
 
@@ -908,7 +969,8 @@ public class LegacyToDefaultConverterTest
         return createArtifact( groupId, artifactId, baseVersion, version, "jar" );
     }
 
-    private Artifact createArtifact( String groupId, String artifactId, String baseVersion, String version, String type )
+    private Artifact createArtifact( String groupId, String artifactId, String baseVersion, String version,
+                                     String type )
     {
         Artifact artifact = artifactFactory.createArtifact( groupId, artifactId, version, null, type );
         artifact.setBaseVersion( baseVersion );
@@ -919,21 +981,24 @@ public class LegacyToDefaultConverterTest
 
     private Artifact createPomArtifact( Artifact artifact )
     {
-        return createArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getBaseVersion(), artifact
-            .getVersion(), "pom" );
+        return createArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getBaseVersion(),
+                               artifact.getVersion(), "pom" );
     }
 
     private static void compareFiles( File expectedPomFile, File pomFile )
         throws IOException
     {
-        String expectedContent = normalizeString( org.apache.commons.io.FileUtils.readFileToString( expectedPomFile, null ) );
+        String expectedContent =
+            normalizeString( org.apache.commons.io.FileUtils.readFileToString( expectedPomFile, null ) );
         String targetContent = normalizeString( org.apache.commons.io.FileUtils.readFileToString( pomFile, null ) );
-        assertEquals( "Check file match between " + expectedPomFile + " and " + pomFile, expectedContent, targetContent );
+        assertEquals( "Check file match between " + expectedPomFile + " and " + pomFile, expectedContent,
+                      targetContent );
     }
 
     private static String normalizeString( String path )
     {
-        return path.trim().replaceAll( "\r\n", "\n" ).replace( '\r', '\n' ).replaceAll( "<\\?xml .+\\?>", "" ).replaceAll("^\\s+", "");
+        return path.trim().replaceAll( "\r\n", "\n" ).replace( '\r', '\n' ).replaceAll( "<\\?xml .+\\?>",
+                                                                                        "" ).replaceAll( "^\\s+", "" );
     }
 
     private void checkSuccess( ArtifactConverter converter )
@@ -974,11 +1039,11 @@ public class LegacyToDefaultConverterTest
 
         /* didn't find it. */
 
-        for ( Map.Entry<Artifact,List<String>> entry : converter.getWarnings().entrySet() )
+        for ( Map.Entry<Artifact, List<String>> entry : converter.getWarnings().entrySet() )
         {
             Artifact artifact = (Artifact) entry.getKey();
-            System.out.println( "-Artifact: " + artifact.getGroupId() + ":" + artifact.getArtifactId() + ":"
-                + artifact.getVersion() );
+            System.out.println(
+                "-Artifact: " + artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getVersion() );
             List<String> messages = entry.getValue();
             for ( String message : messages )
             {
@@ -991,12 +1056,12 @@ public class LegacyToDefaultConverterTest
     private void createModernSourceRepository()
         throws Exception
     {
-        ArtifactRepositoryFactory factory = (ArtifactRepositoryFactory) lookup( ArtifactRepositoryFactory.ROLE );
+        ArtifactRepositoryFactory factory = plexusSisuBridge.lookup( ArtifactRepositoryFactory.class );
 
-        ArtifactRepositoryLayout layout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, "default" );
+        ArtifactRepositoryLayout layout = plexusSisuBridge.lookup( ArtifactRepositoryLayout.class, "default" );
 
         File sourceBase = getTestFile( "src/test/source-modern-repository" );
-        sourceRepository = factory.createArtifactRepository( "source", sourceBase.toURL().toString(), layout, null,
-                                                             null );
+        sourceRepository =
+            factory.createArtifactRepository( "source", sourceBase.toURL().toString(), layout, null, null );
     }
 }
diff --git a/archiva-modules/archiva-base/archiva-artifact-converter/src/test/resources/spring-context.xml b/archiva-modules/archiva-base/archiva-artifact-converter/src/test/resources/spring-context.xml
new file mode 100644 (file)
index 0000000..796f298
--- /dev/null
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+
+<!--
+  ~ 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.
+  -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:context="http://www.springframework.org/schema/context"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
+           http://www.springframework.org/schema/context 
+           http://www.springframework.org/schema/context/spring-context-3.0.xsd">
+
+  <bean name="artifactConverter#force-repository-converter" class="org.apache.maven.archiva.converter.artifact.LegacyToDefaultConverter">
+    <property name="force" value="true"/>
+    <property name="dryrun" value="false"/>
+  </bean>
+
+  <bean name="artifactConverter#dryrun-repository-converter" class="org.apache.maven.archiva.converter.artifact.LegacyToDefaultConverter">
+    <property name="force" value="false"/>
+    <property name="dryrun" value="true"/>
+  </bean>
+
+</beans>
\ No newline at end of file
index b37e0c893b9b20dd6abfbd268b5e9655e2e5bd05..ddeafce7addbc61e4877f3e4f22e963eee7e65e0 100644 (file)
@@ -35,13 +35,15 @@ import org.apache.maven.archiva.converter.RepositoryConversionException;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.springframework.stereotype.Service;
 
 /**
  * DefaultLegacyRepositoryConverter 
  *
  * @version $Id$
- * @plexus.component 
+ * plexus.component
  */
+@Service("legacyRepositoryConverter#default")
 public class DefaultLegacyRepositoryConverter
     implements LegacyRepositoryConverter
 {
index dd03c4a3459c9dec6cf7b4aa0597ac484ae92f5b..a7f73843da3b1e7c860642867986c15f37cfe1fb 100644 (file)
@@ -38,6 +38,8 @@ import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Service;
 
 /**
  * LegacyConverterArtifactConsumer - convert artifacts as they are found
@@ -45,10 +47,12 @@ import org.slf4j.LoggerFactory;
  *
  * @version $Id$
  * 
- * @plexus.component role="org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer"
+ * plexus.component role="org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer"
  *     role-hint="artifact-legacy-to-default-converter"
  *     instantiation-strategy="per-lookup"
  */
+@Service("knownRepositoryContentConsumer#artifact-legacy-to-default-converter")
+@Scope("prototype")
 public class LegacyConverterArtifactConsumer
     extends AbstractMonitoredConsumer
     implements KnownRepositoryContentConsumer
diff --git a/archiva-modules/archiva-base/archiva-converter/src/main/resources/META-INF/spring-context.xml b/archiva-modules/archiva-base/archiva-converter/src/main/resources/META-INF/spring-context.xml
new file mode 100644 (file)
index 0000000..12df06f
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+
+<!--
+  ~ 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.
+  -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:context="http://www.springframework.org/schema/context"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
+           http://www.springframework.org/schema/context 
+           http://www.springframework.org/schema/context/spring-context-3.0.xsd"
+       default-lazy-init="true">
+
+  <context:annotation-config/>
+  <context:component-scan base-package="org.apache.maven.archiva.converter.legacy"/>
+
+</beans>
\ No newline at end of file
diff --git a/archiva-modules/archiva-base/archiva-plexus-bridge/pom.xml b/archiva-modules/archiva-base/archiva-plexus-bridge/pom.xml
new file mode 100644 (file)
index 0000000..05f226b
--- /dev/null
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+
+<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.archiva</groupId>
+    <artifactId>archiva-base</artifactId>
+    <version>1.4-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>archiva-plexus-bridge</artifactId>
+  <name>Archiva Base :: Plexus Bridge</name>
+  <dependencies>
+
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.sonatype.sisu</groupId>
+      <artifactId>sisu-inject-plexus</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.redback.components</groupId>
+      <artifactId>spring-utils</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+    </dependency>
+  </dependencies>
+</project>
diff --git a/archiva-modules/archiva-base/archiva-plexus-bridge/src/main/java/org/apache/archiva/common/plexusbridge/PlexusSisuBridge.java b/archiva-modules/archiva-base/archiva-plexus-bridge/src/main/java/org/apache/archiva/common/plexusbridge/PlexusSisuBridge.java
new file mode 100644 (file)
index 0000000..56c6ecf
--- /dev/null
@@ -0,0 +1,95 @@
+package org.apache.archiva.common.plexusbridge;
+
+/*
+ * 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.
+ */
+
+import org.codehaus.plexus.DefaultContainerConfiguration;
+import org.codehaus.plexus.DefaultPlexusContainer;
+import org.codehaus.plexus.PlexusConstants;
+import org.codehaus.plexus.PlexusContainerException;
+import org.codehaus.plexus.classworlds.ClassWorld;
+import org.codehaus.plexus.classworlds.realm.ClassRealm;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+import java.net.URL;
+import java.util.List;
+
+/**
+ * Simple component which will initiate the plexus shim component
+ * to see plexus components inside a guice container.<br/>
+ * So move all of this here to be able to change quickly if needed.
+ *
+ * @author Olivier Lamy
+ */
+@Service("plexusSisuBridge")
+public class PlexusSisuBridge
+{
+
+    private boolean containerAutoWiring = false;
+
+    private String containerClassPathScanning = PlexusConstants.SCANNING_OFF;
+
+    private String containerComponentVisibility = PlexusConstants.REALM_VISIBILITY;
+
+    private URL overridingComponentsXml;
+
+    private DefaultPlexusContainer plexusContainer;
+
+    @PostConstruct
+    public void initialize()
+        throws PlexusContainerException
+    {
+        DefaultContainerConfiguration conf = new DefaultContainerConfiguration();
+
+        conf.setAutoWiring( containerAutoWiring );
+        conf.setClassPathScanning( containerClassPathScanning );
+        conf.setComponentVisibility( containerComponentVisibility );
+
+        conf.setContainerConfigurationURL( overridingComponentsXml );
+
+        ClassWorld classWorld = new ClassWorld();
+
+        ClassRealm classRealm = new ClassRealm( classWorld, "maven", Thread.currentThread().getContextClassLoader() );
+        conf.setRealm( classRealm );
+
+        conf.setClassWorld( classWorld );
+
+        plexusContainer = new DefaultPlexusContainer( conf );
+    }
+
+    public <T> T lookup( Class<T> clazz )
+        throws ComponentLookupException
+    {
+        return plexusContainer.lookup( clazz );
+    }
+
+    public <T> T lookup( Class<T> clazz, String hint )
+        throws ComponentLookupException
+    {
+        return plexusContainer.lookup( clazz, hint );
+    }
+
+    public <T> List<T> lookupList( Class<T> clazz )
+        throws ComponentLookupException
+    {
+        return plexusContainer.lookupList( clazz );
+    }
+}
diff --git a/archiva-modules/archiva-base/archiva-plexus-bridge/src/main/resources/META-INF/spring-context.xml b/archiva-modules/archiva-base/archiva-plexus-bridge/src/main/resources/META-INF/spring-context.xml
new file mode 100644 (file)
index 0000000..0ec3d2c
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+
+<!--
+  ~ 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.
+  -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:context="http://www.springframework.org/schema/context"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
+           http://www.springframework.org/schema/context 
+           http://www.springframework.org/schema/context/spring-context-3.0.xsd">
+
+  <context:annotation-config/>
+  <context:component-scan base-package="org.apache.archiva.common.plexusbridge"/>
+</beans>
\ No newline at end of file
index 6e79dcd2a515f3f3dcfef7f7774e4efb94a4490e..1a599ad77fb490cb393c3b90f10ad1f0e5019837 100644 (file)
@@ -33,6 +33,7 @@
   <modules>
     <module>archiva-checksum</module>
     <module>archiva-common</module>
+    <module>archiva-plexus-bridge</module>
     <module>archiva-policies</module>
     <module>archiva-configuration</module>
     <module>archiva-consumers</module>
diff --git a/pom.xml b/pom.xml
index ce0c85cda52aae5746f8902a0d7acd59a3c34f22..d7ab1e8b14c000f67a5ca29ae6782c9cd4da5566 100644 (file)
--- a/pom.xml
+++ b/pom.xml
         <artifactId>archiva-lucene-consumers</artifactId>
         <version>1.4-SNAPSHOT</version>
       </dependency>
+      <dependency>
+        <groupId>org.apache.archiva</groupId>
+        <artifactId>archiva-plexus-bridge</artifactId>
+        <version>${project.version}</version>
+      </dependency>
       <dependency>
         <groupId>org.apache.archiva</groupId>
         <artifactId>archiva-model</artifactId>