Index: archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java
===================================================================
--- archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java	(revision 960423)
+++ archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java	(working copy)
@@ -25,6 +25,7 @@
 import org.apache.archiva.metadata.model.MetadataFacetFactory;
 import org.apache.archiva.metadata.model.ProjectMetadata;
 import org.apache.archiva.metadata.model.ProjectVersionMetadata;
+import org.apache.maven.archiva.model.ArchivaArtifact;
 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
 
 import java.util.ArrayList;
@@ -38,7 +39,7 @@
 import java.util.Map;
 
 public abstract class AbstractMetadataRepositoryTest
-    extends PlexusInSpringTestCase
+        extends PlexusInSpringTestCase
 {
     protected MetadataRepository repository;
 
@@ -67,607 +68,605 @@
     protected static Map<String, MetadataFacetFactory> createTestMetadataFacetFactories()
     {
         Map<String, MetadataFacetFactory> factories = new HashMap<String, MetadataFacetFactory>();
-        factories.put( TEST_FACET_ID, new MetadataFacetFactory()
-        {
-            public MetadataFacet createMetadataFacet()
-            {
-                return new TestMetadataFacet( TEST_METADATA_VALUE );
+        factories.put(TEST_FACET_ID, new MetadataFacetFactory() {
+            public MetadataFacet createMetadataFacet() {
+                return new TestMetadataFacet(TEST_METADATA_VALUE);
             }
 
-            public MetadataFacet createMetadataFacet( String repositoryId, String name )
+            public MetadataFacet createMetadataFacet(String repositoryId, String name)
             {
-                return new TestMetadataFacet( TEST_METADATA_VALUE );
+                return new TestMetadataFacet(TEST_METADATA_VALUE);
             }
-        } );
+        });
 
         // add to ensure we don't accidentally create an empty facet ID.
-        factories.put( "", new MetadataFacetFactory()
+        factories.put("", new MetadataFacetFactory()
         {
             public MetadataFacet createMetadataFacet()
             {
-                return new TestMetadataFacet( "", TEST_VALUE );
+                return new TestMetadataFacet("", TEST_VALUE);
             }
 
-            public MetadataFacet createMetadataFacet( String repositoryId, String name )
+            public MetadataFacet createMetadataFacet(String repositoryId, String name)
             {
-                return new TestMetadataFacet( "", TEST_VALUE );
+                return new TestMetadataFacet("", TEST_VALUE);
             }
-        } );
+        });
         return factories;
     }
 
     public void testRootNamespaceWithNoMetadataRepository()
     {
-        Collection<String> namespaces = repository.getRootNamespaces( TEST_REPO_ID );
-        assertEquals( Collections.<String>emptyList(), namespaces );
+        Collection<String> namespaces = repository.getRootNamespaces(TEST_REPO_ID);
+        assertEquals(Collections.<String>emptyList(), namespaces);
     }
 
     public void testUpdateProjectVersionMetadataWithNoOtherArchives()
     {
         ProjectVersionMetadata metadata = new ProjectVersionMetadata();
-        metadata.setId( TEST_PROJECT_VERSION );
+        metadata.setId(TEST_PROJECT_VERSION);
         MailingList mailingList = new MailingList();
-        mailingList.setName( "Foo List" );
-        mailingList.setOtherArchives( Collections.<String>emptyList() );
-        metadata.setMailingLists( Collections.singletonList( mailingList ) );
-        repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata );
+        mailingList.setName("Foo List");
+        mailingList.setOtherArchives(Collections.<String>emptyList());
+        metadata.setMailingLists(Collections.singletonList(mailingList));
+        repository.updateProjectVersion(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata);
     }
 
     public void testUpdateProjectVersionMetadataIncomplete()
-        throws MetadataResolutionException
+            throws MetadataResolutionException
     {
         ProjectVersionMetadata metadata = new ProjectVersionMetadata();
-        metadata.setId( TEST_PROJECT_VERSION );
-        metadata.setIncomplete( true );
-        repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata );
+        metadata.setId(TEST_PROJECT_VERSION);
+        metadata.setIncomplete(true);
+        repository.updateProjectVersion(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata);
 
-        metadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION );
-        assertEquals( true, metadata.isIncomplete() );
+        metadata = repository.getProjectVersion(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION);
+        assertEquals(true, metadata.isIncomplete());
     }
 
     public void testUpdateProjectVersionMetadataWithExistingFacets()
-        throws MetadataResolutionException
+            throws MetadataResolutionException
     {
         ProjectVersionMetadata metadata = new ProjectVersionMetadata();
-        metadata.setId( TEST_PROJECT_VERSION );
-        MetadataFacet facet = new TestMetadataFacet( "baz" );
-        metadata.addFacet( facet );
-        repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata );
+        metadata.setId(TEST_PROJECT_VERSION);
+        MetadataFacet facet = new TestMetadataFacet("baz");
+        metadata.addFacet(facet);
+        repository.updateProjectVersion(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata);
 
-        metadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION );
-        assertEquals( Collections.singleton( TEST_FACET_ID ), metadata.getFacetIds() );
+        metadata = repository.getProjectVersion(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION);
+        assertEquals(Collections.singleton(TEST_FACET_ID), metadata.getFacetIds());
 
         metadata = new ProjectVersionMetadata();
-        metadata.setId( TEST_PROJECT_VERSION );
-        repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata );
+        metadata.setId(TEST_PROJECT_VERSION);
+        repository.updateProjectVersion(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata);
 
-        metadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION );
-        assertEquals( Collections.singleton( TEST_FACET_ID ), metadata.getFacetIds() );
-        TestMetadataFacet testFacet = (TestMetadataFacet) metadata.getFacet( TEST_FACET_ID );
-        assertEquals( "baz", testFacet.getValue() );
+        metadata = repository.getProjectVersion(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION);
+        assertEquals(Collections.singleton(TEST_FACET_ID), metadata.getFacetIds());
+        TestMetadataFacet testFacet = (TestMetadataFacet) metadata.getFacet(TEST_FACET_ID);
+        assertEquals("baz", testFacet.getValue());
     }
 
     public void testUpdateProjectVersionMetadataWithNoExistingFacets()
-        throws MetadataResolutionException
+            throws MetadataResolutionException
     {
         ProjectVersionMetadata metadata = new ProjectVersionMetadata();
-        metadata.setId( TEST_PROJECT_VERSION );
-        repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata );
+        metadata.setId(TEST_PROJECT_VERSION);
+        repository.updateProjectVersion(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata);
 
-        metadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION );
-        assertEquals( Collections.<String>emptyList(), new ArrayList<String>( metadata.getFacetIds() ) );
+        metadata = repository.getProjectVersion(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION);
+        assertEquals(Collections.<String>emptyList(), new ArrayList<String>(metadata.getFacetIds()));
 
         metadata = new ProjectVersionMetadata();
-        metadata.setId( TEST_PROJECT_VERSION );
-        repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata );
+        metadata.setId(TEST_PROJECT_VERSION);
+        repository.updateProjectVersion(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata);
 
-        metadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION );
-        assertEquals( Collections.<String>emptyList(), new ArrayList<String>( metadata.getFacetIds() ) );
+        metadata = repository.getProjectVersion(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION);
+        assertEquals(Collections.<String>emptyList(), new ArrayList<String>(metadata.getFacetIds()));
     }
-    
+
     public void testUpdateProjectVersionMetadataWithExistingFacetsFacetPropertyWasRemoved()
-        throws MetadataResolutionException
+            throws MetadataResolutionException
     {
         ProjectVersionMetadata metadata = new ProjectVersionMetadata();
-        metadata.setId( TEST_PROJECT_VERSION );
+        metadata.setId(TEST_PROJECT_VERSION);
 
         Map<String, String> additionalProps = new HashMap<String, String>();
-        additionalProps.put( "deleteKey", "deleteValue" );
+        additionalProps.put("deleteKey", "deleteValue");
 
-        MetadataFacet facet = new TestMetadataFacet( TEST_FACET_ID, "baz", additionalProps );
-        metadata.addFacet( facet );
-        repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata );
+        MetadataFacet facet = new TestMetadataFacet(TEST_FACET_ID, "baz", additionalProps);
+        metadata.addFacet(facet);
+        repository.updateProjectVersion(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata);
 
-        metadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION );
-        assertEquals( Collections.singleton( TEST_FACET_ID ), metadata.getFacetIds() );
+        metadata = repository.getProjectVersion(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION);
+        assertEquals(Collections.singleton(TEST_FACET_ID), metadata.getFacetIds());
 
-        TestMetadataFacet testFacet = (TestMetadataFacet) metadata.getFacet( TEST_FACET_ID );
+        TestMetadataFacet testFacet = (TestMetadataFacet) metadata.getFacet(TEST_FACET_ID);
         Map<String, String> facetProperties = testFacet.toProperties();
 
-        assertEquals( "deleteValue", facetProperties.get( "deleteKey" ) );
+        assertEquals("deleteValue", facetProperties.get("deleteKey"));
 
-        facetProperties.remove( "deleteKey" );
+        facetProperties.remove("deleteKey");
 
-        TestMetadataFacet newTestFacet = new TestMetadataFacet( TEST_FACET_ID, testFacet.getValue(), facetProperties );
-        metadata.addFacet( newTestFacet );
+        TestMetadataFacet newTestFacet = new TestMetadataFacet(TEST_FACET_ID, testFacet.getValue(), facetProperties);
+        metadata.addFacet(newTestFacet);
 
-        repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata );
+        repository.updateProjectVersion(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, metadata);
 
