You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2007/10/06 19:41:04 UTC

svn commit: r582521 - in /maven/sandbox/trunk/archetypeng/archetypeng-common: ./ src/main/java/org/apache/maven/archetype/ src/main/java/org/apache/maven/archetype/generator/ src/test/java/org/apache/maven/archetype/creator/ src/test/java/org/apache/ma...

Author: jvanzyl
Date: Sat Oct  6 10:41:01 2007
New Revision: 582521

URL: http://svn.apache.org/viewvc?rev=582521&view=rev
Log:
o make it easy to get all the available archetype from all the sources specified in a standard archetype catalog properties file

Removed:
    maven/sandbox/trunk/archetypeng/archetypeng-common/src/test/java/org/apache/maven/archetype/creator/MockPrompter.java
    maven/sandbox/trunk/archetypeng/archetypeng-common/src/test/java/org/apache/maven/archetype/generator/MockPrompter.java
Modified:
    maven/sandbox/trunk/archetypeng/archetypeng-common/pom.xml
    maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java
    maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/Archetyper.java
    maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/DefaultArchetyper.java
    maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/DefaultArchetypeGenerator.java

Modified: maven/sandbox/trunk/archetypeng/archetypeng-common/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/pom.xml?rev=582521&r1=582520&r2=582521&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-common/pom.xml (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-common/pom.xml Sat Oct  6 10:41:01 2007
@@ -87,10 +87,6 @@
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-interactivity-api</artifactId>
-    </dependency>
-    <dependency>
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
     </dependency>

Modified: maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java?rev=582521&r1=582520&r2=582521&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java Sat Oct  6 10:41:01 2007
@@ -1,7 +1,9 @@
 package org.apache.maven.archetype;
 
-import java.util.Properties;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+
+import java.io.File;
+import java.util.Properties;
 
 /** @author Jason van Zyl */
 public class ArchetypeGenerationRequest

Modified: maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/Archetyper.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/Archetyper.java?rev=582521&r1=582520&r2=582521&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/Archetyper.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/Archetyper.java Sat Oct  6 10:41:01 2007
@@ -1,5 +1,6 @@
 package org.apache.maven.archetype;
 
+import java.io.File;
 import java.util.Collection;
 
 /** @author Jason van Zyl */
@@ -11,5 +12,21 @@
 
     ArchetypeGenerationResult generateProjectFromArchetype( ArchetypeGenerationRequest request );
 
-    Collection getArchetypeDataSources();
+    /**
+     * Get all available archetypes using the standard ~/.m2/archetype-catalog.properties as the
+     * definition for the sources to be used and the configuration for each
+     * {@org.apache.maven.archetype.source.ArchetypeDataSource} listed.
+     *
+     * @return A collection of available archetypes collected from all available source.
+     */
+    Collection getAvailableArchetypes();
+
+    /**
+     * Get all available archetypes using a specified catalog properties file as the
+     * definition for the sources to be used and the configuration for each
+     * {@org.apache.maven.archetype.source.ArchetypeDataSource} listed.
+     *
+     * @return A collection of available archetypes collected from all available source.
+     */
+    Collection getAvailableArchetypes( File archetypeCatalogPropertiesFile );
 }

Modified: maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/DefaultArchetyper.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/DefaultArchetyper.java?rev=582521&r1=582520&r2=582521&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/DefaultArchetyper.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/DefaultArchetyper.java Sat Oct  6 10:41:01 2007
@@ -4,15 +4,20 @@
 import org.apache.maven.archetype.generator.ArchetypeGenerator;
 import org.apache.maven.archetype.source.ArchetypeDataSource;
 import org.apache.maven.archetype.source.ArchetypeDataSourceException;
+import org.codehaus.plexus.util.PropertyUtils;
+import org.codehaus.plexus.util.StringUtils;
 
+import java.io.File;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 
 /**
- * @plexus.component
  * @author Jason van Zyl
+ * @plexus.component
  */
 public class DefaultArchetyper
     implements Archetyper
@@ -44,7 +49,8 @@
         return result;
     }
 
-    public Collection getArchetypes( ArchetypeDataSource source, Properties sourceConfiguration )
+    public Collection getArchetypes( ArchetypeDataSource source,
+                                     Properties sourceConfiguration )
         throws ArchetypeDataSourceException
     {
         return source.getArchetypes( sourceConfiguration );
@@ -53,6 +59,61 @@
     public Collection getArchetypeDataSources()
     {
         return archetypeSources.values();
+    }
+
+    public Collection getAvailableArchetypes()
+    {
+        File archetypeCatalogPropertiesFile = new File( System.getProperty( "user.home" ), ".m2/archetype-catalog.properties" );
+
+        return getAvailableArchetypes( archetypeCatalogPropertiesFile );
+    }
+
+    public Collection getAvailableArchetypes( File archetypeCatalogPropertiesFile )
+    {
+        List archetypes = new ArrayList();
+
+        if ( archetypeCatalogPropertiesFile.exists() )
+        {
+            Properties archetypeCatalogProperties = PropertyUtils.loadProperties( archetypeCatalogPropertiesFile );
+
+            String[] sources = StringUtils.split( archetypeCatalogProperties.getProperty( "sources" ), "," );
+
+            for ( int i = 0; i < sources.length; i++ )
+            {
+                String sourceRoleHint = sources[i];
+
+                try
+                {
+                    ArchetypeDataSource source = (ArchetypeDataSource) archetypeSources.get( sourceRoleHint );
+
+                    archetypes.addAll(
+                        source.getArchetypes( getArchetypeDataSourceProperties( sourceRoleHint, archetypeCatalogProperties ) ) );
+                }
+                catch ( ArchetypeDataSourceException e )
+                {
+                    // do nothing, gracefully move on
+                }
+            }
+        }
+
+        // If we haven't found any Archetypes then we will currently attempt to use the Wiki source.
+        // Eventually we will use a more reliable remote catalog from the central repository.
+
+        if ( archetypes.size() == 0 )
+        {
+            try
+            {
+                ArchetypeDataSource source = (ArchetypeDataSource) archetypeSources.get( "wiki" );
+
+                archetypes.addAll( source.getArchetypes( new Properties() ) );
+            }
+            catch ( ArchetypeDataSourceException e )
+            {
+                // do nothing, gracefully move on
+            }
+        }
+
+        return archetypes;
     }
 
     public Properties getArchetypeDataSourceProperties( String sourceRoleHint,

Modified: maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/DefaultArchetypeGenerator.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/DefaultArchetypeGenerator.java?rev=582521&r1=582520&r2=582521&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/DefaultArchetypeGenerator.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/DefaultArchetypeGenerator.java Sat Oct  6 10:41:01 2007
@@ -310,6 +310,8 @@
 
     public void generateArchetype( ArchetypeGenerationRequest request, ArchetypeGenerationResult result )
     {
+        //TODO: get rid of the property file usage.
+
         try
         {
             Properties properties = request.getProperties();