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/10/06 01:02:40 UTC

svn commit: r582417 - in /maven/sandbox/trunk/archetypeng: archetypeng-common/src/main/java/org/apache/maven/archetype/ archetypeng-common/src/main/java/org/apache/maven/archetype/generator/ archetypeng-common/src/main/java/org/apache/maven/archetype/s...

Author: rafale
Date: Fri Oct  5 16:02:39 2007
New Revision: 582417

URL: http://svn.apache.org/viewvc?rev=582417&view=rev
Log:
Usage of Archetyper to create projet from archetype

Modified:
    maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java
    maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java
    maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationResult.java
    maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/DefaultArchetyper.java
    maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/ArchetypeGenerator.java
    maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/DefaultArchetypeGenerator.java
    maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/RemoteCatalogArchetypeDataSource.java
    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/ArchetypeGenerationConfigurator.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/DefaultArchetypeGenerationConfigurator.java
    maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeSelector.java

Modified: maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java?rev=582417&r1=582416&r2=582417&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeCreationRequest.java Fri Oct  5 16:02:39 2007
@@ -9,5 +9,5 @@
 {
     private ArtifactRepository localRepository;
 
-    private List remoteRepositories;     
+    private List remoteRepositories;
 }

Modified: maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java?rev=582417&r1=582416&r2=582417&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationRequest.java Fri Oct  5 16:02:39 2007
@@ -1,19 +1,166 @@
 package org.apache.maven.archetype;
 
+import java.util.Properties;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+
 /** @author Jason van Zyl */
 public class ArchetypeGenerationRequest
 {
+    private String outputDirectory;
+
+    private ArtifactRepository localRepository;
+
+    // Archetype definition
+    private String archetypeName;
+
     private String archetypeGroupId;
 
-    private String archteypeArtifactId;
+    private String archetypeArtifactId;
 
     private String archetypeVersion;
 
+    private String archetypeGoals;
+
+    private String archetypeRepository;
+
+    // Archetype configuration
     private String groupId;
 
     private String artifactId;
 
     private String version;
 
-    
+    private String packageName;
+
+    private Properties additionalProperties;
+
+    public String getArchetypeGroupId()
+    {
+        return archetypeGroupId;
+    }
+
+    public void setArchetypeGroupId( String archetypeGroupId )
+    {
+        this.archetypeGroupId = archetypeGroupId;
+    }
+
+    public String getArchetypeArtifactId()
+    {
+        return archetypeArtifactId;
+    }
+
+    public void setArchetypeArtifactId( String archetypeArtifactId )
+    {
+        this.archetypeArtifactId = archetypeArtifactId;
+    }
+
+    public String getArchetypeVersion()
+    {
+        return archetypeVersion;
+    }
+
+    public void setArchetypeVersion( String archetypeVersion )
+    {
+        this.archetypeVersion = archetypeVersion;
+    }
+
+    public String getArchetypeGoals()
+    {
+        return archetypeGoals;
+    }
+
+    public void setArchetypeGoals( String archetypeGoals )
+    {
+        this.archetypeGoals = archetypeGoals;
+    }
+
+    public String getArchetypeName()
+    {
+        return archetypeName;
+    }
+
+    public void setArchetypeName( String archetypeName )
+    {
+        this.archetypeName = archetypeName;
+    }
+
+    public String getArchetypeRepository()
+    {
+        return archetypeRepository;
+    }
+
+    public void setArchetypeRepository( String archetypeRepository )
+    {
+        this.archetypeRepository = archetypeRepository;
+    }
+
+    public String getArtifactId()
+    {
+        return artifactId;
+    }
+
+    public void setArtifactId( String artifactId )
+    {
+        this.artifactId = artifactId;
+    }
+
+    public String getGroupId()
+    {
+        return groupId;
+    }
+
+    public void setGroupId( String groupId )
+    {
+        this.groupId = groupId;
+    }
+
+    public String getVersion()
+    {
+        return version;
+    }
+
+    public void setVersion( String version )
+    {
+        this.version = version;
+    }
+
+    public String getPackage()
+    {
+        return packageName;
+    }
+
+    public void setPackage( String packageName )
+    {
+        this.packageName = packageName;
+    }
+
+    public Properties getAdditionalProperties()
+    {
+        return additionalProperties;
+    }
+
+    public void setAdditionalProperties( Properties additionalProperties )
+    {
+        this.additionalProperties = additionalProperties;
+    }
+
+    public ArtifactRepository getLocalRepository()
+    {
+        return localRepository;
+    }
+
+    public void setLocalRepository( ArtifactRepository localRepository )
+    {
+        this.localRepository = localRepository;
+    }
+
+    public String getOutputDirectory()
+    {
+        return outputDirectory;
+    }
+
+    public void setOutputDirectory( String outputDirectory )
+    {
+        this.outputDirectory = outputDirectory;
+    }
 }