-        metadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION );
-        assertEquals( Collections.singleton( TEST_FACET_ID ), metadata.getFacetIds() );
-        testFacet = (TestMetadataFacet) metadata.getFacet( TEST_FACET_ID );
-        assertFalse( testFacet.toProperties().containsKey( "deleteKey" ) );
+        metadata = repository.getProjectVersion(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION);
+        assertEquals(Collections.singleton(TEST_FACET_ID), metadata.getFacetIds());
+        testFacet = (TestMetadataFacet) metadata.getFacet(TEST_FACET_ID);
+        assertFalse(testFacet.toProperties().containsKey("deleteKey"));
     }
-    
+
     public void testUpdateArtifactMetadataWithExistingFacets()
     {
         ArtifactMetadata metadata = createArtifact();
-        MetadataFacet facet = new TestMetadataFacet( "baz" );
-        metadata.addFacet( facet );
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, metadata );
+        MetadataFacet facet = new TestMetadataFacet("baz");
+        metadata.addFacet(facet);
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, metadata);
 
-        metadata = repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT,
-                                            TEST_PROJECT_VERSION ).iterator().next();
-        assertEquals( Collections.singleton( TEST_FACET_ID ), metadata.getFacetIds() );
+        metadata = repository.getArtifacts(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT,
+                TEST_PROJECT_VERSION).iterator().next();
+        assertEquals(Collections.singleton(TEST_FACET_ID), metadata.getFacetIds());
 
         metadata = createArtifact();
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, metadata );
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, metadata);
 
-        metadata = repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT,
-                                            TEST_PROJECT_VERSION ).iterator().next();
-        assertEquals( Collections.singleton( TEST_FACET_ID ), metadata.getFacetIds() );
-        TestMetadataFacet testFacet = (TestMetadataFacet) metadata.getFacet( TEST_FACET_ID );
-        assertEquals( "baz", testFacet.getValue() );
+        metadata = repository.getArtifacts(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT,
+                TEST_PROJECT_VERSION).iterator().next();
+        assertEquals(Collections.singleton(TEST_FACET_ID), metadata.getFacetIds());
+        TestMetadataFacet testFacet = (TestMetadataFacet) metadata.getFacet(TEST_FACET_ID);
+        assertEquals("baz", testFacet.getValue());
     }
 
     public void testUpdateArtifactMetadataWithNoExistingFacets()
     {
         ArtifactMetadata metadata = createArtifact();
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, metadata );
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, metadata);
 
-        metadata = repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT,
-                                            TEST_PROJECT_VERSION ).iterator().next();
-        assertEquals( Collections.<String>emptyList(), new ArrayList<String>( metadata.getFacetIds() ) );
+        metadata = repository.getArtifacts(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT,
+                TEST_PROJECT_VERSION).iterator().next();
+        assertEquals(Collections.<String>emptyList(), new ArrayList<String>(metadata.getFacetIds()));
 
         metadata = createArtifact();
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, metadata );
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, metadata);
 
-        metadata = repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT,
-                                            TEST_PROJECT_VERSION ).iterator().next();
-        assertEquals( Collections.<String>emptyList(), new ArrayList<String>( metadata.getFacetIds() ) );
+        metadata = repository.getArtifacts(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT,
+                TEST_PROJECT_VERSION).iterator().next();
+        assertEquals(Collections.<String>emptyList(), new ArrayList<String>(metadata.getFacetIds()));
     }
 
     public void testGetMetadataFacet()
     {
-        repository.addMetadataFacet( TEST_REPO_ID, new TestMetadataFacet( TEST_VALUE ) );
+        repository.addMetadataFacet(TEST_REPO_ID, new TestMetadataFacet(TEST_VALUE));
 
-        assertEquals( new TestMetadataFacet( TEST_VALUE ), repository.getMetadataFacet( TEST_REPO_ID, TEST_FACET_ID,
-                                                                                        TEST_NAME ) );
+        assertEquals(new TestMetadataFacet(TEST_VALUE), repository.getMetadataFacet(TEST_REPO_ID, TEST_FACET_ID,
+                TEST_NAME));
     }
 
     public void testGetMetadataFacetWhenEmpty()
     {
-        assertNull( repository.getMetadataFacet( TEST_REPO_ID, TEST_FACET_ID, TEST_NAME ) );
+        assertNull(repository.getMetadataFacet(TEST_REPO_ID, TEST_FACET_ID, TEST_NAME));
     }
 
     public void testGetMetadataFacetWhenUnknownName()
     {
-        repository.addMetadataFacet( TEST_REPO_ID, new TestMetadataFacet( TEST_VALUE ) );
+        repository.addMetadataFacet(TEST_REPO_ID, new TestMetadataFacet(TEST_VALUE));
 
-        assertNull( repository.getMetadataFacet( TEST_REPO_ID, TEST_FACET_ID, UNKNOWN ) );
+        assertNull(repository.getMetadataFacet(TEST_REPO_ID, TEST_FACET_ID, UNKNOWN));
     }
 
     public void testGetMetadataFacetWhenDefaultValue()
     {
-        repository.addMetadataFacet( TEST_REPO_ID, new TestMetadataFacet( null ) );
+        repository.addMetadataFacet(TEST_REPO_ID, new TestMetadataFacet(null));
 
-        assertEquals( new TestMetadataFacet( TEST_METADATA_VALUE ), repository.getMetadataFacet( TEST_REPO_ID,
-                                                                                                 TEST_FACET_ID,
-                                                                                                 TEST_NAME ) );
+        assertEquals(new TestMetadataFacet(TEST_METADATA_VALUE), repository.getMetadataFacet(TEST_REPO_ID,
+                TEST_FACET_ID,
+                TEST_NAME));
     }
 
     public void testGetMetadataFacetWhenUnknownFacetId()
     {
-        assertNull( repository.getMetadataFacet( TEST_REPO_ID, UNKNOWN, TEST_NAME ) );
+        assertNull(repository.getMetadataFacet(TEST_REPO_ID, UNKNOWN, TEST_NAME));
     }
 
     public void testGetMetadataFacets()
     {
-        repository.addMetadataFacet( TEST_REPO_ID, new TestMetadataFacet( TEST_VALUE ) );
+        repository.addMetadataFacet(TEST_REPO_ID, new TestMetadataFacet(TEST_VALUE));
 
-        assertEquals( Collections.singletonList( TEST_NAME ), repository.getMetadataFacets( TEST_REPO_ID,
-                                                                                            TEST_FACET_ID ) );
+        assertEquals(Collections.singletonList(TEST_NAME), repository.getMetadataFacets(TEST_REPO_ID,
+                TEST_FACET_ID));
     }
 
     public void testGetMetadataFacetsWhenEmpty()
     {
-        List<String> facets = repository.getMetadataFacets( TEST_REPO_ID, TEST_FACET_ID );
-        assertTrue( facets.isEmpty() );
+        List<String> facets = repository.getMetadataFacets(TEST_REPO_ID, TEST_FACET_ID);
+        assertTrue(facets.isEmpty());
     }
 
     public void testRemoveFacets()
     {
-        repository.addMetadataFacet( TEST_REPO_ID, new TestMetadataFacet( TEST_VALUE ) );
+        repository.addMetadataFacet(TEST_REPO_ID, new TestMetadataFacet(TEST_VALUE));
 
-        List<String> facets = repository.getMetadataFacets( TEST_REPO_ID, TEST_FACET_ID );
-        assertFalse( facets.isEmpty() );
+        List<String> facets = repository.getMetadataFacets(TEST_REPO_ID, TEST_FACET_ID);
+        assertFalse(facets.isEmpty());
 
-        repository.removeMetadataFacets( TEST_REPO_ID, TEST_FACET_ID );
+        repository.removeMetadataFacets(TEST_REPO_ID, TEST_FACET_ID);
 
-        facets = repository.getMetadataFacets( TEST_REPO_ID, TEST_FACET_ID );
-        assertTrue( facets.isEmpty() );
+        facets = repository.getMetadataFacets(TEST_REPO_ID, TEST_FACET_ID);
+        assertTrue(facets.isEmpty());
     }
 
     public void testRemoveFacetsWhenEmpty()
     {
-        List<String> facets = repository.getMetadataFacets( TEST_REPO_ID, TEST_FACET_ID );
-        assertTrue( facets.isEmpty() );
+        List<String> facets = repository.getMetadataFacets(TEST_REPO_ID, TEST_FACET_ID);
+        assertTrue(facets.isEmpty());
 
-        repository.removeMetadataFacets( TEST_REPO_ID, TEST_FACET_ID );
+        repository.removeMetadataFacets(TEST_REPO_ID, TEST_FACET_ID);
 
-        facets = repository.getMetadataFacets( TEST_REPO_ID, TEST_FACET_ID );
-        assertTrue( facets.isEmpty() );
+        facets = repository.getMetadataFacets(TEST_REPO_ID, TEST_FACET_ID);
+        assertTrue(facets.isEmpty());
     }
 
     public void testRemoveFacetsWhenUnknown()
     {
-        repository.removeMetadataFacets( TEST_REPO_ID, UNKNOWN );
+        repository.removeMetadataFacets(TEST_REPO_ID, UNKNOWN);
     }
 
     public void testRemoveFacet()
     {
-        TestMetadataFacet metadataFacet = new TestMetadataFacet( TEST_VALUE );
-        repository.addMetadataFacet( TEST_REPO_ID, metadataFacet );
+        TestMetadataFacet metadataFacet = new TestMetadataFacet(TEST_VALUE);
+        repository.addMetadataFacet(TEST_REPO_ID, metadataFacet);
 
-        assertEquals( metadataFacet, repository.getMetadataFacet( TEST_REPO_ID, TEST_FACET_ID, TEST_NAME ) );
-        List<String> facets = repository.getMetadataFacets( TEST_REPO_ID, TEST_FACET_ID );
-        assertFalse( facets.isEmpty() );
+        assertEquals(metadataFacet, repository.getMetadataFacet(TEST_REPO_ID, TEST_FACET_ID, TEST_NAME));
+        List<String> facets = repository.getMetadataFacets(TEST_REPO_ID, TEST_FACET_ID);
+        assertFalse(facets.isEmpty());
 
-        repository.removeMetadataFacet( TEST_REPO_ID, TEST_FACET_ID, TEST_NAME );
+        repository.removeMetadataFacet(TEST_REPO_ID, TEST_FACET_ID, TEST_NAME);
 
-        assertNull( repository.getMetadataFacet( TEST_REPO_ID, TEST_FACET_ID, TEST_NAME ) );
-        facets = repository.getMetadataFacets( TEST_REPO_ID, TEST_FACET_ID );
-        assertTrue( facets.isEmpty() );
+        assertNull(repository.getMetadataFacet(TEST_REPO_ID, TEST_FACET_ID, TEST_NAME));
+        facets = repository.getMetadataFacets(TEST_REPO_ID, TEST_FACET_ID);
+        assertTrue(facets.isEmpty());
     }
 
     public void testRemoveFacetWhenEmpty()
     {
-        List<String> facets = repository.getMetadataFacets( TEST_REPO_ID, TEST_FACET_ID );
-        assertTrue( facets.isEmpty() );
-        assertNull( repository.getMetadataFacet( TEST_REPO_ID, TEST_FACET_ID, TEST_NAME ) );
+        List<String> facets = repository.getMetadataFacets(TEST_REPO_ID, TEST_FACET_ID);
+        assertTrue(facets.isEmpty());
+        assertNull(repository.getMetadataFacet(TEST_REPO_ID, TEST_FACET_ID, TEST_NAME));
 
-        repository.removeMetadataFacet( TEST_REPO_ID, TEST_FACET_ID, TEST_NAME );
+        repository.removeMetadataFacet(TEST_REPO_ID, TEST_FACET_ID, TEST_NAME);
 
-        facets = repository.getMetadataFacets( TEST_REPO_ID, TEST_FACET_ID );
-        assertTrue( facets.isEmpty() );
-        assertNull( repository.getMetadataFacet( TEST_REPO_ID, TEST_FACET_ID, TEST_NAME ) );
+        facets = repository.getMetadataFacets(TEST_REPO_ID, TEST_FACET_ID);
+        assertTrue(facets.isEmpty());
+        assertNull(repository.getMetadataFacet(TEST_REPO_ID, TEST_FACET_ID, TEST_NAME));
     }
 
     public void testRemoveFacetWhenUnknown()
     {
-        repository.removeMetadataFacet( TEST_REPO_ID, UNKNOWN, TEST_NAME );
+        repository.removeMetadataFacet(TEST_REPO_ID, UNKNOWN, TEST_NAME);
     }
