Author: olamy
Date: Fri Jan 10 03:54:15 2014
New Revision: 1557021

URL: http://svn.apache.org/r1557021
Log:
when browsing we must be more relax to resolve dependencies especially with 
snapshot having released as parent pom

Modified:
    
archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/DefaultMetadataResolver.java
    
archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/ReadMetadataRequest.java
    
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/Maven3DependencyTreeBuilder.java
    
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/metadata/repository/storage/maven2/Maven2RepositoryStorage.java

Modified: 
archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/DefaultMetadataResolver.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/DefaultMetadataResolver.java?rev=1557021&r1=1557020&r2=1557021&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/DefaultMetadataResolver.java
 (original)
+++ 
archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/DefaultMetadataResolver.java
 Fri Jan 10 03:54:15 2014
@@ -101,7 +101,7 @@ public class DefaultMetadataResolver
             {
                 ReadMetadataRequest readMetadataRequest =
                     new ReadMetadataRequest().repositoryId( repoId 
).namespace( namespace ).projectId(
-                        projectId ).projectVersion( projectVersion );
+                        projectId ).projectVersion( projectVersion 
).browsingRequest( true );
                 metadata = repositoryStorage.readProjectVersionMetadata( 
readMetadataRequest );
 
                 log.debug( "Resolved project version metadata from storage: 
{}", metadata );

Modified: 
archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/ReadMetadataRequest.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/ReadMetadataRequest.java?rev=1557021&r1=1557020&r2=1557021&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/ReadMetadataRequest.java
 (original)
+++ 
archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/ReadMetadataRequest.java
 Fri Jan 10 03:54:15 2014
@@ -36,6 +36,12 @@ public class ReadMetadataRequest
 
     private Filter<String> filter;
 
+    /**
+     * define this request as a ui request to remove some constraints added 
for optimisations
+     * @since 2.0.0
+     */
+    private boolean browsingRequest;
+
     public ReadMetadataRequest()
     {
         // no op
@@ -135,4 +141,34 @@ public class ReadMetadataRequest
         this.filter = filter;
         return this;
     }
+
+    public boolean isBrowsingRequest()
+    {
+        return browsingRequest;
+    }
+
+    public void setBrowsingRequest( boolean browsingRequest )
+    {
+        this.browsingRequest = browsingRequest;
+    }
+
+    public ReadMetadataRequest browsingRequest( boolean browsingRequest )
+    {
+        this.browsingRequest = browsingRequest;
+        return this;
+    }
+
+    @Override
+    public String toString()
+    {
+        final StringBuilder sb = new StringBuilder( "ReadMetadataRequest{" );
+        sb.append( "repositoryId='" ).append( repositoryId ).append( '\'' );
+        sb.append( ", namespace='" ).append( namespace ).append( '\'' );
+        sb.append( ", projectId='" ).append( projectId ).append( '\'' );
+        sb.append( ", projectVersion='" ).append( projectVersion ).append( 
'\'' );
+        sb.append( ", filter=" ).append( filter );
+        sb.append( ", browsingRequest=" ).append( browsingRequest );
+        sb.append( '}' );
+        return sb.toString();
+    }
 }

Modified: 
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/Maven3DependencyTreeBuilder.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/Maven3DependencyTreeBuilder.java?rev=1557021&r1=1557020&r2=1557021&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/Maven3DependencyTreeBuilder.java
 (original)
+++ 
archiva/trunk/archiva-modules/plugins/maven2-repository/src/main/java/org/apache/archiva/dependency/tree/maven2/Maven3DependencyTreeBuilder.java
 Fri Jan 10 03:54:15 2014
@@ -213,7 +213,7 @@ public class Maven3DependencyTreeBuilder
         collectRequest.setRoot( new Dependency( artifact, "" ) );
 
         // add remote repositories ?
