Author: skygo
Date: Fri Aug 31 20:41:42 2012
New Revision: 1379598

URL: http://svn.apache.org/viewvc?rev=1379598&view=rev
Log:
M2.x repo support 
 logs rewritted for performance
 add test for more complex archiva configuration
 remove previous check in RepositoryModelResolver (misunderstanding of class 
role)

Added:
    
archiva/trunk/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411RepoGroupTest.java
      - copied, changed from r1379352, 
archiva/trunk/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411Test.java
Modified:
    
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java
    
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenArtifactFacet.java
    
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
    
archiva/trunk/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411Test.java

Modified: 
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java?rev=1379598&r1=1379597&r2=1379598&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java
 (original)
+++ 
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java
 Fri Aug 31 20:41:42 2012
@@ -614,7 +614,7 @@ public class Maven2RepositoryStorage
         }
         catch ( IOException e )
         {
-            log.error( "Unable to checksum file " + file + ": " + 
e.getMessage() );
+            log.error( "Unable to checksum file {}: {},MD5", file, 
e.getMessage() );
         }
         try
         {
@@ -622,7 +622,7 @@ public class Maven2RepositoryStorage
         }
         catch ( IOException e )
         {
-            log.error( "Unable to checksum file " + file + ": " + 
e.getMessage() );
+            log.error( "Unable to checksum file {}: {},SHA1", file, 
e.getMessage() );
         }
         metadata.setSize( file.length() );
     }

Modified: 
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenArtifactFacet.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenArtifactFacet.java?rev=1379598&r1=1379597&r2=1379598&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenArtifactFacet.java
 (original)
+++ 
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/MavenArtifactFacet.java
 Fri Aug 31 20:41:42 2012
@@ -91,7 +91,7 @@ public class MavenArtifactFacet
 
     public Map<String, String> toProperties()
     {
-        HashMap<String, String> properties = new HashMap<String, String>();
+        Map<String, String> properties = new HashMap<String, String>();
         properties.put( "type", type );
         if ( classifier != null )
         {

Modified: 
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java?rev=1379598&r1=1379597&r2=1379598&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
 (original)
+++ 
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/RepositoryModelResolver.java
 Fri Aug 31 20:41:42 2012
@@ -54,7 +54,6 @@ import java.io.File;
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
-import 
org.apache.archiva.metadata.repository.storage.RepositoryStorageRuntimeException;
 
 public class RepositoryModelResolver
     implements ModelResolver
@@ -112,20 +111,9 @@ public class RepositoryModelResolver
 
         if ( !model.exists() )
         {
-            if ( VersionUtil.isSnapshot( version ) ) // skygo trying to 
improve speed by honoring managed configuration MRM-1658
-            {
-                if ( managedRepository.isReleases() && 
!managedRepository.isSnapshots() )
-                {
-                    throw new 
UnresolvableModelException("lookforsnaponreleaseonly", groupId, artifactId, 
version );
-                }
-            } 
-            else 
-            {
-                if ( !managedRepository.isReleases() && 
managedRepository.isSnapshots() )
-                {
-                    throw new 
UnresolvableModelException("lookforsreleaseonsneponly", groupId, artifactId, 
version );
-                }
-            }
+            /**
+             * 
+             */
             // is a SNAPSHOT ? so we can try to find locally before asking 
remote repositories.
             if ( StringUtils.contains( version, VersionUtil.SNAPSHOT ) )
             {
@@ -145,21 +133,20 @@ public class RepositoryModelResolver
                     if ( success && model.exists() )
                     {
                         log.info(
-                            "Model '" + model.getAbsolutePath() + "' 
successfully retrieved from remote repository '"
-                                + remoteRepository.getId() + "'" );
+                            "Model '{}' successfully retrieved from remote 
repository '{}'", 
+                                model.getAbsolutePath(), 
remoteRepository.getId() );
                         break;
                     }
                 }
                 catch ( ResourceDoesNotExistException e )
                 {
-                    log.info( "An exception was caught while attempting to 
retrieve model '" + model.getAbsolutePath()
-                                  + "' from remote repository '" + 
remoteRepository.getId() + "'.Reason:"
-                                  + e.getMessage() );
+                    log.info( "An exception was caught while attempting to 
retrieve model '{}' from remote repository '{}'.Reason:{}",
+                                 new Object[]{ model.getAbsolutePath(), 
remoteRepository.getId(), e.getMessage() } );
                 }
                 catch ( Exception e )
                 {
-                    log.warn( "An exception was caught while attempting to 
retrieve model '" + model.getAbsolutePath()
-                                  + "' from remote repository '" + 
remoteRepository.getId() + "'.", e.getMessage() );
+                    log.warn( "An exception was caught while attempting to 
retrieve model '{}' from remote repository '{}'.Reason:{}",
+                                 new Object[]{ model.getAbsolutePath(), 
remoteRepository.getId(), e.getMessage() } );
 
                     continue;
                 }
@@ -290,11 +277,11 @@ public class RepositoryModelResolver
 
                             artifactPath = pathTranslator.toPath( groupId, 
artifactId, version, filename );
 
-                            log.debug( "New artifactPath : " + artifactPath );
+                            log.debug( "New artifactPath :{}", artifactPath );
                         }
                     }
 