-        
+
     public void testGetArtifacts()
     {
         ArtifactMetadata artifact1 = createArtifact();
-        ArtifactMetadata artifact2 = createArtifact( "pom" );
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact1 );
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact2 );
+        ArtifactMetadata artifact2 = createArtifact("pom");
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact1);
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact2);
 
-        Collection<ArtifactMetadata> artifacts = repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT,
-                                                                          TEST_PROJECT_VERSION );
-        ArrayList<ArtifactMetadata> actual = new ArrayList<ArtifactMetadata>( artifacts );
-        Collections.sort( actual, new Comparator<ArtifactMetadata>()
+        Collection<ArtifactMetadata> artifacts = repository.getArtifacts(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT,
+                TEST_PROJECT_VERSION);
+        ArrayList<ArtifactMetadata> actual = new ArrayList<ArtifactMetadata>(artifacts);
+        Collections.sort(actual, new Comparator<ArtifactMetadata>()
         {
-            public int compare( ArtifactMetadata o1, ArtifactMetadata o2 )
+            public int compare(ArtifactMetadata o1, ArtifactMetadata o2)
             {
-                return o1.getId().compareTo( o2.getId() );
+                return o1.getId().compareTo(o2.getId());
             }
-        } );
-        assertEquals( Arrays.asList( artifact1, artifact2 ), actual );
+        });
+        assertEquals(Arrays.asList(artifact1, artifact2), actual);
     }
 
     public void testGetArtifactVersions()
     {
         ArtifactMetadata artifact1 = createArtifact();
         String version1 = "1.0-20091212.012345-1";
-        artifact1.setId( artifact1.getProject() + "-" + version1 + ".jar" );
-        artifact1.setVersion( version1 );
+        artifact1.setId(artifact1.getProject() + "-" + version1 + ".jar");
+        artifact1.setVersion(version1);
         ArtifactMetadata artifact2 = createArtifact();
         String version2 = "1.0-20091212.123456-2";
-        artifact2.setId( artifact2.getProject() + "-" + version2 + ".jar" );
-        artifact2.setVersion( version2 );
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact1 );
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact2 );
+        artifact2.setId(artifact2.getProject() + "-" + version2 + ".jar");
+        artifact2.setVersion(version2);
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact1);
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact2);
 
-        List<String> versions = new ArrayList<String>( repository.getArtifactVersions( TEST_REPO_ID, TEST_NAMESPACE,
-                                                                                       TEST_PROJECT,
-                                                                                       TEST_PROJECT_VERSION ) );
-        Collections.sort( versions );
-        assertEquals( Arrays.asList( version1, version2 ), versions );
+        List<String> versions = new ArrayList<String>(repository.getArtifactVersions(TEST_REPO_ID, TEST_NAMESPACE,
+                TEST_PROJECT,
+                TEST_PROJECT_VERSION));
+        Collections.sort(versions);
+        assertEquals(Arrays.asList(version1, version2), versions);
     }
 
     public void testGetArtifactVersionsMultipleArtifactsSingleVersion()
     {
         ArtifactMetadata artifact1 = createArtifact();
-        artifact1.setId( TEST_PROJECT + "-" + TEST_PROJECT_VERSION + ".jar" );
+        artifact1.setId(TEST_PROJECT + "-" + TEST_PROJECT_VERSION + ".jar");
         ArtifactMetadata artifact2 = createArtifact();
-        artifact2.setId( TEST_PROJECT + "-" + TEST_PROJECT_VERSION + "-sources.jar" );
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact1 );
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact2 );
+        artifact2.setId(TEST_PROJECT + "-" + TEST_PROJECT_VERSION + "-sources.jar");
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact1);
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact2);
 
-        assertEquals( Collections.singleton( TEST_PROJECT_VERSION ), repository.getArtifactVersions( TEST_REPO_ID,
-                                                                                                     TEST_NAMESPACE,
-                                                                                                     TEST_PROJECT,
-                                                                                                     TEST_PROJECT_VERSION ) );
+        assertEquals(Collections.singleton(TEST_PROJECT_VERSION), repository.getArtifactVersions(TEST_REPO_ID,
+                TEST_NAMESPACE,
+                TEST_PROJECT,
+                TEST_PROJECT_VERSION));
     }
 
     public void testGetArtifactsByDateRangeOpen()
     {
-        repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
-        repository.updateProject( TEST_REPO_ID, createProject() );
+        repository.updateNamespace(TEST_REPO_ID, TEST_NAMESPACE);
+        repository.updateProject(TEST_REPO_ID, createProject());
         ArtifactMetadata artifact = createArtifact();
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact);
 
-        assertEquals( Collections.singletonList( artifact ), repository.getArtifactsByDateRange( TEST_REPO_ID, null,
-                                                                                                 null ) );
+        assertEquals(Collections.singletonList(artifact), repository.getArtifactsByDateRange(TEST_REPO_ID, null,
+                null));
     }
 
     public void testGetArtifactsByDateRangeSparseNamespace()
     {
         String namespace = "org.apache.archiva";
-        repository.updateNamespace( TEST_REPO_ID, namespace );
-        repository.updateProject( TEST_REPO_ID, createProject( namespace ) );
+        repository.updateNamespace(TEST_REPO_ID, namespace);
+        repository.updateProject(TEST_REPO_ID, createProject(namespace));
         ArtifactMetadata artifact = createArtifact();
-        artifact.setNamespace( namespace );
-        repository.updateArtifact( TEST_REPO_ID, namespace, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
+        artifact.setNamespace(namespace);
+        repository.updateArtifact(TEST_REPO_ID, namespace, TEST_PROJECT, TEST_PROJECT_VERSION, artifact);
 
-        assertEquals( Collections.singletonList( artifact ), repository.getArtifactsByDateRange( TEST_REPO_ID, null,
-                                                                                                 null ) );
+        assertEquals(Collections.singletonList(artifact), repository.getArtifactsByDateRange(TEST_REPO_ID, null,
+                null));
     }
 
     public void testGetArtifactsByDateRangeLowerBound()
     {
-        repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
-        repository.updateProject( TEST_REPO_ID, createProject() );
+        repository.updateNamespace(TEST_REPO_ID, TEST_NAMESPACE);
+        repository.updateProject(TEST_REPO_ID, createProject());
         ArtifactMetadata artifact = createArtifact();
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact);
 
-        Date date = new Date( artifact.getWhenGathered().getTime() - 10000 );
-        assertEquals( Collections.singletonList( artifact ), repository.getArtifactsByDateRange( TEST_REPO_ID, date,
-                                                                                                 null ) );
+        Date date = new Date(artifact.getWhenGathered().getTime() - 10000);
+        assertEquals(Collections.singletonList(artifact), repository.getArtifactsByDateRange(TEST_REPO_ID, date,
+                null));
     }
 
     public void testGetArtifactsByDateRangeLowerBoundOutOfRange()
     {
-        repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
-        repository.updateProject( TEST_REPO_ID, createProject() );
+        repository.updateNamespace(TEST_REPO_ID, TEST_NAMESPACE);
+        repository.updateProject(TEST_REPO_ID, createProject());
         ArtifactMetadata artifact = createArtifact();
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact);
 
