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/13 22:21:45 UTC
[archiva] 03/04: Adding unit tests for new api methods
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 20476fff3c75f9afb2b5135c5429e832434c895a
Author: Martin Stockhammer <ma...@apache.org>
AuthorDate: Fri Mar 13 19:21:03 2020 +0100
Adding unit tests for new api methods
---
.../content/ManagedDefaultRepositoryContent.java | 13 +-
.../maven/AbstractRepositoryLayerTestCase.java | 2 +-
.../ManagedDefaultRepositoryContentTest.java | 234 ++++++++++++++++++++-
.../apache/maven/samplejar/1.0/samplejar-1.0.pom | 2 +-
.../apache/maven/samplejar/2.0/samplejar-2.0.pom | 4 +-
.../org/multilevel/1.0/mulitlevel-1.0.pom | 161 ++++++++++++++
.../org/multilevel/1.0/mulitlevel-1.0.pom.md5 | 1 +
.../org/multilevel/1.0/mulitlevel-1.0.pom.sha256 | 1 +
.../org/multilevel/test/1.0/test-1.0.pom | 161 ++++++++++++++
.../org/multilevel/test/1.0/test-1.0.pom.md5 | 1 +
.../org/multilevel/test/1.0/test-1.0.pom.sha256 | 1 +
.../src/test/resources/spring-context.xml | 2 +-
12 files changed, 569 insertions(+), 14 deletions(-)
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 a0611b2..ef4ec97 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
@@ -63,6 +63,7 @@ import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
@@ -416,7 +417,7 @@ public class ManagedDefaultRepositoryContent
Matcher matcher = UNIQUE_SNAPSHOT_PATTERN.matcher( versionPostfix );
if (matcher.matches()) {
info.version = baseVersion + "-" + matcher.group( 1 );
- String newPrefix = prefix + info.version;
+ String newPrefix = info.id + "-" + info.version;
if (fileName.startsWith( newPrefix ))
{
String classPostfix = StringUtils.removeStart( fileName, newPrefix );
@@ -482,6 +483,12 @@ public class ManagedDefaultRepositoryContent
info.artifactType = BaseArtifactTypes.METADATA;
} else if (MavenContentHelper.METADATA_REPOSITORY_FILENAME.equalsIgnoreCase( fileName )) {
info.artifactType = MavenTypes.REPOSITORY_METADATA;
+ } else if (StringUtils.isNotEmpty( info.remainder ) && StringUtils.countMatches( info.remainder, "." )>=2) {
+ String mainFile = StringUtils.substringBeforeLast( fileName, "." );
+ if (path.getParent().resolve( mainFile ).exists())
+ {
+ info.artifactType = BaseArtifactTypes.RELATED;
+ }
}
return info;
@@ -691,8 +698,8 @@ public class ManagedDefaultRepositoryContent
.map( this::getArtifactFromPath );
} else if (projectId!=null) {
final StorageAsset projDir = getAsset( selector.getNamespace( ), projectId );
- return projDir.list( ).stream( ).filter( StorageAsset::isContainer )
- .map( StorageAsset::list )
+ return projDir.list( ).stream( )
+ .map(a -> a.isContainer( ) ? a.list( ) : Arrays.asList( a ) )
.flatMap( List::stream )
.filter( filter )
.map( this::getArtifactFromPath );
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/AbstractRepositoryLayerTestCase.java b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/AbstractRepositoryLayerTestCase.java
index 028b726..6f3bb45 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/AbstractRepositoryLayerTestCase.java
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/java/org/apache/archiva/repository/maven/AbstractRepositoryLayerTestCase.java
@@ -43,7 +43,7 @@ import java.nio.file.Paths;
*
*/
@RunWith( ArchivaSpringJUnit4ClassRunner.class )
-@ContextConfiguration( { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context-no-mock-conf.xml" } )
+@ContextConfiguration( { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context-repository-conf.xml" } )
public abstract class AbstractRepositoryLayerTestCase
{
@Rule
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 1ddfc04..a0dbbd2 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
@@ -34,7 +34,6 @@ import org.apache.archiva.repository.content.Artifact;
import org.apache.archiva.repository.content.BaseArtifactTypes;
import org.apache.archiva.repository.content.ItemSelector;
import org.apache.archiva.repository.content.Project;
-import org.apache.archiva.repository.content.Version;
import org.apache.archiva.repository.content.base.ArchivaItemSelector;
import org.apache.archiva.repository.maven.MavenManagedRepository;
import org.apache.archiva.repository.maven.metadata.storage.ArtifactMappingProvider;
@@ -44,7 +43,6 @@ import org.junit.Test;
import javax.inject.Inject;
import javax.inject.Named;
-import javax.jcr.Item;
import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.file.Files;
@@ -54,7 +52,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
-import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -463,9 +460,27 @@ public class ManagedDefaultRepositoryContentTest
.withNamespace( "javax.sql" )
.withProjectId( "jdbc" )
.withVersion( "2.0" ).build();
- Stream<? extends Artifact> stream = repoContent.newArtifactStream( selector );
- assertNotNull( stream );
- List<? extends Artifact> results = stream.collect( Collectors.toList( ) );
+ try(Stream<? extends Artifact> stream = repoContent.newArtifactStream( selector ))
+ {
+ assertNotNull( stream );
+ List<? extends Artifact> results = stream.collect( Collectors.toList( ) );
+ checkArtifactListWithVersionSelector1( results );
+ }
+ }
+
+ @Test
+ public void testGetArtifactListWithVersionSelector() {
+ ItemSelector selector = ArchivaItemSelector.builder( )
+ .withNamespace( "javax.sql" )
+ .withProjectId( "jdbc" )
+ .withVersion( "2.0" ).build();
+ List<? extends Artifact> results = repoContent.getArtifacts( selector );
+ checkArtifactListWithVersionSelector1( results );
+ }
+
+ private void checkArtifactListWithVersionSelector1( List<? extends Artifact> results )
+ {
+ assertNotNull( results );
assertEquals( 2, results.size( ) );
Artifact mainArtifact = results.stream( ).filter( a -> a.getFileName( ).equals( "jdbc-2.0.jar" ) ).findFirst( ).get( );
assertNotNull( mainArtifact );
@@ -474,4 +489,211 @@ public class ManagedDefaultRepositoryContentTest
assertNotNull( metaArtifact );
assertEquals( MavenTypes.REPOSITORY_METADATA, metaArtifact.getArtifactType( ) );
}
+
+ @Test
+ public void testGetArtifactStreamWithVersionSelector2() {
+ ItemSelector selector = ArchivaItemSelector.builder( )
+ .withNamespace( "org.apache.axis2" )
+ .withProjectId( "axis2" )
+ .withVersion( "1.3-SNAPSHOT" ).build();
+ try(Stream<? extends Artifact> stream = repoContent.newArtifactStream( selector ))
+ {
+ assertNotNull( stream );
+ List<? extends Artifact> results = stream.collect( Collectors.toList( ) );
+ checkArtifactListWithVersionSelector2( results );
+ }
+ }
+
+ @Test
+ public void testGetArtifactListWithVersionSelector2() {
+ ItemSelector selector = ArchivaItemSelector.builder( )
+ .withNamespace( "org.apache.axis2" )
+ .withProjectId( "axis2" )
+ .withVersion( "1.3-SNAPSHOT" ).build();
+ List<? extends Artifact> results = repoContent.getArtifacts( selector );
+ checkArtifactListWithVersionSelector2( results );
+ }
+
+ private void checkArtifactListWithVersionSelector2( List<? extends Artifact> results )
+ {
+ assertNotNull( results );
+ assertEquals( 39, results.size( ) );
+
+ Artifact artifact = results.stream( ).filter( a -> a.getFileName( ).equals( "axis2-1.3-20070725.210059-1.pom" ) )
+ .findFirst( ).get( );
+
+ assertNotNull( artifact );
+ assertEquals( "pom", artifact.getExtension( ) );
+ assertEquals( BaseArtifactTypes.MAIN, artifact.getArtifactType( ) );
+ assertEquals( "1.3-SNAPSHOT", artifact.getVersion( ).getVersion( ) );
+ assertEquals( "1.3-20070725.210059-1", artifact.getArtifactVersion( ) );
+ assertEquals( ".pom", artifact.getRemainder( ) );
+ assertEquals( "axis2", artifact.getId( ) );
+ assertEquals( "axis2", artifact.getVersion( ).getProject( ).getId( ) );
+ assertEquals( "org.apache.axis2", artifact.getVersion( ).getProject( ).getNamespace( ).getNamespace( ) );
+ assertEquals( "", artifact.getClassifier( ) );
+ assertEquals( "pom", artifact.getType( ) );
+
+ artifact = null;
+ artifact = results.stream( ).filter( a -> a.getFileName( ).equals( "axis2-1.3-20070725.210059-1.pom.md5" ) )
+ .findFirst( ).get( );
+
+ assertNotNull( artifact );
+ assertEquals( "md5", artifact.getExtension( ) );
+ assertEquals( BaseArtifactTypes.RELATED, artifact.getArtifactType( ) );
+ assertEquals( "1.3-SNAPSHOT", artifact.getVersion( ).getVersion( ) );
+ assertEquals( "1.3-20070725.210059-1", artifact.getArtifactVersion( ) );
+ assertEquals( ".pom.md5", artifact.getRemainder( ) );
+ assertEquals( "axis2", artifact.getId( ) );
+ assertEquals( "axis2", artifact.getVersion( ).getProject( ).getId( ) );
+ assertEquals( "org.apache.axis2", artifact.getVersion( ).getProject( ).getNamespace( ).getNamespace( ) );
+ assertEquals( "", artifact.getClassifier( ) );
+ assertEquals( "md5", artifact.getType( ) );
+
+
+ artifact = null;
+ artifact = results.stream( ).filter( a -> a.getFileName( ).equals( "maven-metadata.xml" ) )
+ .findFirst( ).get( );
+ assertNotNull( artifact );
+ assertEquals( BaseArtifactTypes.METADATA, artifact.getArtifactType( ) );
+ assertEquals( "1.3-SNAPSHOT", artifact.getVersion( ).getVersion( ) );
+ assertEquals( "xml", artifact.getExtension( ) );
+ }
+
+ @Test
+ public void testGetArtifactListWithArtifactSelector1() {
+ ItemSelector selector = ArchivaItemSelector.builder( )
+ .withNamespace( "org.apache.axis2" )
+ .withProjectId( "axis2" )
+ .withVersion( "1.3-SNAPSHOT" )
+ .withArtifactVersion( "1.3-20070731.113304-21" )
+ .withExtension( "pom" )
+ .build( );
+ List<? extends Artifact> results = repoContent.getArtifacts( selector );
+ checkArtifactListWithArtifactSelector1( results );
+ }
+
+ @Test
+ public void testGetArtifactStreamWithArtifactSelector1() {
+ ItemSelector selector = ArchivaItemSelector.builder( )
+ .withNamespace( "org.apache.axis2" )
+ .withProjectId( "axis2" )
+ .withVersion( "1.3-SNAPSHOT" )
+ .withArtifactVersion( "1.3-20070731.113304-21" )
+ .withExtension( "pom" )
+ .build( );
+ try(Stream<? extends Artifact> results = repoContent.newArtifactStream( selector ))
+ {
+ checkArtifactListWithArtifactSelector1( results.collect( Collectors.toList()) );
+ }
+ }
+
+ private void checkArtifactListWithArtifactSelector1( List<? extends Artifact> results )
+ {
+ assertNotNull( results );
+ assertEquals( 1, results.size( ) );
+ Artifact artifact = results.get( 0 );
+ assertEquals( "pom", artifact.getExtension( ) );
+ assertEquals( BaseArtifactTypes.MAIN, artifact.getArtifactType( ) );
+ }
+
+ @Test
+ public void testGetArtifactListWithArtifactSelector2() {
+ ItemSelector selector = ArchivaItemSelector.builder( )
+ .withNamespace( "org.apache.axis2" )
+ .withProjectId( "axis2" )
+ .withVersion( "1.3-SNAPSHOT" )
+ .withArtifactVersion( "1.3-20070731.113304-21" )
+ .withExtension( "pom" )
+ .includeRelatedArtifacts()
+ .build( );
+ List<? extends Artifact> results = repoContent.getArtifacts( selector );
+
+ checkArtifactListWithArtifactSelector2( results );
+
+ }
+
+ @Test
+ public void testGetArtifactStreamWithArtifactSelector2() {
+ ItemSelector selector = ArchivaItemSelector.builder( )
+ .withNamespace( "org.apache.axis2" )
+ .withProjectId( "axis2" )
+ .withVersion( "1.3-SNAPSHOT" )
+ .withArtifactVersion( "1.3-20070731.113304-21" )
+ .withExtension( "pom" )
+ .includeRelatedArtifacts()
+ .build( );
+ try(Stream<? extends Artifact> results = repoContent.newArtifactStream( selector ))
+ {
+ checkArtifactListWithArtifactSelector2( results.collect( Collectors.toList()) );
+ }
+ }
+
+ private void checkArtifactListWithArtifactSelector2( List<? extends Artifact> results )
+ {
+ assertNotNull( results );
+ assertEquals( 3, results.size( ) );
+ Artifact artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "axis2-1.3-20070731.113304-21.pom" ) )
+ .findFirst( ).get( );
+ assertNotNull( artifact );
+ assertEquals( "pom", artifact.getExtension( ) );
+ assertEquals( BaseArtifactTypes.MAIN, artifact.getArtifactType( ) );
+
+ artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "axis2-1.3-20070731.113304-21.pom.sha1" ) )
+ .findFirst( ).get( );
+ assertNotNull( artifact );
+ assertEquals( "sha1", artifact.getExtension( ) );
+ assertEquals( BaseArtifactTypes.RELATED, artifact.getArtifactType( ) );
+ }
+
+
+ @Test
+ public void testArtifactListWithProjectSelector1() {
+ ItemSelector selector = ArchivaItemSelector.builder( )
+ .withNamespace( "org.apache.maven.shared" )
+ .withProjectId( "maven-downloader" )
+ .build( );
+ List<? extends Artifact> results = repoContent.getArtifacts( selector );
+ checkArtifactListWithProjectSelector1( results );
+
+ }
+
+ @Test
+ public void testArtifactStreamWithProjectSelector1() {
+ ItemSelector selector = ArchivaItemSelector.builder( )
+ .withNamespace( "org.apache.maven.shared" )
+ .withProjectId( "maven-downloader" )
+ .build( );
+ Stream<? extends Artifact> results = repoContent.newArtifactStream( selector );
+ checkArtifactListWithProjectSelector1( results.collect( Collectors.toList()) );
+
+ }
+
+ private void checkArtifactListWithProjectSelector1( List<? extends Artifact> results )
+ {
+ assertNotNull( results );
+ assertEquals( 27, results.size( ) );
+
+ Artifact artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "maven-metadata.xml" ) )
+ .findFirst( ).get( );
+ assertNotNull( artifact );
+ assertEquals( "xml", artifact.getExtension( ) );
+ assertEquals( BaseArtifactTypes.METADATA, artifact.getArtifactType( ) );
+
+ artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "maven-downloader-1.0-sources.jar" ) )
+ .findFirst( ).get( );
+ assertNotNull( artifact );
+ assertEquals( BaseArtifactTypes.MAIN, artifact.getArtifactType( ) );
+ assertEquals( "sources", artifact.getClassifier( ) );
+ assertEquals( "java-source", artifact.getType( ) );
+
+ artifact = results.stream( ).filter( a -> a.getFileName( ).equalsIgnoreCase( "maven-downloader-1.0-sources.jar.sha1" ) )
+ .findFirst( ).get( );
+ assertNotNull( artifact );
+ assertEquals( BaseArtifactTypes.RELATED, artifact.getArtifactType( ) );
+ assertEquals( "sources", artifact.getClassifier( ) );
+ assertEquals( "sha1", artifact.getType( ) );
+ assertEquals( ".jar.sha1", artifact.getRemainder( ) );
+ }
+
}
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/apache/maven/samplejar/1.0/samplejar-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/apache/maven/samplejar/1.0/samplejar-1.0.pom
index 6ab57d1..fd18076 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/apache/maven/samplejar/1.0/samplejar-1.0.pom
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/apache/maven/samplejar/1.0/samplejar-1.0.pom
@@ -21,7 +21,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven</groupId>
- <artifactId>C</artifactId>
+ <artifactId>samplejar</artifactId>
<version>1.0</version>
<name>Maven Test Repository Artifact Discovery</name>
<!-- default packaging is jar -->
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/apache/maven/samplejar/2.0/samplejar-2.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/apache/maven/samplejar/2.0/samplejar-2.0.pom
index a959980..284c3da 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/apache/maven/samplejar/2.0/samplejar-2.0.pom
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/apache/maven/samplejar/2.0/samplejar-2.0.pom
@@ -21,8 +21,8 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven</groupId>
- <artifactId>C</artifactId>
- <version>1.0</version>
+ <artifactId>samplejar</artifactId>
+ <version>2.0</version>
<name>Maven Test Repository Artifact Discovery</name>
<!-- specified packaging -->
<packaging>jar</packaging>
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/1.0/mulitlevel-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/1.0/mulitlevel-1.0.pom
new file mode 100644
index 0000000..ecc1a93
--- /dev/null
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/1.0/mulitlevel-1.0.pom
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org</groupId>
+ <artifactId>multilevel</artifactId>
+ <name>Multilevel Test</name>
+ <version>1.0</version>
+ <packaging>pom</packaging>
+
+ <organization>
+ <name>Company</name>
+ <url>http://www.company.com/</url>
+ </organization>
+ <inceptionYear>2002</inceptionYear>
+
+ <modules>
+ <module>api</module>
+ <module>common</module>
+ <module>broker</module>
+ <module>endpoint</module>
+ </modules>
+
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <dependencyManagement>
+ <dependencies>
+ <!-- common version strategy -->
+ <dependency>
+ <groupId>javax.activation</groupId>
+ <artifactId>activation</artifactId>
+ <version>1.0.2</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.jms</groupId>
+ <artifactId>jms</artifactId>
+ <version>1.0.2</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.ejb</groupId>
+ <artifactId>ejb</artifactId>
+ <version>2.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.4</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.mail</groupId>
+ <artifactId>mail</artifactId>
+ <version>1.4</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>xml-apis</groupId>
+ <artifactId>xml-apis</artifactId>
+ <version>2.0.2</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>1.0.4</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ <version>3.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring</artifactId>
+ <version>2.0.7</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-mock</artifactId>
+ <version>2.0.7</version>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-jdbc</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-web</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.8</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-discovery</groupId>
+ <artifactId>commons-discovery</artifactId>
+ <version>0.2</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-id</groupId>
+ <artifactId>commons-id</artifactId>
+ <version>0.1-dev</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.castor</groupId>
+ <artifactId>castor</artifactId>
+ <version>1.0.5-xml</version>
+ </dependency>
+ <dependency>
+ <groupId>xerces</groupId>
+ <artifactId>xerces</artifactId>
+ <version>2.4.0</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>3.1</version>
+ </dependency>
+ <dependency>
+ <groupId>stax</groupId>
+ <artifactId>stax-api</artifactId>
+ <version>1.0.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.woodstox</groupId>
+ <artifactId>wstx-asl</artifactId>
+ <version>3.2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>com.thoughtworks.xstream</groupId>
+ <artifactId>xstream</artifactId>
+ <version>1.2.2</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.management</groupId>
+ <artifactId>jmxri</artifactId>
+ <version>1.2.1</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+</project>
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/1.0/mulitlevel-1.0.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/1.0/mulitlevel-1.0.pom.md5
new file mode 100644
index 0000000..5a2e507
--- /dev/null
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/1.0/mulitlevel-1.0.pom.md5
@@ -0,0 +1 @@
+f47d2f7fe7abf0939aca96197ca21a13 mulitlevel-1.0.pom
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/1.0/mulitlevel-1.0.pom.sha256 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/1.0/mulitlevel-1.0.pom.sha256
new file mode 100644
index 0000000..902140c
--- /dev/null
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/1.0/mulitlevel-1.0.pom.sha256
@@ -0,0 +1 @@
+de1d43c63ea17a7aad03c6edc8477a8e196ad406a6c7e18c23db057f9e030a13 mulitlevel-1.0.pom
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/test/1.0/test-1.0.pom b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/test/1.0/test-1.0.pom
new file mode 100644
index 0000000..7349873
--- /dev/null
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/test/1.0/test-1.0.pom
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project>
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.multilevel</groupId>
+ <artifactId>test</artifactId>
+ <name>Multilevel Test Sub 1</name>
+ <version>1.0</version>
+ <packaging>pom</packaging>
+
+ <organization>
+ <name>Company</name>
+ <url>http://www.company.com/</url>
+ </organization>
+ <inceptionYear>2002</inceptionYear>
+
+ <modules>
+ <module>api</module>
+ <module>common</module>
+ <module>broker</module>
+ <module>endpoint</module>
+ </modules>
+
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <dependencyManagement>
+ <dependencies>
+ <!-- common version strategy -->
+ <dependency>
+ <groupId>javax.activation</groupId>
+ <artifactId>activation</artifactId>
+ <version>1.0.2</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.jms</groupId>
+ <artifactId>jms</artifactId>
+ <version>1.0.2</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.ejb</groupId>
+ <artifactId>ejb</artifactId>
+ <version>2.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.4</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.mail</groupId>
+ <artifactId>mail</artifactId>
+ <version>1.4</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>xml-apis</groupId>
+ <artifactId>xml-apis</artifactId>
+ <version>2.0.2</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>1.0.4</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ <version>3.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring</artifactId>
+ <version>2.0.7</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-mock</artifactId>
+ <version>2.0.7</version>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-jdbc</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-web</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.8</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-discovery</groupId>
+ <artifactId>commons-discovery</artifactId>
+ <version>0.2</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-id</groupId>
+ <artifactId>commons-id</artifactId>
+ <version>0.1-dev</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.castor</groupId>
+ <artifactId>castor</artifactId>
+ <version>1.0.5-xml</version>
+ </dependency>
+ <dependency>
+ <groupId>xerces</groupId>
+ <artifactId>xerces</artifactId>
+ <version>2.4.0</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>3.1</version>
+ </dependency>
+ <dependency>
+ <groupId>stax</groupId>
+ <artifactId>stax-api</artifactId>
+ <version>1.0.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.woodstox</groupId>
+ <artifactId>wstx-asl</artifactId>
+ <version>3.2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>com.thoughtworks.xstream</groupId>
+ <artifactId>xstream</artifactId>
+ <version>1.2.2</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.management</groupId>
+ <artifactId>jmxri</artifactId>
+ <version>1.2.1</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+</project>
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/test/1.0/test-1.0.pom.md5 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/test/1.0/test-1.0.pom.md5
new file mode 100644
index 0000000..4af4123
--- /dev/null
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/test/1.0/test-1.0.pom.md5
@@ -0,0 +1 @@
+ef3e226769f6e4ef6ba17a39d1ae7832 test-1.0.pom
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/test/1.0/test-1.0.pom.sha256 b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/test/1.0/test-1.0.pom.sha256
new file mode 100644
index 0000000..fef1c3f
--- /dev/null
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/repositories/default-repository/org/multilevel/test/1.0/test-1.0.pom.sha256
@@ -0,0 +1 @@
+340253fb0649f043044a96857c5a6ec4b74992e25d58071b46de1ef99f046cf0 test-1.0.pom
diff --git a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context.xml b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context.xml
index 872f498..0278de4 100644
--- a/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context.xml
+++ b/archiva-modules/archiva-maven/archiva-maven-repository/src/test/resources/spring-context.xml
@@ -28,7 +28,7 @@
default-lazy-init="true">
<context:annotation-config/>
- <context:component-scan base-package="org.apache.archiva.repository,org.apache.archiva.configuration,org.apache.archiva.metadata.repository,org.apache.archiva.repository.index.mock"/>
+ <context:component-scan base-package="org.apache.archiva.repository,org.apache.archiva.configuration,org.apache.archiva.metadata.repository,org.apache.archiva.repository.maven.mock"/>
<bean name="archivaConfiguration#test" class="org.apache.archiva.configuration.DefaultArchivaConfiguration">