-                    log.info( "Retrieving " + artifactPath + " from " + 
remoteRepository.getName() );
+                    log.info( "Retrieving {} from {}", artifactPath, 
remoteRepository.getName() );
 
                     wagon.get( artifactPath, tmpResource );
 
@@ -414,12 +401,12 @@ public class RepositoryModelResolver
         }
         catch ( ConnectionException e )
         {
-            log.error( "Could not connect to " + remoteRepository.getName() + 
": " + e.getMessage() );
+            log.error( "Could not connect to {}:{} 
",remoteRepository.getName(), e.getMessage() );
             connected = false;
         }
         catch ( AuthenticationException e )
         {
-            log.error( "Could not connect to " + remoteRepository.getName() + 
": " + e.getMessage() );
+            log.error( "Could not connect to {}:{} 
",remoteRepository.getName(), e.getMessage() );
             connected = false;
         }
 
@@ -432,7 +419,7 @@ public class RepositoryModelResolver
     {
         File destFile = new File( tmpDirectory, resource.getName() + ext );
 
-        log.info( "Retrieving " + remotePath + " from " + 
remoteRepository.getName() );
+        log.info( "Retrieving {} from {}", remotePath, 
remoteRepository.getName() );
 
         wagon.get( remotePath, destFile );
 
@@ -477,8 +464,8 @@ public class RepositoryModelResolver
                 {
                     if ( newLocation.exists() )
                     {
-                        log.error( "Tried to copy file " + 
fileToMove.getName() + " to " + newLocation.getAbsolutePath()
-                                       + " but file with this name already 
exists." );
+                        log.error( "Tried to copy file {} to {} but file with 
this name already exists.", 
+                                        fileToMove.getName(), 
newLocation.getAbsolutePath() );
                     }
                     else
                     {

Copied: 
archiva/trunk/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411RepoGroupTest.java
 (from r1379352, 
archiva/trunk/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411Test.java)
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411RepoGroupTest.java?p2=archiva/trunk/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411RepoGroupTest.java&p1=archiva/trunk/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411Test.java&r1=1379352&r2=1379598&rev=1379598&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411Test.java
 (original)
+++ 
archiva/trunk/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411RepoGroupTest.java
 Fri Aug 31 20:41:42 2012
@@ -27,12 +27,14 @@ import java.util.List;
 import javax.inject.Inject;
 import javax.inject.Named;
 import junit.framework.TestCase;
+import org.apache.archiva.admin.model.beans.RepositoryGroup;
 import org.apache.archiva.common.utils.FileUtil;
 import org.apache.archiva.configuration.ArchivaConfiguration;
 import org.apache.archiva.configuration.Configuration;
 import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
 import org.apache.archiva.configuration.ProxyConnectorConfiguration;
 import org.apache.archiva.configuration.RemoteRepositoryConfiguration;
+import org.apache.archiva.configuration.RepositoryGroupConfiguration;
 import org.apache.archiva.metadata.model.ArtifactMetadata;
 import org.apache.archiva.metadata.model.Dependency;
 import org.apache.archiva.metadata.model.License;
@@ -40,6 +42,7 @@ import org.apache.archiva.metadata.model
 import org.apache.archiva.metadata.model.ProjectVersionMetadata;
 import org.apache.archiva.metadata.repository.filter.AllFilter;
 import org.apache.archiva.metadata.repository.filter.Filter;
+import 
org.apache.archiva.metadata.repository.storage.RepositoryStorageRuntimeException;
 import org.apache.archiva.proxy.common.WagonFactory;
 import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
 import org.apache.commons.io.FileUtils;
@@ -53,7 +56,7 @@ import org.springframework.test.context.
 
 @RunWith( ArchivaSpringJUnit4ClassRunner.class )
 @ContextConfiguration( locations = { 
"classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" } )
-public class Maven2RepositoryMetadataResolverMRM1411Test
+public class Maven2RepositoryMetadataResolverMRM1411RepoGroupTest
     extends TestCase
 {
     private static final Filter<String> ALL = new AllFilter<String>();
@@ -63,6 +66,10 @@ public class Maven2RepositoryMetadataRes
     private Maven2RepositoryStorage storage;
 
     private static final String TEST_REPO_ID = "test";
+    
+    private static final String TEST_SNAP_REPO_ID = "tests";
+    
+    private static final String TEST_REPO_GROUP_ID = "testrg";
 
     private static final String TEST_REMOTE_REPO_ID = "central";
 
@@ -89,6 +96,8 @@ public class Maven2RepositoryMetadataRes
 
     ManagedRepositoryConfiguration testRepo;
     
+    ManagedRepositoryConfiguration testRepoS;
+    
     Configuration c;
     
     @Before
@@ -99,14 +108,21 @@ public class Maven2RepositoryMetadataRes
         super.setUp();
 
         c = new Configuration();
+        
         testRepo = new ManagedRepositoryConfiguration();
         testRepo.setId( TEST_REPO_ID );
         testRepo.setLocation( new File( "target/test-repository" 
).getAbsolutePath() );
         testRepo.setReleases( true );
-        testRepo.setSnapshots( true );
+        testRepo.setSnapshots( false );
         c.addManagedRepository( testRepo );
        
-
+        testRepoS = new ManagedRepositoryConfiguration();
+        testRepoS.setId( TEST_SNAP_REPO_ID );
+        testRepoS.setLocation( new File( "target/test-repositorys" 
).getAbsolutePath() );
+        testRepoS.setReleases( false );
+        testRepoS.setSnapshots( true );
+        c.addManagedRepository( testRepoS );
+        
         RemoteRepositoryConfiguration testRemoteRepo = new 
RemoteRepositoryConfiguration();
         testRemoteRepo.setId( TEST_REMOTE_REPO_ID );
         testRemoteRepo.setLayout( "default" );
@@ -121,11 +137,29 @@ public class Maven2RepositoryMetadataRes
         proxyConnector.setDisabled( false );
         c.addProxyConnector( proxyConnector );
 
+        ProxyConnectorConfiguration proxyConnectors = new 
ProxyConnectorConfiguration();
+        proxyConnectors.setSourceRepoId( TEST_SNAP_REPO_ID );
+        proxyConnectors.setTargetRepoId( TEST_REMOTE_REPO_ID );
+        proxyConnectors.setDisabled( false );
+        c.addProxyConnector( proxyConnectors );
+        
+        List<String> repos = new ArrayList<String>();
+        repos.add( TEST_REPO_ID );
+        repos.add( TEST_SNAP_REPO_ID );
+
+        RepositoryGroupConfiguration repoGroup = new 
RepositoryGroupConfiguration( );
+        repoGroup.setId( TEST_REPO_GROUP_ID );
+        repoGroup.setRepositories( repos );
+        c.addRepositoryGroup( repoGroup );
+        
         configuration.save( c );
 
-        assertTrue ( c.getManagedRepositories().get( 0 ).isSnapshots() );
+        assertFalse ( c.getManagedRepositories().get( 0 ).isSnapshots() );
         assertTrue ( c.getManagedRepositories().get( 0 ).isReleases() );
         
+        assertTrue ( c.getManagedRepositories().get( 1 ).isSnapshots() );
+        assertFalse ( c.getManagedRepositories().get( 1 ).isReleases() );
+        
         wagonFactory = mock( WagonFactory.class );
 
         storage.setWagonFactory( wagonFactory );
@@ -241,10 +275,52 @@ public class Maven2RepositoryMetadataRes
         throws Exception
     {
         copyTestArtifactWithParent( 
"target/test-classes/com/example/test/test-snapshot-artifact-module-a",
-                                    
"target/test-repository/com/example/test/test-snapshot-artifact-module-a" );
+                                    
"target/test-repositorys/com/example/test/test-snapshot-artifact-module-a" );
+        copyTestArtifactWithParent( 
"target/test-classes/com/example/test/test-snapshot-artifact-root",
+                                    
"target/test-repositorys/com/example/test/test-snapshot-artifact-root" );
+        ProjectVersionMetadata metadata =
+            storage.readProjectVersionMetadata( TEST_SNAP_REPO_ID, 
"com.example.test", "test-snapshot-artifact-module-a",
+                                                "1.1-SNAPSHOT" );
+
+        MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( 
MavenProjectFacet.FACET_ID );
+        assertEquals( "jar", facet.getPackaging() );
+        assertEquals( "com.example.test", facet.getParent().getGroupId() );
+        assertEquals( "test-snapshot-artifact-root", 
facet.getParent().getArtifactId() );
+        assertEquals( "1.1-SNAPSHOT", facet.getParent().getVersion() );
+        assertEquals( "test-snapshot-artifact-module-a", facet.getArtifactId() 
);
+        assertEquals( "com.example.test", facet.getGroupId() );
+        assertNull( metadata.getCiManagement() );
+        assertNotNull( metadata.getDescription() );
+
+        checkApacheLicense( metadata );
+
+        assertEquals( "1.1-SNAPSHOT", metadata.getId() );
+        assertEquals( "Test Snapshot Artifact :: Module A", metadata.getName() 
);
+        String path = 
"test-snapshot-artifact/trunk/test-snapshot-artifact-module-a";
+        assertEquals( TEST_SCM_CONN_BASE + path, 
metadata.getScm().getConnection() );
+        assertEquals( TEST_SCM_DEV_CONN_BASE + path, 
metadata.getScm().getDeveloperConnection() );
+        assertEquals( TEST_SCM_URL_BASE + path, metadata.getScm().getUrl() );
+
+        List<Dependency> dependencies = metadata.getDependencies();
+        assertEquals( 2, dependencies.size() );
+        assertDependency( dependencies.get( 0 ), "commons-io", "commons-io", 
"1.4" );
+        assertDependency( dependencies.get( 1 ), "junit", "junit", "3.8.1", 
"test" );
+
+        List<String> paths = new ArrayList<String>();
+        paths.add( 
"target/test-repositorys/com/example/test/test-snapshot-artifact-module-a" );
+        paths.add( 
"target/test-repositorys/com/example/test/test-snapshot-artifact-root" );
+        deleteTestArtifactWithParent( paths );
+    }
+
+    @Test
+    public void 
testGetProjectVersionMetadataWithParentSnapshotVersionAndSnapNotAllowed()
+        throws Exception
+    {
+        copyTestArtifactWithParent( 
"target/test-classes/com/example/test/test-snapshot-artifact-module-a",
+                                    
"target/test-repositorys/com/example/test/test-snapshot-artifact-module-a" );
 
         ProjectVersionMetadata metadata =
-            storage.readProjectVersionMetadata( TEST_REPO_ID, 
"com.example.test", "test-snapshot-artifact-module-a",
+            storage.readProjectVersionMetadata( TEST_SNAP_REPO_ID, 
"com.example.test", "test-snapshot-artifact-module-a",
                                                 "1.1-SNAPSHOT" );
 
         MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( 
MavenProjectFacet.FACET_ID );
@@ -272,15 +348,56 @@ public class Maven2RepositoryMetadataRes
         assertDependency( dependencies.get( 1 ), "junit", "junit", "3.8.1", 
"test" );
 
         List<String> paths = new ArrayList<String>();
-        paths.add( 
"target/test-repository/com/example/test/test-snapshot-artifact-module-a" );
-        paths.add( 
"target/test-repository/com/example/test/test-snapshot-artifact-root" );
+        paths.add( 
"target/test-repositorys/com/example/test/test-snapshot-artifact-module-a" );
+        paths.add( 
"target/test-repositorys/com/example/test/test-snapshot-artifact-root" );
 
         deleteTestArtifactWithParent( paths );
     }
+    
+    @Test
+    public void 
testGetProjectVersionMetadataWithParentSnapshotVersionAndSnapNotAllowed2()
+        throws Exception
+    {
+        copyTestArtifactWithParent( 
"target/test-classes/com/example/test/test-artifact-module-b",
+                                    
"target/test-repository/com/example/test/test-artifact-module-b" );
+
+        ProjectVersionMetadata metadata =
+            storage.readProjectVersionMetadata( TEST_REPO_ID, 
"com.example.test", "test-artifact-module-b",
+                                                "1.0" );
+
+        MavenProjectFacet facet = (MavenProjectFacet) metadata.getFacet( 
MavenProjectFacet.FACET_ID );
+        assertEquals( "jar", facet.getPackaging() );
+        assertEquals( "com.example.test", facet.getParent().getGroupId() );
+        assertEquals( "test-snapshot-artifact-root", 
facet.getParent().getArtifactId() );
+        assertEquals( "1.1-SNAPSHOT", facet.getParent().getVersion() );
+        assertEquals( "test-artifact-module-b", facet.getArtifactId() );
+        assertEquals( "com.example.test", facet.getGroupId() );
+        assertNull( metadata.getCiManagement() );
+        assertNotNull( metadata.getDescription() );
+
+        checkApacheLicense( metadata );
+
+        assertEquals( "1.0", metadata.getId() );
+        assertEquals( "Test Artifact :: Module B", metadata.getName() );
+        String path = "test-snapshot-artifact/trunk/test-artifact-module-b";
+        assertEquals( TEST_SCM_CONN_BASE + path, 
metadata.getScm().getConnection() );
+        assertEquals( TEST_SCM_DEV_CONN_BASE + path, 
metadata.getScm().getDeveloperConnection() );
+        assertEquals( TEST_SCM_URL_BASE + path, metadata.getScm().getUrl() );
 
+        List<Dependency> dependencies = metadata.getDependencies();
+        assertEquals( 2, dependencies.size() );
+        assertDependency( dependencies.get( 0 ), "commons-io", "commons-io", 
"1.4" );
+        assertDependency( dependencies.get( 1 ), "junit", "junit", "3.8.1", 
"test" );
+
+        List<String> paths = new ArrayList<String>();
+        paths.add( 
"target/test-repository/com/example/test/test-artifact-module-b" );
+        paths.add( 
"target/test-repository/com/example/test/test-snapshot-artifact-root" );
+
+        deleteTestArtifactWithParent( paths );
+    }
     // Tests for MRM-1411 - END
 
-private void assertDependency( Dependency dependency, String groupId, String 
artifactId, String version )
+    private void assertDependency( Dependency dependency, String groupId, 
String artifactId, String version )
     {
         assertDependency( dependency, groupId, artifactId, version, "compile" 
);
     }

Modified: 
archiva/trunk/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411Test.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411Test.java?rev=1379598&r1=1379597&r2=1379598&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411Test.java
 (original)
+++ 
archiva/trunk/archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryMetadataResolverMRM1411Test.java
 Fri Aug 31 20:41:42 2012
@@ -40,6 +40,7 @@ import org.apache.archiva.metadata.model
 import org.apache.archiva.metadata.model.ProjectVersionMetadata;
 import org.apache.archiva.metadata.repository.filter.AllFilter;
 import org.apache.archiva.metadata.repository.filter.Filter;
+import 
org.apache.archiva.metadata.repository.storage.RepositoryStorageRuntimeException;
 import org.apache.archiva.proxy.common.WagonFactory;
 import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
 import org.apache.commons.io.FileUtils;
@@ -278,6 +279,33 @@ public class Maven2RepositoryMetadataRes
         deleteTestArtifactWithParent( paths );
     }
 
+    @Test
+    public void 
testGetProjectVersionMetadataWithParentSnapshotVersionAndSnapNotAllowed()
+        throws Exception
+    {
+        testRepo.setSnapshots( false );
+        configuration.save( c );
+        assertFalse ( c.getManagedRepositories().get( 0 ).isSnapshots() );
+        copyTestArtifactWithParent( 
"target/test-classes/com/example/test/test-snapshot-artifact-module-a",
+                                    
"target/test-repository/com/example/test/test-snapshot-artifact-module-a" );
+
+        try 
+        {
+        ProjectVersionMetadata metadata =
+            storage.readProjectVersionMetadata( TEST_REPO_ID, 
"com.example.test", "test-snapshot-artifact-module-a",
+                                                "1.1-SNAPSHOT" );
+            fail( "Should not be found" );
+        } 
+        catch ( RepositoryStorageRuntimeException e ) 
+        {
+        }
+        
+        List<String> paths = new ArrayList<String>();
+        paths.add( 
"target/test-repository/com/example/test/test-snapshot-artifact-module-a" );
+        paths.add( 
"target/test-repository/com/example/test/test-snapshot-artifact-root" );
+
+        deleteTestArtifactWithParent( paths );
+    }
     // Tests for MRM-1411 - END
 
 private void assertDependency( Dependency dependency, String groupId, String 
artifactId, String version )


Reply via email to