You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2014/01/10 04:54:16 UTC

svn commit: r1557021 - in /archiva/trunk/archiva-modules: metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/ metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/storage/ plugins/mave...

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 );
 
         }