You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ma...@apache.org on 2020/03/08 14:58:20 UTC

[archiva] branch master updated (cffd547 -> c7a9243)

This is an automated email from the ASF dual-hosted git repository.

martin_s pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git.


    from cffd547  Moving methods to content helper and adding unit tests
     new 716087e  Package renaming for maven repository classes
     new e015e1c  Renaming method names
     new 2b4254a  Adding unit tests for maven repository
     new c7a9243  Fixing path matching for repository content

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../repository/AbstractRepositoryPurgeTest.java    |   3 +-
 .../repository/ManagedRepositoryContent.java       | 123 ++++++++----
 .../archiva/repository/RepositoryContent.java      |   2 +-
 .../mock/ManagedRepositoryContentMock.java         |  24 ++-
 .../scanner/mock/ManagedRepositoryContentMock.java |  24 ++-
 .../repository/storage/fs/FilesystemStorage.java   |   2 +-
 .../indexer/maven/MavenIndexManagerTest.java       |   9 +-
 .../mock/ManagedRepositoryContentMock.java         |  24 ++-
 .../{maven2 => maven}/MavenManagedRepository.java  |   4 +-
 .../{maven2 => maven}/MavenRemoteRepository.java   |   2 +-
 .../{maven2 => maven}/MavenRepositoryGroup.java    |   2 +-
 .../{maven2 => maven}/MavenRepositoryProvider.java |   2 +-
 .../{maven2 => maven}/MavenSystemManager.java      |   4 +-
 .../content}/AbstractDefaultRepositoryContent.java |  15 +-
 .../content}/ArtifactExtensionMapping.java         |   9 +-
 .../content}/DefaultPathParser.java                |  12 +-
 .../maven2 => maven/content}/FilenameParser.java   |   5 +-
 .../content}/ManagedDefaultRepositoryContent.java  | 147 +++++++++------
 .../content}/MavenContentHelper.java               | 112 +++++------
 .../content}/MavenContentProvider.java             |   7 +-
 .../content}/MavenRepositoryRequestInfo.java       |   6 +-
 .../content}/RemoteDefaultRepositoryContent.java   |   7 +-
 .../tree}/ArchivaRepositoryConnectorFactory.java   |   5 +-
 .../dependency/tree}/DependencyTreeBuilder.java    |   5 +-
 .../tree}/DependencyTreeBuilderException.java      |   5 +-
 .../tree}/Maven3DependencyTreeBuilder.java         |   7 +-
 .../tree}/TreeDependencyNodeVisitor.java           |   5 +-
 .../maven}/merge/Maven2RepositoryMerger.java       |   7 +-
 .../metadata/storage}/ArtifactMappingProvider.java |   5 +-
 .../ArtifactMetadataVersionComparator.java         |   5 +-
 .../storage}/DefaultArtifactMappingProvider.java   |   5 +-
 .../storage}/DummyLifecycleBindingsInjector.java   |   5 +-
 .../storage}/Maven2RepositoryPathTranslator.java   |   6 +-
 .../metadata/storage}/Maven2RepositoryStorage.java |   8 +-
 .../storage}/MavenArtifactFacetFactory.java        |   5 +-
 .../maven/metadata/storage}/MavenProjectFacet.java |   5 +-
 .../storage}/MavenProjectFacetFactory.java         |   6 +-
 .../metadata/storage}/MavenProjectParent.java      |   5 +-
 .../metadata/storage}/RepositoryModelResolver.java |   7 +-
 .../AbstractRepositoryLayerTestCase.java           |  12 +-
 .../MavenRepositoryProviderTest.java               |   4 +-
 .../repository/{ => maven}/RepositoryURLTest.java  |   5 +-
 .../AbstractManagedRepositoryContentTest.java}     |  34 ++--
 .../content/AbstractRepositoryContentTest.java}    |  29 ++-
 .../content}/ArtifactExtensionMappingTest.java     |   9 +-
 .../content}/DefaultPathParserTest.java            |   6 +-
 .../content}/FilenameParserTest.java               |   6 +-
 .../ManagedDefaultRepositoryContentTest.java       |  12 +-
 .../maven/content/MavenContentHelperTest.java      | 209 +++++++++++++++++++++
 .../content}/MavenRepositoryRequestInfoTest.java   |   9 +-
 .../RemoteDefaultRepositoryContentTest.java        |   9 +-
 .../tree}/DependencyTreeBuilderTestMaven3.java     |   6 +-
 .../maven}/merge/Maven2RepositoryMergerTest.java   |   8 +-
 .../metadata/Maven2RepositoryStorageTest.java      |   7 +-
 .../{ => maven}/metadata/MetadataToolsTest.java    |  12 +-
 .../metadata/RepositoryMetadataReaderTest.java     |   6 +-
 .../metadata/RepositoryMetadataWriterTest.java     |   5 +-
 ...sitoryMetadataResolverMRM1411RepoGroupTest.java |   5 +-
 ...aven2RepositoryMetadataResolverMRM1411Test.java |   5 +-
 ...positoryMetadataResolverManagedReleaseTest.java |   5 +-
 ...ositoryMetadataResolverManagedSnapshotTest.java |   5 +-
 .../Maven2RepositoryMetadataResolverTest.java      |   5 +-
 .../MavenRepositoryMetadataReaderTest.java         |   5 +-
 .../maven/metadata/storage}/MockWagon.java         |   5 +-
 .../metadata/storage/mock}/MockConfiguration.java  |   2 +-
 .../mock/ArchivaIndexManagerMock.java              |   5 +-
 .../mock/MavenIndexContextMock.java                |   5 +-
 .../mock}/MockRepositoryArchivaTaskScheduler.java  |   5 +-
 .../{ => maven/mock}/RepositoryRegistryMock.java   |  13 +-
 .../maven/mock}/TestMetadataResolver.java          |   8 +-
 .../maven/mock}/configuration/MockRepoAdmin.java   |   9 +-
 .../mock}/configuration/StubConfiguration.java     |  10 +-
 .../mock}/configuration/TestConfiguration.java     |   9 +-
 .../src/test/resources/spring-context-merge.xml    |   2 +-
 .../spring-context-metadata-tools-test.xml         |   2 +-
 .../test/resources/spring-context-no-mock-conf.xml |   2 +-
 .../src/test/resources/spring-context-storage.xml  |   2 +-
 .../rest/services/DefaultBrowseService.java        |   6 +-
 .../webdav/ArchivaDavResourceFactoryTest.java      |   6 +-
 .../org/apache/archiva/webdav/DavResourceTest.java |   2 +-
 80 files changed, 746 insertions(+), 406 deletions(-)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/{maven2 => maven}/MavenManagedRepository.java (97%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/{maven2 => maven}/MavenRemoteRepository.java (99%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/{maven2 => maven}/MavenRepositoryGroup.java (98%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/{maven2 => maven}/MavenRepositoryProvider.java (99%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/{maven2 => maven}/MavenSystemManager.java (97%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/{content/maven2 => maven/content}/AbstractDefaultRepositoryContent.java (96%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/{content/maven2 => maven/content}/ArtifactExtensionMapping.java (89%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/{content/maven2 => maven/content}/DefaultPathParser.java (90%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/{content/maven2 => maven/content}/FilenameParser.java (98%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/{content/maven2 => maven/content}/ManagedDefaultRepositoryContent.java (96%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/{content/maven2 => maven/content}/MavenContentHelper.java (74%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/{content/maven2 => maven/content}/MavenContentProvider.java (96%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/{content/maven2 => maven/content}/MavenRepositoryRequestInfo.java (98%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/{content/maven2 => maven/content}/RemoteDefaultRepositoryContent.java (93%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/{dependency/tree/maven2 => repository/maven/dependency/tree}/ArchivaRepositoryConnectorFactory.java (96%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/{dependency/tree/maven2 => repository/maven/dependency/tree}/DependencyTreeBuilder.java (92%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/{dependency/tree/maven2 => repository/maven/dependency/tree}/DependencyTreeBuilderException.java (90%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/{dependency/tree/maven2 => repository/maven/dependency/tree}/Maven3DependencyTreeBuilder.java (98%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/{dependency/tree/maven2 => repository/maven/dependency/tree}/TreeDependencyNodeVisitor.java (96%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/{stagerepository => repository/maven}/merge/Maven2RepositoryMerger.java (98%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/{metadata/repository/storage/maven2 => repository/maven/metadata/storage}/ArtifactMappingProvider.java (89%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/{metadata/repository/storage/maven2 => repository/maven/metadata/storage}/ArtifactMetadataVersionComparator.java (93%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/{metadata/repository/storage/maven2 => repository/maven/metadata/storage}/DefaultArtifactMappingProvider.java (96%)
 copy archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/{metadata/repository/storage/maven2 => repository/maven/metadata/storage}/DummyLifecycleBindingsInjector.java (92%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/{metadata/repository/storage/maven2 => repository/maven/metadata/storage}/Maven2RepositoryPathTranslator.java (98%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/{metadata/repository/storage/maven2 => repository/maven/metadata/storage}/Maven2RepositoryStorage.java (99%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/{metadata/repository/storage/maven2 => repository/maven/metadata/storage}/MavenArtifactFacetFactory.java (93%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/{metadata/repository/storage/maven2 => repository/maven/metadata/storage}/MavenProjectFacet.java (97%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/{metadata/repository/storage/maven2 => repository/maven/metadata/storage}/MavenProjectFacetFactory.java (89%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/{metadata/repository/storage/maven2 => repository/maven/metadata/storage}/MavenProjectParent.java (92%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/{metadata/repository/storage/maven2 => repository/maven/metadata/storage}/RepositoryModelResolver.java (99%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/{ => maven}/AbstractRepositoryLayerTestCase.java (89%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/{maven2 => maven}/MavenRepositoryProviderTest.java (99%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/{ => maven}/RepositoryURLTest.java (97%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/{main/java/org/apache/archiva/metadata/repository/storage/maven2/DummyLifecycleBindingsInjector.java => test/java/org/apache/archiva/repository/maven/content/AbstractManagedRepositoryContentTest.java} (51%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/{metadata/repository/storage/maven2/AbstractDefaultRepositoryContentTestCase.java => repository/maven/content/AbstractRepositoryContentTest.java} (95%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/{content/maven2 => maven/content}/ArtifactExtensionMappingTest.java (91%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/{content/maven2 => maven/content}/DefaultPathParserTest.java (99%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/{content/maven2 => maven/content}/FilenameParserTest.java (97%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/{metadata/repository/storage/maven2 => repository/maven/content}/ManagedDefaultRepositoryContentTest.java (97%)
 create mode 100644 archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/MavenContentHelperTest.java
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/{content/maven2 => maven/content}/MavenRepositoryRequestInfoTest.java (98%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/{metadata/repository/storage/maven2 => repository/maven/content}/RemoteDefaultRepositoryContentTest.java (91%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/{dependency/tree/maven2 => repository/maven/dependency/tree}/DependencyTreeBuilderTestMaven3.java (96%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/{stagerepository => repository/maven}/merge/Maven2RepositoryMergerTest.java (97%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/{ => maven}/metadata/Maven2RepositoryStorageTest.java (94%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/{ => maven}/metadata/MetadataToolsTest.java (98%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/{ => maven}/metadata/RepositoryMetadataReaderTest.java (95%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/{ => maven}/metadata/RepositoryMetadataWriterTest.java (96%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/{metadata/repository/storage/maven2 => repository/maven/metadata/storage}/Maven2RepositoryMetadataResolverMRM1411RepoGroupTest.java (99%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/{metadata/repository/storage/maven2 => repository/maven/metadata/storage}/Maven2RepositoryMetadataResolverMRM1411Test.java (99%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/{metadata/repository/storage/maven2 => repository/maven/metadata/storage}/Maven2RepositoryMetadataResolverManagedReleaseTest.java (97%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/{metadata/repository/storage/maven2 => repository/maven/metadata/storage}/Maven2RepositoryMetadataResolverManagedSnapshotTest.java (97%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/{metadata/repository/storage/maven2 => repository/maven/metadata/storage}/Maven2RepositoryMetadataResolverTest.java (99%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/{metadata/repository/storage/maven2 => repository/maven/metadata/storage}/MavenRepositoryMetadataReaderTest.java (97%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/{metadata/repository/storage/maven2 => repository/maven/metadata/storage}/MockWagon.java (98%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/{metadata/repository/storage/maven2/conf => repository/maven/metadata/storage/mock}/MockConfiguration.java (98%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/{index => maven}/mock/ArchivaIndexManagerMock.java (99%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/{index => maven}/mock/MavenIndexContextMock.java (97%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/{metadata/repository => repository/maven/mock}/MockRepositoryArchivaTaskScheduler.java (94%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/{ => maven/mock}/RepositoryRegistryMock.java (81%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/{metadata/repository => repository/maven/mock}/TestMetadataResolver.java (91%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/{ => repository/maven/mock}/configuration/MockRepoAdmin.java (97%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/{ => repository/maven/mock}/configuration/StubConfiguration.java (89%)
 rename archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/{ => repository/maven/mock}/configuration/TestConfiguration.java (90%)


[archiva] 02/04: Renaming method names

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git

commit e015e1cd149264deb3a584010daa854357f19929
Author: Martin Stockhammer <ma...@apache.org>
AuthorDate: Sat Mar 7 17:13:03 2020 +0100

    Renaming method names
---
 .../repository/ManagedRepositoryContent.java       | 25 +++++++++++++++++++---
 .../mock/ManagedRepositoryContentMock.java         |  6 +++---
 .../scanner/mock/ManagedRepositoryContentMock.java |  6 +++---
 .../mock/ManagedRepositoryContentMock.java         |  6 +++---
 .../content/ManagedDefaultRepositoryContent.java   | 24 ++++++++++++++++++---
 5 files changed, 52 insertions(+), 15 deletions(-)

diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java
index 6811bb2..a4565c4 100644
--- a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java
+++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java
@@ -204,9 +204,10 @@ public interface ManagedRepositoryContent extends RepositoryContent
      * given namespace.
      *
      * @param namespace the namespace, which is the parent namespace
+     * @param recurse <code>true</code>, if all sub namespaces should be searched too, otherwise <code>false</code>
      * @return a list of artifacts or a empty list, if no artifacts are available for the specified namespace
      */
-    List<? extends Artifact> getArtifactsStartingWith( Namespace namespace ) throws ContentAccessException;
+    List<? extends Artifact> getArtifacts( Namespace namespace, boolean recurse ) throws ContentAccessException;
 
 
     /**
@@ -231,10 +232,11 @@ public interface ManagedRepositoryContent extends RepositoryContent
      * make sure, that the stream is closed after using it.
      *
      * @param namespace the namespace from where the artifacts should be returned
+     * @param recurse <code>true</code>, if all sub namespaces should be searched too, otherwise <code>false</code>
      * @return a stream of artifacts. The stream is auto closable. You should always make sure, that the stream
      * is closed after use.
      */
-    Stream<? extends Artifact> getArtifactStreamStartingWith( Namespace namespace ) throws ContentAccessException;
+    Stream<? extends Artifact> getArtifactStream( Namespace namespace, boolean recurse ) throws ContentAccessException;
 
 
     /**
@@ -252,10 +254,27 @@ public interface ManagedRepositoryContent extends RepositoryContent
      * @param destination the coordinates of the destination
      * @throws IllegalArgumentException if the destination is not valid
      */
-    void copyArtifact( Path sourceFile, ItemSelector destination ) throws IllegalArgumentException;
+    void copyArtifact( Path sourceFile, ContentItem destination ) throws IllegalArgumentException;
 
 
+    /**
+     * Returns the item that matches the given path. The item at the path must not exist.
+     *
+     * @param path the path string that points to the item
+     * @return the content item if the path is a valid item path
+     * @throws LayoutException if the path is not valid for the repository layout
+     */
+    ContentItem toItem(String path) throws LayoutException;
+
 
+    /**
+     * Returns the item that matches the given asset path. The asset must not exist.
+     *
+     * @param assetPath the path to the artifact or directory
+     * @return the item, if it is a valid path for the repository layout
+     * @throws LayoutException if the path is not valid for the repository
+     */
+    ContentItem toItem(StorageAsset assetPath) throws LayoutException;
 
 
     /// *****************   End of new generation interface **********************
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
index b5adf5c..cc7aac6 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
@@ -151,7 +151,7 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent
     }
 
     @Override
-    public List<? extends Artifact> getArtifactsStartingWith( Namespace namespace ) throws ContentAccessException
+    public List<? extends Artifact> getArtifacts( Namespace namespace, boolean recurse ) throws ContentAccessException
     {
         return null;
     }
@@ -163,7 +163,7 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent
     }
 
     @Override
-    public Stream<? extends Artifact> getArtifactStreamStartingWith( Namespace namespace ) throws ContentAccessException
+    public Stream<? extends Artifact> getArtifactStream( Namespace namespace, boolean recurse ) throws ContentAccessException
     {
         return null;
     }
@@ -175,7 +175,7 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent
     }
 
     @Override
-    public void copyArtifact( Path sourceFile, ItemSelector destination ) throws IllegalArgumentException
+    public void copyArtifact( Path sourceFile, ContentItem destination ) throws IllegalArgumentException
     {
 
     }
diff --git a/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/mock/ManagedRepositoryContentMock.java b/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/mock/ManagedRepositoryContentMock.java
index 5d2520f..09794b7 100644
--- a/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/mock/ManagedRepositoryContentMock.java
+++ b/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/mock/ManagedRepositoryContentMock.java
@@ -152,7 +152,7 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent
     }
 
     @Override
-    public List<? extends Artifact> getArtifactsStartingWith( Namespace namespace ) throws ContentAccessException
+    public List<? extends Artifact> getArtifacts( Namespace namespace, boolean recurse ) throws ContentAccessException
     {
         return null;
     }
@@ -164,7 +164,7 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent
     }
 
     @Override
-    public Stream<? extends Artifact> getArtifactStreamStartingWith( Namespace namespace ) throws ContentAccessException
+    public Stream<? extends Artifact> getArtifactStream( Namespace namespace, boolean recurse ) throws ContentAccessException
     {
         return null;
     }
@@ -176,7 +176,7 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent
     }
 
     @Override
-    public void copyArtifact( Path sourceFile, ItemSelector destination ) throws IllegalArgumentException
+    public void copyArtifact( Path sourceFile, ContentItem destination ) throws IllegalArgumentException
     {
 
     }
diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
index 5314c18..fd655b8 100644
--- a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
+++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
@@ -156,7 +156,7 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent
     }
 
     @Override
-    public List<? extends Artifact> getArtifactsStartingWith( Namespace namespace ) throws ContentAccessException
+    public List<? extends Artifact> getArtifacts( Namespace namespace, boolean recurse ) throws ContentAccessException
     {
         return null;
     }
@@ -168,7 +168,7 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent
     }
 
     @Override
-    public Stream<? extends Artifact> getArtifactStreamStartingWith( Namespace namespace ) throws ContentAccessException
+    public Stream<? extends Artifact> getArtifactStream( Namespace namespace, boolean recurse ) throws ContentAccessException
     {
         return null;
     }
@@ -180,7 +180,7 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent
     }
 
     @Override
-    public void copyArtifact( Path sourceFile, ItemSelector destination ) throws IllegalArgumentException
+    public void copyArtifact( Path sourceFile, ContentItem destination ) throws IllegalArgumentException
     {
 
     }
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
index e77ba3f..e82ce34 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
@@ -600,7 +600,7 @@ public class ManagedDefaultRepositoryContent
         TBD
      */
     @Override
-    public List<? extends Artifact> getArtifactsStartingWith( Namespace namespace )
+    public List<? extends Artifact> getArtifacts( Namespace namespace, boolean recurse )
     {
         return null;
     }
@@ -618,7 +618,7 @@ public class ManagedDefaultRepositoryContent
         TBD
      */
     @Override
-    public Stream<? extends Artifact> getArtifactStreamStartingWith( Namespace namespace )
+    public Stream<? extends Artifact> getArtifactStream( Namespace namespace, boolean recurse )
     {
         return null;
     }
@@ -636,11 +636,29 @@ public class ManagedDefaultRepositoryContent
         TBD
      */
     @Override
-    public void copyArtifact( Path sourceFile, ItemSelector destination ) throws IllegalArgumentException
+    public void copyArtifact( Path sourceFile, ContentItem destination ) throws IllegalArgumentException
     {
 
     }
 
+    /**
+     * TBD
+     * @param path the path string that points to the item
+     * @return
+     * @throws LayoutException
+     */
+    @Override
+    public ContentItem toItem( String path ) throws LayoutException
+    {
+        return getItemFromPath( getAssetByPath( path ) );
+    }
+
+    @Override
+    public ContentItem toItem( StorageAsset assetPath ) throws LayoutException
+    {
+        return getItemFromPath( assetPath );
+    }
+
     @Override
     public void deleteVersion( VersionedReference ref ) throws ContentNotFoundException, ContentAccessException
     {


[archiva] 01/04: Package renaming for maven repository classes

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git

commit 716087e2bfcb607ebeb05c89bf4a7753be13ac6e
Author: Martin Stockhammer <ma...@apache.org>
AuthorDate: Sat Mar 7 16:57:37 2020 +0100

    Package renaming for maven repository classes
---
 .../repository/AbstractRepositoryPurgeTest.java    |  3 +-
 .../repository/ManagedRepositoryContent.java       | 86 ++++++++++++----------
 .../archiva/repository/RepositoryContent.java      |  2 +-
 .../indexer/maven/MavenIndexManagerTest.java       |  9 +--
 .../{maven2 => maven}/MavenManagedRepository.java  |  4 +-
 .../{maven2 => maven}/MavenRemoteRepository.java   |  2 +-
 .../{maven2 => maven}/MavenRepositoryGroup.java    |  2 +-
 .../{maven2 => maven}/MavenRepositoryProvider.java |  2 +-
 .../{maven2 => maven}/MavenSystemManager.java      |  4 +-
 .../content}/AbstractDefaultRepositoryContent.java | 10 +--
 .../content}/ArtifactExtensionMapping.java         |  9 +--
 .../content}/DefaultPathParser.java                | 12 ++-
 .../maven2 => maven/content}/FilenameParser.java   |  5 +-
 .../content}/ManagedDefaultRepositoryContent.java  |  9 +--
 .../content}/MavenContentHelper.java               |  3 +-
 .../content}/MavenContentProvider.java             |  7 +-
 .../content}/MavenRepositoryRequestInfo.java       |  6 +-
 .../content}/RemoteDefaultRepositoryContent.java   |  7 +-
 .../tree}/ArchivaRepositoryConnectorFactory.java   |  5 +-
 .../dependency/tree}/DependencyTreeBuilder.java    |  5 +-
 .../tree}/DependencyTreeBuilderException.java      |  5 +-
 .../tree}/Maven3DependencyTreeBuilder.java         |  7 +-
 .../tree}/TreeDependencyNodeVisitor.java           |  5 +-
 .../maven}/merge/Maven2RepositoryMerger.java       |  7 +-
 .../metadata/storage}/ArtifactMappingProvider.java |  5 +-
 .../ArtifactMetadataVersionComparator.java         |  5 +-
 .../storage}/DefaultArtifactMappingProvider.java   |  5 +-
 .../storage}/DummyLifecycleBindingsInjector.java   |  5 +-
 .../storage}/Maven2RepositoryPathTranslator.java   |  6 +-
 .../metadata/storage}/Maven2RepositoryStorage.java |  8 +-
 .../storage}/MavenArtifactFacetFactory.java        |  5 +-
 .../maven/metadata/storage}/MavenProjectFacet.java |  5 +-
 .../storage}/MavenProjectFacetFactory.java         |  6 +-
 .../metadata/storage}/MavenProjectParent.java      |  5 +-
 .../metadata/storage}/RepositoryModelResolver.java |  7 +-
 .../AbstractRepositoryLayerTestCase.java           | 12 +--
 .../MavenRepositoryProviderTest.java               |  4 +-
 .../repository/{ => maven}/RepositoryURLTest.java  |  5 +-
 .../AbstractDefaultRepositoryContentTestCase.java  |  7 +-
 .../content}/ArtifactExtensionMappingTest.java     |  9 +--
 .../content}/DefaultPathParserTest.java            |  6 +-
 .../content}/FilenameParserTest.java               |  6 +-
 .../ManagedDefaultRepositoryContentTest.java       | 10 +--
 .../content}/MavenRepositoryRequestInfoTest.java   |  9 +--
 .../RemoteDefaultRepositoryContentTest.java        |  9 ++-
 .../tree}/DependencyTreeBuilderTestMaven3.java     |  6 +-
 .../maven}/merge/Maven2RepositoryMergerTest.java   |  8 +-
 .../metadata/Maven2RepositoryStorageTest.java      |  7 +-
 .../{ => maven}/metadata/MetadataToolsTest.java    | 12 +--
 .../metadata/RepositoryMetadataReaderTest.java     |  6 +-
 .../metadata/RepositoryMetadataWriterTest.java     |  5 +-
 ...sitoryMetadataResolverMRM1411RepoGroupTest.java |  5 +-
 ...aven2RepositoryMetadataResolverMRM1411Test.java |  5 +-
 ...positoryMetadataResolverManagedReleaseTest.java |  5 +-
 ...ositoryMetadataResolverManagedSnapshotTest.java |  5 +-
 .../Maven2RepositoryMetadataResolverTest.java      |  5 +-
 .../MavenRepositoryMetadataReaderTest.java         |  5 +-
 .../maven/metadata/storage}/MockWagon.java         |  5 +-
 .../metadata/storage/mock}/MockConfiguration.java  |  2 +-
 .../mock/ArchivaIndexManagerMock.java              |  5 +-
 .../mock/MavenIndexContextMock.java                |  5 +-
 .../mock}/MockRepositoryArchivaTaskScheduler.java  |  5 +-
 .../{ => maven/mock}/RepositoryRegistryMock.java   | 13 ++--
 .../maven/mock}/TestMetadataResolver.java          |  8 +-
 .../maven/mock}/configuration/MockRepoAdmin.java   |  9 ++-
 .../mock}/configuration/StubConfiguration.java     | 10 ++-
 .../mock}/configuration/TestConfiguration.java     |  9 ++-
 .../src/test/resources/spring-context-merge.xml    |  2 +-
 .../spring-context-metadata-tools-test.xml         |  2 +-
 .../test/resources/spring-context-no-mock-conf.xml |  2 +-
 .../src/test/resources/spring-context-storage.xml  |  2 +-
 .../rest/services/DefaultBrowseService.java        |  6 +-
 .../webdav/ArchivaDavResourceFactoryTest.java      |  6 +-
 .../org/apache/archiva/webdav/DavResourceTest.java |  2 +-
 74 files changed, 249 insertions(+), 273 deletions(-)

diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java
index 4632dbb..d860f7c 100644
--- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java
+++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/test/java/org/apache/archiva/consumers/core/repository/AbstractRepositoryPurgeTest.java
@@ -23,7 +23,7 @@ import org.apache.archiva.metadata.model.ArtifactMetadata;
 import org.apache.archiva.metadata.repository.MetadataRepository;
 import org.apache.archiva.metadata.repository.RepositorySession;
 import org.apache.archiva.metadata.repository.RepositorySessionFactory;
-import org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryPathTranslator;
+import org.apache.archiva.repository.maven.metadata.storage.Maven2RepositoryPathTranslator;
 import org.apache.archiva.repository.base.BasicManagedRepository;
 import org.apache.archiva.repository.ManagedRepositoryContent;
 import org.apache.archiva.repository.ReleaseScheme;
@@ -44,7 +44,6 @@ import org.springframework.test.context.ContextConfiguration;
 
 import javax.inject.Inject;
 import java.io.IOException;
-import java.net.URI;
 import java.net.URISyntaxException;
 import java.nio.file.Files;
 import java.nio.file.Path;
diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java
index 7eb8da4..6811bb2 100644
--- a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java
+++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java
@@ -46,43 +46,7 @@ import java.util.stream.Stream;
 public interface ManagedRepositoryContent extends RepositoryContent
 {
 
-
-    /**
-     * Returns the version reference for the given coordinates.
-     * @param groupId the group id
-     * @param artifactId the artifact id
-     * @param version the version number
-     * @return a version reference
-     */
-    VersionedReference toVersion( String groupId, String artifactId, String version );
-
-
-    /**
-     * Returns the version reference that represents the generic version, which means that
-     * snapshot versions are converted to <VERSION>-SNAPSHOT
-     * @param artifactReference the artifact reference
-     * @return the generic version
-     */
-    VersionedReference toGenericVersion( ArtifactReference artifactReference );
-
-    /**
-     * Return the version reference that matches exactly the version string of the artifact
-     *
-     * @param artifactReference The artifact reference
-     * @return the version reference
-     */
-    VersionedReference toVersion( ArtifactReference artifactReference);
-
-    /**
-     * Returns a artifact reference for the given coordinates.
-     * @param groupId the group id
-     * @param artifactId the artifact id
-     * @param version the version
-     * @param type the type
-     * @param classifier the classifier
-     * @return a artifact reference object
-     */
-    ArtifactReference toArtifact( String groupId, String artifactId, String version, String type, String classifier);
+    /// *****************   New generation interface **********************
 
     /**
      * Removes the specified content item and all content stored under the given item.
@@ -290,6 +254,54 @@ public interface ManagedRepositoryContent extends RepositoryContent
      */
     void copyArtifact( Path sourceFile, ItemSelector destination ) throws IllegalArgumentException;
 
+
+
+
+
+    /// *****************   End of new generation interface **********************
+
+
+
+    /**
+     * Returns the version reference for the given coordinates.
+     * @param groupId the group id
+     * @param artifactId the artifact id
+     * @param version the version number
+     * @return a version reference
+     */
+    VersionedReference toVersion( String groupId, String artifactId, String version );
+
+
+    /**
+     * Returns the version reference that represents the generic version, which means that
+     * snapshot versions are converted to <VERSION>-SNAPSHOT
+     * @param artifactReference the artifact reference
+     * @return the generic version
+     */
+    VersionedReference toGenericVersion( ArtifactReference artifactReference );
+
+    /**
+     * Return the version reference that matches exactly the version string of the artifact
+     *
+     * @param artifactReference The artifact reference
+     * @return the version reference
+     */
+    VersionedReference toVersion( ArtifactReference artifactReference);
+
+    /**
+     * Returns a artifact reference for the given coordinates.
+     * @param groupId the group id
+     * @param artifactId the artifact id
+     * @param version the version
+     * @param type the type
+     * @param classifier the classifier
+     * @return a artifact reference object
+     */
+    ArtifactReference toArtifact( String groupId, String artifactId, String version, String type, String classifier);
+
+
+
+
     /**
      * Delete from the managed repository all files / directories associated with the
      * provided version reference.
diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryContent.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryContent.java
index 9d6869f..4e062fc 100644
--- a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryContent.java
+++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/RepositoryContent.java
@@ -61,7 +61,7 @@ public interface RepositoryContent
     /**
      * Return a item selector that matches the given path. This is kind of reverse method for the {@link #toPath(ItemSelector)}
      * method and fills the selector with the known information. It may not make sense for every path, and the following
-     * must <b>not be true</b>:
+     * must <b>not always be true</b>:
      * <pre>
      *  selector.equals(r.toItemSelector(r.toPath(selector)))
      * </pre>
diff --git a/archiva-modules/archiva-maven/archiva-maven-indexer/src/test/java/org/apache/archiva/indexer/maven/MavenIndexManagerTest.java b/archiva-modules/archiva-maven/archiva-maven-indexer/src/test/java/org/apache/archiva/indexer/maven/MavenIndexManagerTest.java
index 1f8b2dd..ed4f545 100644
--- a/archiva-modules/archiva-maven/archiva-maven-indexer/src/test/java/org/apache/archiva/indexer/maven/MavenIndexManagerTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-indexer/src/test/java/org/apache/archiva/indexer/maven/MavenIndexManagerTest.java
@@ -26,8 +26,8 @@ import org.apache.archiva.repository.base.ArchivaRepositoryRegistry;
 import org.apache.archiva.repository.RepositoryType;
 import org.apache.archiva.repository.features.IndexCreationFeature;
 import org.apache.archiva.repository.features.RemoteIndexFeature;
-import org.apache.archiva.repository.maven2.MavenManagedRepository;
-import org.apache.archiva.repository.maven2.MavenRemoteRepository;
+import org.apache.archiva.repository.maven.MavenManagedRepository;
+import org.apache.archiva.repository.maven.MavenRemoteRepository;
 import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
 import org.apache.maven.index.MAVEN;
 import org.apache.maven.index.QueryCreator;
@@ -45,17 +45,12 @@ import javax.inject.Inject;
 import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.nio.file.DirectoryStream;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.nio.file.attribute.*;
 import java.util.ArrayList;
-import java.util.Collections;
-import java.util.EnumSet;
 import java.util.List;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 import static org.junit.Assert.*;
 
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenManagedRepository.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenManagedRepository.java
similarity index 97%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenManagedRepository.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenManagedRepository.java
index 51467e6..6106f56 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenManagedRepository.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenManagedRepository.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.maven2;
+package org.apache.archiva.repository.maven;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -25,7 +25,7 @@ import org.apache.archiva.indexer.ArchivaIndexingContext;
 import org.apache.archiva.repository.*;
 import org.apache.archiva.repository.base.AbstractManagedRepository;
 import org.apache.archiva.repository.storage.fs.FilesystemStorage;
-import org.apache.archiva.repository.content.maven2.MavenRepositoryRequestInfo;
+import org.apache.archiva.repository.maven.content.MavenRepositoryRequestInfo;
 import org.apache.archiva.repository.features.ArtifactCleanupFeature;
 import org.apache.archiva.repository.features.IndexCreationFeature;
 import org.apache.archiva.repository.features.RepositoryFeature;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRemoteRepository.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenRemoteRepository.java
similarity index 99%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRemoteRepository.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenRemoteRepository.java
index 74d82ae..c8dbc97 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRemoteRepository.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenRemoteRepository.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.maven2;
+package org.apache.archiva.repository.maven;
 
 import org.apache.archiva.common.filelock.DefaultFileLockManager;
 import org.apache.archiva.common.filelock.FileLockManager;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRepositoryGroup.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenRepositoryGroup.java
similarity index 98%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRepositoryGroup.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenRepositoryGroup.java
index ba88a83..06a22ac 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRepositoryGroup.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenRepositoryGroup.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.maven2;
+package org.apache.archiva.repository.maven;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRepositoryProvider.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenRepositoryProvider.java
similarity index 99%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRepositoryProvider.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenRepositoryProvider.java
index 7ca8e06..801cd87 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenRepositoryProvider.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenRepositoryProvider.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.maven2;
+package org.apache.archiva.repository.maven;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenSystemManager.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenSystemManager.java
similarity index 97%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenSystemManager.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenSystemManager.java
index 55b3fb6..76d47cd 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven2/MavenSystemManager.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/MavenSystemManager.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.maven2;
+package org.apache.archiva.repository.maven;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -19,7 +19,7 @@ package org.apache.archiva.repository.maven2;
  * under the License.
  */
 
-import org.apache.archiva.dependency.tree.maven2.ArchivaRepositoryConnectorFactory;
+import org.apache.archiva.repository.maven.dependency.tree.ArchivaRepositoryConnectorFactory;
 import org.apache.maven.repository.internal.DefaultArtifactDescriptorReader;
 import org.apache.maven.repository.internal.DefaultVersionRangeResolver;
 import org.apache.maven.repository.internal.DefaultVersionResolver;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/AbstractDefaultRepositoryContent.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/AbstractDefaultRepositoryContent.java
similarity index 96%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/AbstractDefaultRepositoryContent.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/AbstractDefaultRepositoryContent.java
index 1e1381c..e2532e1 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/AbstractDefaultRepositoryContent.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/AbstractDefaultRepositoryContent.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.content.maven2;
+package org.apache.archiva.repository.maven.content;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.repository.content.maven2;
  * "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
- *
+ * 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
@@ -21,8 +20,8 @@ package org.apache.archiva.repository.content.maven2;
 
 import org.apache.archiva.common.utils.VersionUtil;
 import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
-import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider;
-import org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryPathTranslator;
+import org.apache.archiva.repository.maven.metadata.storage.ArtifactMappingProvider;
+import org.apache.archiva.repository.maven.metadata.storage.Maven2RepositoryPathTranslator;
 import org.apache.archiva.model.ArchivaArtifact;
 import org.apache.archiva.model.ArtifactReference;
 import org.apache.archiva.model.ProjectReference;
@@ -31,7 +30,6 @@ import org.apache.archiva.repository.LayoutException;
 import org.apache.archiva.repository.RepositoryContent;
 import org.apache.archiva.repository.content.ItemSelector;
 import org.apache.archiva.repository.content.PathParser;
-import org.apache.archiva.repository.content.Version;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/ArtifactExtensionMapping.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ArtifactExtensionMapping.java
similarity index 89%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/ArtifactExtensionMapping.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ArtifactExtensionMapping.java
index d863a33..2b73aa2 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/ArtifactExtensionMapping.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ArtifactExtensionMapping.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.content.maven2;
+package org.apache.archiva.repository.maven.content;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.repository.content.maven2;
  * "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
- *
+ * 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
@@ -19,8 +18,8 @@ package org.apache.archiva.repository.content.maven2;
  * under the License.
  */
 
-import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider;
-import org.apache.archiva.metadata.repository.storage.maven2.DefaultArtifactMappingProvider;
+import org.apache.archiva.repository.maven.metadata.storage.ArtifactMappingProvider;
+import org.apache.archiva.repository.maven.metadata.storage.DefaultArtifactMappingProvider;
 
 /**
  * ArtifactExtensionMapping
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/DefaultPathParser.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/DefaultPathParser.java
similarity index 90%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/DefaultPathParser.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/DefaultPathParser.java
index 98cc529..d637911 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/DefaultPathParser.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/DefaultPathParser.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.content.maven2;
+package org.apache.archiva.repository.maven.content;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.repository.content.maven2;
  * "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
- *
+ * 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
@@ -20,12 +19,11 @@ package org.apache.archiva.repository.content.maven2;
  */
 
 import org.apache.archiva.metadata.model.ArtifactMetadata;
-import org.apache.archiva.metadata.model.FacetedMetadata;
 import org.apache.archiva.metadata.model.maven2.MavenArtifactFacet;
 import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
-import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider;
-import org.apache.archiva.metadata.repository.storage.maven2.DefaultArtifactMappingProvider;
-import org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryPathTranslator;
+import org.apache.archiva.repository.maven.metadata.storage.ArtifactMappingProvider;
+import org.apache.archiva.repository.maven.metadata.storage.DefaultArtifactMappingProvider;
+import org.apache.archiva.repository.maven.metadata.storage.Maven2RepositoryPathTranslator;
 import org.apache.archiva.model.ArtifactReference;
 import org.apache.archiva.repository.LayoutException;
 import org.apache.archiva.repository.content.ItemSelector;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/FilenameParser.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/FilenameParser.java
similarity index 98%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/FilenameParser.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/FilenameParser.java
index e408877..31b2fe1 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/FilenameParser.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/FilenameParser.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.content.maven2;
+package org.apache.archiva.repository.maven.content;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.repository.content.maven2;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/ManagedDefaultRepositoryContent.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
similarity index 99%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/ManagedDefaultRepositoryContent.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
index 6506bd1..e77ba3f 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/ManagedDefaultRepositoryContent.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.content.maven2;
+package org.apache.archiva.repository.maven.content;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.repository.content.maven2;
  * "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
- *
+ * 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
@@ -25,8 +24,8 @@ import org.apache.archiva.common.utils.VersionUtil;
 import org.apache.archiva.configuration.FileTypes;
 import org.apache.archiva.maven2.metadata.MavenMetadataReader;
 import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
-import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider;
-import org.apache.archiva.metadata.repository.storage.maven2.DefaultArtifactMappingProvider;
+import org.apache.archiva.repository.maven.metadata.storage.ArtifactMappingProvider;
+import org.apache.archiva.repository.maven.metadata.storage.DefaultArtifactMappingProvider;
 import org.apache.archiva.model.ArchivaArtifact;
 import org.apache.archiva.model.ArtifactReference;
 import org.apache.archiva.model.ProjectReference;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/MavenContentHelper.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/MavenContentHelper.java
similarity index 99%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/MavenContentHelper.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/MavenContentHelper.java
index ec7bb71..73a9120 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/MavenContentHelper.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/MavenContentHelper.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.content.maven2;
+package org.apache.archiva.repository.maven.content;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -10,7 +10,6 @@ package org.apache.archiva.repository.content.maven2;
  * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/MavenContentProvider.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/MavenContentProvider.java
similarity index 96%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/MavenContentProvider.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/MavenContentProvider.java
index fd2e8a6..31121da 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/MavenContentProvider.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/MavenContentProvider.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.content.maven2;
+package org.apache.archiva.repository.maven.content;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.repository.content.maven2;
  * "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
- *
+ * 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
@@ -21,7 +20,7 @@ package org.apache.archiva.repository.content.maven2;
 
 import org.apache.archiva.common.filelock.FileLockManager;
 import org.apache.archiva.configuration.FileTypes;
-import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider;
+import org.apache.archiva.repository.maven.metadata.storage.ArtifactMappingProvider;
 import org.apache.archiva.repository.ManagedRepository;
 import org.apache.archiva.repository.ManagedRepositoryContent;
 import org.apache.archiva.repository.RemoteRepository;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/MavenRepositoryRequestInfo.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/MavenRepositoryRequestInfo.java
similarity index 98%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/MavenRepositoryRequestInfo.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/MavenRepositoryRequestInfo.java
index 495d664..ebd57b3 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/MavenRepositoryRequestInfo.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/MavenRepositoryRequestInfo.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.content.maven2;
+package org.apache.archiva.repository.maven.content;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.repository.content.maven2;
  * "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
- *
+ * 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
@@ -23,6 +22,7 @@ import org.apache.archiva.model.ArtifactReference;
 import org.apache.archiva.repository.*;
 import org.apache.archiva.repository.content.PathParser;
 import org.apache.archiva.repository.features.RepositoryFeature;
+import org.apache.archiva.repository.maven.content.DefaultPathParser;
 import org.apache.archiva.repository.metadata.base.MetadataTools;
 import org.apache.commons.lang3.StringUtils;
 
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/RemoteDefaultRepositoryContent.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/RemoteDefaultRepositoryContent.java
similarity index 93%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/RemoteDefaultRepositoryContent.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/RemoteDefaultRepositoryContent.java
index aeb8492..0e7ce73 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/content/maven2/RemoteDefaultRepositoryContent.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/RemoteDefaultRepositoryContent.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.content.maven2;
+package org.apache.archiva.repository.maven.content;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.repository.content.maven2;
  * "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
- *
+ * 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
@@ -19,7 +18,7 @@ package org.apache.archiva.repository.content.maven2;
  * under the License.
  */
 
-import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider;
+import org.apache.archiva.repository.maven.metadata.storage.ArtifactMappingProvider;
 import org.apache.archiva.model.ArtifactReference;
 import org.apache.archiva.model.RepositoryURL;
 import org.apache.archiva.repository.LayoutException;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/ArchivaRepositoryConnectorFactory.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/dependency/tree/ArchivaRepositoryConnectorFactory.java
similarity index 96%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/ArchivaRepositoryConnectorFactory.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/dependency/tree/ArchivaRepositoryConnectorFactory.java
index f099292..f670a65 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/ArchivaRepositoryConnectorFactory.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/dependency/tree/ArchivaRepositoryConnectorFactory.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.dependency.tree.maven2;
+package org.apache.archiva.repository.maven.dependency.tree;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -8,8 +8,7 @@ package org.apache.archiva.dependency.tree.maven2;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/DependencyTreeBuilder.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/dependency/tree/DependencyTreeBuilder.java
similarity index 92%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/DependencyTreeBuilder.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/dependency/tree/DependencyTreeBuilder.java
index 9f3bb7f..bd7331e 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/DependencyTreeBuilder.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/dependency/tree/DependencyTreeBuilder.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.dependency.tree.maven2;
+package org.apache.archiva.repository.maven.dependency.tree;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -8,8 +8,7 @@ package org.apache.archiva.dependency.tree.maven2;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/DependencyTreeBuilderException.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/dependency/tree/DependencyTreeBuilderException.java
similarity index 90%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/DependencyTreeBuilderException.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/dependency/tree/DependencyTreeBuilderException.java
index ea71d78..527b524 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/DependencyTreeBuilderException.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/dependency/tree/DependencyTreeBuilderException.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.dependency.tree.maven2;
+package org.apache.archiva.repository.maven.dependency.tree;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -8,8 +8,7 @@ package org.apache.archiva.dependency.tree.maven2;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/Maven3DependencyTreeBuilder.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/dependency/tree/Maven3DependencyTreeBuilder.java
similarity index 98%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/Maven3DependencyTreeBuilder.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/dependency/tree/Maven3DependencyTreeBuilder.java
index eb490a2..696afd7 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/Maven3DependencyTreeBuilder.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/dependency/tree/Maven3DependencyTreeBuilder.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.dependency.tree.maven2;
+package org.apache.archiva.repository.maven.dependency.tree;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -8,8 +8,7 @@ package org.apache.archiva.dependency.tree.maven2;
  * "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
- *
+ * 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
@@ -34,7 +33,7 @@ import org.apache.archiva.model.ArchivaRepositoryMetadata;
 import org.apache.archiva.repository.ManagedRepository;
 import org.apache.archiva.repository.RemoteRepository;
 import org.apache.archiva.repository.RepositoryRegistry;
-import org.apache.archiva.repository.maven2.MavenSystemManager;
+import org.apache.archiva.repository.maven.MavenSystemManager;
 import org.apache.archiva.repository.metadata.RepositoryMetadataException;
 import org.apache.archiva.repository.metadata.base.MetadataTools;
 import org.apache.archiva.repository.storage.StorageAsset;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/TreeDependencyNodeVisitor.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/dependency/tree/TreeDependencyNodeVisitor.java
similarity index 96%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/TreeDependencyNodeVisitor.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/dependency/tree/TreeDependencyNodeVisitor.java
index a53ee67..952fcfb 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/TreeDependencyNodeVisitor.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/dependency/tree/TreeDependencyNodeVisitor.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.dependency.tree.maven2;
+package org.apache.archiva.repository.maven.dependency.tree;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -8,8 +8,7 @@ package org.apache.archiva.dependency.tree.maven2;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/stagerepository/merge/Maven2RepositoryMerger.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/merge/Maven2RepositoryMerger.java
similarity index 98%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/stagerepository/merge/Maven2RepositoryMerger.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/merge/Maven2RepositoryMerger.java
index 77541ee..3224156 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/stagerepository/merge/Maven2RepositoryMerger.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/merge/Maven2RepositoryMerger.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.stagerepository.merge;
+package org.apache.archiva.repository.maven.merge;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.stagerepository.merge;
  * "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
- *
+ * 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
@@ -41,6 +40,8 @@ import org.apache.archiva.repository.metadata.base.RepositoryMetadataWriter;
 import org.apache.archiva.repository.storage.fs.FilesystemAsset;
 import org.apache.archiva.repository.storage.fs.FilesystemStorage;
 import org.apache.archiva.repository.storage.StorageAsset;
+import org.apache.archiva.stagerepository.merge.RepositoryMerger;
+import org.apache.archiva.stagerepository.merge.RepositoryMergerException;
 import org.apache.commons.io.FileUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/ArtifactMappingProvider.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/ArtifactMappingProvider.java
similarity index 89%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/ArtifactMappingProvider.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/ArtifactMappingProvider.java
index 6d2335e..96ace1c 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/ArtifactMappingProvider.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/ArtifactMappingProvider.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2;
+package org.apache.archiva.repository.maven.metadata.storage;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/ArtifactMetadataVersionComparator.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/ArtifactMetadataVersionComparator.java
similarity index 93%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/ArtifactMetadataVersionComparator.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/ArtifactMetadataVersionComparator.java
index 6e171ed..d8e044e 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/ArtifactMetadataVersionComparator.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/ArtifactMetadataVersionComparator.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2;
+package org.apache.archiva.repository.maven.metadata.storage;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -8,8 +8,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/DefaultArtifactMappingProvider.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/DefaultArtifactMappingProvider.java
similarity index 96%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/DefaultArtifactMappingProvider.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/DefaultArtifactMappingProvider.java
index 01ea559..a0c51ef 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/DefaultArtifactMappingProvider.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/DefaultArtifactMappingProvider.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2;
+package org.apache.archiva.repository.maven.metadata.storage;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/DummyLifecycleBindingsInjector.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/DummyLifecycleBindingsInjector.java
similarity index 92%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/DummyLifecycleBindingsInjector.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/DummyLifecycleBindingsInjector.java
index e0cf711..a398d5e 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/DummyLifecycleBindingsInjector.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/DummyLifecycleBindingsInjector.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2;
+package org.apache.archiva.repository.maven.metadata.storage;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryPathTranslator.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/Maven2RepositoryPathTranslator.java
similarity index 98%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryPathTranslator.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/Maven2RepositoryPathTranslator.java
index eb72653..d09b6f3 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryPathTranslator.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/Maven2RepositoryPathTranslator.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2;
+package org.apache.archiva.repository.maven.metadata.storage;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * "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
- *
+ * 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
@@ -31,7 +30,6 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
 import javax.inject.Inject;
-import java.nio.file.Path;
 import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/Maven2RepositoryStorage.java
similarity index 99%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/Maven2RepositoryStorage.java
index b3982b5..00e8e07 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/Maven2RepositoryStorage.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2;
+package org.apache.archiva.repository.maven.metadata.storage;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * "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
- *
+ * 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
@@ -41,10 +40,9 @@ import org.apache.archiva.proxy.model.ProxyConnector;
 import org.apache.archiva.proxy.model.RepositoryProxyHandler;
 import org.apache.archiva.repository.*;
 import org.apache.archiva.repository.content.PathParser;
-import org.apache.archiva.repository.maven2.MavenSystemManager;
+import org.apache.archiva.repository.maven.MavenSystemManager;
 import org.apache.archiva.repository.metadata.RepositoryMetadataException;
 import org.apache.archiva.repository.storage.StorageAsset;
-import org.apache.archiva.xml.XMLException;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.maven.model.*;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenArtifactFacetFactory.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/MavenArtifactFacetFactory.java
similarity index 93%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenArtifactFacetFactory.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/MavenArtifactFacetFactory.java
index 29bd3f6..fc73161 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenArtifactFacetFactory.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/MavenArtifactFacetFactory.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2;
+package org.apache.archiva.repository.maven.metadata.storage;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacet.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/MavenProjectFacet.java
similarity index 97%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacet.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/MavenProjectFacet.java
index 190658a..07f9710 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacet.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/MavenProjectFacet.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2;
+package org.apache.archiva.repository.maven.metadata.storage;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacetFactory.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/MavenProjectFacetFactory.java
similarity index 89%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacetFactory.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/MavenProjectFacetFactory.java
index a3b68c6..bde26a0 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectFacetFactory.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/MavenProjectFacetFactory.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2;
+package org.apache.archiva.repository.maven.metadata.storage;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * "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
- *
+ * 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
@@ -19,7 +18,6 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * under the License.
  */
 
-import org.apache.archiva.metadata.model.MetadataFacetFactory;
 import org.apache.archiva.metadata.model.facets.AbstractMetadataFacetFactory;
 import org.springframework.stereotype.Service;
 
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectParent.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/MavenProjectParent.java
similarity index 92%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectParent.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/MavenProjectParent.java
index d9757d7..e6ad491 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenProjectParent.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/MavenProjectParent.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2;
+package org.apache.archiva.repository.maven.metadata.storage;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/RepositoryModelResolver.java
similarity index 99%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/RepositoryModelResolver.java
index 8655593..a8647ac 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/metadata/storage/RepositoryModelResolver.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2;
+package org.apache.archiva.repository.maven.metadata.storage;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * "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
- *
+ * 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
@@ -31,7 +30,7 @@ import org.apache.archiva.proxy.model.NetworkProxy;
 import org.apache.archiva.repository.ManagedRepository;
 import org.apache.archiva.repository.RemoteRepository;
 import org.apache.archiva.repository.RepositoryCredentials;
-import org.apache.archiva.repository.maven2.MavenSystemManager;
+import org.apache.archiva.repository.maven.MavenSystemManager;
 import org.apache.archiva.repository.metadata.RepositoryMetadataException;
 import org.apache.archiva.repository.storage.StorageAsset;
 import org.apache.commons.lang3.StringUtils;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/AbstractRepositoryLayerTestCase.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/AbstractRepositoryLayerTestCase.java
similarity index 89%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/AbstractRepositoryLayerTestCase.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/AbstractRepositoryLayerTestCase.java
index 2dce570..028b726 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/AbstractRepositoryLayerTestCase.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/AbstractRepositoryLayerTestCase.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository;
+package org.apache.archiva.repository.maven;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.repository;
  * "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
- *
+ * 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
@@ -19,8 +18,11 @@ package org.apache.archiva.repository;
  * under the License.
  */
 
-import org.apache.archiva.repository.maven2.MavenManagedRepository;
-import org.apache.archiva.repository.maven2.MavenRemoteRepository;
+import org.apache.archiva.repository.ManagedRepositoryContent;
+import org.apache.archiva.repository.RemoteRepositoryContent;
+import org.apache.archiva.repository.RepositoryContentProvider;
+import org.apache.archiva.repository.maven.MavenManagedRepository;
+import org.apache.archiva.repository.maven.MavenRemoteRepository;
 import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
 import org.junit.Rule;
 import org.junit.rules.TestName;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven2/MavenRepositoryProviderTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/MavenRepositoryProviderTest.java
similarity index 99%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven2/MavenRepositoryProviderTest.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/MavenRepositoryProviderTest.java
index 24981a3..d518080 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven2/MavenRepositoryProviderTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/MavenRepositoryProviderTest.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.maven2;
+package org.apache.archiva.repository.maven;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -24,7 +24,7 @@ import org.apache.archiva.configuration.ArchivaRuntimeConfiguration;
 import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
 import org.apache.archiva.configuration.RemoteRepositoryConfiguration;
 import org.apache.archiva.configuration.RepositoryGroupConfiguration;
-import org.apache.archiva.metadata.repository.storage.maven2.conf.MockConfiguration;
+import org.apache.archiva.repository.maven.metadata.storage.mock.MockConfiguration;
 import org.apache.archiva.repository.*;
 import org.apache.archiva.repository.features.ArtifactCleanupFeature;
 import org.apache.archiva.repository.features.IndexCreationFeature;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/RepositoryURLTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/RepositoryURLTest.java
similarity index 97%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/RepositoryURLTest.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/RepositoryURLTest.java
index 08f79ff..d103097 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/RepositoryURLTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/RepositoryURLTest.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository;
+package org.apache.archiva.repository.maven;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.repository;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/AbstractDefaultRepositoryContentTestCase.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/AbstractDefaultRepositoryContentTestCase.java
similarity index 99%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/AbstractDefaultRepositoryContentTestCase.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/AbstractDefaultRepositoryContentTestCase.java
index 3a38765..34210c8 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/AbstractDefaultRepositoryContentTestCase.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/AbstractDefaultRepositoryContentTestCase.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2;
+package org.apache.archiva.repository.maven.content;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * "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
- *
+ * 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
@@ -20,7 +19,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  */
 
 import org.apache.archiva.model.ArtifactReference;
-import org.apache.archiva.repository.AbstractRepositoryLayerTestCase;
+import org.apache.archiva.repository.maven.AbstractRepositoryLayerTestCase;
 import org.apache.archiva.repository.LayoutException;
 import org.apache.archiva.repository.ManagedRepositoryContent;
 import org.apache.archiva.repository.content.Artifact;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/ArtifactExtensionMappingTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ArtifactExtensionMappingTest.java
similarity index 91%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/ArtifactExtensionMappingTest.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ArtifactExtensionMappingTest.java
index ae72a66..631fb1e 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/ArtifactExtensionMappingTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ArtifactExtensionMappingTest.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.content.maven2;
+package org.apache.archiva.repository.maven.content;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.repository.content.maven2;
  * "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
- *
+ * 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
@@ -22,8 +21,8 @@ package org.apache.archiva.repository.content.maven2;
 import org.apache.archiva.metadata.model.ArtifactMetadata;
 import org.apache.archiva.metadata.model.maven2.MavenArtifactFacet;
 import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
-import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider;
-import org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryPathTranslator;
+import org.apache.archiva.repository.maven.metadata.storage.ArtifactMappingProvider;
+import org.apache.archiva.repository.maven.metadata.storage.Maven2RepositoryPathTranslator;
 import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/DefaultPathParserTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/DefaultPathParserTest.java
similarity index 99%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/DefaultPathParserTest.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/DefaultPathParserTest.java
index 9b88a46..8129144 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/DefaultPathParserTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/DefaultPathParserTest.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.content.maven2;
+package org.apache.archiva.repository.maven.content;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.repository.content.maven2;
  * "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
- *
+ * 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
@@ -22,6 +21,7 @@ package org.apache.archiva.repository.content.maven2;
 import org.apache.archiva.model.ArtifactReference;
 import org.apache.archiva.repository.LayoutException;
 import org.apache.archiva.repository.content.PathParser;
+import org.apache.archiva.repository.maven.content.DefaultPathParser;
 import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
 import org.apache.commons.lang3.StringUtils;
 import org.junit.Test;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/FilenameParserTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/FilenameParserTest.java
similarity index 97%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/FilenameParserTest.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/FilenameParserTest.java
index cec3df8..89c09ce 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/FilenameParserTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/FilenameParserTest.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.content.maven2;
+package org.apache.archiva.repository.maven.content;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.repository.content.maven2;
  * "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
- *
+ * 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
@@ -20,6 +19,7 @@ package org.apache.archiva.repository.content.maven2;
  */
 
 import junit.framework.TestCase;
+import org.apache.archiva.repository.maven.content.FilenameParser;
 import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner;
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/ManagedDefaultRepositoryContentTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContentTest.java
similarity index 98%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/ManagedDefaultRepositoryContentTest.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContentTest.java
index c413251..2b48400 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/ManagedDefaultRepositoryContentTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContentTest.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2;
+package org.apache.archiva.repository.maven.content;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * "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
- *
+ * 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
@@ -31,9 +30,8 @@ import org.apache.archiva.repository.EditableManagedRepository;
 import org.apache.archiva.repository.LayoutException;
 import org.apache.archiva.repository.ManagedRepositoryContent;
 import org.apache.archiva.repository.content.ItemSelector;
-import org.apache.archiva.repository.content.maven2.ManagedDefaultRepositoryContent;
-import org.apache.archiva.repository.content.maven2.MavenContentHelper;
-import org.apache.archiva.repository.maven2.MavenManagedRepository;
+import org.apache.archiva.repository.maven.MavenManagedRepository;
+import org.apache.archiva.repository.maven.metadata.storage.ArtifactMappingProvider;
 import org.apache.commons.io.FileUtils;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/MavenRepositoryRequestInfoTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/MavenRepositoryRequestInfoTest.java
similarity index 98%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/MavenRepositoryRequestInfoTest.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/MavenRepositoryRequestInfoTest.java
index eb18334..99c8283 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/content/maven2/MavenRepositoryRequestInfoTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/MavenRepositoryRequestInfoTest.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.content.maven2;
+package org.apache.archiva.repository.maven.content;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.repository.content.maven2;
  * "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
- *
+ * 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
@@ -24,12 +23,12 @@ import org.apache.archiva.common.utils.FileUtils;
 import org.apache.archiva.configuration.ArchivaConfiguration;
 import org.apache.archiva.configuration.FileType;
 import org.apache.archiva.configuration.FileTypes;
-import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider;
+import org.apache.archiva.repository.maven.metadata.storage.ArtifactMappingProvider;
 import org.apache.archiva.model.ArtifactReference;
 import org.apache.archiva.repository.LayoutException;
 import org.apache.archiva.repository.ManagedRepositoryContent;
 import org.apache.archiva.repository.RepositoryContentProvider;
-import org.apache.archiva.repository.maven2.MavenManagedRepository;
+import org.apache.archiva.repository.maven.MavenManagedRepository;
 import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
 import org.apache.commons.lang3.StringUtils;
 import org.junit.Before;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/RemoteDefaultRepositoryContentTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/RemoteDefaultRepositoryContentTest.java
similarity index 87%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/RemoteDefaultRepositoryContentTest.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/RemoteDefaultRepositoryContentTest.java
index 631cc85..ca774f4 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/RemoteDefaultRepositoryContentTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/RemoteDefaultRepositoryContentTest.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2;
+package org.apache.archiva.repository.maven.content;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * "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
- *
+ * 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
@@ -25,7 +24,9 @@ import org.apache.archiva.repository.ManagedRepositoryContent;
 import org.apache.archiva.repository.RemoteRepository;
 import org.apache.archiva.repository.RemoteRepositoryContent;
 import org.apache.archiva.repository.content.ItemSelector;
-import org.apache.archiva.repository.content.maven2.RemoteDefaultRepositoryContent;
+import org.apache.archiva.repository.maven.content.AbstractDefaultRepositoryContentTestCase;
+import org.apache.archiva.repository.maven.content.RemoteDefaultRepositoryContent;
+import org.apache.archiva.repository.maven.metadata.storage.ArtifactMappingProvider;
 import org.junit.Before;
 
 import javax.inject.Inject;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/dependency/tree/maven2/DependencyTreeBuilderTestMaven3.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/dependency/tree/DependencyTreeBuilderTestMaven3.java
similarity index 96%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/dependency/tree/maven2/DependencyTreeBuilderTestMaven3.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/dependency/tree/DependencyTreeBuilderTestMaven3.java
index df2f104..256c445 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/dependency/tree/maven2/DependencyTreeBuilderTestMaven3.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/dependency/tree/DependencyTreeBuilderTestMaven3.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.dependency.tree.maven2;
+package org.apache.archiva.repository.maven.dependency.tree;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.dependency.tree.maven2;
  * "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
- *
+ * 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
@@ -27,6 +26,7 @@ import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
 import org.apache.archiva.maven2.model.Artifact;
 import org.apache.archiva.maven2.model.TreeEntry;
 import org.apache.archiva.repository.RepositoryRegistry;
+import org.apache.archiva.repository.maven.dependency.tree.Maven3DependencyTreeBuilder;
 import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/stagerepository/merge/Maven2RepositoryMergerTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/merge/Maven2RepositoryMergerTest.java
similarity index 97%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/stagerepository/merge/Maven2RepositoryMergerTest.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/merge/Maven2RepositoryMergerTest.java
index 9781aab..e93478f 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/stagerepository/merge/Maven2RepositoryMergerTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/merge/Maven2RepositoryMergerTest.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.stagerepository.merge;
+package org.apache.archiva.repository.maven.merge;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.stagerepository.merge;
  * "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
- *
+ * 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
@@ -29,10 +28,9 @@ import org.apache.archiva.metadata.repository.MetadataRepository;
 import org.apache.archiva.metadata.repository.MetadataRepositoryException;
 import org.apache.archiva.metadata.repository.RepositorySession;
 import org.apache.archiva.metadata.repository.RepositorySessionFactory;
-import org.apache.archiva.repository.Repository;
+import org.apache.archiva.repository.maven.merge.Maven2RepositoryMerger;
 import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
 import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.MockitoAnnotations;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/Maven2RepositoryStorageTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/Maven2RepositoryStorageTest.java
similarity index 94%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/Maven2RepositoryStorageTest.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/Maven2RepositoryStorageTest.java
index 2adc0fc..0d99335 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/Maven2RepositoryStorageTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/Maven2RepositoryStorageTest.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.metadata;
+package org.apache.archiva.repository.maven.metadata;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.repository.metadata;
  * "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
- *
+ * 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
@@ -20,7 +19,7 @@ package org.apache.archiva.repository.metadata;
  */
 
 import org.apache.archiva.metadata.repository.storage.RepositoryStorage;
-import org.apache.archiva.repository.maven2.MavenManagedRepository;
+import org.apache.archiva.repository.maven.MavenManagedRepository;
 import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/MetadataToolsTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/MetadataToolsTest.java
similarity index 98%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/MetadataToolsTest.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/MetadataToolsTest.java
index 2a85b83..c0ed248 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/MetadataToolsTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/MetadataToolsTest.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.metadata;
+package org.apache.archiva.repository.maven.metadata;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.repository.metadata;
  * "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
- *
+ * 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
@@ -21,20 +20,21 @@ package org.apache.archiva.repository.metadata;
 
 import org.apache.archiva.common.utils.VersionComparator;
 import org.apache.archiva.configuration.ProxyConnectorConfiguration;
-import org.apache.archiva.metadata.repository.storage.maven2.conf.MockConfiguration;
+import org.apache.archiva.repository.maven.metadata.storage.mock.MockConfiguration;
 import org.apache.archiva.model.ProjectReference;
 import org.apache.archiva.model.VersionedReference;
 import org.apache.archiva.policies.CachedFailuresPolicy;
 import org.apache.archiva.policies.ChecksumPolicy;
 import org.apache.archiva.policies.ReleasesPolicy;
 import org.apache.archiva.policies.SnapshotsPolicy;
-import org.apache.archiva.repository.AbstractRepositoryLayerTestCase;
+import org.apache.archiva.repository.maven.AbstractRepositoryLayerTestCase;
 import org.apache.archiva.repository.LayoutException;
 import org.apache.archiva.repository.ManagedRepositoryContent;
 import org.apache.archiva.repository.RemoteRepositoryContent;
 import org.apache.archiva.repository.RepositoryContentProvider;
+import org.apache.archiva.repository.metadata.RepositoryMetadataException;
 import org.apache.archiva.repository.metadata.base.MetadataTools;
-import org.apache.archiva.repository.maven2.MavenManagedRepository;
+import org.apache.archiva.repository.maven.MavenManagedRepository;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.junit.Test;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/RepositoryMetadataReaderTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/RepositoryMetadataReaderTest.java
similarity index 95%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/RepositoryMetadataReaderTest.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/RepositoryMetadataReaderTest.java
index e5a03ca..b2642ba 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/RepositoryMetadataReaderTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/RepositoryMetadataReaderTest.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.metadata;
+package org.apache.archiva.repository.maven.metadata;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.repository.metadata;
  * "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
- *
+ * 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
@@ -22,6 +21,7 @@ package org.apache.archiva.repository.metadata;
 import junit.framework.TestCase;
 import org.apache.archiva.maven2.metadata.MavenMetadataReader;
 import org.apache.archiva.model.ArchivaRepositoryMetadata;
+import org.apache.archiva.repository.metadata.RepositoryMetadataException;
 import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner;
 import org.junit.Test;
 import org.junit.runner.RunWith;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/RepositoryMetadataWriterTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/RepositoryMetadataWriterTest.java
similarity index 96%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/RepositoryMetadataWriterTest.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/RepositoryMetadataWriterTest.java
index 3e41b14..09159ac 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/metadata/RepositoryMetadataWriterTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/RepositoryMetadataWriterTest.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.metadata;
+package org.apache.archiva.repository.maven.metadata;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.repository.metadata;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411RepoGroupTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/Maven2RepositoryMetadataResolverMRM1411RepoGroupTest.java
similarity index 99%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411RepoGroupTest.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/Maven2RepositoryMetadataResolverMRM1411RepoGroupTest.java
index 8aaf3d8..1bda092 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411RepoGroupTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/Maven2RepositoryMetadataResolverMRM1411RepoGroupTest.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2;
+package org.apache.archiva.repository.maven.metadata.storage;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411Test.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/Maven2RepositoryMetadataResolverMRM1411Test.java
similarity index 99%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411Test.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/Maven2RepositoryMetadataResolverMRM1411Test.java
index 1788b9f..3e34732 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411Test.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/Maven2RepositoryMetadataResolverMRM1411Test.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2;
+package org.apache.archiva.repository.maven.metadata.storage;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverManagedReleaseTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/Maven2RepositoryMetadataResolverManagedReleaseTest.java
similarity index 97%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverManagedReleaseTest.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/Maven2RepositoryMetadataResolverManagedReleaseTest.java
index 27e4b07..0836ae6 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverManagedReleaseTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/Maven2RepositoryMetadataResolverManagedReleaseTest.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2;
+package org.apache.archiva.repository.maven.metadata.storage;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverManagedSnapshotTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/Maven2RepositoryMetadataResolverManagedSnapshotTest.java
similarity index 97%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverManagedSnapshotTest.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/Maven2RepositoryMetadataResolverManagedSnapshotTest.java
index 8b04dbe..fbd3fe2 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverManagedSnapshotTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/Maven2RepositoryMetadataResolverManagedSnapshotTest.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2;
+package org.apache.archiva.repository.maven.metadata.storage;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/Maven2RepositoryMetadataResolverTest.java
similarity index 99%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/Maven2RepositoryMetadataResolverTest.java
index 77b8aa1..29b882a 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/Maven2RepositoryMetadataResolverTest.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2;
+package org.apache.archiva.repository.maven.metadata.storage;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/MavenRepositoryMetadataReaderTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/MavenRepositoryMetadataReaderTest.java
similarity index 97%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/MavenRepositoryMetadataReaderTest.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/MavenRepositoryMetadataReaderTest.java
index 17aef31..993d957 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/MavenRepositoryMetadataReaderTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/MavenRepositoryMetadataReaderTest.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2;
+package org.apache.archiva.repository.maven.metadata.storage;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/MockWagon.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/MockWagon.java
similarity index 98%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/MockWagon.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/MockWagon.java
index f28f777..7da70c3 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/MockWagon.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/MockWagon.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2;
+package org.apache.archiva.repository.maven.metadata.storage;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.metadata.repository.storage.maven2;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/conf/MockConfiguration.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/mock/MockConfiguration.java
similarity index 98%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/conf/MockConfiguration.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/mock/MockConfiguration.java
index 3da6bfb..92150ad 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/conf/MockConfiguration.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/metadata/storage/mock/MockConfiguration.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository.storage.maven2.conf;
+package org.apache.archiva.repository.maven.metadata.storage.mock;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/index/mock/ArchivaIndexManagerMock.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/ArchivaIndexManagerMock.java
similarity index 99%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/index/mock/ArchivaIndexManagerMock.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/ArchivaIndexManagerMock.java
index 744a0b2..2224e15 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/index/mock/ArchivaIndexManagerMock.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/ArchivaIndexManagerMock.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.index.mock;
+package org.apache.archiva.repository.maven.mock;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.repository.index.mock;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/index/mock/MavenIndexContextMock.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/MavenIndexContextMock.java
similarity index 97%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/index/mock/MavenIndexContextMock.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/MavenIndexContextMock.java
index e9e2f0f..9d4ad08 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/index/mock/MavenIndexContextMock.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/MavenIndexContextMock.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository.index.mock;
+package org.apache.archiva.repository.maven.mock;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.repository.index.mock;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/MockRepositoryArchivaTaskScheduler.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/MockRepositoryArchivaTaskScheduler.java
similarity index 94%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/MockRepositoryArchivaTaskScheduler.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/MockRepositoryArchivaTaskScheduler.java
index 6892014..97c7bc0 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/MockRepositoryArchivaTaskScheduler.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/MockRepositoryArchivaTaskScheduler.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository;
+package org.apache.archiva.repository.maven.mock;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -8,8 +8,7 @@ package org.apache.archiva.metadata.repository;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/RepositoryRegistryMock.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/RepositoryRegistryMock.java
similarity index 81%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/RepositoryRegistryMock.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/RepositoryRegistryMock.java
index eb2286f..9966d8b 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/RepositoryRegistryMock.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/RepositoryRegistryMock.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.repository;
+package org.apache.archiva.repository.maven.mock;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.repository;
  * "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
- *
+ * 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
@@ -19,6 +18,9 @@ package org.apache.archiva.repository;
  * under the License.
  */
 
+import org.apache.archiva.repository.ManagedRepository;
+import org.apache.archiva.repository.Repository;
+import org.apache.archiva.repository.RepositoryException;
 import org.apache.archiva.repository.base.ArchivaRepositoryRegistry;
 
 import java.util.Map;
@@ -30,7 +32,8 @@ public class RepositoryRegistryMock extends ArchivaRepositoryRegistry
     private Map<String, ManagedRepository> managedRepositories = new TreeMap<>();
 
     @Override
-    public ManagedRepository putRepository(ManagedRepository managedRepository) throws RepositoryException {
+    public ManagedRepository putRepository(ManagedRepository managedRepository) throws RepositoryException
+    {
         managedRepositories.put(managedRepository.getId(), managedRepository);
         return managedRepository;
     }
@@ -41,7 +44,7 @@ public class RepositoryRegistryMock extends ArchivaRepositoryRegistry
     }
 
     @Override
-    public Repository getRepository(String repoId) {
+    public Repository getRepository( String repoId) {
         if (managedRepositories.containsKey(repoId)) {
             return managedRepositories.get(repoId);
         } else {
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/TestMetadataResolver.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/TestMetadataResolver.java
similarity index 91%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/TestMetadataResolver.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/TestMetadataResolver.java
index 7020773..59438bf 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/metadata/repository/TestMetadataResolver.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/TestMetadataResolver.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.metadata.repository;
+package org.apache.archiva.repository.maven.mock;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.metadata.repository;
  * "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
- *
+ * 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
@@ -22,6 +21,9 @@ package org.apache.archiva.metadata.repository;
 import org.apache.archiva.metadata.model.ArtifactMetadata;
 import org.apache.archiva.metadata.model.ProjectVersionMetadata;
 import org.apache.archiva.metadata.model.ProjectVersionReference;
+import org.apache.archiva.metadata.repository.MetadataResolutionException;
+import org.apache.archiva.metadata.repository.MetadataResolver;
+import org.apache.archiva.metadata.repository.RepositorySession;
 import org.springframework.stereotype.Service;
 
 import java.util.Collection;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/configuration/MockRepoAdmin.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/configuration/MockRepoAdmin.java
similarity index 97%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/configuration/MockRepoAdmin.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/configuration/MockRepoAdmin.java
index 2ae29a3..7fdc16c 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/configuration/MockRepoAdmin.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/configuration/MockRepoAdmin.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.configuration;
+package org.apache.archiva.repository.maven.mock.configuration;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -8,8 +8,7 @@ package org.apache.archiva.configuration;
  * "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
- *
+ * 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
@@ -30,6 +29,10 @@ import org.apache.archiva.admin.model.networkproxy.NetworkProxyAdmin;
 import org.apache.archiva.admin.model.proxyconnector.ProxyConnectorAdmin;
 import org.apache.archiva.admin.model.proxyconnector.ProxyConnectorOrderComparator;
 import org.apache.archiva.admin.model.remote.RemoteRepositoryAdmin;
+import org.apache.archiva.configuration.ArchivaConfiguration;
+import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
+import org.apache.archiva.configuration.ProxyConnectorConfiguration;
+import org.apache.archiva.configuration.RemoteRepositoryConfiguration;
 import org.apache.archiva.indexer.ArchivaIndexingContext;
 import org.apache.commons.lang3.StringUtils;
 import org.modelmapper.ModelMapper;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/configuration/StubConfiguration.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/configuration/StubConfiguration.java
similarity index 89%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/configuration/StubConfiguration.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/configuration/StubConfiguration.java
index f7459c5..470f24b 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/configuration/StubConfiguration.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/configuration/StubConfiguration.java
@@ -1,4 +1,4 @@
-package org.apache.archiva.configuration;
+package org.apache.archiva.repository.maven.mock.configuration;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -9,8 +9,7 @@ package org.apache.archiva.configuration;
  * "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
- *
+ * 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
@@ -21,6 +20,11 @@ package org.apache.archiva.configuration;
 
 import org.apache.archiva.components.registry.RegistryException;
 import org.apache.archiva.components.registry.RegistryListener;
+import org.apache.archiva.configuration.ArchivaConfiguration;
+import org.apache.archiva.configuration.Configuration;
+import org.apache.archiva.configuration.ConfigurationListener;
+import org.apache.archiva.configuration.IndeterminateConfigurationException;
+import org.apache.archiva.configuration.RepositoryScanningConfiguration;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/configuration/TestConfiguration.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/configuration/TestConfiguration.java
similarity index 90%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/configuration/TestConfiguration.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/configuration/TestConfiguration.java
index 6b899b7..9914da9 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/configuration/TestConfiguration.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/mock/configuration/TestConfiguration.java
@@ -1,7 +1,11 @@
-package org.apache.archiva.configuration;
+package org.apache.archiva.repository.maven.mock.configuration;
 
 import org.apache.archiva.components.registry.RegistryException;
 import org.apache.archiva.components.registry.RegistryListener;
+import org.apache.archiva.configuration.ArchivaConfiguration;
+import org.apache.archiva.configuration.Configuration;
+import org.apache.archiva.configuration.ConfigurationListener;
+import org.apache.archiva.configuration.IndeterminateConfigurationException;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
@@ -19,8 +23,7 @@ import java.util.Locale;
  * "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
- *
+ * 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
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-merge.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-merge.xml
index 87b681b..8535a11 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-merge.xml
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-merge.xml
@@ -33,7 +33,7 @@
   <alias name="archivaConfiguration#mocked" alias="archivaConfiguration#default" />
 
   <bean name="repositorySessionFactory#mock"
-        class="org.apache.archiva.stagerepository.merge.Maven2RepositoryMergerTest" factory-method="getRepositorySessionFactory" />
+        class="org.apache.archiva.repository.maven.merge.Maven2RepositoryMergerTest" factory-method="getRepositorySessionFactory" />
  <alias alias="repositorySessionFactory#jcr" name="repositorySessionFactory#mock" />
 
 </beans>
\ No newline at end of file
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-metadata-tools-test.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-metadata-tools-test.xml
index 6f818bf..9d37539 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-metadata-tools-test.xml
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-metadata-tools-test.xml
@@ -24,7 +24,7 @@
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
        default-lazy-init="true">
 
-  <bean name="archivaConfiguration#mock" class="org.apache.archiva.metadata.repository.storage.maven2.conf.MockConfiguration"/>
+  <bean name="archivaConfiguration#mock" class="org.apache.archiva.repository.maven.metadata.storage.mock.MockConfiguration"/>
   <alias name="archivaConfiguration#mock" alias="archivaConfiguration#default"/>
   <bean name="metadataTools#test" class="org.apache.archiva.repository.metadata.base.MetadataTools">
     <property name="configuration" ref="archivaConfiguration#mock"/>
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-no-mock-conf.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-no-mock-conf.xml
index 558240f..40c7dc9 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-no-mock-conf.xml
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-no-mock-conf.xml
@@ -27,7 +27,7 @@
            http://www.springframework.org/schema/context/spring-context-3.0.xsd">
 
   <context:annotation-config/>
-  <context:component-scan base-package="org.apache.archiva.metadata.repository.storage.maven2.conf,org.apache.archiva.repository.content.maven2,org.apache.archiva.repository.maven2"/>
+  <context:component-scan base-package="org.apache.archiva.repository.maven.metadata.storage.mock,org.apache.archiva.repository.content.maven2,org.apache.archiva.repository.maven"/>
 
 
 
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-storage.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-storage.xml
index a4c76fa..f3c79fc 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-storage.xml
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context-storage.xml
@@ -31,7 +31,7 @@
   <context:component-scan base-package="org.apache.archiva.policies.urlcache,org.apache.archiva.proxy,org.apache.archiva.proxy.maven,org.apache.archiva.indexer,org.apache.maven.index,org.apache.archiva.repository,org.apache.archiva.configuration,org.apache.archiva.metadata.repository,org.apache.archiva.repository.index.mock"/>
 
 
-  <bean name="archivaConfiguration#test" class="org.apache.archiva.metadata.repository.storage.maven2.conf.MockConfiguration"/>
+  <bean name="archivaConfiguration#test" class="org.apache.archiva.repository.maven.metadata.storage.mock.MockConfiguration"/>
   <alias name="archivaConfiguration#test" alias="archivaConfiguration#default"/>
   <alias name="archivaConfiguration#test" alias="archivaConfiguration"/>
 
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java
index d7e2866..9fb193e 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java
@@ -21,7 +21,7 @@ package org.apache.archiva.rest.services;
 import org.apache.archiva.admin.model.beans.ManagedRepository;
 import org.apache.archiva.common.utils.VersionComparator;
 import org.apache.archiva.common.utils.VersionUtil;
-import org.apache.archiva.dependency.tree.maven2.DependencyTreeBuilder;
+import org.apache.archiva.repository.maven.dependency.tree.DependencyTreeBuilder;
 import org.apache.archiva.maven2.model.Artifact;
 import org.apache.archiva.maven2.model.TreeEntry;
 import org.apache.archiva.metadata.generic.GenericMetadataFacet;
@@ -30,8 +30,8 @@ import org.apache.archiva.metadata.model.MetadataFacet;
 import org.apache.archiva.metadata.model.ProjectVersionMetadata;
 import org.apache.archiva.metadata.model.ProjectVersionReference;
 import org.apache.archiva.metadata.repository.*;
-import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMetadataVersionComparator;
-import org.apache.archiva.metadata.repository.storage.maven2.MavenProjectFacet;
+import org.apache.archiva.repository.maven.metadata.storage.ArtifactMetadataVersionComparator;
+import org.apache.archiva.repository.maven.metadata.storage.MavenProjectFacet;
 import org.apache.archiva.model.ArchivaArtifact;
 import org.apache.archiva.model.ArchivaRepositoryMetadata;
 import org.apache.archiva.proxy.ProxyRegistry;
diff --git a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/ArchivaDavResourceFactoryTest.java b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/ArchivaDavResourceFactoryTest.java
index 3d41993..e342217 100644
--- a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/ArchivaDavResourceFactoryTest.java
+++ b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/ArchivaDavResourceFactoryTest.java
@@ -34,7 +34,7 @@ import org.apache.archiva.configuration.ArchivaConfiguration;
 import org.apache.archiva.configuration.Configuration;
 import org.apache.archiva.configuration.FileTypes;
 import org.apache.archiva.configuration.RepositoryGroupConfiguration;
-import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider;
+import org.apache.archiva.repository.maven.metadata.storage.ArtifactMappingProvider;
 import org.apache.archiva.proxy.ProxyRegistry;
 import org.apache.archiva.repository.EditableManagedRepository;
 import org.apache.archiva.repository.ManagedRepositoryContent;
@@ -47,8 +47,8 @@ import org.apache.archiva.repository.RepositoryContentProvider;
 import org.apache.archiva.repository.RepositoryException;
 import org.apache.archiva.repository.RepositoryRegistry;
 import org.apache.archiva.repository.RepositoryType;
-import org.apache.archiva.repository.content.maven2.ManagedDefaultRepositoryContent;
-import org.apache.archiva.repository.content.maven2.MavenRepositoryRequestInfo;
+import org.apache.archiva.repository.maven.content.ManagedDefaultRepositoryContent;
+import org.apache.archiva.repository.maven.content.MavenRepositoryRequestInfo;
 import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.jackrabbit.webdav.DavException;
diff --git a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/DavResourceTest.java b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/DavResourceTest.java
index 5329e09..ca0965c 100644
--- a/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/DavResourceTest.java
+++ b/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/webdav/DavResourceTest.java
@@ -26,7 +26,7 @@ import org.apache.archiva.repository.LayoutException;
 import org.apache.archiva.repository.RepositoryRegistry;
 import org.apache.archiva.repository.storage.fs.FilesystemAsset;
 import org.apache.archiva.metadata.audit.AuditListener;
-import org.apache.archiva.repository.maven2.MavenManagedRepository;
+import org.apache.archiva.repository.maven.MavenManagedRepository;
 import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
 import org.apache.archiva.webdav.util.MimeTypes;
 import org.apache.commons.lang3.StringUtils;


[archiva] 03/04: Adding unit tests for maven repository

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git

commit 2b4254a3917dc29f2fe201a135253da36c3a98c7
Author: Martin Stockhammer <ma...@apache.org>
AuthorDate: Sun Mar 8 12:44:59 2020 +0100

    Adding unit tests for maven repository
---
 .../mock/ManagedRepositoryContentMock.java         |  12 ++
 .../repository/storage/fs/FilesystemStorage.java   |   2 +-
 .../mock/ManagedRepositoryContentMock.java         |  12 ++
 .../content/ManagedDefaultRepositoryContent.java   | 105 ++++++-----
 .../maven/content/MavenContentHelper.java          | 109 +++++------
 .../AbstractManagedRepositoryContentTest.java      |  46 +++++
 ...ase.java => AbstractRepositoryContentTest.java} |  22 ++-
 .../ManagedDefaultRepositoryContentTest.java       |   2 +-
 .../maven/content/MavenContentHelperTest.java      | 209 +++++++++++++++++++++
 .../RemoteDefaultRepositoryContentTest.java        |   4 +-
 10 files changed, 414 insertions(+), 109 deletions(-)

diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
index cc7aac6..c719d38 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
@@ -180,6 +180,18 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent
 
     }
 
+    @Override
+    public ContentItem toItem( String path ) throws LayoutException
+    {
+        return null;
+    }
+
+    @Override
+    public ContentItem toItem( StorageAsset assetPath ) throws LayoutException
+    {
+        return null;
+    }
+
 
     @Override
     public void deleteGroupId( String groupId ) throws ContentNotFoundException, ContentAccessException
diff --git a/archiva-modules/archiva-base/archiva-storage-fs/src/main/java/org/apache/archiva/repository/storage/fs/FilesystemStorage.java b/archiva-modules/archiva-base/archiva-storage-fs/src/main/java/org/apache/archiva/repository/storage/fs/FilesystemStorage.java
index 0ae56e7..339e65d 100644
--- a/archiva-modules/archiva-base/archiva-storage-fs/src/main/java/org/apache/archiva/repository/storage/fs/FilesystemStorage.java
+++ b/archiva-modules/archiva-base/archiva-storage-fs/src/main/java/org/apache/archiva/repository/storage/fs/FilesystemStorage.java
@@ -321,7 +321,7 @@ public class FilesystemStorage implements RepositoryStorage {
     public StorageAsset getAsset( String path )
     {
         try {
-            return new FilesystemAsset(this, path, getAssetPath(path));
+            return new FilesystemAsset(this, path, getAssetPath(path), basePath);
         } catch (IOException e) {
             throw new IllegalArgumentException("Path navigates outside of base directory "+path);
         }
diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
index fd655b8..bc1a16f 100644
--- a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
+++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
@@ -186,6 +186,18 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent
     }
 
     @Override
+    public ContentItem toItem( String path ) throws LayoutException
+    {
+        return null;
+    }
+
+    @Override
+    public ContentItem toItem( StorageAsset assetPath ) throws LayoutException
+    {
+        return null;
+    }
+
+    @Override
     public void deleteVersion( VersionedReference reference ) throws ContentNotFoundException, ContentAccessException
     {
 
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
index e82ce34..c5d371e 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
@@ -141,38 +141,32 @@ public class ManagedDefaultRepositoryContent
 
     }
 
-    /**
-     * Returns a version reference from the coordinates
-     * @param groupId the group id
-     * @param artifactId the artifact id
-     * @param version the version
-     * @return the versioned reference object
-     */
-    @Override
-    public VersionedReference toVersion( String groupId, String artifactId, String version ) {
-        return new VersionedReference().groupId( groupId ).artifactId( artifactId ).version( version );
+    private StorageAsset getAssetByPath(String assetPath) {
+        return getStorage( ).getAsset( assetPath );
     }
 
-    @Override
-    public VersionedReference toGenericVersion( ArtifactReference artifactReference )
-    {
-        return toVersion( artifactReference.getGroupId( ), artifactReference.getArtifactId( ), VersionUtil.getBaseVersion( artifactReference.getVersion( ) ));
+    private StorageAsset getAsset(String namespace) {
+        String namespacePath = formatAsDirectory( namespace.trim() );
+        if (StringUtils.isEmpty( namespacePath )) {
+            namespacePath = "";
+        }
+        return getAssetByPath(namespacePath);
     }
 
-    /**
-     * Return the version the artifact is part of
-     * @param artifactReference
-     * @return
-     */
-    public VersionedReference toVersion( ArtifactReference artifactReference) {
-        return toVersion( artifactReference.getGroupId( ), artifactReference.getArtifactId( ), artifactReference.getVersion( ) );
+    private StorageAsset getAsset(String namespace, String project) {
+        return getAsset( namespace ).resolve( project );
     }
 
-    @Override
-    public ArtifactReference toArtifact( String groupId, String artifactId, String version, String type, String classifier) {
-        return new ArtifactReference( ).groupId( groupId ).artifactId( artifactId ).version( version ).type( type ).classifier( classifier );
+    private StorageAsset getAsset(String namespace, String project, String version) {
+        return getAsset( namespace, project ).resolve( version );
     }
 
+    private StorageAsset getAsset(String namespace, String project, String version, String fileName) {
+        return getAsset( namespace, project, version ).resolve( fileName );
+    }
+
+
+    /// ************* End of new generation interface ******************
     @Override
     public void deleteItem( ContentItem item ) throws ItemNotFoundException, ContentAccessException
     {
@@ -205,31 +199,6 @@ public class ManagedDefaultRepositoryContent
         }
     }
 
-    private StorageAsset getAssetByPath(String assetPath) {
-        return getStorage( ).getAsset( assetPath );
-    }
-
-    private StorageAsset getAsset(String namespace) {
-        String namespacePath = formatAsDirectory( namespace.trim() );
-        if (StringUtils.isEmpty( namespacePath )) {
-            namespacePath = "";
-        }
-        return getAssetByPath(namespacePath);
-    }
-
-    private StorageAsset getAsset(String namespace, String project) {
-        return getAsset( namespace ).resolve( project );
-    }
-
-    private StorageAsset getAsset(String namespace, String project, String version) {
-        return getAsset( namespace, project ).resolve( version );
-    }
-
-    private StorageAsset getAsset(String namespace, String project, String version, String fileName) {
-        return getAsset( namespace, project, version ).resolve( fileName );
-    }
-
-
     @Override
     public Namespace getNamespace( final ItemSelector namespaceSelector ) throws ContentAccessException, IllegalArgumentException
     {
@@ -501,7 +470,8 @@ public class ManagedDefaultRepositoryContent
         final String artifactVersion = mavenContentHelper.getArtifactVersion( artifactDir, selector );
         final String classifier = MavenContentHelper.getClassifier( selector );
         final String extension = MavenContentHelper.getArtifactExtension( selector );
-        final String fileName = MavenContentHelper.getArtifactFileName( selector, artifactVersion, classifier, extension );
+        final String artifactId = StringUtils.isEmpty( selector.getArtifactId( ) ) ? selector.getProjectId( ) : selector.getArtifactId( );
+        final String fileName = MavenContentHelper.getArtifactFileName( artifactId, artifactVersion, classifier, extension );
         final StorageAsset path = getAsset( selector.getNamespace( ), selector.getProjectId( ),
             selector.getVersion( ), fileName );
         return artifactMap.computeIfAbsent( path, artifactPath -> createArtifact( path, selector, classifier, extension ) );
@@ -659,6 +629,41 @@ public class ManagedDefaultRepositoryContent
         return getItemFromPath( assetPath );
     }
 
+    /// ************* End of new generation interface ******************
+
+    /**
+     * Returns a version reference from the coordinates
+     * @param groupId the group id
+     * @param artifactId the artifact id
+     * @param version the version
+     * @return the versioned reference object
+     */
+    @Override
+    public VersionedReference toVersion( String groupId, String artifactId, String version ) {
+        return new VersionedReference().groupId( groupId ).artifactId( artifactId ).version( version );
+    }
+
+    @Override
+    public VersionedReference toGenericVersion( ArtifactReference artifactReference )
+    {
+        return toVersion( artifactReference.getGroupId( ), artifactReference.getArtifactId( ), VersionUtil.getBaseVersion( artifactReference.getVersion( ) ));
+    }
+
+    /**
+     * Return the version the artifact is part of
+     * @param artifactReference
+     * @return
+     */
+    public VersionedReference toVersion( ArtifactReference artifactReference) {
+        return toVersion( artifactReference.getGroupId( ), artifactReference.getArtifactId( ), artifactReference.getVersion( ) );
+    }
+
+    @Override
+    public ArtifactReference toArtifact( String groupId, String artifactId, String version, String type, String classifier) {
+        return new ArtifactReference( ).groupId( groupId ).artifactId( artifactId ).version( version ).type( type ).classifier( classifier );
+    }
+
+
     @Override
     public void deleteVersion( VersionedReference ref ) throws ContentNotFoundException, ContentAccessException
     {
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/MavenContentHelper.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/MavenContentHelper.java
index 73a9120..1a807a0 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/MavenContentHelper.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/MavenContentHelper.java
@@ -32,7 +32,9 @@ import org.springframework.stereotype.Service;
 
 import javax.inject.Inject;
 import javax.inject.Named;
+import java.util.Comparator;
 import java.util.LinkedList;
+import java.util.regex.Pattern;
 
 /**
  * Helper class that contains certain maven specific methods
@@ -42,6 +44,8 @@ public class MavenContentHelper
 {
 
     private static final Logger log = LoggerFactory.getLogger( MavenContentHelper.class );
+    public static final Pattern UNIQUE_SNAPSHOT_NUMBER_PATTERN = Pattern.compile( "^([0-9]{8}\\.[0-9]{6}-[0-9]+)(.*)" );
+
 
     @Inject
     @Named( "metadataReader#maven" )
@@ -53,6 +57,11 @@ public class MavenContentHelper
 
     }
 
+    public void setMetadataReader( MavenMetadataReader metadataReader )
+    {
+        this.metadataReader = metadataReader;
+    }
+
     /**
      * Returns the namespace string for a given path in the repository
      *
@@ -64,6 +73,7 @@ public class MavenContentHelper
         StorageAsset current = namespacePath;
         while (current.hasParent()) {
             names.addFirst( current.getName() );
+            current = current.getParent( );
         }
         return String.join( ".", names );
     }
@@ -103,33 +113,40 @@ public class MavenContentHelper
 
             // re-adjust to timestamp if present, otherwise retain the original -SNAPSHOT filename
             SnapshotVersion metadataVersion = metadata.getSnapshotVersion( );
-            if ( metadataVersion != null )
+            if ( metadataVersion != null && StringUtils.isNotEmpty( metadataVersion.getTimestamp( ) ) )
             {
                 version.append( snapshotVersion, 0, snapshotVersion.length( ) - 8 ); // remove SNAPSHOT from end
-                version.append( metadataVersion.getTimestamp( )).append("-").append( metadataVersion.getBuildNumber( ) );
+                version.append( metadataVersion.getTimestamp( ) ).append( "-" ).append( metadataVersion.getBuildNumber( ) );
+                return version.toString( );
             }
-            return version.toString( );
         }
         catch ( RepositoryMetadataException e )
         {
             // unable to parse metadata - LOGGER it, and continue with the version as the original SNAPSHOT version
             log.warn( "Invalid metadata: {} - {}", metadataFile, e.getMessage( ) );
-            return snapshotVersion;
         }
+        final String baseVersion = StringUtils.removeEnd( snapshotVersion, "-SNAPSHOT" );
+        final String prefix = metadataFile.getParent( ).getParent( ).getName( ) + "-"+baseVersion+"-";
+        return artifactDir.list( ).stream( ).filter( a -> a.getName( ).startsWith( prefix ) )
+            .map( a -> StringUtils.removeStart( a.getName( ), prefix ) )
+            .map( n -> UNIQUE_SNAPSHOT_NUMBER_PATTERN.matcher( n ) )
+            .filter( m -> m.matches( ) )
+            .map( m -> baseVersion+"-"+m.group( 1 ) )
+            .sorted( Comparator.reverseOrder() ).findFirst().orElse( snapshotVersion );
     }
 
 
     /**
      * Returns a artifact filename that corresponds to the given data.
-     * @param selector the selector data
+     * @param artifactId the selector data
      * @param artifactVersion the artifactVersion
      * @param classifier the artifact classifier
      * @param extension the file extension
      */
-    static String getArtifactFileName( ItemSelector selector, String artifactVersion,
+    static String getArtifactFileName( String artifactId, String artifactVersion,
                                        String classifier, String extension )
     {
-        StringBuilder fileName = new StringBuilder( selector.getArtifactId( ) ).append( "-" );
+        StringBuilder fileName = new StringBuilder( artifactId ).append( "-" );
         fileName.append( artifactVersion );
         if ( !StringUtils.isEmpty( classifier ) )
         {
@@ -171,33 +188,30 @@ public class MavenContentHelper
      */
     static String getClassifierFromType( final String type )
     {
-        if ( "pom".equalsIgnoreCase( type ) || "jar".equalsIgnoreCase( type )
-            || "maven-plugin".equalsIgnoreCase( type )
-            || "ejb".equalsIgnoreCase( type )
-            || "ear".equalsIgnoreCase( type )
-            || "war".equalsIgnoreCase( type )
-            || "rar".equalsIgnoreCase( type )
-        ) return "";
-        if ( "test-jar".equalsIgnoreCase( type ) )
-        {
-            return "tests";
-        }
-        else if ( "ejb-client".equalsIgnoreCase( type ) )
-        {
-            return "client";
-        }
-        else if ( "java-source".equalsIgnoreCase( type ) )
-        {
-            return "sources";
-        }
-        else if ( "javadoc".equalsIgnoreCase( type ) )
-        {
-            return "javadoc";
-        }
-        else
+        String testType = type.trim( ).toLowerCase( );
+        switch (testType.length( ))
         {
-            return "";
+            case 7:
+                if ("javadoc".equals(testType)) {
+                    return "javadoc";
+                }
+            case 8:
+                if ("test-jar".equals(testType))
+                {
+                    return "tests";
+                }
+            case 10:
+                if ("ejb-client".equals(testType)) {
+                    return "client";
+                }
+            case 11:
+                if ("java-source".equals(testType)) {
+                    return "sources";
+                }
+            default:
+                return "";
         }
+
     }
 
     /**
@@ -227,7 +241,7 @@ public class MavenContentHelper
         {
             return "ejb-client";
         }
-        else if ( classifier.equals( "source" ) && extension.equals( "jar" ) )
+        else if ( classifier.equals( "sources" ) && extension.equals( "jar" ) )
         {
             return "java-source";
         }
@@ -256,26 +270,15 @@ public class MavenContentHelper
         }
         else if ( selector.hasType( ) )
         {
-            String type = selector.getType( ).toLowerCase( );
-            if ( "test-jar".equals( type ) )
-            {
-                return "jar";
-            }
-            else if ( "ejb-client".equals( type ) )
-            {
-                return "jar";
-            }
-            else if ( "java-source".equals( type ) )
-            {
-                return "jar";
-            }
-            else if ( "javadoc".equals( type ) )
-            {
-                return "jar";
-            }
-            else
-            {
-                return "jar";
+            final String type = selector.getType( ).trim().toLowerCase( );
+            switch (type.length()) {
+                case 3:
+                    if ("pom".equals(type) || "war".equals(type) || "ear".equals(type) || "rar".equals(type)) {
+                        return type;
+                    }
+                default:
+                    return "jar";
+
             }
         }
         else
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/AbstractManagedRepositoryContentTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/AbstractManagedRepositoryContentTest.java
new file mode 100644
index 0000000..be3f4ba
--- /dev/null
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/AbstractManagedRepositoryContentTest.java
@@ -0,0 +1,46 @@
+package org.apache.archiva.repository.maven.content;
+
+/*
+ * 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.apache.archiva.repository.LayoutException;
+
+import static org.junit.Assert.fail;
+
+/**
+ * @author Martin Stockhammer <ma...@apache.org>
+ */
+public abstract class AbstractManagedRepositoryContentTest extends AbstractRepositoryContentTest
+{
+
+    @Override
+    protected void assertBadPathCi( String path, String reason )
+    {
+        super.assertBadPathCi( path, reason );
+        try
+        {
+            getManaged().toItem( path );
+            fail(
+                "Should have thrown a LayoutException on the invalid path [" + path + "] because of [" + reason + "]" );
+        }
+        catch ( LayoutException e )
+        {
+            /* expected path */
+        }
+    }
+}
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/AbstractDefaultRepositoryContentTestCase.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/AbstractRepositoryContentTest.java
similarity index 96%
rename from archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/AbstractDefaultRepositoryContentTestCase.java
rename to archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/AbstractRepositoryContentTest.java
index 34210c8..34a8be4 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/AbstractDefaultRepositoryContentTestCase.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/AbstractRepositoryContentTest.java
@@ -36,13 +36,14 @@ import static org.junit.Assert.*;
 /**
  * AbstractDefaultRepositoryContentTestCase
  */
-public abstract class AbstractDefaultRepositoryContentTestCase
+public abstract class AbstractRepositoryContentTest
     extends AbstractRepositoryLayerTestCase
 {
     @Test
     public void testBadPathMissingType()
     {
         assertBadPath( "invalid/invalid/1/invalid-1", "missing type" );
+        assertBadPathCi( "invalid/invalid/1/invalid-1", "missing type" );
     }
 
     @Test
@@ -50,6 +51,9 @@ public abstract class AbstractDefaultRepositoryContentTestCase
     {
         assertBadPath( "invalid/invalid/1.0-SNAPSHOT/invalid-1.0.jar",
                        "non snapshot artifact inside of a snapshot dir" );
+        assertBadPathCi( "invalid/invalid/1.0-SNAPSHOT/invalid-1.0.jar",
+            "non snapshot artifact inside of a snapshot dir" );
+
     }
 
     @Test
@@ -57,6 +61,8 @@ public abstract class AbstractDefaultRepositoryContentTestCase
     {
         assertBadPath( "invalid/invalid/1.0-20050611.123456-1/invalid-1.0-20050611.123456-1.jar",
                        "Timestamped Snapshot artifact not inside of an Snapshot dir" );
+        assertBadPathCi( "invalid/invalid/1.0-20050611.123456-1/invalid-1.0-20050611.123456-1.jar",
+            "Timestamped Snapshot artifact not inside of an Snapshot dir" );
     }
 
     @Test
@@ -503,6 +509,20 @@ public abstract class AbstractDefaultRepositoryContentTestCase
         }
     }
 
+    protected void assertBadPathCi( String path, String reason )
+    {
+        try
+        {
+            toItemSelector( path );
+            fail(
+                "Should have thrown a LayoutException on the invalid path [" + path + "] because of [" + reason + "]" );
+        }
+        catch ( LayoutException e )
+        {
+            /* expected path */
+        }
+    }
+
     /**
      * Perform a roundtrip through the layout routines to determine success.
      */
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContentTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContentTest.java
index 2b48400..c58b159 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContentTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContentTest.java
@@ -55,7 +55,7 @@ import static org.junit.Assert.*;
  * ManagedDefaultRepositoryContentTest
  */
 public class ManagedDefaultRepositoryContentTest
-    extends AbstractDefaultRepositoryContentTestCase
+    extends AbstractManagedRepositoryContentTest
 {
     private ManagedDefaultRepositoryContent repoContent;
 
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/MavenContentHelperTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/MavenContentHelperTest.java
new file mode 100644
index 0000000..6db54b8
--- /dev/null
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/MavenContentHelperTest.java
@@ -0,0 +1,209 @@
+package org.apache.archiva.repository.maven.content;
+
+/*
+ * 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.apache.archiva.common.filelock.DefaultFileLockManager;
+import org.apache.archiva.maven2.metadata.MavenMetadataReader;
+import org.apache.archiva.repository.content.ItemSelector;
+import org.apache.archiva.repository.content.base.ArchivaItemSelector;
+import org.apache.archiva.repository.storage.StorageAsset;
+import org.apache.archiva.repository.storage.fs.FilesystemStorage;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+/**
+ * @author Martin Stockhammer <ma...@apache.org>
+ */
+class MavenContentHelperTest
+{
+
+    private static FilesystemStorage storage;
+    private static Path tempDir;
+
+    @BeforeAll
+    static void setUp() throws IOException
+    {
+        tempDir = Files.createTempDirectory( "archivamaventest" );
+        storage = new FilesystemStorage( tempDir, new DefaultFileLockManager() );
+    }
+
+    @AfterAll
+    static void tearDown() {
+        try
+        {
+            Files.deleteIfExists( tempDir );
+        }
+        catch ( IOException e )
+        {
+            System.err.println( "Could not delete " + tempDir );
+        }
+    }
+
+    @Test
+    void getNamespaceFromNamespacePath( )
+    {
+        StorageAsset asset = storage.getAsset( "org/apache/archiva" );
+        String ns = MavenContentHelper.getNamespaceFromNamespacePath( asset );
+        assertNotNull( ns );
+        assertEquals( "org.apache.archiva", ns );
+
+        asset = storage.getAsset( "" );
+        ns = MavenContentHelper.getNamespaceFromNamespacePath( asset );
+        assertNotNull( ns );
+        assertEquals( "", ns );
+    }
+
+    @Test
+    void getArtifactVersion( ) throws IOException, URISyntaxException
+    {
+        MavenContentHelper mavenContentHelper = new MavenContentHelper( );
+        MavenMetadataReader reader = new MavenMetadataReader( );
+        mavenContentHelper.setMetadataReader( reader );
+        Path testRepoPath = Paths.get( Thread.currentThread( ).getContextClassLoader( ).getResource( "repositories/metadata-repository" ).toURI() );
+        FilesystemStorage storage = new FilesystemStorage( testRepoPath, new DefaultFileLockManager( ) );
+        assertArtifactVersion( mavenContentHelper, "1.0-alpha-11-SNAPSHOT", storage.getAsset( "org/apache/archiva/metadata/tests/snap_shots_1/1.0-alpha-11-SNAPSHOT" )
+        , "1.0-alpha-11-SNAPSHOT", "1.0-alpha-11-SNAPSHOT");
+
+        assertArtifactVersion( mavenContentHelper, "1.0-alpha-11-20070316.175232-11", storage.getAsset( "org/apache/archiva/metadata/tests/snap_shots_a/1.0-alpha-11-SNAPSHOT" )
+            , "", "1.0-alpha-11-SNAPSHOT");
+
+        assertArtifactVersion( mavenContentHelper, "2.2-20070316.153953-10", storage.getAsset( "org/apache/archiva/metadata/tests/snap_shots_b/2.2-SNAPSHOT" )
+            , "", "2.2-SNAPSHOT");
+
+    }
+
+    private void assertArtifactVersion(MavenContentHelper mavenContentHelper, String expectedVersion, StorageAsset dir, String selectorArtifactVersion, String selectorVersion) {
+        ItemSelector selector = ArchivaItemSelector.builder( )
+            .withVersion( selectorVersion )
+            .withArtifactVersion( selectorArtifactVersion )
+            .build( );
+        assertEquals( expectedVersion, mavenContentHelper.getArtifactVersion( dir, selector ) );
+    }
+
+    @Test
+    void getLatestArtifactSnapshotVersion( ) throws URISyntaxException, IOException
+    {
+        MavenContentHelper mavenContentHelper = new MavenContentHelper( );
+        MavenMetadataReader reader = new MavenMetadataReader( );
+        mavenContentHelper.setMetadataReader( reader );
+        Path testRepoPath = Paths.get( Thread.currentThread( ).getContextClassLoader( ).getResource( "repositories/default-repository" ).toURI() );
+        FilesystemStorage storage = new FilesystemStorage( testRepoPath, new DefaultFileLockManager( ) );
+        // Directory without metadata file
+        assertEquals( "2.1-20090808.085535-2", mavenContentHelper.getLatestArtifactSnapshotVersion( storage.getAsset( "org/apache/archiva/sample-parent/2.1-SNAPSHOT" ), "2.1-SNAPSHOT" ) );
+        // Directory with metadata file
+        assertEquals( "1.3-20070802.113139-29", mavenContentHelper.getLatestArtifactSnapshotVersion( storage.getAsset( "org/apache/axis2/axis2/1.3-SNAPSHOT" ), "1.3-SNAPSHOT" ) );
+    }
+
+    @Test
+    void getArtifactFileName( )
+    {
+        assertFileName( "test-1.0.jar", "test", "", "1.0", "jar" );
+        assertFileName( "test-1.1-client.jar", "test", "client", "1.1", "jar" );
+        assertFileName( "te445st-2.1-sources.jar", "te445st", "sources", "2.1", "jar" );
+        assertFileName( "abcde-8888.994894.48484-10.jar", "abcde", "", "8888.994894.48484-10", "jar" );
+        assertFileName( "testarchive-5.0.war", "testarchive", "", "5.0", "war" );
+    }
+
+    private void assertFileName(String expectedFilename, String artifactId, String classifier, String version, String extension) {
+        assertEquals( expectedFilename, MavenContentHelper.getArtifactFileName( artifactId, version, classifier, extension ) );
+    }
+
+    @Test
+    void getClassifier( )
+    {
+        assertClassifier( "sources", "","java-source" );
+        assertClassifier( "tests", "", "test-jar" );
+        assertClassifier( "client", "","ejb-client" );
+        assertClassifier( "javadoc", "","javadoc" );
+        assertClassifier( "", "","test" );
+        assertClassifier( "test1", "test1","java-source" );
+        assertClassifier( "test2", "test2", "test-jar" );
+        assertClassifier( "test3", "test3","ejb-client" );
+        assertClassifier( "test4", "test4","javadoc" );
+        assertClassifier( "test5", "test5","test" );
+    }
+    private void assertClassifier(String expectedClassifier, String classifier, String type) {
+        ItemSelector selector = ArchivaItemSelector.builder( )
+            .withClassifier( classifier )
+            .withType( type ).build();
+        assertEquals( expectedClassifier, MavenContentHelper.getClassifier( selector ) );
+    }
+
+    @Test
+    void getClassifierFromType( )
+    {
+        assertClassifier( "sources", "java-source" );
+        assertClassifier( "tests", "test-jar" );
+        assertClassifier( "client", "ejb-client" );
+        assertClassifier( "javadoc", "javadoc" );
+        assertClassifier( "", "test" );
+    }
+
+    private void assertClassifier(String expectedClassifier, String type) {
+        assertEquals( expectedClassifier, MavenContentHelper.getClassifierFromType( type ) );
+    }
+
+    @Test
+    void getTypeFromClassifierAndExtension( )
+    {
+        assertType( "javadoc", "javadoc", "jar" );
+        assertType( "war", "", "war" );
+        assertType( "ear", "", "ear" );
+        assertType( "rar", "", "rar" );
+        assertType( "java-source", "sources", "jar" );
+        assertType( "ejb-client", "client", "jar" );
+        assertType( "pom", "", "pom" );
+        assertType( "test-jar", "tests", "jar" );
+
+    }
+
+    private void assertType(String expectedType, String classifier, String extension) {
+        assertEquals( expectedType, MavenContentHelper.getTypeFromClassifierAndExtension( classifier, extension ) );
+    }
+
+
+
+    @Test
+    void getArtifactExtension( )
+    {
+        assertExtension( "test", "", "test" );
+        assertExtension( "jar", "javadoc", "" );
+        assertExtension( "war", "war", "" );
+        assertExtension( "ear", "ear", "" );
+        assertExtension( "rar", "rar", "" );
+        assertExtension( "jar", "", "" );
+    }
+
+    private void assertExtension( String expectedExtension, String type, String extension )
+    {
+        ItemSelector selector = ArchivaItemSelector.builder( )
+            .withType( type ).withExtension( extension ).build();
+        assertEquals( expectedExtension, MavenContentHelper.getArtifactExtension( selector ) );
+    }
+}
\ No newline at end of file
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/RemoteDefaultRepositoryContentTest.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/RemoteDefaultRepositoryContentTest.java
index ca774f4..d8d0860 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/RemoteDefaultRepositoryContentTest.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/content/RemoteDefaultRepositoryContentTest.java
@@ -24,8 +24,6 @@ import org.apache.archiva.repository.ManagedRepositoryContent;
 import org.apache.archiva.repository.RemoteRepository;
 import org.apache.archiva.repository.RemoteRepositoryContent;
 import org.apache.archiva.repository.content.ItemSelector;
-import org.apache.archiva.repository.maven.content.AbstractDefaultRepositoryContentTestCase;
-import org.apache.archiva.repository.maven.content.RemoteDefaultRepositoryContent;
 import org.apache.archiva.repository.maven.metadata.storage.ArtifactMappingProvider;
 import org.junit.Before;
 
@@ -36,7 +34,7 @@ import java.util.List;
  * RemoteDefaultRepositoryContentTest
  */
 public class RemoteDefaultRepositoryContentTest
-    extends AbstractDefaultRepositoryContentTestCase
+    extends AbstractRepositoryContentTest
 {
 
     @Inject


[archiva] 04/04: Fixing path matching for repository content

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git

commit c7a924305a643f6c495aa950838252acc26d5e49
Author: Martin Stockhammer <ma...@apache.org>
AuthorDate: Sun Mar 8 13:20:51 2020 +0100

    Fixing path matching for repository content
---
 .../archiva/repository/ManagedRepositoryContent.java  | 12 ++++++++++++
 .../repository/mock/ManagedRepositoryContentMock.java |  6 ++++++
 .../scanner/mock/ManagedRepositoryContentMock.java    | 18 ++++++++++++++++++
 .../repository/mock/ManagedRepositoryContentMock.java |  6 ++++++
 .../content/AbstractDefaultRepositoryContent.java     |  5 +++++
 .../content/ManagedDefaultRepositoryContent.java      | 19 +++++++++++++++++--
 6 files changed, 64 insertions(+), 2 deletions(-)

diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java
index a4565c4..09e7621 100644
--- a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java
+++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/ManagedRepositoryContent.java
@@ -58,6 +58,18 @@ public interface ManagedRepositoryContent extends RepositoryContent
      */
     void deleteItem( ContentItem item) throws ItemNotFoundException, ContentAccessException;
 
+
+    /**
+     * Returns a item for the given selector. The type of the returned item depends on the
+     * selector.
+     *
+     * @param selector the item selector
+     * @return the content item that matches the given selector
+     * @throws ContentAccessException if an error occured while accessing the backend
+     * @throws IllegalArgumentException if the selector does not select a valid content item
+     */
+    ContentItem getItem(ItemSelector selector) throws ContentAccessException, IllegalArgumentException;
+
     /**
      * Returns the namespace for the given selected coordinates. The selector must specify a namespace. All other
      * coordinates are ignored.
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
index c719d38..ac14445 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
@@ -82,6 +82,12 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent
     }
 
     @Override
+    public ContentItem getItem( ItemSelector selector ) throws ContentAccessException, IllegalArgumentException
+    {
+        return null;
+    }
+
+    @Override
     public Namespace getNamespace( ItemSelector namespaceSelector ) throws ContentAccessException, IllegalArgumentException
     {
         return null;
diff --git a/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/mock/ManagedRepositoryContentMock.java b/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/mock/ManagedRepositoryContentMock.java
index 09794b7..66ab810 100644
--- a/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/mock/ManagedRepositoryContentMock.java
+++ b/archiva-modules/archiva-base/archiva-repository-scanner/src/test/java/org/apache/archiva/repository/scanner/mock/ManagedRepositoryContentMock.java
@@ -98,6 +98,12 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent
     }
 
     @Override
+    public ContentItem getItem( ItemSelector selector ) throws ContentAccessException, IllegalArgumentException
+    {
+        return null;
+    }
+
+    @Override
     public Namespace getNamespace( ItemSelector namespaceSelector ) throws ContentAccessException, IllegalArgumentException
     {
         return null;
@@ -182,6 +188,18 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent
     }
 
     @Override
+    public ContentItem toItem( String path ) throws LayoutException
+    {
+        return null;
+    }
+
+    @Override
+    public ContentItem toItem( StorageAsset assetPath ) throws LayoutException
+    {
+        return null;
+    }
+
+    @Override
     public void deleteVersion( VersionedReference reference ) throws ContentNotFoundException, ContentAccessException
     {
 
diff --git a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
index bc1a16f..d06ccd2 100644
--- a/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
+++ b/archiva-modules/archiva-maven/archiva-maven-proxy/src/test/java/org/apache/archiva/repository/mock/ManagedRepositoryContentMock.java
@@ -102,6 +102,12 @@ public class ManagedRepositoryContentMock implements ManagedRepositoryContent
     }
 
     @Override
+    public ContentItem getItem( ItemSelector selector ) throws ContentAccessException, IllegalArgumentException
+    {
+        return null;
+    }
+
+    @Override
     public Namespace getNamespace( ItemSelector namespaceSelector ) throws ContentAccessException, IllegalArgumentException
     {
         return null;
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/AbstractDefaultRepositoryContent.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/AbstractDefaultRepositoryContent.java
index e2532e1..d33843f 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/AbstractDefaultRepositoryContent.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/AbstractDefaultRepositoryContent.java
@@ -58,6 +58,11 @@ public abstract class AbstractDefaultRepositoryContent implements RepositoryCont
     private PathParser defaultPathParser = new DefaultPathParser();
 
 
+    PathParser getPathParser() {
+        return defaultPathParser;
+    }
+
+
 
     /**
      *
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
index c5d371e..dfc0f04 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/main/java/org/apache/archiva/repository/maven/content/ManagedDefaultRepositoryContent.java
@@ -200,6 +200,20 @@ public class ManagedDefaultRepositoryContent
     }
 
     @Override
+    public ContentItem getItem( ItemSelector selector ) throws ContentAccessException, IllegalArgumentException
+    {
+        if (selector.hasVersion() && selector.hasArtifactId()) {
+            return getArtifact( selector );
+        } else if (selector.hasProjectId() && selector.hasVersion()) {
+            return getVersion( selector );
+        } else if (selector.hasProjectId()) {
+            return getProject( selector );
+        } else {
+            return getNamespace( selector );
+        }
+    }
+
+    @Override
     public Namespace getNamespace( final ItemSelector namespaceSelector ) throws ContentAccessException, IllegalArgumentException
     {
         return namespaceMap.computeIfAbsent( namespaceSelector.getNamespace(),
@@ -620,13 +634,14 @@ public class ManagedDefaultRepositoryContent
     @Override
     public ContentItem toItem( String path ) throws LayoutException
     {
-        return getItemFromPath( getAssetByPath( path ) );
+        ItemSelector selector = getPathParser( ).toItemSelector( path );
+        return getItem( selector );
     }
 
     @Override
     public ContentItem toItem( StorageAsset assetPath ) throws LayoutException
     {
-        return getItemFromPath( assetPath );
+        return toItem( assetPath.getPath( ) );
     }
 
     /// ************* End of new generation interface ******************