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;
             }
         }