-        Date date = new Date( artifact.getWhenGathered().getTime() + 10000 );
-        assertTrue( repository.getArtifactsByDateRange( TEST_REPO_ID, date, null ).isEmpty() );
+        Date date = new Date(artifact.getWhenGathered().getTime() + 10000);
+        assertTrue(repository.getArtifactsByDateRange(TEST_REPO_ID, date, null).isEmpty());
     }
 
     public void testGetArtifactsByDateRangeLowerAndUpperBound()
     {
-        repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
-        repository.updateProject( TEST_REPO_ID, createProject() );
+        repository.updateNamespace(TEST_REPO_ID, TEST_NAMESPACE);
+        repository.updateProject(TEST_REPO_ID, createProject());
         ArtifactMetadata artifact = createArtifact();
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact);
 
-        Date lower = new Date( artifact.getWhenGathered().getTime() - 10000 );
-        Date upper = new Date( artifact.getWhenGathered().getTime() + 10000 );
-        assertEquals( Collections.singletonList( artifact ), repository.getArtifactsByDateRange( TEST_REPO_ID, lower,
-                                                                                                 upper ) );
+        Date lower = new Date(artifact.getWhenGathered().getTime() - 10000);
+        Date upper = new Date(artifact.getWhenGathered().getTime() + 10000);
+        assertEquals(Collections.singletonList(artifact), repository.getArtifactsByDateRange(TEST_REPO_ID, lower,
+                upper));
     }
 
     public void testGetArtifactsByDateRangeUpperBound()
     {
-        repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
-        repository.updateProject( TEST_REPO_ID, createProject() );
+        repository.updateNamespace(TEST_REPO_ID, TEST_NAMESPACE);
+        repository.updateProject(TEST_REPO_ID, createProject());
         ArtifactMetadata artifact = createArtifact();
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact);
 
-        Date upper = new Date( artifact.getWhenGathered().getTime() + 10000 );
-        assertEquals( Collections.singletonList( artifact ), repository.getArtifactsByDateRange( TEST_REPO_ID, null,
-                                                                                                 upper ) );
+        Date upper = new Date(artifact.getWhenGathered().getTime() + 10000);
+        assertEquals(Collections.singletonList(artifact), repository.getArtifactsByDateRange(TEST_REPO_ID, null,
+                upper));
     }
 
     public void testGetArtifactsByDateRangeUpperBoundOutOfRange()
     {
-        repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
-        repository.updateProject( TEST_REPO_ID, createProject() );
+        repository.updateNamespace(TEST_REPO_ID, TEST_NAMESPACE);
+        repository.updateProject(TEST_REPO_ID, createProject());
         ArtifactMetadata artifact = createArtifact();
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact);
 
-        Date upper = new Date( artifact.getWhenGathered().getTime() - 10000 );
-        assertTrue( repository.getArtifactsByDateRange( TEST_REPO_ID, null, upper ).isEmpty() );
+        Date upper = new Date(artifact.getWhenGathered().getTime() - 10000);
+        assertTrue(repository.getArtifactsByDateRange(TEST_REPO_ID, null, upper).isEmpty());
     }
 
     public void testGetNamespacesWithSparseDepth()
     {
-        repository.updateNamespace( TEST_REPO_ID, "org.apache.maven.shared" );
+        repository.updateNamespace(TEST_REPO_ID, "org.apache.maven.shared");
 
-        assertEquals( Arrays.asList( "org" ), repository.getRootNamespaces( TEST_REPO_ID ) );
-        assertEquals( Arrays.asList( "apache" ), repository.getNamespaces( TEST_REPO_ID, "org" ) );
-        assertEquals( Arrays.asList( "maven" ), repository.getNamespaces( TEST_REPO_ID, "org.apache" ) );
-        assertEquals( Arrays.asList( "shared" ), repository.getNamespaces( TEST_REPO_ID, "org.apache.maven" ) );
+        assertEquals(Arrays.asList("org"), repository.getRootNamespaces(TEST_REPO_ID));
+        assertEquals(Arrays.asList("apache"), repository.getNamespaces(TEST_REPO_ID, "org"));
+        assertEquals(Arrays.asList("maven"), repository.getNamespaces(TEST_REPO_ID, "org.apache"));
+        assertEquals(Arrays.asList("shared"), repository.getNamespaces(TEST_REPO_ID, "org.apache.maven"));
     }
 
     public void testGetArtifactsByChecksumSingleResultMd5()
     {
-        repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
-        repository.updateProject( TEST_REPO_ID, createProject() );
+        repository.updateNamespace(TEST_REPO_ID, TEST_NAMESPACE);
+        repository.updateProject(TEST_REPO_ID, createProject());
         ArtifactMetadata artifact = createArtifact();
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact);
 
-        assertEquals( Collections.singletonList( artifact ), repository.getArtifactsByChecksum( TEST_REPO_ID,
-                                                                                                TEST_MD5 ) );
+        assertEquals(Collections.singletonList(artifact), repository.getArtifactsByChecksum(TEST_REPO_ID,
+                TEST_MD5));
     }
 
     public void testGetArtifactsByChecksumSingleResultSha1()
     {
-        repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
-        repository.updateProject( TEST_REPO_ID, createProject() );
+        repository.updateNamespace(TEST_REPO_ID, TEST_NAMESPACE);
+        repository.updateProject(TEST_REPO_ID, createProject());
         ArtifactMetadata artifact = createArtifact();
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact);
 
-        assertEquals( Collections.singletonList( artifact ), repository.getArtifactsByChecksum( TEST_REPO_ID,
-                                                                                                TEST_SHA1 ) );
+        assertEquals(Collections.singletonList(artifact), repository.getArtifactsByChecksum(TEST_REPO_ID,
+                TEST_SHA1));
     }
 
     public void testGetArtifactsByChecksumMultipleResult()
     {
-        repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
+        repository.updateNamespace(TEST_REPO_ID, TEST_NAMESPACE);
 
         ProjectMetadata projectMetadata = createProject();
-        repository.updateProject( TEST_REPO_ID, projectMetadata );
+        repository.updateProject(TEST_REPO_ID, projectMetadata);
         ArtifactMetadata artifact1 = createArtifact();
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact1 );
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact1);
 
         projectMetadata = createProject();
         String newProjectId = "another-project";
-        projectMetadata.setId( newProjectId );
-        repository.updateProject( TEST_REPO_ID, projectMetadata );
+        projectMetadata.setId(newProjectId);
+        repository.updateProject(TEST_REPO_ID, projectMetadata);
         ArtifactMetadata artifact2 = createArtifact();
-        artifact2.setProject( newProjectId );
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, newProjectId, TEST_PROJECT_VERSION, artifact2 );
+        artifact2.setProject(newProjectId);
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, newProjectId, TEST_PROJECT_VERSION, artifact2);
 
-        List<ArtifactMetadata> artifacts = new ArrayList<ArtifactMetadata>( repository.getArtifactsByChecksum(
-            TEST_REPO_ID, TEST_SHA1 ) );
-        Collections.sort( artifacts, new ArtifactMetadataComparator() );
-        assertEquals( Arrays.asList( artifact2, artifact1 ), artifacts );
+        List<ArtifactMetadata> artifacts = new ArrayList<ArtifactMetadata>(repository.getArtifactsByChecksum(
+                TEST_REPO_ID, TEST_SHA1));
+        Collections.sort(artifacts, new ArtifactMetadataComparator());
+        assertEquals(Arrays.asList(artifact2, artifact1), artifacts);
     }
 
     public void testGetArtifactsByChecksumNoResult()
     {
-        repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
-        repository.updateProject( TEST_REPO_ID, createProject() );
+        repository.updateNamespace(TEST_REPO_ID, TEST_NAMESPACE);
+        repository.updateProject(TEST_REPO_ID, createProject());
         ArtifactMetadata artifact = createArtifact();
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact);
 
-        assertEquals( Collections.<ArtifactMetadata>emptyList(), repository.getArtifactsByChecksum( TEST_REPO_ID,
-                                                                                                    "not a checksum" ) );
+        assertEquals(Collections.<ArtifactMetadata>emptyList(), repository.getArtifactsByChecksum(TEST_REPO_ID,
+                "not a checksum"));
     }
 
     public void testDeleteArtifact()
     {
         ArtifactMetadata artifact = createArtifact();
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact);
 
-        assertEquals( Collections.singletonList( artifact ), new ArrayList<ArtifactMetadata>( repository.getArtifacts(
-            TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION ) ) );
+        assertEquals(Collections.singletonList(artifact), new ArrayList<ArtifactMetadata>(repository.getArtifacts(
+                TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION)));
 
-        repository.deleteArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact.getId() );
+        repository.deleteArtifact(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact.getId());
 