Modified: maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationResult.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationResult.java?rev=582417&r1=582416&r2=582417&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationResult.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/ArchetypeGenerationResult.java Fri Oct  5 16:02:39 2007
@@ -1,6 +1,19 @@
 package org.apache.maven.archetype;
 
+import org.apache.maven.archetype.exception.ArchetypeGenerationFailure;
+
 /** @author Jason van Zyl */
 public class ArchetypeGenerationResult
 {
+    private Exception cause;
+
+    public Exception getCause( )
+    {
+        return cause;
+    }
+
+    public void setCause( Exception cause )
+    {
+        this.cause = cause;
+    }
 }

Modified: maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/DefaultArchetyper.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/DefaultArchetyper.java?rev=582417&r1=582416&r2=582417&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/DefaultArchetyper.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/DefaultArchetyper.java Fri Oct  5 16:02:39 2007
@@ -21,7 +21,7 @@
         ArchetypeCreationResult result = new ArchetypeCreationResult();
 
         // This should take information from the request and that's it.
-        //creator.createArchetype( );
+        //creator.createArchetype( request, result );
 
         return result;
     }
@@ -31,7 +31,7 @@
         ArchetypeGenerationResult result = new ArchetypeGenerationResult();
 
         // This should take information from the request and that's it.
-        //generator.generateArchetype( );
+        generator.generateArchetype( request, result );
 
         return result;
     }

Modified: maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/ArchetypeGenerator.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/ArchetypeGenerator.java?rev=582417&r1=582416&r2=582417&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/ArchetypeGenerator.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/ArchetypeGenerator.java Fri Oct  5 16:02:39 2007
@@ -19,6 +19,8 @@
 
 package org.apache.maven.archetype.generator;
 
+import org.apache.maven.archetype.ArchetypeGenerationRequest;
+import org.apache.maven.archetype.ArchetypeGenerationResult;
 import org.apache.maven.archetype.common.ArchetypeDefinition;
 import org.apache.maven.archetype.exception.ArchetypeGenerationFailure;
 import org.apache.maven.archetype.exception.ArchetypeNotConfigured;
