You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2007/07/06 18:35:16 UTC

svn commit: r553946 [13/19] - in /maven/archetype/branches/maven-archetypeng: ./ maven-archetypeng-bundles/ maven-archetypeng-bundles/maven-archetypeng-archetype/ maven-archetypeng-bundles/maven-archetypeng-archetype/src/ maven-archetypeng-bundles/mave...

Added: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/pom.xml
URL: http://svn.apache.org/viewvc/maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/pom.xml?view=auto&rev=553946
==============================================================================
--- maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/pom.xml (added)
+++ maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/pom.xml Fri Jul  6 09:34:35 2007
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2006 The Apache Software Foundation.
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+-->
+<project
+    xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.codehaus.mojo.archetypeng</groupId>
+        <artifactId>maven-archetypeng-core</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>maven-archetypeng-generator</artifactId>
+
+    <name>Maven ArchetypeNG Generator</name>
+    <packaging>jar</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.codehaus.mojo.archetypeng</groupId>
+            <artifactId>maven-archetypeng-common</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.plexus</groupId>
+            <artifactId>plexus-velocity</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven.shared</groupId>
+            <artifactId>maven-plugin-testing-harness</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven.archetype</groupId>
+            <artifactId>maven-archetype-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.plexus</groupId>
+            <artifactId>plexus-interactivity-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>velocity</groupId>
+            <artifactId>velocity</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.plexus</groupId>
+            <artifactId>plexus-utils</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>dom4j</groupId>
+            <artifactId>dom4j</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-artifact</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-artifact-manager</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-model</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.mojo.archetypeng</groupId>
+            <artifactId>maven-archetypeng-archetype-descriptor</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.plexus</groupId>
+            <artifactId>plexus-container-default</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <dependencies>
+                    <dependency>
+                        <groupId>ant</groupId>
+                        <artifactId>ant-antlr</artifactId>
+                        <version>1.6.5</version>
+                    </dependency>
+                </dependencies>
+
+                <executions>
+                    <execution>
+                        <id>archetype-test</id>
+                        <phase>process-test-resources</phase>
+                        <configuration>
+                            <tasks>
+                                <property name="test.projects.name" value="maven-archetype-test"></property>
+                                <property name="test.projects.version" value="1.0"></property>
+                                <property name="test.projects.archetype" value="${test.projects.name}-${test.projects.version}"></property>
+                                <property name="test.projects.source.directory" value="${test.projects.archetype}"></property>
+                                <property name="test.projects.target.directory" value="org/codehaus/mojo/archetypes/${test.projects.name}/${test.projects.version}"></property>
+                                <property name="test.projects.repository" value="repositories/central"></property>
+
+                                <mkdir dir="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}/"></mkdir>
+
+                                <jar destfile="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}/${test.projects.archetype}.jar" basedir="${basedir}/src/test/archetypes/${test.projects.source.directory}/"></jar>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+
+                    <execution>
+                        <id>archetype-test-partial</id>
+                        <phase>process-test-resources</phase>
+                        <configuration>
+                            <tasks>
+                                <property name="test.projects.name" value="maven-archetype-test-partial"></property>
+                                <property name="test.projects.version" value="1.0"></property>
+                                <property name="test.projects.archetype" value="${test.projects.name}-${test.projects.version}"></property>
+                                <property name="test.projects.source.directory" value="${test.projects.archetype}"></property>
+                                <property name="test.projects.target.directory" value="org/codehaus/mojo/archetypes/${test.projects.name}/${test.projects.version}"></property>
+                                <property name="test.projects.repository" value="repositories/central"></property>
+                                <mkdir dir="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}/"></mkdir>
+
+                                <jar destfile="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}/${test.projects.archetype}.jar" basedir="${basedir}/src/test/archetypes/${test.projects.source.directory}/"></jar>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+
+                    <execution>
+                        <id>archetype-test-site</id>
+                        <phase>process-test-resources</phase>
+                        <configuration>
+                            <tasks>
+                                <property name="test.projects.name" value="maven-archetype-test-site"></property>
+                                <property name="test.projects.version" value="1.0"></property>
+                                <property name="test.projects.archetype" value="${test.projects.name}-${test.projects.version}"></property>
+                                <property name="test.projects.source.directory" value="${test.projects.archetype}"></property>
+                                <property name="test.projects.target.directory" value="org/codehaus/mojo/archetypes/${test.projects.name}/${test.projects.version}"></property>
+                                <property name="test.projects.repository" value="repositories/central"></property>
+
+                                <mkdir dir="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}/"></mkdir>
+
+                                <jar destfile="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}/${test.projects.archetype}.jar" basedir="${basedir}/src/test/archetypes/${test.projects.source.directory}/"></jar>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+
+                    <execution>
+                        <id>archetype-test-old</id>
+                        <phase>process-test-resources</phase>
+                        <configuration>
+                            <tasks>
+                                <property name="test.projects.name" value="maven-archetype-test-old"></property>
+                                <property name="test.projects.version" value="1.0"></property>
+                                <property name="test.projects.archetype" value="${test.projects.name}-${test.projects.version}"></property>
+                                <property name="test.projects.source.directory" value="${test.projects.archetype}"></property>
+                                <property name="test.projects.target.directory" value="org/codehaus/mojo/archetypes/${test.projects.name}/${test.projects.version}"></property>
+                                <property name="test.projects.repository" value="repositories/central"></property>
+
+                                <mkdir dir="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}/"></mkdir>
+
+                                <jar destfile="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}/${test.projects.archetype}.jar" basedir="${basedir}/src/test/archetypes/${test.projects.source.directory}/"></jar>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+
+                    <execution>
+                        <id>archetype-test-fileset</id>
+                        <phase>process-test-resources</phase>
+                        <configuration>
+                            <tasks>
+                                <property name="test.projects.name" value="maven-archetype-test-fileset"></property>
+                                <property name="test.projects.version" value="1.0"></property>
+                                <property name="test.projects.archetype" value="${test.projects.name}-${test.projects.version}"></property>
+                                <property name="test.projects.source.directory" value="${test.projects.archetype}"></property>
+                                <property name="test.projects.target.directory" value="org/codehaus/mojo/archetypes/${test.projects.name}/${test.projects.version}"></property>
+                                <property name="test.projects.repository" value="repositories/central"></property>
+
+                                <mkdir dir="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}/"></mkdir>
+
+                                <jar destfile="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}/${test.projects.archetype}.jar" basedir="${basedir}/src/test/archetypes/${test.projects.source.directory}/"></jar>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+
+                    <execution>
+                        <id>repository-metadata</id>
+                        <phase>process-test-resources</phase>
+                        <configuration>
+                            <tasks>
+                                <property name="test.projects.source.directory" value="${test.projects.archetype}"></property>
+                                <property name="test.projects.target.directory" value="org/codehaus/mojo/archetypes"></property>
+                                <property name="test.projects.repository" value="repositories/central"></property>
+
+                                <mkdir dir="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}"></mkdir>
+
+                                <copy todir="${basedir}/target/test-classes/${test.projects.repository}/${test.projects.target.directory}">
+                                    <fileset dir="${basedir}/src/test/central-repository"></fileset>
+                                </copy>
+                            </tasks>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeGenerationConfigurator.java
URL: http://svn.apache.org/viewvc/maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeGenerationConfigurator.java?view=auto&rev=553946
==============================================================================
--- maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeGenerationConfigurator.java (added)
+++ maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeGenerationConfigurator.java Fri Jul  6 09:34:35 2007
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.codehaus.mojo.archetypeng.generator;
+
+import org.apache.maven.artifact.repository.ArtifactRepository;
+
+import org.codehaus.mojo.archetypeng.exception.ArchetypeGenerationConfigurationFailure;
+import org.codehaus.mojo.archetypeng.exception.ArchetypeNotConfigured;
+import org.codehaus.mojo.archetypeng.exception.ArchetypeNotDefined;
+import org.codehaus.mojo.archetypeng.exception.UnknownArchetype;
+
+import org.codehaus.plexus.components.interactivity.PrompterException;
+
+import java.io.File;
+import java.io.IOException;
+
+import java.util.List;
+import java.util.Properties;
+
+public interface ArchetypeGenerationConfigurator
+{
+    String ROLE = ArchetypeGenerationConfigurator.class.getName ();
+
+    void configureArchetype (
+        Boolean interactiveMode,
+        File propertyFile,
+        Properties commandLineProperties,
+        ArtifactRepository localRepository,
+        List repositories
+    )
+    throws ArchetypeNotDefined,
+        UnknownArchetype,
+        ArchetypeNotConfigured,
+        IOException,
+        PrompterException,
+        ArchetypeGenerationConfigurationFailure;
+}

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeGenerationConfigurator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeGenerationConfigurator.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeGenerationQueryer.java
URL: http://svn.apache.org/viewvc/maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeGenerationQueryer.java?view=auto&rev=553946
==============================================================================
--- maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeGenerationQueryer.java (added)
+++ maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeGenerationQueryer.java Fri Jul  6 09:34:35 2007
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.codehaus.mojo.archetypeng.generator;
+
+import org.codehaus.mojo.archetypeng.ArchetypeConfiguration;
+
+import org.codehaus.plexus.components.interactivity.PrompterException;
+
+public interface ArchetypeGenerationQueryer
+{
+    /**
+     */
+    boolean confirmConfiguration ( ArchetypeConfiguration archetypeConfiguration )
+    throws PrompterException;
+
+    /**
+     */
+    String getPropertyValue ( String requiredProperty, String defaultValue )
+    throws PrompterException;
+}

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeGenerationQueryer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeGenerationQueryer.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeGenerator.java
URL: http://svn.apache.org/viewvc/maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeGenerator.java?view=auto&rev=553946
==============================================================================
--- maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeGenerator.java (added)
+++ maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeGenerator.java Fri Jul  6 09:34:35 2007
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.codehaus.mojo.archetypeng.generator;
+
+import org.apache.maven.artifact.repository.ArtifactRepository;
+
+import org.codehaus.mojo.archetypeng.exception.ArchetypeGenerationFailure;
+import org.codehaus.mojo.archetypeng.exception.ArchetypeNotConfigured;
+import org.codehaus.mojo.archetypeng.exception.ArchetypeNotDefined;
+import org.codehaus.mojo.archetypeng.exception.InvalidPackaging;
+import org.codehaus.mojo.archetypeng.exception.OutputFileExists;
+import org.codehaus.mojo.archetypeng.exception.PomFileExists;
+import org.codehaus.mojo.archetypeng.exception.ProjectDirectoryExists;
+import org.codehaus.mojo.archetypeng.exception.UnknownArchetype;
+
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+
+import org.dom4j.DocumentException;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import java.util.List;
+
+public interface ArchetypeGenerator
+{
+    String ROLE = ArchetypeGenerator.class.getName ();
+
+    void generateArchetype (
+        File propertyFile,
+        ArtifactRepository localRepository,
+        List repositories,
+        String basedir
+    )
+    throws IOException,
+        ArchetypeNotDefined,
+        UnknownArchetype,
+        ArchetypeNotConfigured,
+        ProjectDirectoryExists,
+        PomFileExists,
+        OutputFileExists,
+        FileNotFoundException,
+        XmlPullParserException,
+        DocumentException,
+        InvalidPackaging,
+        ArchetypeGenerationFailure;
+}

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeGenerator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeGenerator.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeSelectionQueryer.java
URL: http://svn.apache.org/viewvc/maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeSelectionQueryer.java?view=auto&rev=553946
==============================================================================
--- maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeSelectionQueryer.java (added)
+++ maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeSelectionQueryer.java Fri Jul  6 09:34:35 2007
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.codehaus.mojo.archetypeng.generator;
+
+import org.codehaus.mojo.archetypeng.Archetype;
+import org.codehaus.mojo.archetypeng.ArchetypeDefinition;
+
+import org.codehaus.plexus.components.interactivity.PrompterException;
+
+import java.util.List;
+
+public interface ArchetypeSelectionQueryer
+{
+    String ROLE = ArchetypeSelectionQueryer.class.getName ();
+
+    /**
+     */
+    boolean confirmSelection ( ArchetypeDefinition archetypeDefinition )
+    throws PrompterException;
+
+    /**
+     */
+    Archetype selectArtifact ( List list )
+    throws PrompterException;
+
+    /**
+     */
+    String selectGroup ( List list )
+    throws PrompterException;
+
+    /**
+     */
+    String selectVersion ( List list )
+    throws PrompterException;
+}

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeSelectionQueryer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeSelectionQueryer.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeSelector.java
URL: http://svn.apache.org/viewvc/maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeSelector.java?view=auto&rev=553946
==============================================================================
--- maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeSelector.java (added)
+++ maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeSelector.java Fri Jul  6 09:34:35 2007
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.codehaus.mojo.archetypeng.generator;
+
+import org.apache.maven.artifact.repository.ArtifactRepository;
+
+import org.codehaus.mojo.archetypeng.exception.ArchetypeNotDefined;
+import org.codehaus.mojo.archetypeng.exception.ArchetypeSelectionFailure;
+import org.codehaus.mojo.archetypeng.exception.UnknownArchetype;
+
+import org.codehaus.plexus.components.interactivity.PrompterException;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import java.util.List;
+
+public interface ArchetypeSelector
+{
+    String ROLE = ArchetypeSelector.class.getName ();
+
+    void selectArchetype (
+        String archetypeGroupId,
+        String archetypeArtifactId,
+        String archetypeVersion,
+        Boolean interactiveMode,
+        File propertyFile,
+        File archetypeRegistryFile,
+        ArtifactRepository localRepository,
+        List repositories
+    )
+    throws ArchetypeNotDefined,
+        UnknownArchetype,
+        IOException,
+        FileNotFoundException,
+        PrompterException,
+        ArchetypeSelectionFailure;
+}

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeSelector.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/ArchetypeSelector.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeGenerationConfigurator.java
URL: http://svn.apache.org/viewvc/maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeGenerationConfigurator.java?view=auto&rev=553946
==============================================================================
--- maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeGenerationConfigurator.java (added)
+++ maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeGenerationConfigurator.java Fri Jul  6 09:34:35 2007
@@ -0,0 +1,250 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.codehaus.mojo.archetypeng.generator;
+
+import org.apache.maven.archetype.Archetype;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+
+import org.codehaus.mojo.archetypeng.ArchetypeArtifactManager;
+import org.codehaus.mojo.archetypeng.ArchetypeConfiguration;
+import org.codehaus.mojo.archetypeng.ArchetypeDefinition;
+import org.codehaus.mojo.archetypeng.ArchetypeFactory;
+import org.codehaus.mojo.archetypeng.ArchetypePropertiesManager;
+import org.codehaus.mojo.archetypeng.exception.ArchetypeGenerationConfigurationFailure;
+import org.codehaus.mojo.archetypeng.exception.ArchetypeNotConfigured;
+import org.codehaus.mojo.archetypeng.exception.ArchetypeNotDefined;
+import org.codehaus.mojo.archetypeng.exception.UnknownArchetype;
+
+import org.codehaus.plexus.components.interactivity.PrompterException;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
+
+/**
+ * @plexus.component
+ */
+public class DefaultArchetypeGenerationConfigurator
+extends AbstractLogEnabled
+implements ArchetypeGenerationConfigurator
+{
+    /**
+     * @plexus.requirement
+     */
+    Archetype oldArchetype;
+    /**
+     * @plexus.requirement
+     */
+    private ArchetypeArtifactManager archetypeArtifactManager;
+
+    /**
+     * @plexus.requirement
+     */
+    private ArchetypeFactory archetypeFactory;
+
+    /**
+     * @plexus.requirement
+     */
+    private ArchetypeGenerationQueryer archetypeGenerationQueryer;
+
+    /**
+     * @plexus.requirement
+     */
+    private ArchetypePropertiesManager archetypePropertiesManager;
+
+    public void configureArchetype (
+        Boolean interactiveMode,
+        File propertyFile,
+        Properties commandLineProperties,
+        ArtifactRepository localRepository,
+        List repositories
+    )
+    throws ArchetypeNotDefined,
+        UnknownArchetype,
+        ArchetypeNotConfigured,
+        IOException,
+        PrompterException,
+        ArchetypeGenerationConfigurationFailure
+    {
+        Properties properties =
+            initialiseArchetypeProperties ( commandLineProperties, propertyFile );
+
+        ArchetypeDefinition archetypeDefinition =
+            archetypeFactory.createArchetypeDefinition ( properties );
+
+        if ( !archetypeDefinition.isDefined () )
+        {
+            throw new ArchetypeNotDefined ( "The archetype is not defined" );
+        }
+
+        if ( !archetypeArtifactManager.exists (
+                archetypeDefinition.getGroupId (),
+                archetypeDefinition.getArtifactId (),
+                archetypeDefinition.getVersion (),
+                localRepository,
+                repositories
+            )
+        )
+        {
+            throw new UnknownArchetype (
+                "The desired archetype does not exist (" + archetypeDefinition.getGroupId () + ":"
+                + archetypeDefinition.getArtifactId () + ":" + archetypeDefinition.getVersion ()
+                + ")"
+            );
+        }
+
+        ArchetypeConfiguration archetypeConfiguration;
+
+        if ( archetypeArtifactManager.isOldArchetype (
+                archetypeDefinition.getGroupId (),
+                archetypeDefinition.getArtifactId (),
+                archetypeDefinition.getVersion (),
+                localRepository,
+                repositories
+            )
+        )
+        {
+            org.apache.maven.archetype.descriptor.ArchetypeDescriptor archetypeDescriptor =
+                archetypeArtifactManager.getOldArchetypeDescriptor (
+                    archetypeDefinition.getGroupId (),
+                    archetypeDefinition.getArtifactId (),
+                    archetypeDefinition.getVersion (),
+                    localRepository,
+                    repositories
+                );
+            archetypeConfiguration =
+                archetypeFactory.createArchetypeConfiguration ( archetypeDescriptor, properties );
+        }
+        else if (
+            archetypeArtifactManager.isFileSetArchetype (
+                archetypeDefinition.getGroupId (),
+                archetypeDefinition.getArtifactId (),
+                archetypeDefinition.getVersion (),
+                localRepository,
+                repositories
+            )
+        )
+        {
+            org.codehaus.mojo.archetypeng.archetype.filesets.ArchetypeDescriptor archetypeDescriptor =
+                archetypeArtifactManager.getFileSetArchetypeDescriptor (
+                    archetypeDefinition.getGroupId (),
+                    archetypeDefinition.getArtifactId (),
+                    archetypeDefinition.getVersion (),
+                    localRepository,
+                    repositories
+                );
+            archetypeConfiguration =
+                archetypeFactory.createArchetypeConfiguration ( archetypeDescriptor, properties );
+        }
+        else
+        {
+            throw new ArchetypeGenerationConfigurationFailure (
+                "The defined artifact is not an archetype"
+            );
+        }
+
+        if ( interactiveMode.booleanValue () )
+        {
+            boolean confirmed = false;
+            while ( !confirmed )
+            {
+                if ( !archetypeConfiguration.isConfigured () )
+                {
+                    Iterator requiredProperties =
+                        archetypeConfiguration.getRequiredProperties ().iterator ();
+
+                    while ( requiredProperties.hasNext () )
+                    {
+                        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 ( "Archetype generation configuration not confirmed" );
+                    archetypeConfiguration.reset ();
+                }
+                else
+                {
+                    getLogger ().debug ( "Archetype generation configuration confirmed" );
+                    confirmed = true;
+                }
+            } // end while
+        }
+        else
+        {
+            if ( !archetypeConfiguration.isConfigured () )
+            {
+                throw new ArchetypeNotConfigured ( "The archetype is not configurated" );
+            }
+        }
+
+        archetypePropertiesManager.writeProperties (
+            archetypeConfiguration.toProperties (),
+            propertyFile
+        );
+    }
+
+    private Properties initialiseArchetypeProperties (
+        Properties commandLineProperties,
+        File propertyFile
+    )
+    throws FileNotFoundException, IOException
+    {
+        Properties properties = new Properties ();
+        archetypePropertiesManager.readProperties ( properties, propertyFile );
+
+        Iterator commandLinePropertiesIterator =
+            new ArrayList ( commandLineProperties.keySet () ).iterator ();
+        while ( commandLinePropertiesIterator.hasNext () )
+        {
+            String propertyKey = (String) commandLinePropertiesIterator.next ();
+            properties.setProperty (
+                propertyKey,
+                commandLineProperties.getProperty ( propertyKey )
+            );
+        }
+        return properties;
+    }
+}

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeGenerationConfigurator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeGenerationConfigurator.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeGenerationQueryer.java
URL: http://svn.apache.org/viewvc/maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeGenerationQueryer.java?view=auto&rev=553946
==============================================================================
--- maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeGenerationQueryer.java (added)
+++ maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeGenerationQueryer.java Fri Jul  6 09:34:35 2007
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.codehaus.mojo.archetypeng.generator;
+
+import org.codehaus.mojo.archetypeng.ArchetypeConfiguration;
+
+import org.codehaus.plexus.components.interactivity.Prompter;
+import org.codehaus.plexus.components.interactivity.PrompterException;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+
+import java.util.Iterator;
+
+/**
+ * @plexus.component
+ */
+public class DefaultArchetypeGenerationQueryer
+extends AbstractLogEnabled
+implements ArchetypeGenerationQueryer
+{
+    /**
+     * @plexus.requirement
+     */
+    private Prompter prompter;
+
+    public boolean confirmConfiguration ( ArchetypeConfiguration archetypeConfiguration )
+    throws PrompterException
+    {
+        String query = "Confirm properties configuration:\n";
+
+        Iterator requiredPropertiesIter =
+            archetypeConfiguration.getRequiredProperties ().iterator ();
+
+        while ( requiredPropertiesIter.hasNext () )
+        {
+            String property = (String) requiredPropertiesIter.next ();
+            query += property + ": " + archetypeConfiguration.getProperty ( property ) + "\n";
+        }
+
+        String answer = prompter.prompt ( query, "Y" );
+
+        return "Y".equalsIgnoreCase ( answer );
+    }
+
+    public String getPropertyValue ( String requiredProperty, String defaultValue )
+    throws PrompterException
+    {
+        String query = "Define value for " + requiredProperty + ": ";
+        String answer;
+
+        if ( ( defaultValue != null ) && !defaultValue.equals ( "null" ) )
+        {
+            answer = prompter.prompt ( query, defaultValue );
+        }
+        else
+        {
+            answer = prompter.prompt ( query );
+        }
+        return answer;
+    }
+}

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeGenerationQueryer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeGenerationQueryer.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeGenerator.java
URL: http://svn.apache.org/viewvc/maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeGenerator.java?view=auto&rev=553946
==============================================================================
--- maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeGenerator.java (added)
+++ maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeGenerator.java Fri Jul  6 09:34:35 2007
@@ -0,0 +1,298 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.codehaus.mojo.archetypeng.generator;
+
+import org.apache.maven.archetype.Archetype;
+import org.apache.maven.archetype.ArchetypeDescriptorException;
+import org.apache.maven.archetype.ArchetypeNotFoundException;
+import org.apache.maven.archetype.ArchetypeTemplateProcessingException;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+
+import org.codehaus.mojo.archetypeng.ArchetypeArtifactManager;
+import org.codehaus.mojo.archetypeng.ArchetypeConfiguration;
+import org.codehaus.mojo.archetypeng.ArchetypeDefinition;
+import org.codehaus.mojo.archetypeng.ArchetypeFactory;
+import org.codehaus.mojo.archetypeng.ArchetypePropertiesManager;
+import org.codehaus.mojo.archetypeng.Constants;
+import org.codehaus.mojo.archetypeng.exception.ArchetypeGenerationFailure;
+import org.codehaus.mojo.archetypeng.exception.ArchetypeNotConfigured;
+import org.codehaus.mojo.archetypeng.exception.ArchetypeNotDefined;
+import org.codehaus.mojo.archetypeng.exception.InvalidPackaging;
+import org.codehaus.mojo.archetypeng.exception.OutputFileExists;
+import org.codehaus.mojo.archetypeng.exception.PomFileExists;
+import org.codehaus.mojo.archetypeng.exception.ProjectDirectoryExists;
+import org.codehaus.mojo.archetypeng.exception.UnknownArchetype;
+
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+
+import org.dom4j.DocumentException;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+/**
+ * @plexus.component
+ */
+public class DefaultArchetypeGenerator
+extends AbstractLogEnabled
+implements ArchetypeGenerator
+{
+    /**
+     * @plexus.requirement
+     */
+    private ArchetypeArtifactManager archetypeArtifactManager;
+
+    /**
+     * @plexus.requirement
+     */
+    private ArchetypeFactory archetypeFactory;
+
+    /**
+     * @plexus.requirement
+     */
+    private ArchetypePropertiesManager archetypePropertiesManager;
+
+    /**
+     * @plexus.requirement
+     */
+    private FilesetArchetypeGenerator filesetGenerator;
+    /**
+     * @plexus.requirement
+     */
+    private Archetype oldArchetype;
+
+    public void generateArchetype (
+        File propertyFile,
+        ArtifactRepository localRepository,
+        List repositories,
+        String basedir
+    )
+    throws IOException,
+        ArchetypeNotDefined,
+        UnknownArchetype,
+        ArchetypeNotConfigured,
+        ProjectDirectoryExists,
+        PomFileExists,
+        OutputFileExists,
+        FileNotFoundException,
+        XmlPullParserException,
+        DocumentException,
+        InvalidPackaging,
+        ArchetypeGenerationFailure
+    {
+        Properties properties = initialiseArchetypeProperties ( propertyFile );
+
+        ArchetypeDefinition archetypeDefinition =
+            archetypeFactory.createArchetypeDefinition ( properties );
+
+        if ( !archetypeDefinition.isDefined () )
+        {
+            throw new ArchetypeNotDefined ( "The archetype is not defined" );
+        }
+
+        if ( !archetypeArtifactManager.exists (
+                archetypeDefinition.getGroupId (),
+                archetypeDefinition.getArtifactId (),
+                archetypeDefinition.getVersion (),
+                localRepository,
+                repositories
+            )
+        )
+        {
+            throw new UnknownArchetype (
+                "The desired archetype does not exist (" + archetypeDefinition.getGroupId () + ":"
+                + archetypeDefinition.getArtifactId () + ":" + archetypeDefinition.getVersion ()
+                + ")"
+            );
+        }
+
+        if ( archetypeArtifactManager.isFileSetArchetype (
+                archetypeDefinition.getGroupId (),
+                archetypeDefinition.getArtifactId (),
+                archetypeDefinition.getVersion (),
+                localRepository,
+                repositories
+            )
+        )
+        {
+            processFileSetArchetype (
+                properties,
+                localRepository,
+                basedir,
+                repositories,
+                archetypeDefinition
+            );
+        }
+        else if (
+            archetypeArtifactManager.isOldArchetype (
+                archetypeDefinition.getGroupId (),
+                archetypeDefinition.getArtifactId (),
+                archetypeDefinition.getVersion (),
+                localRepository,
+                repositories
+            )
+        )
+        {
+            processOldArchetype (
+                localRepository,
+                properties,
+                basedir,
+                archetypeDefinition,
+                repositories
+            );
+        }
+        else
+        {
+            throw new ArchetypeGenerationFailure ( "The defined artifact is not an archetype" );
+        }
+    }
+
+    /**Common*/
+    public String getPackageAsDirectory ( String packageName )
+    {
+        return StringUtils.replace ( packageName, ".", "/" );
+    }
+
+    /**Common*/
+    private Properties initialiseArchetypeProperties ( File propertyFile )
+    throws IOException
+    {
+        Properties properties = new Properties ();
+        archetypePropertiesManager.readProperties ( properties, propertyFile );
+        return properties;
+    }
+
+    /**FileSetArchetype*/
+    private void processFileSetArchetype (
+        final Properties properties,
+        final ArtifactRepository localRepository,
+        final String basedir,
+        final List repositories,
+        final ArchetypeDefinition archetypeDefinition
+    )
+    throws UnknownArchetype,
+        ArchetypeNotConfigured,
+        ProjectDirectoryExists,
+        PomFileExists,
+        OutputFileExists,
+        ArchetypeGenerationFailure
+    {
+        File archetypeFile =
+            archetypeArtifactManager.getArchetypeFile (
+                archetypeDefinition.getGroupId (),
+                archetypeDefinition.getArtifactId (),
+                archetypeDefinition.getVersion (),
+                localRepository,
+                repositories
+            );
+
+        filesetGenerator.generateArchetype ( properties, archetypeFile, basedir );
+    }
+
+    /**OldArchetype*/
+    private void processOldArchetype (
+        final ArtifactRepository localRepository,
+        final Properties properties,
+        final String basedir,
+        final ArchetypeDefinition archetypeDefinition,
+        final List repositories
+    )
+    throws UnknownArchetype, ArchetypeGenerationFailure
+    {
+        ArchetypeConfiguration archetypeConfiguration;
+
+        org.apache.maven.archetype.descriptor.ArchetypeDescriptor archetypeDescriptor =
+            archetypeArtifactManager.getOldArchetypeDescriptor (
+                archetypeDefinition.getGroupId (),
+                archetypeDefinition.getArtifactId (),
+                archetypeDefinition.getVersion (),
+                localRepository,
+                repositories
+            );
+        archetypeConfiguration =
+            archetypeFactory.createArchetypeConfiguration ( archetypeDescriptor, properties );
+
+        Map map = new HashMap ();
+
+        map.put ( "basedir", basedir );
+
+        map.put (
+            "package",
+            archetypeConfiguration.getProperties ().getProperty ( Constants.PACKAGE )
+        );
+
+        map.put (
+            "packageName",
+            archetypeConfiguration.getProperties ().getProperty ( Constants.PACKAGE )
+        );
+
+        map.put (
+            "groupId",
+            archetypeConfiguration.getProperties ().getProperty ( Constants.GROUP_ID )
+        );
+
+        map.put (
+            "artifactId",
+            archetypeConfiguration.getProperties ().getProperty ( Constants.ARTIFACT_ID )
+        );
+
+        map.put (
+            "version",
+            archetypeConfiguration.getProperties ().getProperty ( Constants.VERSION )
+        );
+        try
+        {
+            oldArchetype.createArchetype (
+                archetypeDefinition.getGroupId (),
+                archetypeDefinition.getArtifactId (),
+                archetypeDefinition.getVersion (),
+                localRepository,
+                repositories,
+                map
+            );
+        }
+        catch ( ArchetypeDescriptorException ex )
+        {
+            throw new ArchetypeGenerationFailure (
+                "Failed to generate project from the old archetype"
+            );
+        }
+        catch ( ArchetypeTemplateProcessingException ex )
+        {
+            throw new ArchetypeGenerationFailure (
+                "Failed to generate project from the old archetype"
+            );
+        }
+        catch ( ArchetypeNotFoundException ex )
+        {
+            throw new ArchetypeGenerationFailure (
+                "Failed to generate project from the old archetype"
+            );
+        }
+    }
+}

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeGenerator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeGenerator.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeSelectionQueryer.java
URL: http://svn.apache.org/viewvc/maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeSelectionQueryer.java?view=auto&rev=553946
==============================================================================
--- maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeSelectionQueryer.java (added)
+++ maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeSelectionQueryer.java Fri Jul  6 09:34:35 2007
@@ -0,0 +1,137 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.codehaus.mojo.archetypeng.generator;
+
+import org.codehaus.mojo.archetypeng.Archetype;
+import org.codehaus.mojo.archetypeng.ArchetypeDefinition;
+
+import org.codehaus.plexus.components.interactivity.Prompter;
+import org.codehaus.plexus.components.interactivity.PrompterException;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @plexus.component
+ */
+public class DefaultArchetypeSelectionQueryer
+extends AbstractLogEnabled
+implements ArchetypeSelectionQueryer
+{
+    /**
+     * @plexus.requirement
+     */
+    private Prompter prompter;
+
+    public boolean confirmSelection ( ArchetypeDefinition archetypeDefinition )
+    throws PrompterException
+    {
+        String query =
+            "Confirm archetype selection: \n" + archetypeDefinition.getGroupId () + "/"
+            + archetypeDefinition.getName () + "\n";
+
+        String answer = prompter.prompt ( query, Arrays.asList ( new String[] { "Y", "N" } ), "Y" );
+
+        return "Y".equalsIgnoreCase ( answer );
+    }
+
+    public Archetype selectArtifact ( List archetypes )
+    throws PrompterException
+    {
+        String query = "Choose archetype:\n";
+        Map answerMap = new HashMap ();
+        List answers = new ArrayList ();
+        Iterator archetypeIterator = archetypes.iterator ();
+        int counter = 1;
+        while ( archetypeIterator.hasNext () )
+        {
+            Archetype archetype = (Archetype) archetypeIterator.next ();
+
+            answerMap.put ( "" + counter, archetype );
+            query +=
+                "" + counter + ": " + archetype.getName () + " (" + archetype.getGroupId () + ":"
+                + archetype.getArtifactId () + ")\n";
+            answers.add ( "" + counter );
+
+            counter++;
+        }
+        query += "Choose a number: ";
+
+        String answer = prompter.prompt ( query, answers );
+
+        return (Archetype) answerMap.get ( answer );
+    }
+
+    public String selectGroup ( List groups )
+    throws PrompterException
+    {
+        String query = "Choose group:\n";
+        Map answerMap = new HashMap ();
+        List answers = new ArrayList ();
+        Iterator groupIterator = groups.iterator ();
+        int counter = 1;
+        while ( groupIterator.hasNext () )
+        {
+            String group = (String) groupIterator.next ();
+
+            answerMap.put ( "" + counter, group );
+            query += "" + counter + ": " + group + "\n";
+            answers.add ( "" + counter );
+
+            counter++;
+        }
+        query += "Choose a number: ";
+
+        String answer = prompter.prompt ( query, answers );
+
+        return (String) answerMap.get ( answer );
+    }
+
+    public String selectVersion ( List archetypeVersions )
+    throws PrompterException
+    {
+        String query = "Choose version: \n";
+        Map answerMap = new HashMap ();
+        List answers = new ArrayList ();
+
+        Iterator archetypeVersionsKeys = archetypeVersions.iterator ();
+        int counter = 1;
+        while ( archetypeVersionsKeys.hasNext () )
+        {
+            String archetypeVersion = (String) archetypeVersionsKeys.next ();
+
+            answerMap.put ( "" + counter, archetypeVersion );
+            query += "" + counter + ": " + archetypeVersion + "\n";
+            answers.add ( "" + counter );
+
+            counter++;
+        }
+        query += "Choose a number: ";
+
+        String answer = prompter.prompt ( query, answers );
+
+        return (String) answerMap.get ( answer );
+    }
+}

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeSelectionQueryer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeSelectionQueryer.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeSelector.java
URL: http://svn.apache.org/viewvc/maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeSelector.java?view=auto&rev=553946
==============================================================================
--- maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeSelector.java (added)
+++ maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeSelector.java Fri Jul  6 09:34:35 2007
@@ -0,0 +1,322 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.codehaus.mojo.archetypeng.generator;
+
+import org.apache.maven.artifact.repository.ArtifactRepository;
+
+import org.codehaus.mojo.archetypeng.Archetype;
+import org.codehaus.mojo.archetypeng.ArchetypeArtifactManager;
+import org.codehaus.mojo.archetypeng.ArchetypeDefinition;
+import org.codehaus.mojo.archetypeng.ArchetypeFactory;
+import org.codehaus.mojo.archetypeng.ArchetypePropertiesManager;
+import org.codehaus.mojo.archetypeng.ArchetypeRegistryManager;
+import org.codehaus.mojo.archetypeng.Constants;
+import org.codehaus.mojo.archetypeng.exception.ArchetypeNotDefined;
+import org.codehaus.mojo.archetypeng.exception.ArchetypeSelectionFailure;
+import org.codehaus.mojo.archetypeng.exception.UnknownArchetype;
+import org.codehaus.mojo.archetypeng.exception.UnknownGroup;
+
+import org.codehaus.plexus.components.interactivity.PrompterException;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import java.util.List;
+import java.util.Properties;
+
+/**
+ * @plexus.component
+ */
+public class DefaultArchetypeSelector
+extends AbstractLogEnabled
+implements ArchetypeSelector
+{
+    /**
+     * @plexus.requirement
+     */
+    private ArchetypeArtifactManager archetypeArtifactManager;
+
+    /**
+     * @plexus.requirement
+     */
+    private ArchetypeFactory archetypeFactory;
+
+    /**
+     * @plexus.requirement
+     */
+    private ArchetypePropertiesManager archetypePropertiesManager;
+
+    /**
+     * @plexus.requirement
+     */
+    private ArchetypeRegistryManager archetypeRegistryManager;
+
+    /**
+     * @plexus.requirement
+     */
+    private ArchetypeSelectionQueryer archetypeSelectionQueryer;
+
+    public void selectArchetype (
+        String archetypeGroupId,
+        String archetypeArtifactId,
+        String archetypeVersion,
+        Boolean interactiveMode,
+        File propertyFile,
+        File archetypeRegistryFile,
+        ArtifactRepository localRepository,
+        List repositories
+    )
+    throws ArchetypeNotDefined,
+        UnknownArchetype,
+        IOException,
+        FileNotFoundException,
+        PrompterException,
+        ArchetypeSelectionFailure
+    {
+        Properties properties =
+            initialiseArchetypeId (
+                archetypeGroupId,
+                archetypeArtifactId,
+                archetypeVersion,
+                propertyFile
+            );
+
+        ArchetypeDefinition archetypeDefinition =
+            archetypeFactory.createArchetypeDefinition ( properties );
+
+        if ( interactiveMode.booleanValue () )
+        {
+            if ( archetypeDefinition.isPartiallyDefined () )
+            {
+                getLogger ().debug ( "Archetype is partially defined" );
+                archetypeDefinition.setVersion (
+                    archetypeArtifactManager.getReleaseVersion (
+                        archetypeDefinition.getGroupId (),
+                        archetypeDefinition.getArtifactId (),
+                        localRepository,
+                        repositories
+                    )
+                );
+            }
+            else
+            {
+                getLogger ().debug ( "Archetype is not defined" );
+            }
+
+            while ( !archetypeDefinition.isDefined () )
+            {
+                try
+                {
+                    if ( !archetypeDefinition.isGroupDefined () )
+                    {
+                        getLogger ().debug ( "Archetype group not defined" );
+
+                        List groups =
+                            archetypeRegistryManager.getArchetypeGroups ( archetypeRegistryFile );
+                        getLogger ().debug ( "Groups=" + groups );
+
+                        archetypeDefinition.setGroupId (
+                            archetypeSelectionQueryer.selectGroup ( groups )
+                        );
+                    }
+                    else
+                    {
+                        getLogger ().debug (
+                            "Archetype group: " + archetypeDefinition.getGroupId ()
+                        );
+                    }
+
+                    if ( !archetypeDefinition.isArtifactDefined () )
+                    {
+                        getLogger ().debug ( "Archetype artifact not defined" );
+
+                        List archetypes =
+                            archetypeArtifactManager.getArchetypes (
+                                archetypeDefinition.getGroupId (),
+                                localRepository,
+                                repositories
+                            );
+                        getLogger ().debug ( "Archetypes=" + archetypes );
+
+                        Archetype archetype =
+                            archetypeSelectionQueryer.selectArtifact ( archetypes );
+
+                        archetypeDefinition.setArtifactId ( archetype.getArtifactId () );
+                        archetypeDefinition.setName ( archetype.getName () );
+                    }
+                    else
+                    {
+                        getLogger ().debug (
+                            "Archetype artifact: " + archetypeDefinition.getArtifactId ()
+                        );
+                    }
+
+                    if ( archetypeDefinition.isPartiallyDefined () )
+                    {
+                        getLogger ().debug ( "Archetype version not defined" );
+
+                        List versions =
+                            archetypeArtifactManager.getVersions (
+                                archetypeDefinition.getGroupId (),
+                                archetypeDefinition.getArtifactId (),
+                                localRepository,
+                                repositories
+                            );
+                        getLogger ().debug ( "Versions=" + versions );
+
+                        archetypeDefinition.setVersion (
+                            archetypeSelectionQueryer.selectVersion ( versions )
+                        );
+                    }
+                    else
+                    {
+                        getLogger ().debug (
+                            "Archetype version: " + archetypeDefinition.getVersion ()
+                        );
+                    }
+
+                    if ( !archetypeDefinition.isDefined () )
+                    {
+                        throw new ArchetypeSelectionFailure (
+                            "The archetype must be selected here"
+                        );
+                    }
+                    else if ( !archetypeSelectionQueryer.confirmSelection ( archetypeDefinition ) )
+                    {
+                        getLogger ().debug ( "Archetype selection not confirmed" );
+                        archetypeDefinition.reset ();
+                    }
+                    else
+                    {
+                        getLogger ().debug ( "Archetype selection confirmed" );
+                    }
+                }
+                catch ( UnknownGroup e )
+                {
+                    getLogger ().warn ( "Unknown group" );
+                    archetypeDefinition.reset ();
+                }
+                catch ( UnknownArchetype e )
+                {
+                    getLogger ().warn ( "Unknown archetype" );
+                    archetypeDefinition.reset ();
+                }
+            } // end while
+        }
+        else
+        {
+            if ( !archetypeDefinition.isDefined () )
+            {
+                if ( !archetypeDefinition.isPartiallyDefined () )
+                {
+                    throw new ArchetypeNotDefined ( "The archetype is not defined" );
+                }
+                else
+                {
+                    getLogger ().debug ( "Archetype is partially defined" );
+                    archetypeDefinition.setVersion (
+                        archetypeArtifactManager.getReleaseVersion (
+                            archetypeDefinition.getGroupId (),
+                            archetypeDefinition.getArtifactId (),
+                            localRepository,
+                            repositories
+                        )
+                    );
+                    getLogger ().info (
+                        "Using default version " + archetypeDefinition.getVersion ()
+                    );
+                }
+            }
+            if ( !archetypeDefinition.isDefined () )
+            {
+                throw new ArchetypeSelectionFailure ( "The archetype must be selected here" );
+            }
+            else
+            {
+                getLogger ().info (
+                    "Archetype selected (" + archetypeDefinition.getGroupId () + ":"
+                    + archetypeDefinition.getArtifactId () + ":" + archetypeDefinition
+                    .getVersion () + ")"
+                );
+            }
+        } // end if
+
+        if ( !archetypeArtifactManager.exists (
+                archetypeDefinition.getGroupId (),
+                archetypeDefinition.getArtifactId (),
+                archetypeDefinition.getVersion (),
+                localRepository,
+                repositories
+            )
+        )
+        {
+            throw new UnknownArchetype (
+                "The desired archetype does not exist (" + archetypeDefinition.getGroupId () + ":"
+                + archetypeDefinition.getArtifactId () + ":" + archetypeDefinition.getVersion ()
+                + ")"
+            );
+        }
+        else
+        {
+            archetypePropertiesManager.writeProperties (
+                archetypeDefinition.toProperties (),
+                propertyFile
+            );
+        }
+    }
+
+    private Properties initialiseArchetypeId (
+        String archetypeGroupId,
+        String archetypeArtifactId,
+        String archetypeVersion,
+        File propertyFile
+    )
+    throws IOException
+    {
+        Properties properties = new Properties ();
+        try
+        {
+            archetypePropertiesManager.readProperties ( properties, propertyFile );
+        }
+        catch ( FileNotFoundException e )
+        {
+            getLogger ().debug ( "archetype.properties does not exist" );
+        }
+
+        if ( archetypeGroupId != null )
+        {
+            properties.setProperty ( Constants.ARCHETYPE_GROUP_ID, archetypeGroupId );
+        }
+
+        if ( archetypeArtifactId != null )
+        {
+            properties.setProperty ( Constants.ARCHETYPE_ARTIFACT_ID, archetypeArtifactId );
+        }
+
+        if ( archetypeVersion != null )
+        {
+            properties.setProperty ( Constants.ARCHETYPE_VERSION, archetypeVersion );
+        }
+
+        return properties;
+    }
+}

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeSelector.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/archetype/branches/maven-archetypeng/maven-archetypeng-core/maven-archetypeng-generator/src/main/java/org/codehaus/mojo/archetypeng/generator/DefaultArchetypeSelector.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"