-        assertTrue( repository.getArtifacts( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT,
-                                             TEST_PROJECT_VERSION ).isEmpty() );
+        assertTrue(repository.getArtifacts(TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT,
+                TEST_PROJECT_VERSION).isEmpty());
     }
 
     public void testDeleteRepository()
     {
-        repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
+        repository.updateNamespace(TEST_REPO_ID, TEST_NAMESPACE);
 
         ProjectMetadata project1 = new ProjectMetadata();
-        project1.setNamespace( TEST_NAMESPACE );
-        project1.setId( "project1" );
-        repository.updateProject( TEST_REPO_ID, project1 );
+        project1.setNamespace(TEST_NAMESPACE);
+        project1.setId("project1");
+        repository.updateProject(TEST_REPO_ID, project1);
         ProjectMetadata project2 = new ProjectMetadata();
-        project2.setNamespace( TEST_NAMESPACE );
-        project2.setId( "project2" );
-        repository.updateProject( TEST_REPO_ID, project2 );
+        project2.setNamespace(TEST_NAMESPACE);
+        project2.setId("project2");
+        repository.updateProject(TEST_REPO_ID, project2);
 
         ArtifactMetadata artifact1 = createArtifact();
-        artifact1.setProject( "project1" );
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, "project1", TEST_PROJECT_VERSION, artifact1 );
+        artifact1.setProject("project1");
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, "project1", TEST_PROJECT_VERSION, artifact1);
         ArtifactMetadata artifact2 = createArtifact();
-        artifact2.setProject( "project2" );
-        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, "project2", TEST_PROJECT_VERSION, artifact2 );
+        artifact2.setProject("project2");
+        repository.updateArtifact(TEST_REPO_ID, TEST_NAMESPACE, "project2", TEST_PROJECT_VERSION, artifact2);
 
-        List<ArtifactMetadata> expected = Arrays.asList( artifact1, artifact2 );
-        Collections.sort( expected, new ArtifactMetadataComparator() );
+        List<ArtifactMetadata> expected = Arrays.asList(artifact1, artifact2);
+        Collections.sort(expected, new ArtifactMetadataComparator());
 
-        List<ArtifactMetadata> actual = new ArrayList<ArtifactMetadata>( repository.getArtifactsByDateRange(
-            TEST_REPO_ID, null, null ) );
-        Collections.sort( actual, new ArtifactMetadataComparator() );
+        List<ArtifactMetadata> actual = new ArrayList<ArtifactMetadata>(repository.getArtifactsByDateRange(
+                TEST_REPO_ID, null, null));
+        Collections.sort(actual, new ArtifactMetadataComparator());
 
-        assertEquals( expected, actual );
+        assertEquals(expected, actual);
 
-        repository.deleteRepository( TEST_REPO_ID );
+        repository.deleteRepository(TEST_REPO_ID);
 
-        assertTrue( repository.getArtifactsByDateRange( TEST_REPO_ID, null, null ).isEmpty() );
+        assertTrue(repository.getArtifactsByDateRange(TEST_REPO_ID, null, null).isEmpty());
     }
 
     private ProjectMetadata createProject()
     {
-        return createProject( TEST_NAMESPACE );
+        return createProject(TEST_NAMESPACE);
     }
 
-    private ProjectMetadata createProject( String ns )
+    private ProjectMetadata createProject(String ns)
     {
         ProjectMetadata project = new ProjectMetadata();
-        project.setId( TEST_PROJECT );
-        project.setNamespace( ns );
+        project.setId(TEST_PROJECT);
+        project.setNamespace(ns);
         return project;
     }
 
     private ArtifactMetadata createArtifact()
     {
-        return createArtifact( "jar" );
+        return createArtifact("jar");
     }
 
-    private ArtifactMetadata createArtifact( String type )
+    private ArtifactMetadata createArtifact(String type)
     {
         ArtifactMetadata artifact = new ArtifactMetadata();
-        artifact.setId( TEST_PROJECT + "-" + TEST_PROJECT_VERSION + "." + type );
-        artifact.setWhenGathered( new Date() );
-        artifact.setNamespace( TEST_NAMESPACE );
-        artifact.setProject( TEST_PROJECT );
-        artifact.setRepositoryId( TEST_REPO_ID );
-        artifact.setFileLastModified( System.currentTimeMillis() );
-        artifact.setVersion( TEST_PROJECT_VERSION );
-        artifact.setProjectVersion( TEST_PROJECT_VERSION );
-        artifact.setMd5( TEST_MD5 );
-        artifact.setSha1( TEST_SHA1 );
+        artifact.setId(TEST_PROJECT + "-" + TEST_PROJECT_VERSION + "." + type);
+        artifact.setWhenGathered(new Date());
+        artifact.setNamespace(TEST_NAMESPACE);
+        artifact.setProject(TEST_PROJECT);
+        artifact.setRepositoryId(TEST_REPO_ID);
+        artifact.setFileLastModified(System.currentTimeMillis());
+        artifact.setVersion(TEST_PROJECT_VERSION);
+        artifact.setProjectVersion(TEST_PROJECT_VERSION);
+        artifact.setMd5(TEST_MD5);
+        artifact.setSha1(TEST_SHA1);
         return artifact;
     }
 
     private class ArtifactMetadataComparator
-        implements Comparator<ArtifactMetadata>
+            implements Comparator<ArtifactMetadata>
     {
-        public final int compare( ArtifactMetadata a, ArtifactMetadata b )
+        public final int compare(ArtifactMetadata a, ArtifactMetadata b)
         {
-            return a.getProject().compareTo( b.getProject() );
+            return a.getProject().compareTo(b.getProject());
         }
     }
 
     private static class TestMetadataFacet
-        implements MetadataFacet
+            implements MetadataFacet
     {
         private String testFacetId;
-        
-        private Map<String, String> additionalProps;        
 
+        private Map<String, String> additionalProps;
+
         private String value;
 
-        private TestMetadataFacet( String value )
+        private TestMetadataFacet(String value)
         {
             this.value = value;
             testFacetId = TEST_FACET_ID;
         }
 
-        private TestMetadataFacet( String facetId, String value )
+        private TestMetadataFacet(String facetId, String value)
         {
             this.value = value;
             testFacetId = facetId;
         }
-        
-        private TestMetadataFacet( String facetId, String value, Map<String, String> additionalProps )
+
+        private TestMetadataFacet(String facetId, String value, Map<String, String> additionalProps)
         {
-            this( facetId, value );
-            this.additionalProps = additionalProps;            
+            this(facetId, value);
+            this.additionalProps = additionalProps;
         }
 
         public String getFacetId()
@@ -681,49 +680,44 @@
         }
 
         public Map<String, String> toProperties()
-        {            
-            if ( value != null )
+        {
+            if (value != null)
             {
-                if( additionalProps == null )
+                if (additionalProps == null) {
+                    return Collections.singletonMap("foo", value);
+                } else
                 {
-                    return Collections.singletonMap( "foo", value );
-                }
-                else
-                {
                     Map<String, String> props = new HashMap<String, String>();
-                    props.put( "foo", value );
-                    
-                    for( String key : additionalProps.keySet() )
+                    props.put("foo", value);
+
+                    for (String key : additionalProps.keySet())
                     {
-                        props.put( key, additionalProps.get( key ) );
+                        props.put(key, additionalProps.get(key));
                     }
                     return props;
                 }
-            }
-            else
-            {
+            } else {
                 return Collections.emptyMap();
             }
         }
 
-        public void fromProperties( Map<String, String> properties )
+        public void fromProperties(Map<String, String> properties)
         {
-            String value = properties.get( "foo" );
-            if ( value != null )
-            {
+            String value = properties.get("foo");
+            if (value != null) {
                 this.value = value;
             }
-               
-            properties.remove( "foo" );
-            
-            if( additionalProps == null )
+
+            properties.remove("foo");
+
+            if (additionalProps == null)
             {
                 additionalProps = new HashMap<String, String>();
             }
-            
-            for( String key: properties.keySet() )
+
+            for (String key : properties.keySet())
             {
-                additionalProps.put( key, properties.get( key ) );
+                additionalProps.put(key, properties.get(key));
             }
         }
 
@@ -731,10 +725,9 @@
         {
             return value;
         }
-        
+
         @Override
-        public String toString()
-        {
+        public String toString() {
             return "TestMetadataFacet{" + "value='" + value + '\'' + '}';
         }
 
@@ -752,7 +745,7 @@
 
             TestMetadataFacet that = (TestMetadataFacet) o;
 
-            if ( value != null ? !value.equals( that.value ) : that.value != null )
+            if (value != null ? !value.equals(that.value) : that.value != null)
             {
                 return false;
             }
@@ -766,4 +759,12 @@
             return value != null ? value.hashCode() : 0;
         }
     }
+
+    public void testgetArtifacts()
+    {
+        Collection<ArchivaArtifact> list = repository.getArtifactsFrom("internal");
+        assertEquals(false, list.isEmpty());
+    }
+
+
 }
Index: archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataRepository.java
===================================================================
--- archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataRepository.java	(revision 960423)
+++ archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataRepository.java	(working copy)
@@ -24,6 +24,7 @@
 import org.apache.archiva.metadata.model.ProjectMetadata;
 import org.apache.archiva.metadata.model.ProjectVersionMetadata;
 import org.apache.archiva.metadata.model.ProjectVersionReference;
+import org.apache.maven.archiva.model.ArchivaArtifact;
 
 import java.util.Collection;
 import java.util.Date;
@@ -75,4 +76,6 @@
      * @param repositoryId the repository to delete
      */
     void deleteRepository( String repositoryId );
+
+     Collection<ArchivaArtifact> getArtifactsFrom(String repositoryId);
 }
Index: archiva-modules/metadata/metadata-repository-api/pom.xml
===================================================================
--- archiva-modules/metadata/metadata-repository-api/pom.xml	(revision 960423)
+++ archiva-modules/metadata/metadata-repository-api/pom.xml	(working copy)
@@ -39,6 +39,11 @@
       <artifactId>plexus-spring</artifactId>
       <scope>test</scope>
     </dependency>
