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 2007/11/27 00:30:41 UTC
svn commit: r598461 - in
/maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype:
mojos/ ui/
Author: rafale
Date: Mon Nov 26 15:30:32 2007
New Revision: 598461
URL: http://svn.apache.org/viewvc?rev=598461&view=rev
Log:
enchanced selection using multiple sources (-DarchetypeCatalog=local,internal,remote,http://...,file://...)
Modified:
maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateProjectFromArchetypeMojo.java
maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeSelectionQueryer.java
maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeSelector.java
maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectionQueryer.java
maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java
Modified: maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateProjectFromArchetypeMojo.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateProjectFromArchetypeMojo.java?rev=598461&r1=598460&r2=598461&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateProjectFromArchetypeMojo.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateProjectFromArchetypeMojo.java Mon Nov 26 15:30:32 2007
@@ -94,6 +94,13 @@
private String archetypeVersion;
/**
+ * The archetype's catalogs.
+ *
+ * @parameter expression="${archetypeCatalog}" default-value="internal"
+ */
+ private String archetypeCatalog;
+
+ /**
* Local maven repository.
*
* @parameter expression="${localRepository}"
@@ -105,11 +112,11 @@
/**
* User settings use to check the interactiveMode.
*
- * @parameter expression="${settings}"
+ * @parameter expression="${settings.interactiveMode}"
* @required
* @readonly
*/
- private Settings settings;
+ private Boolean interactiveMode;
/** @parameter expression="${basedir}" */
private File basedir;
@@ -136,9 +143,9 @@
try
{
- selector.selectArchetype( request, settings.getInteractiveMode() );
+ selector.selectArchetype( request, interactiveMode, archetypeCatalog );
- configurator.configureArchetype( request, settings.getInteractiveMode(), executionProperties );
+ configurator.configureArchetype( request, interactiveMode, executionProperties );
ArchetypeGenerationResult result = archetype.generateProjectFromArchetype( request );
}
Modified: maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeSelectionQueryer.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeSelectionQueryer.java?rev=598461&r1=598460&r2=598461&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeSelectionQueryer.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeSelectionQueryer.java Mon Nov 26 15:30:32 2007
@@ -20,6 +20,8 @@
package org.apache.maven.archetype.ui;
//import org.apache.maven.archetype.common.Archetype;
+import java.util.Map;
+import org.apache.maven.archetype.catalog.Archetype;
import org.apache.maven.archetype.common.ArchetypeDefinition;
import org.codehaus.plexus.components.interactivity.PrompterException;
@@ -29,13 +31,16 @@
{
String ROLE = ArchetypeSelectionQueryer.class.getName();
+ public Archetype selectArchetype( Map map )
+ throws PrompterException;
+
boolean confirmSelection( ArchetypeDefinition archetypeDefinition )
throws
PrompterException;
- org.apache.maven.archetype.catalog.Archetype selectArchetype( List list )
- throws
- PrompterException;
+// Archetype selectArchetype( List list )
+// throws
+// PrompterException;
// Archetype selectArtifact( List list )
// throws
Modified: maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeSelector.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeSelector.java?rev=598461&r1=598460&r2=598461&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeSelector.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeSelector.java Mon Nov 26 15:30:32 2007
@@ -36,8 +36,17 @@
{
String ROLE = ArchetypeSelector.class.getName();
- void selectArchetype( ArchetypeGenerationRequest request,
- Boolean interactiveMode )
+// void selectArchetype( ArchetypeGenerationRequest request,
+// Boolean interactiveMode )
+// throws
+// ArchetypeNotDefined,
+// UnknownArchetype,
+// UnknownGroup,
+// IOException,
+// PrompterException,
+// ArchetypeSelectionFailure;
+
+ void selectArchetype( ArchetypeGenerationRequest request, Boolean interactiveMode, String catalogs )
throws
ArchetypeNotDefined,
UnknownArchetype,
Modified: maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectionQueryer.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectionQueryer.java?rev=598461&r1=598460&r2=598461&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectionQueryer.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectionQueryer.java Mon Nov 26 15:30:32 2007
@@ -20,6 +20,7 @@
package org.apache.maven.archetype.ui;
//import org.apache.maven.archetype.common.Archetype;
+import org.apache.maven.archetype.catalog.Archetype;
import org.apache.maven.archetype.common.ArchetypeDefinition;
import org.codehaus.plexus.components.interactivity.Prompter;
import org.codehaus.plexus.components.interactivity.PrompterException;
@@ -53,9 +54,8 @@
return "Y".equalsIgnoreCase( answer );
}
- public org.apache.maven.archetype.catalog.Archetype selectArchetype( List archetypes )
- throws
- PrompterException
+ public Archetype selectArchetype( List archetypes )
+ throws PrompterException
{
String query = "Choose archetype:\n";
Map answerMap = new HashMap();
@@ -74,6 +74,42 @@
counter++;
}
+ query += "Choose a number: ";
+
+ String answer = prompter.prompt( query, answers );
+
+ return (org.apache.maven.archetype.catalog.Archetype) answerMap.get( answer );
+ }
+
+ public Archetype selectArchetype( Map catalogs )
+ throws PrompterException
+ {
+ String query = "Choose archetype:\n";
+ Map answerMap = new HashMap();
+ List answers = new ArrayList();
+
+ Iterator catalogIterator = catalogs.keySet().iterator();
+ int counter = 1;
+ while ( catalogIterator.hasNext() )
+ {
+ String catalog = (String) catalogIterator.next();
+
+ Iterator archetypeIterator = ((List) catalogs.get( catalog )).iterator();
+ while ( archetypeIterator.hasNext() )
+ {
+ org.apache.maven.archetype.catalog.Archetype archetype = (org.apache.maven.archetype.catalog.Archetype) archetypeIterator.next();
+
+ answerMap.put( "" + counter, archetype );
+ query +=
+ "" + counter + ": " + catalog +
+ " -> " + archetype.getArtifactId() + " (" + archetype.getDescription() + ")\n";
+ answers.add( "" + counter );
+
+ counter++;
+ }
+
+ }
+
query += "Choose a number: ";
String answer = prompter.prompt( query, answers );
Modified: maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java?rev=598461&r1=598460&r2=598461&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java Mon Nov 26 15:30:32 2007
@@ -30,16 +30,14 @@
import org.apache.maven.archetype.source.ArchetypeDataSourceException;
import org.codehaus.plexus.components.interactivity.PrompterException;
import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.util.PropertyUtils;
import org.codehaus.plexus.util.StringUtils;
-import java.io.File;
import java.io.IOException;
-import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
-import java.util.List;
import java.util.Map;
import java.util.Properties;
+import org.apache.commons.collections.iterators.ArrayIterator;
/** @plexus.component */
public class DefaultArchetypeSelector
@@ -48,6 +46,8 @@
{
/** @plexus.requirement */
private ArchetypeSelectionQueryer archetypeSelectionQueryer;
+ /** @plexus.requirement */
+ private org.apache.maven.archetype.Archetype archetype;
/** @plexus.requirement role="org.apache.maven.archetype.source.ArchetypeDataSource" */
private Map archetypeSources;
@@ -59,22 +59,62 @@
UnknownGroup,
IOException,
PrompterException,
+ ArchetypeSelectionFailure{throw new UnsupportedOperationException("change method");}
+
+ public void selectArchetype( ArchetypeGenerationRequest request, Boolean interactiveMode, String catalogs )
+ throws
+ ArchetypeNotDefined,
+ UnknownArchetype,
+ UnknownGroup,
+ IOException,
+ PrompterException,
ArchetypeSelectionFailure
{
ArchetypeDefinition definition = new ArchetypeDefinition();
-
+
definition.setArtifactId( request.getArchetypeArtifactId() );
-
+
definition.setGroupId( request.getArchetypeGroupId() );
-
+
definition.setVersion( request.getArchetypeVersion() );
-
+
+ // buggy? what in else statement
if ( interactiveMode.booleanValue() )
{
+ // buggy? what in else statement
if ( !definition.isDefined() )
{
- List archetypes = new ArrayList();
+ Map archetypes = new HashMap();
+ Iterator ca = new ArrayIterator( StringUtils.split( catalogs, "," ) );
+ while(ca.hasNext())
+ {
+ String catalog = (String) ca.next();
+
+ if ("internal".equalsIgnoreCase(catalog))
+ {//System.err.println("UNSING internal");
+ archetypes.put("internal", archetype.getInternalCatalog().getArchetypes());
+ }
+ else if ("local".equalsIgnoreCase(catalog))
+ {//System.err.println("UNSING local");
+ archetypes.put("local", archetype.getDefaultLocalCatalog().getArchetypes());
+ }
+ else if ("remote".equalsIgnoreCase(catalog))
+ {//System.err.println("UNSING remote");
+ archetypes.put("remote", archetype.getRemoteCatalog().getArchetypes());
+ }
+ else if (catalog.startsWith("file://"))
+ {//System.err.println("UNSING local "+catalog);
+ String path = catalog.substring(7);
+ archetypes.put("local", archetype.getLocalCatalog(path).getArchetypes());
+ }
+ else if (catalog.startsWith("http://"))
+ {//System.err.println("UNSING remote "+catalog);
+ archetypes.put("remote", archetype.getRemoteCatalog(catalog));
+ }
+ }
+
+ /*
File archetypeCatalogPropertiesFile = new File( System.getProperty( "user.home" ), ".m2/archetype-catalog.properties" );
if ( archetypeCatalogPropertiesFile.exists() )
@@ -104,38 +144,31 @@
}
}
}
+ */
if ( archetypes.size() == 0 )
{
- getLogger().debug( "Using wiki catalog" );
-
- try
- {
- ArchetypeDataSource source = (ArchetypeDataSource) archetypeSources.get( "internal-catalog" );
+ getLogger().debug( "Using internal catalog" );
- archetypes.addAll( source.getArchetypeCatalog( new Properties() ).getArchetypes() );
- }
- catch ( ArchetypeDataSourceException e )
- {
- getLogger().warn( "Unable to get archetypes from default wiki source. [" + e.getMessage() + "]" );
- }
+ archetypes.put("internal", archetype.getInternalCatalog().getArchetypes());
}
+ // buggy? what in else statement
if ( archetypes.size() > 0 )
{
- Archetype archetype = archetypeSelectionQueryer.selectArchetype( archetypes );
+ Archetype selectedArchetype = archetypeSelectionQueryer.selectArchetype( archetypes );
- definition.setArtifactId( archetype.getArtifactId() );
+ definition.setArtifactId( selectedArchetype.getArtifactId() );
- definition.setName( archetype.getArtifactId() );
+ definition.setName( selectedArchetype.getArtifactId() );
- definition.setGroupId( archetype.getGroupId() );
+ definition.setGroupId( selectedArchetype.getGroupId() );
- definition.setVersion( archetype.getVersion() );
+ definition.setVersion( selectedArchetype.getVersion() );
- definition.setRepository( archetype.getRepository() );
+ definition.setRepository( selectedArchetype.getRepository() );
- String goals = StringUtils.join( archetype.getGoals().iterator(), "," );
+ String goals = StringUtils.join( selectedArchetype.getGoals().iterator(), "," );
definition.setGoals( goals );
}
@@ -162,7 +195,7 @@
request.setArchetypeRepository( definition.getRepository() );
- request.setRemoteRepository( definition.getRepository() );
+ request.setRemoteRepository( definition.getRepository() );
}
private Properties getArchetypeDataSourceProperties( String sourceRoleHint,