Updated Branches:
  refs/heads/master 0824df85f -> d22d94903

code simplification

Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/d22d9490
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/d22d9490
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/d22d9490

Branch: refs/heads/master
Commit: d22d94903ae67ea271d9bd52fc7765e595cd6361
Parents: 0824df8
Author: Hervé Boutemy <hbout...@apache.org>
Authored: Thu Jan 17 22:56:18 2013 +0100
Committer: Hervé Boutemy <hbout...@apache.org>
Committed: Thu Jan 17 22:56:18 2013 +0100

----------------------------------------------------------------------
 .../internal/DefaultVersionResolver.java           |   95 ++++++++-------
 1 files changed, 53 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven/blob/d22d9490/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java
----------------------------------------------------------------------
diff --git 
a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java
 
b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java
index f360e33..24e9531 100644
--- 
a/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java
+++ 
b/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/DefaultVersionResolver.java
@@ -22,6 +22,7 @@ package org.apache.maven.repository.internal;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -36,6 +37,7 @@ import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 import org.sonatype.aether.RepositoryCache;
 import org.sonatype.aether.RepositoryEvent.EventType;
 import org.sonatype.aether.RepositorySystemSession;
@@ -149,8 +151,6 @@ public class DefaultVersionResolver
     public VersionResult resolveVersion( RepositorySystemSession session, 
VersionRequest request )
         throws VersionResolutionException
     {
-        RequestTrace trace = DefaultRequestTrace.newChild( request.getTrace(), 
request );
-
         Artifact artifact = request.getArtifact();
 
         String version = artifact.getVersion();
@@ -219,6 +219,8 @@ public class DefaultVersionResolver
 
             metadataRequests.add( new MetadataRequest( metadata, null, 
request.getRequestContext() ) );
 
+            RequestTrace trace = DefaultRequestTrace.newChild( 
request.getTrace(), request );
+
             for ( RemoteRepository repository : request.getRepositories() )
             {
                 MetadataRequest metadataRequest =
@@ -319,50 +321,35 @@ public class DefaultVersionResolver
     {
         Versioning versioning = null;
 
-        FileInputStream fis = null;
+        SyncContext syncContext = syncContextFactory.newInstance( session, 
true );
+
         try
         {
-            if ( metadata != null )
-            {
-                SyncContext syncContext = syncContextFactory.newInstance( 
session, true );
+            syncContext.acquire( null, Collections.singleton( metadata ) );
 
-                try
-                {
-                    syncContext.acquire( null, Collections.singleton( metadata 
) );
+            versioning = readMavenRepositoryMetadataVersioning( 
metadata.getFile() );
 
-                    if ( metadata.getFile() != null && 
metadata.getFile().exists() )
-                    {
-                        fis = new FileInputStream( metadata.getFile() );
-                        org.apache.maven.artifact.repository.metadata.Metadata 
m =
-                            new MetadataXpp3Reader().read( fis, false );
-                        versioning = m.getVersioning();
-
-                        /*
-                         * NOTE: Users occasionally misuse the id "local" for 
remote repos which screws up the metadata
-                         * of the local repository. This is especially 
troublesome during snapshot resolution so we try
-                         * to handle that gracefully.
-                         */
-                        if ( versioning != null && repository instanceof 
LocalRepository )
-                        {
-                            if ( versioning.getSnapshot() != null && 
versioning.getSnapshot().getBuildNumber() > 0 )
-                            {
-                                Versioning repaired = new Versioning();
-                                repaired.setLastUpdated( 
versioning.getLastUpdated() );
-                                Snapshot snapshot = new Snapshot();
-                                snapshot.setLocalCopy( true );
-                                repaired.setSnapshot( snapshot );
-                                versioning = repaired;
-
-                                throw new IOException( "Snapshot information 
corrupted with remote repository data"
-                                    + ", please verify that no remote 
repository uses the id '" + repository.getId()
-                                    + "'" );
-                            }
-                        }
-                    }
-                }
-                finally
+            /*
+             * NOTE: Users occasionally misuse the id "local" for remote repos 
which screws up the metadata
+             * of the local repository. This is especially troublesome during 
snapshot resolution so we try
+             * to handle that gracefully.
+             */
+            if ( versioning != null && repository instanceof LocalRepository )
+            {
+                Snapshot snapshot = versioning.getSnapshot();
+                if ( snapshot != null && snapshot.getBuildNumber() > 0 )
                 {
-                    syncContext.release();
+                    Versioning repaired = new Versioning();
+                    repaired.setLastUpdated( versioning.getLastUpdated() );
+                    snapshot = new Snapshot();
+                    snapshot.setLocalCopy( true );
+                    repaired.setSnapshot( snapshot );
+
+                    versioning = repaired;
+
+                    throw new IOException( "Snapshot information corrupted 
with remote repository data"
+                        + ", please verify that no remote repository uses the 
id '" + repository.getId()
+                        + "'" );
                 }
             }
         }
@@ -373,12 +360,36 @@ public class DefaultVersionResolver
         }
         finally
         {
-            IOUtil.close( fis );
+            syncContext.release();
         }
 
         return ( versioning != null ) ? versioning : new Versioning();
     }
 
+    private Versioning readMavenRepositoryMetadataVersioning( File 
metadataFile )
+        throws IOException, XmlPullParserException
+    {
+        if ( metadataFile == null ||! metadataFile.exists() )
+        {
+            return null;
+        }
+
+        InputStream is = null;
+        try
+        {
+            is = new FileInputStream( metadataFile );
+
+            MetadataXpp3Reader reader = new MetadataXpp3Reader();
+            org.apache.maven.artifact.repository.metadata.Metadata m = 
reader.read( is, false );
+
+            return m.getVersioning();
+        }
+        finally
+        {
+            IOUtil.close( is );
+        }
+    }
+
     private void invalidMetadata( RepositorySystemSession session, 
RequestTrace trace, Metadata metadata,
                                   ArtifactRepository repository, Exception 
exception )
     {

Reply via email to