-        //collectRequest.addRepository(  )
+        collectRequest.addRepository( new 
org.sonatype.aether.repository.RemoteRepository( "fake", "default", 
"http://maven.apache.org"; ) );
 
         collectRequest.setRequestContext( "project" );
 

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=1557021&r1=1557020&r2=1557021&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 Jan 10 03:54:15 2014
@@ -169,31 +169,35 @@ public class Maven2RepositoryStorage
         {
             ManagedRepository managedRepository =
                 managedRepositoryAdmin.getManagedRepository( 
readMetadataRequest.getRepositoryId() );
-
             String artifactVersion = readMetadataRequest.getProjectVersion();
-            if ( VersionUtil.isSnapshot(
-                readMetadataRequest.getProjectVersion() ) ) // skygo trying to 
improve speed by honoring managed configuration MRM-1658
+            // olamy: in case of browsing via the ui we can mix repos (parent 
of a SNAPSHOT can come from release repo)
+            if ( !readMetadataRequest.isBrowsingRequest() )
             {
-                if ( managedRepository.isReleases() && 
!managedRepository.isSnapshots() )
+
+                if ( VersionUtil.isSnapshot(
+                    artifactVersion ) ) // skygo trying to improve speed by 
honoring managed configuration MRM-1658
                 {
-                    throw new RepositoryStorageRuntimeException( 
"lookforsnaponreleaseonly",
-                                                                 "managed repo 
is configured for release only" );
+                    if ( managedRepository.isReleases() && 
!managedRepository.isSnapshots() )
+                    {
+                        throw new RepositoryStorageRuntimeException( 
"lookforsnaponreleaseonly",
+                                                                     "managed 
repo is configured for release only" );
+                    }
                 }
-            }
-            else
-            {
-                if ( !managedRepository.isReleases() && 
managedRepository.isSnapshots() )
+                else
                 {
-                    throw new RepositoryStorageRuntimeException( 
"lookforsreleaseonsneponly",
-                                                                 "managed repo 
is configured for snapshot only" );
+                    if ( !managedRepository.isReleases() && 
managedRepository.isSnapshots() )
+                    {
+                        throw new RepositoryStorageRuntimeException( 
"lookforsreleaseonsneponly",
+                                                                     "managed 
repo is configured for snapshot only" );
+                    }
                 }
             }
             File basedir = new File( managedRepository.getLocation() );
-            if ( VersionUtil.isSnapshot( 
readMetadataRequest.getProjectVersion() ) )
+            if ( VersionUtil.isSnapshot( artifactVersion ) )
             {
                 File metadataFile = pathTranslator.toFile( basedir, 
readMetadataRequest.getNamespace(),
-                                                           
readMetadataRequest.getProjectId(),
-                                                           
readMetadataRequest.getProjectVersion(), METADATA_FILENAME );
+                                                           
readMetadataRequest.getProjectId(), artifactVersion,
+                                                           METADATA_FILENAME );
                 try
                 {
                     ArchivaRepositoryMetadata metadata = 
MavenMetadataReader.read( metadataFile );
@@ -219,7 +223,7 @@ public class Maven2RepositoryStorage
             String id = readMetadataRequest.getProjectId() + "-" + 
artifactVersion + ".pom";
             File file =
                 pathTranslator.toFile( basedir, 
readMetadataRequest.getNamespace(), readMetadataRequest.getProjectId(),
-                                       
readMetadataRequest.getProjectVersion(), id );
+                                       artifactVersion, id );
 
             if ( !file.exists() )
             {
@@ -258,6 +262,13 @@ public class Maven2RepositoryStorage
                 }
             }
 
+            // That's a browsing request so we can a mix of SNAPSHOT and 
release artifacts (especially with snapshots which
+            // can have released parent pom
+            if ( readMetadataRequest.isBrowsingRequest() )
+            {
+                remoteRepositories.addAll( 
remoteRepositoryAdmin.getRemoteRepositories() );
+            }
+
             ModelBuildingRequest req =
                 new DefaultModelBuildingRequest().setProcessPlugins( false 
).setPomFile( file ).setTwoPhaseBuilding(
                     false ).setValidationLevel( 
ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL );
@@ -809,12 +820,12 @@ public class Maven2RepositoryStorage
             filePath =
                 StringUtils.replace( filePath, 
artifactReference.getArtifactId() + "-" + artifactReference.getVersion(),
                                      artifactReference.getArtifactId() + "-" + 
StringUtils.remove(
-                                         artifactReference.getVersion(), "-" + 
VersionUtil.SNAPSHOT ) + "-" + timestamp + "-"
-                                         + buildNumber );
+                                         artifactReference.getVersion(), "-" + 
VersionUtil.SNAPSHOT ) + "-" + timestamp
+                                         + "-" + buildNumber );
 
-            throw new RelocationException(
-                "/repository/" + 
managedRepositoryContent.getRepository().getId() +
-                    ( StringUtils.startsWith( filePath, "/" ) ? "" : "/" ) + 
filePath, RelocationException.RelocationType.TEMPORARY );
+            throw new RelocationException( "/repository/" + 
managedRepositoryContent.getRepository().getId() +
+                                               ( StringUtils.startsWith( 
filePath, "/" ) ? "" : "/" ) + filePath,
+                                           
RelocationException.RelocationType.TEMPORARY );
 
         }
 


Reply via email to