Author: brett
Date: Wed Feb 13 04:19:46 2008
New Revision: 627371
URL: http://svn.apache.org/viewvc?rev=627371&view=rev
Log:
[ARCHETYPE-117] Restore the previous defaults for archetype artifact ID and the
version and groupId variables
Added:
maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeGenerationConfiguratorTest.java
(contents, props changed)
- copied, changed from r627329,
maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectorTest.java
maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectionQueryerTest.java
(contents, props changed)
- copied, changed from r627329,
maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectorTest.java
Modified:
maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateProjectFromArchetypeMojo.java
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeSelectionQueryer.java
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeFactory.java
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeGenerationConfigurator.java
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectionQueryer.java
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java
maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectorTest.java
Modified:
maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java
URL:
http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java?rev=627371&r1=627370&r2=627371&view=diff
==============================================================================
---
maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java
(original)
+++
maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java
Wed Feb 13 04:19:46 2008
@@ -73,10 +73,6 @@
private Properties properties = new Properties( );
- private static final String DEFAULT_ARCHETYPE_GROUP =
"org.apache.maven.archetypes";
-
- private static final String DEFAULT_ARCHETYPE_VERSION = "RELEASE";
-
public ArchetypeGenerationRequest( )
{
}
@@ -94,10 +90,6 @@
public String getArchetypeGroupId( )
{
- if ( archetypeGroupId == null )
- {
- return DEFAULT_ARCHETYPE_GROUP;
- }
return archetypeGroupId;
}
@@ -122,10 +114,6 @@
public String getArchetypeVersion( )
{
- if ( archetypeVersion == null )
- {
- return DEFAULT_ARCHETYPE_VERSION;
- }
return archetypeVersion;
}
Modified:
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateProjectFromArchetypeMojo.java
URL:
http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateProjectFromArchetypeMojo.java?rev=627371&r1=627370&r2=627371&view=diff
==============================================================================
---
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateProjectFromArchetypeMojo.java
(original)
+++
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/mojos/CreateProjectFromArchetypeMojo.java
Wed Feb 13 04:19:46 2008
@@ -19,14 +19,15 @@
package org.apache.maven.archetype.mojos;
+import org.apache.maven.archetype.Archetype;
import org.apache.maven.archetype.ArchetypeGenerationRequest;
import org.apache.maven.archetype.ArchetypeGenerationResult;
-import org.apache.maven.archetype.Archetype;
import org.apache.maven.archetype.common.ArchetypeRegistryManager;
import org.apache.maven.archetype.generator.ArchetypeGenerator;
import org.apache.maven.archetype.ui.ArchetypeGenerationConfigurator;
import org.apache.maven.archetype.ui.ArchetypeSelector;
import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.ContextEnabled;
import org.apache.maven.plugin.MojoExecutionException;
@@ -40,7 +41,6 @@
import java.io.File;
import java.util.Arrays;
import java.util.Properties;
-import org.apache.maven.execution.MavenSession;
/**
* Generates sample project from archetype.
@@ -164,6 +164,7 @@
{
selector.selectArchetype( request, interactiveMode,
archetypeCatalog );
+ // TODO: it's confusing that request has fields that get populated
but not accepted as input (eg, groupId)
configurator.configureArchetype( request, interactiveMode,
executionProperties );
ArchetypeGenerationResult result =
archetype.generateProjectFromArchetype( request );
Modified:
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeSelectionQueryer.java
URL:
http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeSelectionQueryer.java?rev=627371&r1=627370&r2=627371&view=diff
==============================================================================
---
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeSelectionQueryer.java
(original)
+++
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeSelectionQueryer.java
Wed Feb 13 04:19:46 2008
@@ -19,14 +19,15 @@
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;
-import java.util.List;
+import java.util.Map;
+/**
+ * @todo this interface is bound to it's implementation through the prompter
exception
+ */
public interface ArchetypeSelectionQueryer
{
String ROLE = ArchetypeSelectionQueryer.class.getName();
@@ -53,4 +54,15 @@
// String selectVersion( List list )
// throws
// PrompterException;
+
+ /**
+ * Select an archetype from the given map.
+ *
+ * @param archetypes the archetypes to choose from
+ * @param defaultDefinition the default archetype, if present in the map
+ * @return the selected archetype
+ * @throws org.codehaus.plexus.components.interactivity.PrompterException
if there is a problem in making a selection
+ */
+ Archetype selectArchetype( Map archetypes, ArchetypeDefinition
defaultDefinition )
+ throws PrompterException;
}
Modified:
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeFactory.java
URL:
http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeFactory.java?rev=627371&r1=627370&r2=627371&view=diff
==============================================================================
---
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeFactory.java
(original)
+++
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeFactory.java
Wed Feb 13 04:19:46 2008
@@ -19,10 +19,10 @@
package org.apache.maven.archetype.ui;
-import org.apache.maven.project.MavenProject;
import org.apache.maven.archetype.common.ArchetypeConfiguration;
import org.apache.maven.archetype.common.ArchetypeDefinition;
import org.apache.maven.archetype.common.Constants;
+import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import java.util.Iterator;
@@ -128,6 +128,8 @@
+ configuration.getProperty( Constants.VERSION )
);
}
+ configuration.setDefaultProperty( Constants.VERSION, "1.0-SNAPSHOT" );
+
configuration.addRequiredProperty( Constants.PACKAGE );
getLogger().debug( "Adding requiredProperty " + Constants.PACKAGE );
if ( null
@@ -143,6 +145,7 @@
)
);
}
+ configuration.setDefaultProperty( Constants.PACKAGE,
configuration.getProperty( Constants.GROUP_ID ) );
return configuration;
}
Modified:
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeGenerationConfigurator.java
URL:
http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeGenerationConfigurator.java?rev=627371&r1=627370&r2=627371&view=diff
==============================================================================
---
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeGenerationConfigurator.java
(original)
+++
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeGenerationConfigurator.java
Wed Feb 13 04:19:46 2008
@@ -19,7 +19,6 @@
package org.apache.maven.archetype.ui;
-import org.apache.maven.archetype.old.OldArchetype;
import org.apache.maven.archetype.ArchetypeGenerationRequest;
import org.apache.maven.archetype.common.ArchetypeArtifactManager;
import org.apache.maven.archetype.common.ArchetypeConfiguration;
@@ -30,6 +29,7 @@
import org.apache.maven.archetype.exception.ArchetypeNotConfigured;
import org.apache.maven.archetype.exception.ArchetypeNotDefined;
import org.apache.maven.archetype.exception.UnknownArchetype;
+import org.apache.maven.archetype.old.OldArchetype;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.codehaus.plexus.components.interactivity.PrompterException;
import org.codehaus.plexus.logging.AbstractLogEnabled;
@@ -40,6 +40,7 @@
import java.util.List;
import java.util.Properties;
+// TODO: this seems to have more responsibilities than just a configurator
/** @plexus.component */
public class DefaultArchetypeGenerationConfigurator
extends AbstractLogEnabled
@@ -140,54 +141,73 @@
}
// mkleint: if already preconfigured, don't ask for confirmation,
assume it's fine.
- if ( interactiveMode.booleanValue() &&
!archetypeConfiguration.isConfigured() )
+ if ( !archetypeConfiguration.isConfigured() )
{
- boolean confirmed = false;
-
- while ( !confirmed )
+ if ( interactiveMode.booleanValue() )
{
- if ( !archetypeConfiguration.isConfigured() )
- {
- Iterator requiredProperties =
archetypeConfiguration.getRequiredProperties().
- iterator();
+ boolean confirmed = false;
- while ( requiredProperties.hasNext() )
+ while ( !confirmed )
+ {
+ if ( !archetypeConfiguration.isConfigured() )
{
- String requiredProperty = (String)
requiredProperties.next();
+ Iterator requiredProperties =
archetypeConfiguration.getRequiredProperties().
+ iterator();
- if ( !archetypeConfiguration.isConfigured(
requiredProperty ) )
+ while ( requiredProperties.hasNext() )
{
- archetypeConfiguration.setProperty(
requiredProperty,
- archetypeGenerationQueryer.getPropertyValue(
requiredProperty,
- archetypeConfiguration.getDefaultValue(
requiredProperty ) ) );
+ String requiredProperty = (String)
requiredProperties.next();
+
+ if ( !archetypeConfiguration.isConfigured(
requiredProperty ) )
+ {
+ archetypeConfiguration.setProperty(
requiredProperty,
+
archetypeGenerationQueryer.getPropertyValue( requiredProperty,
+ archetypeConfiguration.getDefaultValue(
requiredProperty ) ) );
+ }
}
}
+
+ if ( !archetypeConfiguration.isConfigured() )
+ {
+ throw new ArchetypeGenerationConfigurationFailure(
+ "The archetype generation must be configured here"
);
+ }
+ else if (
!archetypeGenerationQueryer.confirmConfiguration( archetypeConfiguration ) )
+ {
+ getLogger().debug( "OldArchetype generation
configuration not confirmed" );
+ archetypeConfiguration.reset();
+ }
+ else
+ {
+ getLogger().debug( "OldArchetype generation
configuration confirmed" );
+
+ confirmed = true;
+ }
}
- if ( !archetypeConfiguration.isConfigured() )
- {
- throw new ArchetypeGenerationConfigurationFailure(
- "The archetype generation must be configured here" );
- }
- else if ( !archetypeGenerationQueryer.confirmConfiguration(
archetypeConfiguration ) )
+ }
+ else
+ {
+ Iterator requiredProperties =
archetypeConfiguration.getRequiredProperties().
+ iterator();
+
+ while ( requiredProperties.hasNext() )
{
- getLogger().debug( "OldArchetype generation configuration
not confirmed" );
- archetypeConfiguration.reset();
+ String requiredProperty = (String)
requiredProperties.next();
+
+ if ( !archetypeConfiguration.isConfigured(
requiredProperty ) )
+ {
+ archetypeConfiguration.setProperty( requiredProperty,
archetypeConfiguration.getDefaultValue(
+ requiredProperty ) );
+ }
}
- else
- {
- getLogger().debug( "OldArchetype generation configuration
confirmed" );
- confirmed = true;
+ // in batch mode, we assume the defaults, and if still not
configured fail
+ if ( !archetypeConfiguration.isConfigured() )
+ {
+ throw new ArchetypeNotConfigured( "The archetype is not
configured" );
}
}
}
- else
- {
- if ( !archetypeConfiguration.isConfigured() )
- {
- throw new ArchetypeNotConfigured( "The archetype is not
configurated" );
- }
- }
request.setGroupId( archetypeConfiguration.getProperty(
Constants.GROUP_ID ) );
@@ -208,5 +228,10 @@
properties.remove( Constants.PACKAGE );
request.setProperties( properties );
+ }
+
+ public void setArchetypeArtifactManager( ArchetypeArtifactManager
archetypeArtifactManager )
+ {
+ this.archetypeArtifactManager = archetypeArtifactManager;
}
}
Modified:
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectionQueryer.java
URL:
http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectionQueryer.java?rev=627371&r1=627370&r2=627371&view=diff
==============================================================================
---
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectionQueryer.java
(original)
+++
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectionQueryer.java
Wed Feb 13 04:19:46 2008
@@ -84,12 +84,19 @@
public Archetype selectArchetype( Map catalogs )
throws PrompterException
{
+ return selectArchetype( catalogs, null );
+ }
+
+ public Archetype selectArchetype( Map catalogs, ArchetypeDefinition
defaultDefinition )
+ throws PrompterException
+ {
String query = "Choose archetype:\n";
Map answerMap = new HashMap();
List answers = new ArrayList();
Iterator catalogIterator = catalogs.keySet().iterator();
int counter = 1;
+ int defaultSelection = 0;
while ( catalogIterator.hasNext() )
{
String catalog = (String) catalogIterator.next();
@@ -105,6 +112,13 @@
" -> " + archetype.getArtifactId() + " (" +
archetype.getDescription() + ")\n";
answers.add( "" + counter );
+ if ( defaultDefinition != null &&
archetype.getGroupId().equals( defaultDefinition.getGroupId() ) &&
+ archetype.getArtifactId().equals(
defaultDefinition.getArtifactId() ) &&
+ archetype.getVersion().equals(
defaultDefinition.getVersion() ) )
+ {
+ defaultSelection = counter;
+ }
+
counter++;
}
@@ -112,7 +126,15 @@
query += "Choose a number: ";
- String answer = prompter.prompt( query, answers );
+ String answer;
+ if ( defaultSelection == 0 )
+ {
+ answer = prompter.prompt( query, answers );
+ }
+ else
+ {
+ answer = prompter.prompt( query, answers, Integer.toString(
defaultSelection ) );
+ }
return (org.apache.maven.archetype.catalog.Archetype) answerMap.get(
answer );
}
@@ -198,4 +220,9 @@
//
// return (String) answerMap.get( answer );
// }
+
+ public void setPrompter( Prompter prompter )
+ {
+ this.prompter = prompter;
+ }
}
Modified:
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java
URL:
http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java?rev=627371&r1=627370&r2=627371&view=diff
==============================================================================
---
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java
(original)
+++
maven/archetype/trunk/archetype-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java
Wed Feb 13 04:19:46 2008
@@ -43,6 +43,12 @@
extends AbstractLogEnabled
implements ArchetypeSelector
{
+ private static final String DEFAULT_ARCHETYPE_GROUPID =
"org.apache.maven.archetypes";
+
+ private static final String DEFAULT_ARCHETYPE_VERSION = "RELEASE";
+
+ private static final String DEFAULT_ARCHETYPE_ARTIFACTID =
"maven-archetype-quickstart";
+
/** @plexus.requirement */
private ArchetypeSelectionQueryer archetypeSelectionQueryer;
/** @plexus.requirement */
@@ -164,28 +170,43 @@
}
}
}
- }
+ }
- if ( interactiveMode.booleanValue ()
- && !definition.isDefined ()
- && !definition.isPartiallyDefined ()
- )
+ // set the defaults - only group and version can be auto-defaulted
+ if ( definition.getGroupId() == null )
{
- if ( archetypes.size () > 0 )
+ definition.setGroupId( DEFAULT_ARCHETYPE_GROUPID );
+ }
+ if ( definition.getVersion() == null )
+ {
+ definition.setVersion( DEFAULT_ARCHETYPE_VERSION );
+ }
+
+ if ( !definition.isDefined() && !definition.isPartiallyDefined() )
+ {
+ // if artifact ID is set to it's default, we still prompt to
confirm
+ if ( definition.getArtifactId() == null )
+ {
+ definition.setArtifactId( DEFAULT_ARCHETYPE_ARTIFACTID );
+ }
+
+ if ( interactiveMode.booleanValue() )
{
- Archetype selectedArchetype =
- archetypeSelectionQueryer.selectArchetype ( archetypes );
+ if ( archetypes.size() > 0 )
+ {
+ Archetype selectedArchetype =
archetypeSelectionQueryer.selectArchetype( archetypes, definition );
- definition.setGroupId ( selectedArchetype.getGroupId () );
- definition.setArtifactId ( selectedArchetype.getArtifactId ()
);
- definition.setVersion ( selectedArchetype.getVersion () );
- definition.setName ( selectedArchetype.getArtifactId () );
- definition.setRepository ( selectedArchetype.getRepository ()
);
- String goals = StringUtils.join ( selectedArchetype.getGoals
().iterator (), "," );
- definition.setGoals ( goals );
+ definition.setGroupId( selectedArchetype.getGroupId() );
+ definition.setArtifactId(
selectedArchetype.getArtifactId() );
+ definition.setVersion( selectedArchetype.getVersion() );
+ definition.setName( selectedArchetype.getArtifactId() );
+ definition.setRepository(
selectedArchetype.getRepository() );
+ String goals = StringUtils.join(
selectedArchetype.getGoals().iterator(), "," );
+ definition.setGoals( goals );
+ }
}
}
-
+
// Make sure the groupId and artifactId are valid, the version may
just default to
// the latest release.
Copied:
maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeGenerationConfiguratorTest.java
(from r627329,
maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectorTest.java)
URL:
http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeGenerationConfiguratorTest.java?p2=maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeGenerationConfiguratorTest.java&p1=maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectorTest.java&r1=627329&r2=627371&rev=627371&view=diff
==============================================================================
---
maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectorTest.java
(original)
+++
maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeGenerationConfiguratorTest.java
Wed Feb 13 04:19:46 2008
@@ -20,110 +20,92 @@
*/
import org.apache.maven.archetype.ArchetypeGenerationRequest;
-import org.apache.maven.archetype.catalog.Archetype;
+import org.apache.maven.archetype.common.ArchetypeArtifactManager;
+import
org.apache.maven.archetype.exception.ArchetypeGenerationConfigurationFailure;
+import org.apache.maven.archetype.exception.ArchetypeNotConfigured;
import org.apache.maven.archetype.exception.ArchetypeNotDefined;
import org.apache.maven.archetype.exception.ArchetypeSelectionFailure;
import org.apache.maven.archetype.exception.UnknownArchetype;
import org.apache.maven.archetype.exception.UnknownGroup;
+import org.apache.maven.archetype.old.descriptor.ArchetypeDescriptor;
import org.codehaus.plexus.PlexusTestCase;
import org.codehaus.plexus.components.interactivity.PrompterException;
import org.easymock.MockControl;
import java.io.IOException;
-import java.util.Collections;
+import java.util.Properties;
-public class DefaultArchetypeSelectorTest
+/**
+ * @todo probably testing a little deep, could just test ArchetypeConfiguration
+ */
+public class DefaultArchetypeGenerationConfiguratorTest
extends PlexusTestCase
{
- private DefaultArchetypeSelector selector;
+ private DefaultArchetypeGenerationConfigurator configurator;
public void setUp()
throws Exception
{
super.setUp();
- selector = (DefaultArchetypeSelector) lookup( ArchetypeSelector.ROLE );
- }
+ configurator = (DefaultArchetypeGenerationConfigurator) lookup(
ArchetypeGenerationConfigurator.ROLE );
- public void testArchetypeCoordinatesInRequest()
- throws PrompterException, IOException, UnknownGroup,
ArchetypeSelectionFailure, UnknownArchetype,
- ArchetypeNotDefined
- {
- ArchetypeGenerationRequest request = new ArchetypeGenerationRequest();
- request.setArchetypeArtifactId( "preset-artifactId" );
- request.setArchetypeGroupId( "preset-groupId" );
- request.setArchetypeVersion( "preset-version" );
-
- MockControl control = MockControl.createControl(
ArchetypeSelectionQueryer.class );
-
- ArchetypeSelectionQueryer queryer = (ArchetypeSelectionQueryer)
control.getMock();
- // expect it to not be called
+ MockControl control = MockControl.createControl(
ArchetypeArtifactManager.class );
+ control.setDefaultMatcher( MockControl.ALWAYS_MATCHER );
+ ArchetypeArtifactManager manager = (ArchetypeArtifactManager)
control.getMock();
+ manager.exists( "archetypeGroupId", "archetypeArtifactId",
"archetypeVersion", null, null, null );
+ control.setReturnValue( true );
+ manager.isFileSetArchetype( "archetypeGroupId", "archetypeArtifactId",
"archetypeVersion", null, null, null );
+ control.setReturnValue( false );
+ manager.isOldArchetype( "archetypeGroupId", "archetypeArtifactId",
"archetypeVersion", null, null, null );
+ control.setReturnValue( true );
+ manager.getOldArchetypeDescriptor( "archetypeGroupId",
"archetypeArtifactId", "archetypeVersion", null,
+ null, null );
+ control.setReturnValue( new ArchetypeDescriptor() );
control.replay();
-
- selector.setArchetypeSelectionQueryer( queryer );
-
- selector.selectArchetype( request, Boolean.TRUE, "" );
-
- control.verify();
-
- assertEquals( "preset-groupId", request.getArchetypeGroupId() );
- assertEquals( "preset-artifactId", request.getArchetypeArtifactId() );
- assertEquals( "preset-version", request.getArchetypeVersion() );
+ configurator.setArchetypeArtifactManager( manager );
}
- public void testArchetypeArtifactIdInRequest()
- throws PrompterException, IOException, UnknownGroup,
ArchetypeSelectionFailure, UnknownArchetype,
- ArchetypeNotDefined
+ public void testOldArchetypeGeneratedFieldsInRequestBatchMode()
+ throws PrompterException, ArchetypeGenerationConfigurationFailure,
IOException, ArchetypeNotConfigured,
+ UnknownArchetype, ArchetypeNotDefined
{
ArchetypeGenerationRequest request = new ArchetypeGenerationRequest();
- request.setArchetypeArtifactId( "preset-artifactId" );
-
- MockControl control = MockControl.createControl(
ArchetypeSelectionQueryer.class );
-
- ArchetypeSelectionQueryer queryer = (ArchetypeSelectionQueryer)
control.getMock();
- // expect it to not be called
-
- control.replay();
-
- selector.setArchetypeSelectionQueryer( queryer );
-
- selector.selectArchetype( request, Boolean.TRUE, "" );
-
- control.verify();
-
- assertEquals( "org.apache.maven.archetypes",
request.getArchetypeGroupId() );
- assertEquals( "preset-artifactId", request.getArchetypeArtifactId() );
- assertEquals( "RELEASE", request.getArchetypeVersion() );
+ request.setArchetypeGroupId( "archetypeGroupId" );
+ request.setArchetypeArtifactId( "archetypeArtifactId" );
+ request.setArchetypeVersion( "archetypeVersion" );
+ Properties properties = new Properties();
+ properties.setProperty( "groupId", "preset-groupId" );
+ properties.setProperty( "artifactId", "preset-artifactId" );
+ properties.setProperty( "version", "preset-gen-version" );
+ properties.setProperty( "package", "preset-gen-package" );
+
+ configurator.configureArchetype( request, Boolean.FALSE, properties );
+
+ assertEquals( "preset-groupId", request.getGroupId() );
+ assertEquals( "preset-artifactId", request.getArtifactId() );
+ assertEquals( "preset-gen-version", request.getVersion() );
+ assertEquals( "preset-gen-package", request.getPackage() );
}
- public void testArchetypeArtifactIdNotInRequest()
+ public void testOldArchetypeGeneratedFieldsDefaultsBatchMode()
throws PrompterException, IOException, UnknownGroup,
ArchetypeSelectionFailure, UnknownArchetype,
- ArchetypeNotDefined
+ ArchetypeNotDefined, ArchetypeGenerationConfigurationFailure,
ArchetypeNotConfigured
{
ArchetypeGenerationRequest request = new ArchetypeGenerationRequest();
-
- MockControl control = MockControl.createControl(
ArchetypeSelectionQueryer.class );
-
- ArchetypeSelectionQueryer queryer = (ArchetypeSelectionQueryer)
control.getMock();
- queryer.selectArchetype( Collections.EMPTY_MAP );
- control.setMatcher( MockControl.ALWAYS_MATCHER );
- Archetype archetype = new Archetype();
- archetype.setArtifactId( "set-artifactId" );
- archetype.setGroupId( "set-groupId" );
- archetype.setVersion( "set-version" );
- control.setReturnValue( archetype );
-
- control.replay();
-
- selector.setArchetypeSelectionQueryer( queryer );
-
- selector.selectArchetype( request, Boolean.TRUE, "" );
-
- control.verify();
-
- assertEquals( "set-groupId", request.getArchetypeGroupId() );
- assertEquals( "set-artifactId", request.getArchetypeArtifactId() );
- assertEquals( "set-version", request.getArchetypeVersion() );
+ request.setArchetypeGroupId( "archetypeGroupId" );
+ request.setArchetypeArtifactId( "archetypeArtifactId" );
+ request.setArchetypeVersion( "archetypeVersion" );
+ Properties properties = new Properties();
+ properties.setProperty( "groupId", "preset-groupId" );
+ properties.setProperty( "artifactId", "preset-artifactId" );
+
+ configurator.configureArchetype( request, Boolean.FALSE, properties );
+
+ assertEquals( "preset-groupId", request.getGroupId() );
+ assertEquals( "preset-artifactId", request.getArtifactId() );
+ assertEquals( "1.0-SNAPSHOT", request.getVersion() );
+ assertEquals( "preset-groupId", request.getPackage() );
}
-}
+}
\ No newline at end of file
Propchange:
maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeGenerationConfiguratorTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied:
maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectionQueryerTest.java
(from r627329,
maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectorTest.java)
URL:
http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectionQueryerTest.java?p2=maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectionQueryerTest.java&p1=maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectorTest.java&r1=627329&r2=627371&rev=627371&view=diff
==============================================================================
---
maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectorTest.java
(original)
+++
maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectionQueryerTest.java
Wed Feb 13 04:19:46 2008
@@ -19,111 +19,183 @@
* under the License.
*/
-import org.apache.maven.archetype.ArchetypeGenerationRequest;
import org.apache.maven.archetype.catalog.Archetype;
-import org.apache.maven.archetype.exception.ArchetypeNotDefined;
-import org.apache.maven.archetype.exception.ArchetypeSelectionFailure;
-import org.apache.maven.archetype.exception.UnknownArchetype;
-import org.apache.maven.archetype.exception.UnknownGroup;
+import org.apache.maven.archetype.common.ArchetypeDefinition;
import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.components.interactivity.Prompter;
import org.codehaus.plexus.components.interactivity.PrompterException;
+import org.easymock.AbstractMatcher;
+import org.easymock.ArgumentsMatcher;
import org.easymock.MockControl;
-import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
+import java.util.List;
+import java.util.Map;
-public class DefaultArchetypeSelectorTest
+public class DefaultArchetypeSelectionQueryerTest
extends PlexusTestCase
{
- private DefaultArchetypeSelector selector;
+ private DefaultArchetypeSelectionQueryer queryer;
public void setUp()
throws Exception
{
super.setUp();
- selector = (DefaultArchetypeSelector) lookup( ArchetypeSelector.ROLE );
+ queryer = (DefaultArchetypeSelectionQueryer) lookup(
ArchetypeSelectionQueryer.ROLE );
}
- public void testArchetypeCoordinatesInRequest()
- throws PrompterException, IOException, UnknownGroup,
ArchetypeSelectionFailure, UnknownArchetype,
- ArchetypeNotDefined
+ public void testDefaultArchetypeInMapOtherSelection()
+ throws PrompterException
{
- ArchetypeGenerationRequest request = new ArchetypeGenerationRequest();
- request.setArchetypeArtifactId( "preset-artifactId" );
- request.setArchetypeGroupId( "preset-groupId" );
- request.setArchetypeVersion( "preset-version" );
+ Map map = createDefaultArchetypeCatalog();
- MockControl control = MockControl.createControl(
ArchetypeSelectionQueryer.class );
-
- ArchetypeSelectionQueryer queryer = (ArchetypeSelectionQueryer)
control.getMock();
- // expect it to not be called
+ MockControl control = MockControl.createControl( Prompter.class );
+ Prompter prompter = (Prompter) control.getMock();
+ prompter.prompt( "", Arrays.asList( new String[]{"1", "2"} ), "2" );
+ control.setMatcher( createArgumentMatcher() );
+ control.setReturnValue( "1" );
+ queryer.setPrompter( prompter );
control.replay();
- selector.setArchetypeSelectionQueryer( queryer );
-
- selector.selectArchetype( request, Boolean.TRUE, "" );
+ ArchetypeDefinition defaultDefinition = new ArchetypeDefinition();
+ defaultDefinition.setGroupId( "default-groupId" );
+ defaultDefinition.setArtifactId( "default-artifactId" );
+ defaultDefinition.setVersion( "default-version" );
+ Archetype archetype = queryer.selectArchetype( map, defaultDefinition
);
control.verify();
- assertEquals( "preset-groupId", request.getArchetypeGroupId() );
- assertEquals( "preset-artifactId", request.getArchetypeArtifactId() );
- assertEquals( "preset-version", request.getArchetypeVersion() );
+ assertEquals( "set-groupId", archetype.getGroupId() );
+ assertEquals( "set-artifactId", archetype.getArtifactId() );
+ assertEquals( "set-version", archetype.getVersion() );
}
- public void testArchetypeArtifactIdInRequest()
- throws PrompterException, IOException, UnknownGroup,
ArchetypeSelectionFailure, UnknownArchetype,
- ArchetypeNotDefined
+ public void testDefaultArchetypeInMapDefaultSelection()
+ throws PrompterException
{
- ArchetypeGenerationRequest request = new ArchetypeGenerationRequest();
- request.setArchetypeArtifactId( "preset-artifactId" );
+ Map map = createDefaultArchetypeCatalog();
- MockControl control = MockControl.createControl(
ArchetypeSelectionQueryer.class );
-
- ArchetypeSelectionQueryer queryer = (ArchetypeSelectionQueryer)
control.getMock();
- // expect it to not be called
+ MockControl control = MockControl.createControl( Prompter.class );
+ Prompter prompter = (Prompter) control.getMock();
+ prompter.prompt( "", Arrays.asList( new String[]{"1", "2"} ), "2" );
+ control.setMatcher( createArgumentMatcher() );
+ control.setReturnValue( "2" );
+ queryer.setPrompter( prompter );
control.replay();
- selector.setArchetypeSelectionQueryer( queryer );
-
- selector.selectArchetype( request, Boolean.TRUE, "" );
+ ArchetypeDefinition defaultDefinition = new ArchetypeDefinition();
+ defaultDefinition.setGroupId( "default-groupId" );
+ defaultDefinition.setArtifactId( "default-artifactId" );
+ defaultDefinition.setVersion( "default-version" );
+ Archetype archetype = queryer.selectArchetype( map, defaultDefinition
);
control.verify();
- assertEquals( "org.apache.maven.archetypes",
request.getArchetypeGroupId() );
- assertEquals( "preset-artifactId", request.getArchetypeArtifactId() );
- assertEquals( "RELEASE", request.getArchetypeVersion() );
- }
-
- public void testArchetypeArtifactIdNotInRequest()
- throws PrompterException, IOException, UnknownGroup,
ArchetypeSelectionFailure, UnknownArchetype,
- ArchetypeNotDefined
- {
- ArchetypeGenerationRequest request = new ArchetypeGenerationRequest();
-
- MockControl control = MockControl.createControl(
ArchetypeSelectionQueryer.class );
-
- ArchetypeSelectionQueryer queryer = (ArchetypeSelectionQueryer)
control.getMock();
- queryer.selectArchetype( Collections.EMPTY_MAP );
- control.setMatcher( MockControl.ALWAYS_MATCHER );
- Archetype archetype = new Archetype();
- archetype.setArtifactId( "set-artifactId" );
- archetype.setGroupId( "set-groupId" );
- archetype.setVersion( "set-version" );
- control.setReturnValue( archetype );
+ assertEquals( "default-groupId", archetype.getGroupId() );
+ assertEquals( "default-artifactId", archetype.getArtifactId() );
+ assertEquals( "default-version", archetype.getVersion() );
+ }
+
+ public void testDefaultArchetypeNotInMap()
+ throws PrompterException
+ {
+ Map map = createDefaultArchetypeCatalog();
+
+ MockControl control = MockControl.createControl( Prompter.class );
+ Prompter prompter = (Prompter) control.getMock();
+ prompter.prompt( "", Arrays.asList( new String[]{"1", "2"} ) );
+ control.setMatcher( createArgumentMatcher() );
+ control.setReturnValue( "1" );
+ queryer.setPrompter( prompter );
control.replay();
- selector.setArchetypeSelectionQueryer( queryer );
+ ArchetypeDefinition defaultDefinition = new ArchetypeDefinition();
+ defaultDefinition.setGroupId( "invalid-groupId" );
+ defaultDefinition.setArtifactId( "invalid-artifactId" );
+ defaultDefinition.setVersion( "invalid-version" );
+ Archetype archetype = queryer.selectArchetype( map, defaultDefinition
);
+
+ control.verify();
+
+ assertEquals( "set-groupId", archetype.getGroupId() );
+ assertEquals( "set-artifactId", archetype.getArtifactId() );
+ assertEquals( "set-version", archetype.getVersion() );
+ }
+
+ public void testNoDefaultArchetype()
+ throws PrompterException
+ {
+ Map map = createDefaultArchetypeCatalog();
+
+ MockControl control = MockControl.createControl( Prompter.class );
+ Prompter prompter = (Prompter) control.getMock();
+ prompter.prompt( "", Arrays.asList( new String[]{"1", "2"} ) );
+ control.setMatcher( createArgumentMatcher() );
+ control.setReturnValue( "1" );
+ queryer.setPrompter( prompter );
+
+ control.replay();
- selector.selectArchetype( request, Boolean.TRUE, "" );
+ Archetype archetype = queryer.selectArchetype( map );
control.verify();
- assertEquals( "set-groupId", request.getArchetypeGroupId() );
- assertEquals( "set-artifactId", request.getArchetypeArtifactId() );
- assertEquals( "set-version", request.getArchetypeVersion() );
+ assertEquals( "set-groupId", archetype.getGroupId() );
+ assertEquals( "set-artifactId", archetype.getArtifactId() );
+ assertEquals( "set-version", archetype.getVersion() );
+ }
+
+ private static Map createDefaultArchetypeCatalog()
+ {
+ List list = new ArrayList();
+ list.add( createArchetype( "set-groupId", "set-artifactId",
"set-version" ) );
+ list.add( createArchetype( "default-groupId", "default-artifactId",
"default-version" ) );
+ return Collections.singletonMap( "internal", list );
+ }
+
+ private static Archetype createArchetype( String groupId, String
artifactId, String version )
+ {
+ Archetype a = new Archetype();
+ a.setGroupId( groupId );
+ a.setArtifactId( artifactId );
+ a.setVersion( version );
+ return a;
+ }
+
+ private static ArgumentsMatcher createArgumentMatcher()
+ {
+ return new AbstractMatcher()
+ {
+ private boolean isPromptString( Object o )
+ {
+ boolean value = false;
+ if ( o instanceof String )
+ {
+ String s = (String) o;
+ if ( s.startsWith( "Choose" ) )
+ {
+ // ignore the prompt
+ value = true;
+ }
+ }
+ return value;
+ }
+
+ protected boolean argumentMatches( Object o, Object o1 )
+ {
+ return isPromptString( o1 ) || super.argumentMatches( o, o1 );
+ }
+
+ protected String argumentToString( Object o )
+ {
+ return isPromptString( o ) ? "..." : super.argumentToString( o
);
+ }
+ };
}
-}
+}
\ No newline at end of file
Propchange:
maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectionQueryerTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectorTest.java
URL:
http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectorTest.java?rev=627371&r1=627370&r2=627371&view=diff
==============================================================================
---
maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectorTest.java
(original)
+++
maven/archetype/trunk/archetype-plugin/src/test/java/org/apache/maven/archetype/ui/DefaultArchetypeSelectorTest.java
Wed Feb 13 04:19:46 2008
@@ -21,16 +21,20 @@
import org.apache.maven.archetype.ArchetypeGenerationRequest;
import org.apache.maven.archetype.catalog.Archetype;
+import org.apache.maven.archetype.common.ArchetypeDefinition;
import org.apache.maven.archetype.exception.ArchetypeNotDefined;
import org.apache.maven.archetype.exception.ArchetypeSelectionFailure;
import org.apache.maven.archetype.exception.UnknownArchetype;
import org.apache.maven.archetype.exception.UnknownGroup;
import org.codehaus.plexus.PlexusTestCase;
import org.codehaus.plexus.components.interactivity.PrompterException;
+import org.easymock.AbstractMatcher;
+import org.easymock.ArgumentsMatcher;
import org.easymock.MockControl;
import java.io.IOException;
import java.util.Collections;
+import java.util.Map;
public class DefaultArchetypeSelectorTest
extends PlexusTestCase
@@ -106,7 +110,7 @@
MockControl control = MockControl.createControl(
ArchetypeSelectionQueryer.class );
ArchetypeSelectionQueryer queryer = (ArchetypeSelectionQueryer)
control.getMock();
- queryer.selectArchetype( Collections.EMPTY_MAP );
+ queryer.selectArchetype( Collections.EMPTY_MAP, new
ArchetypeDefinition() );
control.setMatcher( MockControl.ALWAYS_MATCHER );
Archetype archetype = new Archetype();
archetype.setArtifactId( "set-artifactId" );
@@ -125,5 +129,134 @@
assertEquals( "set-groupId", request.getArchetypeGroupId() );
assertEquals( "set-artifactId", request.getArchetypeArtifactId() );
assertEquals( "set-version", request.getArchetypeVersion() );
+ }
+
+ public void testArchetypeNotInRequestDefaultsInBatchMode()
+ throws PrompterException, IOException, UnknownGroup,
ArchetypeSelectionFailure, UnknownArchetype,
+ ArchetypeNotDefined
+ {
+ ArchetypeGenerationRequest request = new ArchetypeGenerationRequest();
+
+ MockControl control = MockControl.createControl(
ArchetypeSelectionQueryer.class );
+
+ ArchetypeSelectionQueryer queryer = (ArchetypeSelectionQueryer)
control.getMock();
+ // expect it to not be called
+
+ control.replay();
+
+ selector.setArchetypeSelectionQueryer( queryer );
+
+ selector.selectArchetype( request, Boolean.FALSE, "" );
+
+ control.verify();
+
+ assertEquals( "org.apache.maven.archetypes",
request.getArchetypeGroupId() );
+ assertEquals( "maven-archetype-quickstart",
request.getArchetypeArtifactId() );
+ assertEquals( "RELEASE", request.getArchetypeVersion() );
+ }
+
+ public void testArchetypeNotInRequestDefaults()
+ throws PrompterException, IOException, UnknownGroup,
ArchetypeSelectionFailure, UnknownArchetype,
+ ArchetypeNotDefined
+ {
+ ArchetypeGenerationRequest request = new ArchetypeGenerationRequest();
+
+ MockControl control = MockControl.createControl(
ArchetypeSelectionQueryer.class );
+
+ ArchetypeSelectionQueryer queryer = (ArchetypeSelectionQueryer)
control.getMock();
+ queryer.selectArchetype( Collections.EMPTY_MAP,
createDefaultArchetypeDefinition() );
+ control.setMatcher( createArgumentMatcher() );
+ Archetype archetype = new Archetype();
+ archetype.setArtifactId( "set-artifactId" );
+ archetype.setGroupId( "set-groupId" );
+ archetype.setVersion( "set-version" );
+ control.setReturnValue( archetype );
+
+ control.replay();
+
+ selector.setArchetypeSelectionQueryer( queryer );
+
+ selector.selectArchetype( request, Boolean.TRUE, "" );
+
+ control.verify();
+
+ assertEquals( "set-groupId", request.getArchetypeGroupId() );
+ assertEquals( "set-artifactId", request.getArchetypeArtifactId() );
+ assertEquals( "set-version", request.getArchetypeVersion() );
+ }
+
+ private ArchetypeDefinition createDefaultArchetypeDefinition()
+ {
+ ArchetypeDefinition definition = new ArchetypeDefinition();
+ definition.setGroupId( "org.apache.maven.archetypes" );
+ definition.setArtifactId( "maven-archetype-quickstart" );
+ definition.setVersion( "RELEASE" );
+ return definition;
+ }
+
+ private static ArgumentsMatcher createArgumentMatcher()
+ {
+ return new AbstractMatcher()
+ {
+ protected boolean argumentMatches( Object o, Object o1 )
+ {
+ return !( o instanceof ArchetypeDefinition ) ||
+ compareArchetypeDefinition( (ArchetypeDefinition) o,
(ArchetypeDefinition) o1 );
+ }
+
+ private boolean compareArchetypeDefinition( ArchetypeDefinition o,
ArchetypeDefinition o1 )
+ {
+ if ( o1 == o )
+ {
+ return true;
+ }
+ if ( o == null )
+ {
+ return false;
+ }
+
+ if ( o1.getArtifactId() != null
+ ? !o1.getArtifactId().equals( o.getArtifactId() )
+ : o.getArtifactId() != null )
+ {
+ return false;
+ }
+ if ( o1.getGroupId() != null ? !o1.getGroupId().equals(
o.getGroupId() ) : o.getGroupId() != null )
+ {
+ return false;
+ }
+ if ( o1.getName() != null ? !o1.getName().equals( o.getName()
) : o.getName() != null )
+ {
+ return false;
+ }
+ if ( o1.getVersion() != null ? !o1.getVersion().equals(
o.getVersion() ) : o.getVersion() != null )
+ {
+ return false;
+ }
+ if ( o1.getGoals() != null ? !o1.getGoals().equals(
o.getGoals() ) : o.getGoals() != null )
+ {
+ return false;
+ }
+ if ( o1.getRepository() != null
+ ? !o1.getRepository().equals( o.getRepository() )
+ : o.getRepository() != null )
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ protected String argumentToString( Object o )
+ {
+ return o instanceof Map ? "..." : toString(
(ArchetypeDefinition) o );
+ }
+
+ private String toString( ArchetypeDefinition archetypeDefinition )
+ {
+ return "groupId = " + archetypeDefinition.getGroupId() + ", "
+ "artifactId = " +
+ archetypeDefinition.getArtifactId() + ", " + "version = "
+ archetypeDefinition.getVersion();
+ }
+ };
}
}