@@ -40,6 +42,10 @@
 public interface ArchetypeGenerator
 {
     String ROLE = ArchetypeGenerator.class.getName();
+
+    public void generateArchetype( ArchetypeGenerationRequest request,
+                                   ArchetypeGenerationResult result
+    );
 
     void generateArchetype( File propertyFile,
                             ArtifactRepository localRepository,

Modified: maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/DefaultArchetypeGenerator.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/DefaultArchetypeGenerator.java?rev=582417&r1=582416&r2=582417&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/DefaultArchetypeGenerator.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/generator/DefaultArchetypeGenerator.java Fri Oct  5 16:02:39 2007
@@ -21,6 +21,8 @@
 
 import org.apache.maven.archetype.Archetype;
 import org.apache.maven.archetype.ArchetypeDescriptorException;
+import org.apache.maven.archetype.ArchetypeGenerationRequest;
+import org.apache.maven.archetype.ArchetypeGenerationResult;
 import org.apache.maven.archetype.ArchetypeNotFoundException;
 import org.apache.maven.archetype.ArchetypeTemplateProcessingException;
 import org.apache.maven.archetype.common.ArchetypeArtifactManager;
@@ -45,10 +47,12 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
+import org.apache.maven.archetype.common.ArchetypeRegistryManager;
 
 /** @plexus.component */
 public class DefaultArchetypeGenerator
@@ -56,6 +60,9 @@
     implements ArchetypeGenerator
 {
     /** @plexus.requirement */
+    private ArchetypeRegistryManager archetypeRegistryManager;
+
+    /** @plexus.requirement */
     private ArchetypeArtifactManager archetypeArtifactManager;
 
     /** @plexus.requirement */
@@ -66,6 +73,7 @@
 
     /** @plexus.requirement */
     private FilesetArchetypeGenerator filesetGenerator;
+
     /** @plexus.requirement */
     private Archetype oldArchetype;
 
@@ -89,6 +97,29 @@
         ArchetypeGenerationFailure
     {
         Properties properties = initialiseArchetypeProperties( propertyFile );
+        generateArchetype( properties, localRepository, repositories, basedir );
+    }
+
+
+    private void generateArchetype(
+        Properties properties,
+        ArtifactRepository localRepository,
+        List repositories,
+        String basedir
+    )
+        throws
+        IOException,
+        ArchetypeNotDefined,
+        UnknownArchetype,
+        ArchetypeNotConfigured,
+        ProjectDirectoryExists,
+        PomFileExists,
+        OutputFileExists,
+        XmlPullParserException,
+        DocumentException,
+        InvalidPackaging,
+        ArchetypeGenerationFailure
+    {
 
         ArchetypeDefinition archetypeDefinition =
             archetypeFactory.createArchetypeDefinition( properties );
@@ -278,6 +309,80 @@
             throw new ArchetypeGenerationFailure(
                 "Failed to generate project from the old archetype"
             );
+        }
+    }
+
+    public void generateArchetype( ArchetypeGenerationRequest request, ArchetypeGenerationResult result )
+    {
+        try
+        {
+            Properties properties = request.getAdditionalProperties(  );
+            properties.setProperty( Constants.ARCHETYPE_GROUP_ID, request.getArchetypeGroupId() );
+            properties.setProperty( Constants.ARCHETYPE_ARTIFACT_ID, request.getArchetypeArtifactId() );
+            properties.setProperty( Constants.ARCHETYPE_VERSION, request.getArchetypeVersion() );
+
+            properties.setProperty( Constants.GROUP_ID, request.getGroupId(  ) );
+            properties.setProperty( Constants.ARTIFACT_ID, request.getArtifactId(  ) );
+            properties.setProperty( Constants.VERSION, request.getVersion(  ) );
+            properties.setProperty( Constants.PACKAGE, request.getPackage(  ) );
+            properties.setProperty( Constants.ARCHETYPE_POST_GENERATION_GOALS, request.getArchetypeGoals(  ) );
+
+            generateArchetype( properties, request.getLocalRepository(  ), Collections.singletonList( archetypeRegistryManager.createRepository( request.getArchetypeRepository(  ), "repository" ) ), request.getOutputDirectory(  ) );
+        }
+        catch ( IOException ex )
+        {
+            getLogger().error(ex.getMessage(), ex);
+            result.setCause(ex);
+        }
+        catch ( ArchetypeNotDefined ex )
+        {
+            getLogger().error(ex.getMessage(), ex);
+            result.setCause(ex);
+        }
+        catch ( UnknownArchetype ex )
+        {
+            getLogger().error(ex.getMessage(), ex);
+            result.setCause(ex);
+        }
+        catch ( ArchetypeNotConfigured ex )
+        {
+            getLogger().error(ex.getMessage(), ex);
+            result.setCause(ex);
+        }
+        catch ( ProjectDirectoryExists ex )
+        {
+            getLogger().error(ex.getMessage(), ex);
+            result.setCause(ex);
+        }
+        catch ( PomFileExists ex )
+        {
+            getLogger().error(ex.getMessage(), ex);
+            result.setCause(ex);
+        }
+        catch ( OutputFileExists ex )
+        {
+            getLogger().error(ex.getMessage(), ex);
+            result.setCause(ex);
+        }
+        catch ( XmlPullParserException ex )
+        {
+            getLogger().error(ex.getMessage(), ex);
+            result.setCause(ex);
+        }
+        catch ( DocumentException ex )
+        {
+            getLogger().error(ex.getMessage(), ex);
+            result.setCause(ex);
+        }
+        catch ( InvalidPackaging ex )
+        {
+            getLogger().error(ex.getMessage(), ex);
+            result.setCause(ex);
+        }
+        catch ( ArchetypeGenerationFailure ex )
+        {
+            getLogger().error(ex.getMessage(), ex);
+            result.setCause(ex);
         }
     }
 }

Modified: maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/RemoteCatalogArchetypeDataSource.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/RemoteCatalogArchetypeDataSource.java?rev=582417&r1=582416&r2=582417&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/RemoteCatalogArchetypeDataSource.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/RemoteCatalogArchetypeDataSource.java Fri Oct  5 16:02:39 2007
@@ -7,6 +7,9 @@
 import java.util.List;
 import java.util.Properties;
 import org.apache.maven.archetype.catalog.Archetype;
+import org.apache.maven.artifact.manager.WagonManager;
+import org.apache.maven.settings.Settings;
+import org.codehaus.plexus.PlexusContainer;
 
 /**
  * @plexus.component role-hint="remote-catalog"
@@ -17,6 +20,16 @@
 {
     public static String REPOSITORY_PROPERTY = "repository";
 
+//    /**
+//     * @plexus.requirement
+//     */
+//    private PlexusContainer container;
+//
+//    /**
+//     * @plexus.requirement
+//     */
+//    private WagonManager wagonManager;
+
     public List getArchetypes( Properties properties )
         throws ArchetypeDataSourceException
     {
@@ -48,4 +61,120 @@
     {
         throw new ArchetypeDataSourceException( "Not supported yet." );
     }
+
+//    // Stealed from the embedder in trunk on 2007-10-04
+//    // then adapted
+//    private void artifactTransferMechanism( MavenExecutionRequest request, Configuration configuration, Settings settings )
+//        throws MavenEmbedderException
+//    {
+//        // ------------------------------------------------------------------------
+//        // Artifact Transfer Mechanism
+//        //
+//        //
+//        // ------------------------------------------------------------------------
+//
+//        if ( settings.isOffline() )
+//        {
+//            getLogger().info( "You are working in offline mode." );
+//
+//            wagonManager.setOnline( false );
+//        }
+//        else
+//        {
+//            wagonManager.findAndRegisterWagons( n );
+//
+//            wagonManager.setInteractive( settings.isInteractiveMode() );
+//
+//            wagonManager.setDownloadMonitor( request.getTransferListener() );
+//
+//            wagonManager.setOnline( true );
+//        }
+//
+//        try
+//        {
+//            resolveParameters( settings );
+//        }
+//        catch ( Exception e )
+//        {
+//            throw new MavenEmbedderException(
+//                "Unable to configure Maven for execution",
+//                e );
+//        }
+//    }
+//
+//    // Stealed from the embedder in trunk on 2007-10-04
+//    // then adapted
+//    private void resolveParameters( Settings settings )
+//        throws ComponentLookupException, ComponentLifecycleException, SettingsConfigurationException
+//    {
+//        WagonManager wagonManager = (WagonManager) container.lookup( WagonManager.ROLE );
+//
+//        try
+//        {
+//            Proxy proxy = settings.getActiveProxy();
+//
+//            if ( proxy != null )
+//            {
+//                if ( proxy.getHost() == null )
+//                {
+//                    throw new SettingsConfigurationException( "Proxy in settings.xml has no host" );
+//                }
+//
+//                wagonManager.addProxy(
+//                    proxy.getProtocol(),
+//                    proxy.getHost(),
+//                    proxy.getPort(),
+//                    proxy.getUsername(),
+//                    proxy.getPassword(),
+//                    proxy.getNonProxyHosts() );
+//            }
+//
+//            for ( Iterator i = settings.getServers().iterator(); i.hasNext(); )
+//            {
+//                Server server = (Server) i.next();
+//
+//                wagonManager.addAuthenticationInfo(
+//                    server.getId(),
+//                    server.getUsername(),
+//                    server.getPassword(),
+//                    server.getPrivateKey(),
+//                    server.getPassphrase() );
+//
+//                wagonManager.addPermissionInfo(
+//                    server.getId(),
+//                    server.getFilePermissions(),
+//                    server.getDirectoryPermissions() );
+//
+//                if ( server.getConfiguration() != null )
+//                {
+//                    wagonManager.addConfiguration(
+//                        server.getId(),
+//                        (Xpp3Dom) server.getConfiguration() );
+//                }
+//            }
+//
+//            RepositoryPermissions defaultPermissions = new RepositoryPermissions();
+//
+//            defaultPermissions.setDirectoryMode( "775" );
+//
+//            defaultPermissions.setFileMode( "664" );
+//
+//            wagonManager.setDefaultRepositoryPermissions( defaultPermissions );
+//
+//            for ( Iterator i = settings.getMirrors().iterator(); i.hasNext(); )
+//            {
+//                Mirror mirror = (Mirror) i.next();
+//
+//                wagonManager.addMirror(
+//                    mirror.getId(),
+//                    mirror.getMirrorOf(),
+//                    mirror.getUrl() );
+//            }
+//        }
+//        finally
+//        {
+//            container.release( wagonManager );
+//        }
+//    }
+
 }

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=582417&r1=582416&r2=582417&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 Fri Oct  5 16:02:39 2007
@@ -40,10 +40,12 @@
 import org.codehaus.plexus.util.StringUtils;
 
 import java.io.File;
-import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Properties;
+import org.apache.maven.archetype.ArchetypeGenerationRequest;
+import org.apache.maven.archetype.ArchetypeGenerationResult;
+import org.apache.maven.archetype.Archetyper;
 
 /**
  * Generates sample project from archetype.
@@ -58,6 +60,9 @@
     implements ContextEnabled
 {
     /** @component */
+    private Archetyper archetyper;
+
+    /** @component */
     private ArchetypeSelector selector;
 
     /** @component */
@@ -170,6 +175,13 @@
         //
         // look at the result and respond accordingly.
 
+        ArchetypeGenerationRequest request = new ArchetypeGenerationRequest();
+        request.setArchetypeGroupId( archetypeGroupId );
+        request.setArchetypeArtifactId( archetypeArtifactId );
+        request.setArchetypeVersion( archetypeVersion );
+        request.setOutputDirectory( basedir.getAbsolutePath() );
+        request.setLocalRepository( localRepository );
+
         try
         {
             // This is not really necessary as we will use the central repository or the repository that
@@ -183,28 +195,50 @@
                     archetypeRegistryFile
                 );
 
+            // Only interactiveMode, repositories and registry file are needed outside the request.
             selector.selectArchetype(
-                archetypeGroupId,
-                archetypeArtifactId,
-                archetypeVersion,
+                request,
                 settings.getInteractiveMode(),
-                propertyFile,
                 archetypeRegistryFile,
-                localRepository,
                 repositories
             );
+//            Old way to call components
+//            selector.selectArchetype(
+//                archetypeGroupId,
+//                archetypeArtifactId,
+//                archetypeVersion,
+//                settings.getInteractiveMode(),
+//                propertyFile,
+//                archetypeRegistryFile,
+//                localRepository,
+//                repositories
+//            );
 
             // Create the request here for the archetyper and use that instead of the configurator directly here.
 
+            // Only interactiveMode, system.properties (configuration properties) and repositories are needed outside the request.
             configurator.configureArchetype(
+                request,
                 settings.getInteractiveMode(),
-                propertyFile,
                 System.getProperties(),
-                localRepository,
                 repositories
             );
+//            Old way to call components
+//            configurator.configureArchetype(
+//                settings.getInteractiveMode(),
+//                propertyFile,
+//                System.getProperties(),
+//                localRepository,
+//                repositories
+//            );
+
+            // At this point, the archetype should have been downloaded by the configurator,
+            // so the repositories are not needed in the request
+
+            ArchetypeGenerationResult result = archetyper.generateProjectFromArchetype( request );
 
-            generator.generateArchetype( propertyFile, localRepository, repositories, basedir.getAbsolutePath() );
+            // Old way to call the components
+            //generator.generateArchetype( propertyFile, localRepository, repositories, basedir.getAbsolutePath() );
         }
         catch ( Exception ex )
         {
@@ -219,9 +253,9 @@
 
         Properties properties = PropertyUtils.loadProperties( propertyFile );
 
-        String artifactId = properties.getProperty( "artifactId" );
+        String artifactId = request.getArtifactId();
 
-        String postArchetypeGenerationGoals = properties.getProperty( Constants.ARCHETYPE_POST_GENERATION_GOALS );
+        String postArchetypeGenerationGoals = request.getArchetypeGoals();
 
         if ( StringUtils.isEmpty( postArchetypeGenerationGoals ) )
         {
@@ -233,7 +267,7 @@
             invokePostArchetypeGenerationGoals( postArchetypeGenerationGoals, artifactId );
         }
 
-        FileUtils.fileDelete( propertyFile.getAbsolutePath() );
+//        FileUtils.fileDelete( propertyFile.getAbsolutePath() );
     }
 
     private void invokePostArchetypeGenerationGoals( String goals, String artifactId )