+       <dependency>
+      <groupId>org.apache.archiva</groupId>
+      <artifactId>archiva-model</artifactId>
+      <version>1.4-MRM-980-SNAPSHOT</version>
+    </dependency>
   </dependencies>
   <build>
     <plugins>
Index: archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/TestMetadataRepository.java
===================================================================
--- archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/TestMetadataRepository.java	(revision 960423)
+++ archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/TestMetadataRepository.java	(working copy)
@@ -31,6 +31,7 @@
 import org.apache.archiva.metadata.model.ProjectMetadata;
 import org.apache.archiva.metadata.model.ProjectVersionMetadata;
 import org.apache.archiva.metadata.model.ProjectVersionReference;
+import org.apache.maven.archiva.model.ArchivaArtifact;
 
 public class TestMetadataRepository
     extends TestMetadataResolver
@@ -114,4 +115,9 @@
     {
         //To change body of implemented methods use File | Settings | File Templates.
     }
+
+     public Collection<ArchivaArtifact> getArtifactsFrom(String repositoryId)
+     {
+        return null;
+     }
 }
\ No newline at end of file
Index: archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/TestMavenRepositoryMetadataUpdator.java
===================================================================
--- archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/TestMavenRepositoryMetadataUpdator.java	(revision 0)
+++ archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/TestMavenRepositoryMetadataUpdator.java	(revision 0)
@@ -0,0 +1,82 @@
+package org.apache.archiva.metadata.repository.storage.maven2;
+
+import org.codehaus.plexus.spring.PlexusInSpringTestCase;
+import org.apache.maven.archiva.model.ArchivaArtifact;
+import org.apache.maven.archiva.model.ArchivaRepositoryMetadata;
+import org.apache.maven.archiva.repository.metadata.RepositoryMetadataException;
+import org.apache.maven.archiva.repository.metadata.RepositoryMetadataReader;
+import org.apache.maven.archiva.repository.metadata.MetadataTools;
+
+import java.io.File;
+import java.io.IOException;/*
+ * 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.
+ */
+
+public class TestMavenRepositoryMetadataUpdator
+        extends PlexusInSpringTestCase {
+
+
+     private File defaultRepoDir;
+
+    private MavenRepositoryMetadataUpdator metadataUpdator;
+
+     protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+        defaultRepoDir = new File( getBasedir(), "target/test-repository" );
+        metadataUpdator = new MavenRepositoryMetadataUpdator();
+        
+    }
+
+    public void testMetadataUpdator() throws IOException, RepositoryMetadataException{
+       // update project metadata
+        ArchivaArtifact artifact = new ArchivaArtifact("org.apache.archiva","archiva","1.2.3","","jar","test-repository");
+        File projectMetadataFileInSource = new File(defaultRepoDir,"org/apache/archiva/archiva/maven-metadata.xml");
+        metadataUpdator.updateProjectMetadata(projectMetadataFileInSource,artifact);
+        ArchivaRepositoryMetadata projectMetadata = getMetadata( projectMetadataFileInSource );
+        assertEquals(true ,projectMetadata.getAvailableVersions().contains("1.2.3"));
+
+        //update version meta data (existime metadata xml file)
+        ArchivaArtifact artifact1 = new ArchivaArtifact("org.apache.archiva","archiva","1.2.2","","jar","test-repository");
+        File versionMetadataFile = new File(defaultRepoDir, "org/apache/archiva/archiva/1.2.2/maven-metadata.xml");
+        metadataUpdator.updateVersionMetadata(versionMetadataFile ,artifact1);
+
+        // copying meta data xml file when it does not exist in target directory.
+        metadataUpdator.setVersionMetadataFileInSourceArtifact(versionMetadataFile);
+        File f = new File( getBasedir(), "target/metadata");
+        f.mkdirs();
+        File targetFile = new File(f,  MetadataTools.MAVEN_METADATA );
+        metadataUpdator.updateVersionMetadata(targetFile ,artifact1);
+        assertEquals(true , targetFile.exists());
+
+
+    }
+
+     private ArchivaRepositoryMetadata getMetadata( File metadataFile )
+            throws RepositoryMetadataException
+    {
+        ArchivaRepositoryMetadata metadata = new ArchivaRepositoryMetadata();
+        if ( metadataFile.exists() )
+        {
+            metadata = RepositoryMetadataReader.read( metadataFile );
+        }
+        return metadata;
+    }
+
+}

Property changes on: archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/TestMavenRepositoryMetadataUpdator.java
___________________________________________________________________
Added: svn:executable
   + *

Index: archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenRepositoryMetadataUpdator.java
===================================================================
--- archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenRepositoryMetadataUpdator.java	(revision 0)
+++ archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenRepositoryMetadataUpdator.java	(revision 0)
@@ -0,0 +1,176 @@
+package org.apache.archiva.metadata.repository.storage.maven2;
+
+import org.apache.maven.archiva.model.ArchivaArtifact;
+import org.apache.maven.archiva.model.ArchivaRepositoryMetadata;
+import org.apache.maven.archiva.repository.metadata.RepositoryMetadataException;
+import org.apache.maven.archiva.repository.metadata.RepositoryMetadataWriter;
+import org.apache.maven.archiva.repository.metadata.RepositoryMetadataReader;
+import org.apache.maven.archiva.common.utils.VersionComparator;
+import org.apache.maven.archiva.common.utils.VersionUtil;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.FileOutputStream;
+import java.io.FileInputStream;
+import java.util.*;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;/*
+ * 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.
+ */
+
+public class MavenRepositoryMetadataUpdator {
+
+    private File versionMetadataFileInSourceArtifact;
+    private File projectMetadataFileInSourceArtifact;
+
+
+    public void setVersionMetadataFileInSourceArtifact(File versionMetadataFileInSourceArtifact) {
+        this.versionMetadataFileInSourceArtifact = versionMetadataFileInSourceArtifact;
+    }
+
+    public void setProjectMetadataFileInSourceArtifact(File projectMetadataFileInSourceArtifact) {
+        this.projectMetadataFileInSourceArtifact = projectMetadataFileInSourceArtifact;
+    }
+
+    public void updateVersionMetadata (File versionMetadataFileInTargetArtifact , ArchivaArtifact artifact) throws IOException
+            ,RepositoryMetadataException{
+
+        Date lastUpdatedTimestamp = Calendar.getInstance().getTime();
+
+        TimeZone timezone = TimeZone.getTimeZone( "UTC" );
+
+        DateFormat fmt = new SimpleDateFormat( "yyyyMMdd.HHmmss" );
+
+        fmt.setTimeZone( timezone );
+
+        String timestamp = fmt.format( lastUpdatedTimestamp );
+
+        if( !versionMetadataFileInTargetArtifact.exists() ){
+            copyFile(versionMetadataFileInSourceArtifact ,versionMetadataFileInTargetArtifact);
+
+        }
+        else{
+            ArchivaRepositoryMetadata versionMetadata = getMetadata( versionMetadataFileInTargetArtifact );
+            if ( !versionMetadataFileInTargetArtifact.exists() )
+            {
+                versionMetadata.setGroupId( artifact.getGroupId() );
+                versionMetadata.setArtifactId( artifact.getArtifactId() );
+                versionMetadata.setVersion( artifact.getVersion() );
+            }
+            versionMetadata.setLastUpdatedTimestamp( lastUpdatedTimestamp );
+            RepositoryMetadataWriter.write( versionMetadata, versionMetadataFileInTargetArtifact );
+        }
+
+    }
+
+    public void updateProjectMetadata (File projectMetadataFileInTargetArtifact , ArchivaArtifact artifact) throws IOException
+            ,RepositoryMetadataException{
+
+
+        Date lastUpdatedTimestamp = Calendar.getInstance().getTime();
+
+        TimeZone timezone = TimeZone.getTimeZone( "UTC" );
+
+        DateFormat fmt = new SimpleDateFormat( "yyyyMMdd.HHmmss" );
+
+        fmt.setTimeZone( timezone );
+
+        String timestamp = fmt.format( lastUpdatedTimestamp );
+
+        ArrayList<String> availableVersions = new ArrayList<String>();
+        String latestVersion = artifact.getVersion();
+
+        ArchivaRepositoryMetadata projectMetadata = getMetadata( projectMetadataFileInTargetArtifact );
+
+        if ( projectMetadataFileInTargetArtifact.exists() )
+        {
+            availableVersions = (ArrayList<String>) projectMetadata.getAvailableVersions();
+
+            Collections.sort( availableVersions, VersionComparator.getInstance() );
+
+            if ( !availableVersions.contains( artifact.getVersion() ) )
+            {
+                availableVersions.add( artifact.getVersion() );
+            }
+
+            latestVersion = availableVersions.get( availableVersions.size() - 1 );
+        }
+        else
+        {
+            availableVersions.add( artifact.getVersion() );
+            projectMetadata.setGroupId( artifact.getGroupId() );
+            projectMetadata.setArtifactId( artifact.getArtifactId() );
+        }
+
+        if ( projectMetadata.getGroupId() == null )
+        {
+            projectMetadata.setGroupId( artifact.getGroupId() );
+        }
+
+        if ( projectMetadata.getArtifactId() == null )
+        {
+            projectMetadata.setArtifactId( artifact.getArtifactId() );
+        }
+
+        projectMetadata.setLatestVersion( latestVersion );
+        projectMetadata.setAvailableVersions( availableVersions );
+        projectMetadata.setLastUpdated( timestamp );
+        projectMetadata.setLastUpdatedTimestamp( lastUpdatedTimestamp );
+
+        if ( !VersionUtil.isSnapshot( artifact.getVersion() ) )
+        {
+            projectMetadata.setReleasedVersion( latestVersion );
+        }
+
+        RepositoryMetadataWriter.write( projectMetadata, projectMetadataFileInTargetArtifact );
+    }
+
+    private ArchivaRepositoryMetadata getMetadata( File metadataFile )
+            throws RepositoryMetadataException
+    {
+        ArchivaRepositoryMetadata metadata = new ArchivaRepositoryMetadata();
+        if ( metadataFile.exists() )
+        {
+            metadata = RepositoryMetadataReader.read( metadataFile );
+        }
+        return metadata;
+    }
+
+    private void copyFile( File sourceFile, File targetFile )
+            throws IOException
+    {
+
+        FileOutputStream out = new FileOutputStream( targetFile );
+        FileInputStream input = new FileInputStream( sourceFile );
+
+        try
+        {
+            int i;
+            while ( ( i = input.read() ) != -1 )
+            {
+                out.write( i );
+            }
+            out.flush();
+        }
+        finally
+        {
+            out.close();
+            input.close();
+        }
+    }
+}

