You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ra...@apache.org on 2008/06/12 23:09:24 UTC

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

Author: rafale
Date: Thu Jun 12 14:09:23 2008
New Revision: 667228

URL: http://svn.apache.org/viewvc?rev=667228&view=rev
Log:
Fix for archetype-161
When a url is given to search for a remote catalog, first it is searched by appending archetype-catalog.xml to the URL. if no catalog is found there, then the URL is assumed to be the url of the file.

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=667228&r1=667227&r2=667228&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 Thu Jun 12 14:09:23 2008
@@ -59,26 +59,42 @@
                 repository = repository.substring( 0, repository.length(  ) - 1 );
             }
 
+            getLogger().debug("Searching for remote catalog: "+ repository +"/archetype-catalog.xml");
             // We use wagon to take advantage of a Proxy that has already been setup in a Maven environment.
-
             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();
-
             return readCatalog( new FileReader( catalog ) );
         }
-        catch ( Exception e )
+        catch ( ArchetypeDataSourceException e )
         {
-            getLogger().warn( "Error reading archetype catalog "+ repository, e );
-            return new ArchetypeCatalog();
+            throw e;
+        }
+        catch ( Exception e )
+        {// When the default archetype catalog names doesn't works, we assume the repository is the URL to a file 
+            try
+            {
+                String repositoryPath = repository.substring(0, repository.lastIndexOf("/"));
+                String fileName = repository.substring(repository.lastIndexOf("/") + 1);
+                
+                getLogger().debug("Searching for remote catalog: "+ repositoryPath +"/"+fileName);
+                // We use wagon to take advantage of a Proxy that has already been setup in a Maven environment.
+                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();
+                return readCatalog( new FileReader( catalog ) );
+            }
+            catch ( Exception ex )
+            {
+                getLogger().warn( "Error reading archetype catalog "+ repository, ex );
+                return new ArchetypeCatalog();
+            }
         }
     }