Modified: maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeGenerationConfigurator.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeGenerationConfigurator.java?rev=582417&r1=582416&r2=582417&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeGenerationConfigurator.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/ArchetypeGenerationConfigurator.java Fri Oct  5 16:02:39 2007
@@ -19,6 +19,7 @@
 
 package org.apache.maven.archetype.ui;
 
+import org.apache.maven.archetype.ArchetypeGenerationRequest;
 import org.apache.maven.archetype.exception.ArchetypeGenerationConfigurationFailure;
 import org.apache.maven.archetype.exception.ArchetypeNotConfigured;
 import org.apache.maven.archetype.exception.ArchetypeNotDefined;
@@ -32,12 +33,27 @@
 
 import java.util.List;
 import java.util.Properties;
+import org.apache.maven.archetype.common.ArchetypeConfiguration;
 
 public interface ArchetypeGenerationConfigurator
 {
     String ROLE = ArchetypeGenerationConfigurator.class.getName();
 
-    void configureArchetype(
+    public void configureArchetype(
+        ArchetypeGenerationRequest request,
+        Boolean interactiveMode,
+        Properties commandLineProperties,
+        List repositories
+    )
+        throws
+        ArchetypeNotDefined,
+        UnknownArchetype,
+        ArchetypeNotConfigured,
+        IOException,
+        PrompterException,
+        ArchetypeGenerationConfigurationFailure;
+
+    public ArchetypeConfiguration configureArchetype(
         Boolean interactiveMode,
         File propertyFile,
         Properties commandLineProperties,

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=582417&r1=582416&r2=582417&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 Fri Oct  5 16:02:39 2007
@@ -19,6 +19,7 @@
 
 package org.apache.maven.archetype.ui;
 
+import org.apache.maven.archetype.ArchetypeGenerationRequest;
 import org.apache.maven.archetype.common.ArchetypeDefinition;
 import org.apache.maven.archetype.exception.ArchetypeNotDefined;
 import org.apache.maven.archetype.exception.ArchetypeSelectionFailure;
@@ -35,6 +36,20 @@
 public interface ArchetypeSelector
 {
     String ROLE = ArchetypeSelector.class.getName();
+
+    public void selectArchetype( ArchetypeGenerationRequest request,
+                                 Boolean interactiveMode,
+                                 File archetypeRegistryFile,
+                                 List repositories
+    )
+        throws
+        ArchetypeNotDefined,
+        UnknownArchetype,
+        UnknownGroup,
+        IOException,
+        FileNotFoundException,
+        PrompterException,
+        ArchetypeSelectionFailure;
 
     ArchetypeDefinition selectArchetype( String archetypeGroupId,
                                          String archetypeArtifactId,

Modified: maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeGenerationConfigurator.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeGenerationConfigurator.java?rev=582417&r1=582416&r2=582417&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeGenerationConfigurator.java (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-plugin/src/main/java/org/apache/maven/archetype/ui/DefaultArchetypeGenerationConfigurator.java Fri Oct  5 16:02:39 2007
@@ -20,6 +20,7 @@
 package org.apache.maven.archetype.ui;
 
 import org.apache.maven.archetype.Archetype;
+import org.apache.maven.archetype.ArchetypeGenerationRequest;
 import org.apache.maven.archetype.common.ArchetypeArtifactManager;
 import org.apache.maven.archetype.common.ArchetypeConfiguration;
 import org.apache.maven.archetype.common.ArchetypeDefinition;
@@ -42,6 +43,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Properties;
+import org.apache.maven.archetype.common.Constants;
 
 /** @plexus.component */
 public class DefaultArchetypeGenerationConfigurator
@@ -50,6 +52,7 @@
 {
     /** @plexus.requirement */
     Archetype oldArchetype;
+
     /** @plexus.requirement */
     private ArchetypeArtifactManager archetypeArtifactManager;
 
@@ -62,7 +65,7 @@
     /** @plexus.requirement */
     private ArchetypePropertiesManager archetypePropertiesManager;
 
-    public void configureArchetype(
+    public ArchetypeConfiguration configureArchetype(
         Boolean interactiveMode,
         File propertyFile,
         Properties commandLineProperties,
@@ -77,9 +80,11 @@
         PrompterException,
         ArchetypeGenerationConfigurationFailure
     {
+        // propertyFile is no longer needed
         Properties properties =
             initialiseArchetypeProperties( commandLineProperties, propertyFile );
 
+        // The archetype should be defined at this point and exist!
         ArchetypeDefinition archetypeDefinition =
             archetypeFactory.createArchetypeDefinition( properties );
 
@@ -208,10 +213,13 @@
             }
         }
 
-        archetypePropertiesManager.writeProperties(
-            archetypeConfiguration.toProperties(),
-            propertyFile
-        );
+//        propertyFile is no longer needed
+//        archetypePropertiesManager.writeProperties(
+//            archetypeConfiguration.toProperties(),
+//            propertyFile
+//        );
+
+        return archetypeConfiguration;
     }
 
     private Properties initialiseArchetypeProperties(
@@ -223,7 +231,8 @@
         IOException
     {
         Properties properties = new Properties();
-        archetypePropertiesManager.readProperties( properties, propertyFile );
+//        propertyFile is no longer needed
+//        archetypePropertiesManager.readProperties( properties, propertyFile );
 
         Iterator commandLinePropertiesIterator =
             new ArrayList( commandLineProperties.keySet() ).iterator();
@@ -236,5 +245,47 @@
             );
         }
         return properties;
+    }
+
+    public void configureArchetype(
+        ArchetypeGenerationRequest request,
+        Boolean interactiveMode,
+        Properties commandLineProperties,
+        List repositories
+    )
+        throws
+        ArchetypeNotDefined,
+        UnknownArchetype,
+        ArchetypeNotConfigured,
+        IOException,
+        PrompterException,
+        ArchetypeGenerationConfigurationFailure
+    {
+        Properties p = new Properties( commandLineProperties );
+        p.setProperty( Constants.ARCHETYPE_GROUP_ID, request.getArchetypeGroupId() );
+        p.setProperty( Constants.ARCHETYPE_ARTIFACT_ID, request.getArchetypeArtifactId() );
+        p.setProperty( Constants.ARCHETYPE_VERSION, request.getArchetypeVersion() );
+
+        // propertyFile is no longer needed, set to null:
+        ArchetypeConfiguration archetypeConfiguration = configureArchetype(
+            interactiveMode,
+            null,
+            p,
+            request.getLocalRepository(),
+            repositories
+        );
+
+        request.setGroupId( archetypeConfiguration.getProperty( Constants.GROUP_ID ) );
+        request.setArtifactId( archetypeConfiguration.getProperty( Constants.ARTIFACT_ID ) );
+        request.setVersion( archetypeConfiguration.getProperty( Constants.VERSION ) );
+        request.setPackage( archetypeConfiguration.getProperty( Constants.PACKAGE ) );
+        Properties properties = archetypeConfiguration.getProperties();
+        properties.remove( Constants.GROUP_ID );
+        properties.remove( Constants.ARTIFACT_ID );
+        properties.remove( Constants.VERSION );
+        properties.remove( Constants.PACKAGE );
+
+        request.setAdditionalProperties( properties );
+
     }
 }

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=582417&r1=582416&r2=582417&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 Fri Oct  5 16:02:39 2007
@@ -19,6 +19,7 @@
 
 package org.apache.maven.archetype.ui;
 
+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.common.ArchetypeDefinition;
@@ -186,10 +187,11 @@
         }
         else
         {
-            archetypePropertiesManager.writeProperties(
-                toProperties( archetypeDefinition ),
-                propertyFile
-            );
+//            properties is no longer needed
+//            archetypePropertiesManager.writeProperties(
+//                toProperties( archetypeDefinition ),
+//                propertyFile
+//            );
 
             return archetypeDefinition;
         }
@@ -256,14 +258,15 @@
         IOException
     {
         Properties properties = new Properties();
-        try
-        {
-            archetypePropertiesManager.readProperties( properties, propertyFile );
-        }
-        catch ( FileNotFoundException e )
-        {
-            getLogger().debug( "archetype.properties does not exist" );
-        }
+//        propertyFile is no longer needed
+//        try
+//        {
+//            archetypePropertiesManager.readProperties( properties, propertyFile );
+//        }
+//        catch ( FileNotFoundException e )
+//        {
+//            getLogger().debug( "archetype.properties does not exist" );
+//        }
 
         if ( archetypeGroupId != null )
         {
@@ -281,5 +284,40 @@
         }
 
         return properties;
+    }
+
+    public void selectArchetype(
+        ArchetypeGenerationRequest request,
+        Boolean interactiveMode,
+        File archetypeRegistryFile,
+        List repositories
+    )
+        throws
+        ArchetypeNotDefined,
+        UnknownArchetype,
+        UnknownGroup,
+        IOException,
+        FileNotFoundException,
+        PrompterException,
+        ArchetypeSelectionFailure
+    {
+        // propertyFile is no longer needed, set to null!
+        // archetypeRegistryFile is no longer used, set to null!
+        ArchetypeDefinition definition = selectArchetype(
+            request.getArchetypeGroupId(),
+            request.getArchetypeArtifactId(),
+            request.getArchetypeVersion(),
+            interactiveMode,
+            null,
+            null,
+            request.getLocalRepository(),
+            repositories);
+
+        request.setArchetypeGroupId( definition.getGroupId() );
+        request.setArchetypeArtifactId( definition.getArtifactId() );
+        request.setArchetypeVersion( definition.getVersion() );
+        request.setArchetypeRepository( definition.getRepository() );
+        request.setArchetypeGoals( definition.getGoals() );
+        request.setArchetypeName( definition.getName() );
     }
 }