svn commit: r833730 - /maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/source/RemoteCatalogArchetypeDataSource.java

View: New views
1 Messages — Rating Filter:   Alert me  

svn commit: r833730 - /maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/source/RemoteCatalogArchetypeDataSource.java

by bentmann :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Author: bentmann
Date: Sat Nov  7 18:49:06 2009
New Revision: 833730

URL: http://svn.apache.org/viewvc?rev=833730&view=rev
Log:
[ARCHETYPE-270] RemoteCatalogArchetypeDataSource leaves open wagon connection when archetype catalog retrieval fails

Modified:
    maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/source/RemoteCatalogArchetypeDataSource.java

Modified: maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/source/RemoteCatalogArchetypeDataSource.java
URL: http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/source/RemoteCatalogArchetypeDataSource.java?rev=833730&r1=833729&r2=833730&view=diff
==============================================================================
--- maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/source/RemoteCatalogArchetypeDataSource.java (original)
+++ maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/source/RemoteCatalogArchetypeDataSource.java Sat Nov  7 18:49:06 2009
@@ -64,9 +64,15 @@
             Repository wagonRepository = new Repository( "archetype", repository );
             Wagon wagon = wagonManager.getWagon( wagonRepository );
             File catalog = File.createTempFile( "archetype-catalog", ".xml" );
-            wagon.connect( wagonRepository );
-            wagon.get( "archetype-catalog.xml", catalog );
-            wagon.disconnect();
+            try
+            {
+                wagon.connect( wagonRepository );
+                wagon.get( "archetype-catalog.xml", catalog );
+            }
+            finally
+            {
+                disconnectWagon( wagon );
+            }
             return readCatalog( new FileReader( catalog ) );
         }
         catch ( ArchetypeDataSourceException e )
@@ -85,9 +91,15 @@
                 Repository wagonRepository = new Repository( "archetype", repositoryPath );
                 Wagon wagon = wagonManager.getWagon( wagonRepository );
                 File catalog = File.createTempFile( "archetype-catalog", ".xml" );
-                wagon.connect( wagonRepository );
-                wagon.get( fileName , catalog );
-                wagon.disconnect();
+                try
+                {
+                    wagon.connect( wagonRepository );
+                    wagon.get( fileName, catalog );
+                }
+                finally
+                {
+                    disconnectWagon( wagon );
+                }
                 return readCatalog( new FileReader( catalog ) );
             }
             catch ( Exception ex )
@@ -142,4 +154,17 @@
     {
         throw new ArchetypeDataSourceException( "Not supported yet." );
     }
+
+    private void disconnectWagon( Wagon wagon )
+    {
+        try
+        {
+            wagon.disconnect();
+        }
+        catch ( Exception e )
+        {
+            getLogger().warn( "Problem disconnecting from wagon - ignoring: " + e.getMessage() );
+        }
+    }
+
 }