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