You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2011/07/16 13:47:23 UTC
svn commit: r1147404 - in
/maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation:
DefaultArchetypeSelectionQueryer.java DefaultArchetypeSelector.java
Author: hboutemy
Date: Sat Jul 16 11:47:23 2011
New Revision: 1147404
URL: http://svn.apache.org/viewvc?rev=1147404&view=rev
Log:
o avoid recursive call to select archetype
o reset to initial filter at each iteration
Modified:
maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/DefaultArchetypeSelectionQueryer.java
maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/DefaultArchetypeSelector.java
Modified: maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/DefaultArchetypeSelectionQueryer.java
URL: http://svn.apache.org/viewvc/maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/DefaultArchetypeSelectionQueryer.java?rev=1147404&r1=1147403&r2=1147404&view=diff
==============================================================================
--- maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/DefaultArchetypeSelectionQueryer.java (original)
+++ maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/DefaultArchetypeSelectionQueryer.java Sat Jul 16 11:47:23 2011
@@ -71,89 +71,87 @@ public class DefaultArchetypeSelectionQu
public Archetype selectArchetype( Map<String, List<Archetype>> catalogs, ArchetypeDefinition defaultDefinition )
throws PrompterException
{
- StringBuilder query = new StringBuilder( "Choose archetype:\n" );
+ Archetype selection = null;
+ Map<String, List<Archetype>> filteredCatalogs = catalogs;
- Set<String> archetypeKeys = new HashSet<String>();
- List<String> answers = new ArrayList<String>();
- Map<String, Archetype> archetypeAnswerMap = new HashMap<String, Archetype>();
+ do
+ {
+ StringBuilder query = new StringBuilder( "Choose archetype:\n" );
- int counter = 1;
- int defaultSelection = 0;
+ Set<String> archetypeKeys = new HashSet<String>();
+ List<String> answers = new ArrayList<String>();
+ Map<String, Archetype> archetypeAnswerMap = new HashMap<String, Archetype>();
- for ( Map.Entry<String, List<Archetype>> entry : catalogs.entrySet() )
- {
- String catalog = entry.getKey();
+ int counter = 0;
+ int defaultSelection = 0;
- for ( Archetype archetype : entry.getValue() )
+ for ( Map.Entry<String, List<Archetype>> entry : filteredCatalogs.entrySet() )
{
- String archetypeKey = archetype.getGroupId() + ":" + archetype.getArtifactId();
+ String catalog = entry.getKey();
- if ( !archetypeKeys.add( archetypeKey ) )
+ for ( Archetype archetype : entry.getValue() )
{
- continue;
- }
+ String archetypeKey = archetype.getGroupId() + ":" + archetype.getArtifactId();
- String description = archetype.getDescription();
- if ( description == null )
- {
- description = "-";
- }
-
- String answer = String.valueOf( counter );
+ if ( !archetypeKeys.add( archetypeKey ) )
+ {
+ continue;
+ }
- query.append(
- answer + ": " + catalog + " -> " + archetype.getGroupId() + ":" + archetype.getArtifactId() + " ("
- + description + ")\n" );
+ counter++;
- answers.add( answer );
+ String description = archetype.getDescription();
+ if ( description == null )
+ {
+ description = "-";
+ }
- archetypeAnswerMap.put( answer, archetype );
+ String answer = String.valueOf( counter );
- // the version is not tested. This is intentional.
- if ( defaultDefinition != null && archetype.getGroupId().equals( defaultDefinition.getGroupId() )
- && archetype.getArtifactId().equals( defaultDefinition.getArtifactId() ) )
- {
- defaultSelection = counter;
- }
+ query.append( answer + ": " + catalog + " -> " + archetype.getGroupId() + ":"
+ + archetype.getArtifactId() + " (" + description + ")\n" );
- counter++;
- }
+ answers.add( answer );
- }
+ archetypeAnswerMap.put( answer, archetype );
- query.append( "Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): " );
+ // the version is not tested. This is intentional.
+ if ( defaultDefinition != null && archetype.getGroupId().equals( defaultDefinition.getGroupId() )
+ && archetype.getArtifactId().equals( defaultDefinition.getArtifactId() ) )
+ {
+ defaultSelection = counter;
+ }
+ }
+ }
- String answer;
- if ( defaultSelection == 0 )
- {
- answer = prompter.prompt( query.toString() );
- }
- else
- {
- answer = prompter.prompt( query.toString(), Integer.toString( defaultSelection ) );
- }
+ if ( counter == 0 )
+ {
+ query.append( " Your filter doesn't match any archetype (hint: enter to return to initial list)\n" );
+ }
- if ( !NumberUtils.isNumber( answer ) )
- {
- // not a number so apply filter and ask again
+ query.append( "Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): " );
- Map<String, List<Archetype>> filteredCatalogs =
- ArchetypeSelectorUtils.getFilteredArchetypesByCatalog( catalogs, answer );
- if ( filteredCatalogs.isEmpty() )
+ String answer;
+ if ( defaultSelection == 0 )
{
- prompter.prompt(
- "Your filter doesn't match any archetype (hint: enter to return to your previous list)" );
- return selectArchetype( catalogs, defaultDefinition );
+ answer = prompter.prompt( query.toString() );
+ }
+ else
+ {
+ answer = prompter.prompt( query.toString(), Integer.toString( defaultSelection ) );
}
- return selectArchetype( filteredCatalogs, defaultDefinition );
- }
- if ( !answer.contains( answer ) )
- {
- return selectArchetype( catalogs, defaultDefinition );
+ if ( NumberUtils.isNumber( answer ) )
+ {
+ selection = archetypeAnswerMap.get( answer );
+ }
+ else
+ {
+ // not a number so apply filter and ask again
+ filteredCatalogs = ArchetypeSelectorUtils.getFilteredArchetypesByCatalog( catalogs, answer );
+ }
}
-
- Archetype selection = archetypeAnswerMap.get( answer );
+ while ( selection == null );
return selectVersion( catalogs, selection.getGroupId(), selection.getArtifactId() );
}
Modified: maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/DefaultArchetypeSelector.java
URL: http://svn.apache.org/viewvc/maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/DefaultArchetypeSelector.java?rev=1147404&r1=1147403&r2=1147404&view=diff
==============================================================================
--- maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/DefaultArchetypeSelector.java (original)
+++ maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/generation/DefaultArchetypeSelector.java Sat Jul 16 11:47:23 2011
@@ -80,7 +80,7 @@ public class DefaultArchetypeSelector
archetypes = ArchetypeSelectorUtils.getFilteredArchetypesByCatalog( archetypes, request.getFilter() );
if ( archetypes.isEmpty() )
{
- getLogger().info( "your filter doesn't find any archetype, so try again with an other value" );
+ getLogger().info( "Your filter doesn't match any archetype, so try again with another value." );
return;
}
}