Property changes on: archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenRepositoryMetadataUpdator.java
___________________________________________________________________
Added: svn:executable
   + *

Index: archiva-modules/plugins/maven2-repository/pom.xml
===================================================================
--- archiva-modules/plugins/maven2-repository/pom.xml	(revision 960423)
+++ archiva-modules/plugins/maven2-repository/pom.xml	(working copy)
@@ -41,6 +41,11 @@
       <groupId>org.apache.archiva</groupId>
       <artifactId>metadata-repository-api</artifactId>
     </dependency>
+      <dependency>
+      <groupId>org.apache.archiva</groupId>
+      <artifactId>archiva-repository-layer</artifactId>
+      <version>1.4-MRM-980-SNAPSHOT</version>
+    </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-spring</artifactId>
Index: archiva-modules/plugins/metadata-repository-file/src/test/java/org/apache/archiva/metadata/repository/file/FileMetadataRepositoryTest.java
===================================================================
--- archiva-modules/plugins/metadata-repository-file/src/test/java/org/apache/archiva/metadata/repository/file/FileMetadataRepositoryTest.java	(revision 960423)
+++ archiva-modules/plugins/metadata-repository-file/src/test/java/org/apache/archiva/metadata/repository/file/FileMetadataRepositoryTest.java	(working copy)
@@ -20,7 +20,9 @@
  */
 
 import org.apache.archiva.metadata.model.MetadataFacetFactory;
+import org.apache.archiva.metadata.model.ArtifactMetadata;
 import org.apache.archiva.metadata.repository.AbstractMetadataRepositoryTest;
+import org.apache.archiva.metadata.repository.MetadataResolver;
 import org.apache.commons.io.FileUtils;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.Configuration;
@@ -28,6 +30,9 @@
 
 import java.io.File;
 import java.util.Map;
+import java.util.Collection;
+import java.util.List;
+import java.util.ArrayList;
 
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -50,6 +55,8 @@
         FileMetadataRepository repository = new FileMetadataRepository();
         repository.setConfiguration( config );
         repository.setMetadataFacetFactories( factories );
+        
+        repository.setMetadataResolver(getMedataResolver());
 
         this.repository = repository;
     }
@@ -71,4 +78,54 @@
         managedRepository.setLocation( new File( directory, repoId ).getAbsolutePath() );
         return managedRepository;
     }
+
+    private static MetadataResolver getMedataResolver(){
+        final String TEST_REPO_ID = "internal";
+         List<String> artifactList = new ArrayList<String>();
+           artifactList.add( "org" );
+        MetadataResolver metadataResolver = mock(MetadataResolver.class);
+
+        when(metadataResolver.getRootNamespaces( TEST_REPO_ID )).thenReturn(artifactList);
+        when(metadataResolver.getNamespaces( TEST_REPO_ID, "org" )).thenReturn(getNameSpace());
+        when(metadataResolver.getNamespaces( TEST_REPO_ID, "org" + "." + "apache")).thenReturn(getProject());
+        when(metadataResolver.getProjectVersions( TEST_REPO_ID, "org" + "." + "apache", "archiva" )).
+                thenReturn(getProjectVersions());
+        when(metadataResolver.getArtifacts( TEST_REPO_ID, "apache", "archiva",  "1.6" )).
+                thenReturn(getArtifactMetaData());
+        when(metadataResolver.getArtifacts( TEST_REPO_ID, "apache", "archiva",  "1.6" )).
+                thenReturn(getArtifactMetaData());
+       return  metadataResolver;
+
+    }
+
+    private static Collection<String> getNameSpace()
+       {
+           List<String> namespace = new ArrayList<String>();
+           namespace.add( "apache" );
+           return namespace;
+       }
+    private static Collection<String> getProject()
+       {
+           List<String> namespace = new ArrayList<String>();
+           namespace.add( "archiva" );
+           return namespace;
+       }
+
+     private static Collection<String> getProjectVersions()
+       {
+           List<String> versionList = new ArrayList<String>();
+           versionList.add( "1.6" );
+           return versionList;
+       }
+     private static Collection<ArtifactMetadata> getArtifactMetaData()
+       {
+           List<ArtifactMetadata> metaDataList = new ArrayList<ArtifactMetadata>();
+           ArtifactMetadata metaDataOne = new ArtifactMetadata();
+           ArtifactMetadata metaDataTwo = new ArtifactMetadata();
+           metaDataList.add( metaDataOne );
+           metaDataList.add( metaDataTwo );
+           return metaDataList;
+       }
+
+
 }
Index: archiva-modules/plugins/metadata-repository-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java
===================================================================
--- archiva-modules/plugins/metadata-repository-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java	(revision 960423)
+++ archiva-modules/plugins/metadata-repository-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java	(working copy)
@@ -33,9 +33,12 @@
 import org.apache.archiva.metadata.model.ProjectVersionReference;
 import org.apache.archiva.metadata.model.Scm;
 import org.apache.archiva.metadata.repository.MetadataRepository;
+import org.apache.archiva.metadata.repository.MetadataResolver;
+import org.apache.archiva.metadata.repository.storage.maven2.MavenArtifactFacet;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
+import org.apache.maven.archiva.model.ArchivaArtifact;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -75,6 +78,11 @@
      */
     private ArchivaConfiguration configuration;
 
+    /**
+     * @plexus.requirement
+     */
+    private MetadataResolver metadataResolver;
+
     private static final Logger log = LoggerFactory.getLogger( FileMetadataRepository.class );
 
     private static final String PROJECT_METADATA_KEY = "project-metadata";
@@ -85,6 +93,10 @@
 
     private static final String METADATA_KEY = "metadata";
 
+    public void setMetadataResolver(MetadataResolver metadataResolver) {
+        this.metadataResolver = metadataResolver;
+    }
+
     private File getBaseDirectory( String repoId )
     {
         // TODO: should be configurable, like the index
@@ -129,7 +141,7 @@
         updateProject( repoId, namespace, projectId );
 
         File directory = new File( getDirectory( repoId ),
-                                   namespace + "/" + projectId + "/" + versionMetadata.getId() );
+                namespace + "/" + projectId + "/" + versionMetadata.getId() );
 
         Properties properties = readOrCreateProperties( directory, PROJECT_VERSION_METADATA_KEY );
         // remove properties that are not references or artifacts
@@ -140,7 +152,7 @@
             {
                 properties.remove( name );
             }
-            
+
             // clear the facet contents so old properties are no longer written
             clearMetadataFacetProperties( versionMetadata, properties );
         }
@@ -227,7 +239,7 @@
             }
         }
     }
-    
+
     private void clearMetadataFacetProperties( ProjectVersionMetadata versionMetadata, Properties properties )
     {
         List<Object> propsToRemove = new ArrayList<Object>();
@@ -242,7 +254,7 @@
                 }
             }
         }
-        
+
         for( Object key : propsToRemove )
         {
             properties.remove( key );
@@ -323,7 +335,7 @@
         try
         {
             properties = readProperties( new File( getMetadataDirectory( repositoryId, facetId ), name ),
-                                         METADATA_KEY );
+                    METADATA_KEY );
         }
         catch ( FileNotFoundException e )
         {
@@ -359,7 +371,7 @@
         try
         {
             File directory = new File( getMetadataDirectory( repositoryId, metadataFacet.getFacetId() ),
-                                       metadataFacet.getName() );
+                    metadataFacet.getName() );
             writeProperties( properties, directory, METADATA_KEY );
         }
         catch ( IOException e )
@@ -515,7 +527,7 @@
                                     if ( property.startsWith( prefix ) )
                                     {
                                         map.put( property.substring( prefix.length() + 1 ), properties.getProperty(
-                                            property ) );
+                                                property ) );
                                     }
                                 }
                                 facet.fromProperties( map );
@@ -577,7 +589,7 @@
         properties.remove( "artifact:sha1:" + id );
         properties.remove( "artifact:version:" + id );
         properties.remove( "artifact:facetIds:" + id );
-        
+
         String prefix = "artifact:facet:" + id + ":";
         for ( Object key : new ArrayList( properties.keySet() ) )
         {
@@ -721,7 +733,7 @@
     }
 
     private Properties readProperties( File directory, String propertiesKey )
