You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2011/07/08 00:04:47 UTC

svn commit: r1144072 - /maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java

Author: olamy
Date: Thu Jul  7 22:04:46 2011
New Revision: 1144072

URL: http://svn.apache.org/viewvc?rev=1144072&view=rev
Log:
[ARCHETYPE-371] implements support -Dfilter:groupId:artifactId

Modified:
    maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java

Modified: maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java
URL: http://svn.apache.org/viewvc/maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java?rev=1144072&r1=1144071&r2=1144072&view=diff
==============================================================================
--- maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java (original)
+++ maven/archetype/trunk/maven-archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java Thu Jul  7 22:04:46 2011
@@ -19,6 +19,7 @@ package org.apache.maven.archetype.ui;
  * under the License.
  */
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.maven.archetype.ArchetypeGenerationRequest;
 import org.apache.maven.archetype.ArchetypeManager;
 import org.apache.maven.archetype.catalog.Archetype;
@@ -28,7 +29,6 @@ import org.apache.maven.archetype.except
 import org.apache.maven.archetype.exception.UnknownGroup;
 import org.codehaus.plexus.components.interactivity.PrompterException;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.util.StringUtils;
 
 import java.io.IOException;
 import java.util.ArrayList;
@@ -197,9 +197,29 @@ public class DefaultArchetypeSelector
             List<Archetype> archetypes = new ArrayList<Archetype>();
             for ( Archetype archetype : entry.getValue() )
             {
-                if ( org.apache.commons.lang.StringUtils.contains( archetype.getArtifactId(), request.getFilter() ) )
+                String groupId = extractGroupIdFromFilter( request.getFilter() );
+                String artifactId = extractArtifactIdFromFilter( request.getFilter() );
+                if ( groupId == null )
                 {
-                    archetypes.add( archetype );
+                    if ( StringUtils.contains( archetype.getArtifactId(), artifactId ) )
+                    {
+                        archetypes.add( archetype );
+                    }
+                }
+                else if ( artifactId == null )
+                {
+                    if ( StringUtils.contains( archetype.getGroupId(), groupId ) )
+                    {
+                        archetypes.add( archetype );
+                    }
+                }
+                else
+                {
+                    if ( StringUtils.contains( archetype.getGroupId(), groupId ) && StringUtils.contains(
+                        archetype.getArtifactId(), artifactId ) )
+                    {
+                        archetypes.add( archetype );
+                    }
                 }
             }
             if ( !archetypes.isEmpty() )
@@ -211,6 +231,17 @@ public class DefaultArchetypeSelector
         return filtered;
     }
 
+    private String extractGroupIdFromFilter( String filter )
+    {
+        return StringUtils.contains( filter, ':' ) ? StringUtils.substringBefore( filter, ":" ) : null;
+    }
+
+    private String extractArtifactIdFromFilter( String filter )
+    {
+        // if no : the full text is considered as artifactId content
+        return StringUtils.contains( filter, ':' ) ? StringUtils.substringAfter( filter, ":" ) : filter;
+    }
+
 
     private Map<String, List<Archetype>> getArchetypesByCatalog( String catalogs )
     {