-        throws IOException
+            throws IOException
     {
         Properties properties = new Properties();
         FileInputStream in = null;
@@ -839,7 +851,7 @@
                     mailingList.setName( mailingListName );
                     mailingList.setMainArchiveUrl( properties.getProperty( "mailingList." + i + ".archive" ) );
                     mailingList.setOtherArchives( Arrays.asList( properties.getProperty(
-                        "mailingList." + i + ".otherArchives" ).split( "," ) ) );
+                            "mailingList." + i + ".otherArchives" ).split( "," ) ) );
                     mailingList.setPostAddress( properties.getProperty( "mailingList." + i + ".post" ) );
                     mailingList.setSubscribeAddress( properties.getProperty( "mailingList." + i + ".subscribe" ) );
                     mailingList.setUnsubscribeAddress( properties.getProperty( "mailingList." + i + ".unsubscribe" ) );
@@ -898,7 +910,7 @@
                             if ( property.startsWith( facet.getFacetId() ) )
                             {
                                 map.put( property.substring( facet.getFacetId().length() + 1 ), properties.getProperty(
-                                    property ) );
+                                        property ) );
                             }
                         }
                         facet.fromProperties( map );
@@ -947,7 +959,7 @@
             reference.setNamespace( properties.getProperty( "ref:reference." + i + ".namespace" ) );
             reference.setProjectVersion( properties.getProperty( "ref:reference." + i + ".projectVersion" ) );
             reference.setReferenceType( ProjectVersionReference.ReferenceType.valueOf( properties.getProperty(
-                "ref:reference." + i + ".referenceType" ) ) );
+                    "ref:reference." + i + ".referenceType" ) ) );
             references.add( reference );
         }
         return references;
@@ -1031,7 +1043,7 @@
     }
 
     private void writeProperties( Properties properties, File directory, String propertiesKey )
-        throws IOException
+            throws IOException
     {
         directory.mkdirs();
         FileOutputStream os = new FileOutputStream( new File( directory, propertiesKey + ".properties" ) );
@@ -1075,4 +1087,87 @@
             return artifact1.getWhenGathered().compareTo( artifact2.getWhenGathered() );
         }
     }
+
+    public  Collection<ArchivaArtifact> getArtifactsFrom(String repositoryId){
+
+        Collection<String> rootNameSpacesList;
+
+        Collection<String> gruopIdList;
+
+        Collection<String> artifactsList;
+
+        Collection<String> artifactsVersionsList;
+
+        Collection<ArchivaArtifact> artifactsListWithDetails = new ArrayList<ArchivaArtifact>();;
+
+         // this will get the root name spaces eg : org, com
+        rootNameSpacesList = metadataResolver.getRootNamespaces( repositoryId );
+
+        gruopIdList = new ArrayList<String>();
+
+        artifactsList = new ArrayList<String>();
+
+        // following iterates through the root name spaces list and get the gruop id of relavet root name spaces.
+        for ( String namespace : rootNameSpacesList )
+        {
+            // this will get the gruop id list of relavant name space . eg : org > archiva(gruop id)
+            gruopIdList = metadataResolver.getNamespaces( repositoryId, namespace );
+
+            // following will iterates through the particular gruop id 's
+            for ( String gruopId : gruopIdList )
+            {
+                // parse the parameters "repoId" and "namespace + gruop id "to artifacts list. eg : params = ("internal"
+                // , "org.archiva")
+                artifactsList = metadataResolver.getNamespaces( repositoryId, namespace + "." + gruopId );
+
+                for ( String artifact : artifactsList )
+                {
+                    // iterates through the artifacts and get the available versions of a particular artifact
+                    artifactsVersionsList =
+                         metadataResolver.getProjectVersions( repositoryId, namespace + "." + gruopId,
+                                                                                 artifact );
+
+                    for ( String version : artifactsVersionsList )
+                    {
+                        // assign gathered attributes Artifact object and add it in to the list
+                        artifactsListWithDetails.addAll( getArtifactMetadata( repositoryId, gruopId, artifact, version ) );
+
+                    }
+                }
+            }
+        }
+        return artifactsListWithDetails;
+    }
+
+
+    private Collection<ArchivaArtifact> getArtifactMetadata( String repoId, String gruopId, String artifactId,
+                                                             String version )
+    {
+        MavenArtifactFacet facet = null;
+
+        List<ArchivaArtifact> artifactList = new ArrayList<ArchivaArtifact>();
+
+        Collection<ArtifactMetadata> artifactMetaDataList =
+            metadataResolver.getArtifacts( repoId, gruopId, artifactId, version );
+
+        for ( ArtifactMetadata artifactMetadata : artifactMetaDataList )
+        {
+
+            facet = (MavenArtifactFacet) artifactMetadata.getFacet( MavenArtifactFacet.FACET_ID );
+
+            if ( facet != null )
+            {
+                artifactList.add( new ArchivaArtifact( gruopId, artifactId, version, facet.getClassifier(),
+                                                       facet.getType(), repoId ) );
+
+            }
+            else
+            {
+                artifactList.add( new ArchivaArtifact( gruopId, artifactId, version, "", "jar", repoId ) );
+            }
+
+        }
+        return artifactList;
+    }
 }
+
Index: archiva-modules/plugins/metadata-repository-file/pom.xml
===================================================================
--- archiva-modules/plugins/metadata-repository-file/pom.xml	(revision 960423)
+++ archiva-modules/plugins/metadata-repository-file/pom.xml	(working copy)
@@ -43,6 +43,10 @@
       <classifier>tests</classifier>
       <scope>test</scope>
     </dependency>
+      <dependency>
+            <groupId>org.apache.archiva</groupId>
+            <artifactId>maven2-repository</artifactId>
+        </dependency>
     <dependency>
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
@@ -72,4 +76,4 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
-</project>
+</project>
\ No newline at end of file
Index: archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/stagerepository/merge/repomerge/ArtifactsMergerTest.java
===================================================================
--- archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/stagerepository/merge/repomerge/ArtifactsMergerTest.java	(revision 960423)
+++ archiva-modules/plugins/stage-repository-merge/src/test/java/org/apache/archiva/stagerepository/merge/repomerge/ArtifactsMergerTest.java	(working copy)
@@ -36,10 +36,9 @@
 import org.apache.maven.archiva.configuration.Configuration;
 import org.apache.maven.archiva.configuration.RepositoryScanningConfiguration;
 import org.apache.maven.archiva.model.ArchivaArtifact;
-import org.apache.archiva.stagerepository.merge.repodetails.SourceAritfacts;
 import org.apache.archiva.metadata.model.ArtifactMetadata;
 import org.apache.archiva.metadata.repository.MetadataResolver;
-//import com.sun.xml.internal.ws.api.wsdl.parser.MetaDataResolver;
+import org.apache.archiva.metadata.repository.MetadataRepository;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -65,7 +64,7 @@
 
     private ArchivaConfiguration configuration;
 
-    private SourceAritfacts sourceArtifacts;
+    private MetadataRepository metadataRepository;
 
     private ArtifactsMerger merger;
 
@@ -76,23 +75,22 @@
         metadataResolver = mock( MetadataResolver.class );
         repositoryFactory = mock( RepositoryContentFactory.class );
         configuration = mock( ArchivaConfiguration.class );
-        sourceArtifacts = mock( SourceAritfacts.class );
-        sourceArtifacts.setRepoId( SOURCE_REPOSITORY_ID );
-        sourceArtifacts.setMetadataResolver( metadataResolver );
+        metadataRepository = mock(MetadataRepository.class);
         setRepositoryConfigurations();
         merger = new ArtifactsMerger( TARGET_REPOSITORY_ID, SOURCE_REPOSITORY_ID );
         merger.setConfiguration( configuration );
         merger.setRepositoryFactory( repositoryFactory );
         merger.setMetadataResolver( metadataResolver );
-        setSourceArtifacts();
+        merger.setMetadataRepository(metadataRepository);
+      setSourceArtifacts();
     }
 
     @Test
     public void setSourceArtifacts()
     {
-        when( sourceArtifacts.getSourceArtifactList() ).thenReturn( getArtifacts() );
-        merger.setSourceArtifacts( sourceArtifacts );
-        verify( sourceArtifacts ).getSourceArtifactList();
+       when(metadataRepository.getArtifactsFrom(SOURCE_REPOSITORY_ID)).thenReturn(getArtifacts());
+        merger.setSourceArtifacts();
+        verify( metadataRepository ).getArtifactsFrom(SOURCE_REPOSITORY_ID);
     }
 
     @Test
@@ -108,18 +106,12 @@
         when( configuration.getConfiguration() ).thenReturn( config );
         when( repositoryFactory.getManagedRepositoryContent( SOURCE_REPOSITORY_ID ) ).thenReturn( sourceRepoContent );
         when( repositoryFactory.getManagedRepositoryContent( TARGET_REPOSITORY_ID ) ).thenReturn( targetRepoContent );
-        when( sourceArtifacts.getSourceArtifactList() ).thenReturn( getArtifacts() );
         when( metadataResolver.getArtifacts( TARGET_REPOSITORY_ID, "archiva", "archiva", "1.2.1" ) ).thenReturn( getMetaDataList() );
         merger.doMerge();
 
-        // verify(configuration);
-        // verify(repositoryFactory);
-        // verify(repositoryFactory);
-        // verify(sourceArtifacts);
         verify( configuration ).getConfiguration();
         verify( repositoryFactory ).getManagedRepositoryContent( SOURCE_REPOSITORY_ID );
         verify( repositoryFactory ).getManagedRepositoryContent( TARGET_REPOSITORY_ID );
-        verify( sourceArtifacts ).getSourceArtifactList();
         verify( metadataResolver ).getArtifacts( TARGET_REPOSITORY_ID, "org.apache.archiva", "archiva", "1.2.2" );
     }
 
