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 2006/09/20 13:10:20 UTC

svn commit: r448161 [1/2] - in /maven/sandbox/maven-metamorphosis: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/maven/ src/main/java/org/apache/maven/modulo/ src/main/java/org/apache/maven/pomo/...

Author: jvanzyl
Date: Wed Sep 20 04:10:17 2006
New Revision: 448161

URL: http://svn.apache.org/viewvc?view=rev&rev=448161
Log:
o little project converter in the works

Added:
    maven/sandbox/maven-metamorphosis/
    maven/sandbox/maven-metamorphosis/pom.xml   (with props)
    maven/sandbox/maven-metamorphosis/src/
    maven/sandbox/maven-metamorphosis/src/main/
    maven/sandbox/maven-metamorphosis/src/main/java/
    maven/sandbox/maven-metamorphosis/src/main/java/org/
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/DefaultMappingModel.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/DefaultModulo.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModel.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelParser.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelParsingException.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelRetrievalException.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelSource.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/ModuleConversionException.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/Modulo.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/Resource.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/SimpleMappingModelParser.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/SimpleMappingModelSource.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/DefaultPomo.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/ModelGenerationException.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/ModelWritingException.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/PomInfoSource.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/Pomo.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/SimplePomInfoSource.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/DefaultReducto.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/Reducto.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/AbstractJarAnalyser.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/DefaultJarAnalysisContext.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/DefaultJarAnalysisResult.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalysisContext.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalysisException.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalysisResult.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalyzer.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarEntryComparator.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarException.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/AbstractArchivaClient.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/ArchivaAnalyser.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/ArchivaClient.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/LocalArchivaClient.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/source/
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/source/DirectoryJarDataSource.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/source/JarDataSource.java   (with props)
    maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/source/JarDataSourceRetrievalException.java   (with props)
    maven/sandbox/maven-metamorphosis/src/site/
    maven/sandbox/maven-metamorphosis/src/site/apt/
    maven/sandbox/maven-metamorphosis/src/site/apt/usage.apt   (with props)
    maven/sandbox/maven-metamorphosis/src/site/site.xml   (with props)
    maven/sandbox/maven-metamorphosis/src/test/
    maven/sandbox/maven-metamorphosis/src/test/jar-sets/
    maven/sandbox/maven-metamorphosis/src/test/jar-sets/multiple/
    maven/sandbox/maven-metamorphosis/src/test/jar-sets/multiple/commons-codec-1.3.jar   (with props)
    maven/sandbox/maven-metamorphosis/src/test/jar-sets/multiple/commons-io-1.1.jar   (with props)
    maven/sandbox/maven-metamorphosis/src/test/jar-sets/multiple/commons-pool-1.0.1.jar   (with props)
    maven/sandbox/maven-metamorphosis/src/test/jar-sets/single/
    maven/sandbox/maven-metamorphosis/src/test/jar-sets/single/commons-beanutils-1.7.0.jar   (with props)
    maven/sandbox/maven-metamorphosis/src/test/java/
    maven/sandbox/maven-metamorphosis/src/test/java/org/
    maven/sandbox/maven-metamorphosis/src/test/java/org/apache/
    maven/sandbox/maven-metamorphosis/src/test/java/org/apache/maven/
    maven/sandbox/maven-metamorphosis/src/test/java/org/apache/maven/modulo/
    maven/sandbox/maven-metamorphosis/src/test/java/org/apache/maven/modulo/ModuloTest.java   (with props)
    maven/sandbox/maven-metamorphosis/src/test/java/org/apache/maven/modulo/SimpleMappingModelParserTest.java   (with props)
    maven/sandbox/maven-metamorphosis/src/test/java/org/apache/maven/pomo/
    maven/sandbox/maven-metamorphosis/src/test/java/org/apache/maven/pomo/PomoTest.java   (with props)
    maven/sandbox/maven-metamorphosis/src/test/java/org/apache/maven/reducto/
    maven/sandbox/maven-metamorphosis/src/test/java/org/apache/maven/reducto/ReductoTest.java   (with props)
    maven/sandbox/maven-metamorphosis/src/test/java/org/apache/maven/reducto/analysis/
    maven/sandbox/maven-metamorphosis/src/test/java/org/apache/maven/reducto/analysis/archiva/
    maven/sandbox/maven-metamorphosis/src/test/java/org/apache/maven/reducto/analysis/archiva/LocalArchivaClientTest.java   (with props)
    maven/sandbox/maven-metamorphosis/src/test/modules/
    maven/sandbox/maven-metamorphosis/src/test/modules/basic/
    maven/sandbox/maven-metamorphosis/src/test/modules/basic/etc/
    maven/sandbox/maven-metamorphosis/src/test/modules/basic/etc/DSSBatch_log4j.properties   (with props)
    maven/sandbox/maven-metamorphosis/src/test/modules/basic/etc/distributionrules.properties   (with props)
    maven/sandbox/maven-metamorphosis/src/test/modules/basic/etc/dss.properties   (with props)
    maven/sandbox/maven-metamorphosis/src/test/modules/basic/etc/invoicerules.properties   (with props)
    maven/sandbox/maven-metamorphosis/src/test/modules/basic/lib/
    maven/sandbox/maven-metamorphosis/src/test/modules/basic/lib/commons-codec-1.3.jar   (with props)
    maven/sandbox/maven-metamorphosis/src/test/modules/basic/lib/commons-io-1.1.jar   (with props)
    maven/sandbox/maven-metamorphosis/src/test/modules/basic/lib/commons-pool-1.0.1.jar   (with props)
    maven/sandbox/maven-metamorphosis/src/test/modules/basic/map.txt   (with props)
    maven/sandbox/maven-metamorphosis/src/test/modules/basic/src/
    maven/sandbox/maven-metamorphosis/src/test/modules/basic/src/META-INF/
    maven/sandbox/maven-metamorphosis/src/test/modules/basic/src/META-INF/application.xml   (with props)
    maven/sandbox/maven-metamorphosis/src/test/modules/basic/src/no/
    maven/sandbox/maven-metamorphosis/src/test/modules/basic/src/no/bbs/
    maven/sandbox/maven-metamorphosis/src/test/modules/basic/src/no/bbs/Foo.java   (with props)
    maven/sandbox/maven-metamorphosis/src/test/modules/basic/unittest/
    maven/sandbox/maven-metamorphosis/src/test/modules/basic/unittest/no/
    maven/sandbox/maven-metamorphosis/src/test/modules/basic/unittest/no/bbs/
    maven/sandbox/maven-metamorphosis/src/test/modules/basic/unittest/no/bbs/FooTest.java   (with props)

Added: maven/sandbox/maven-metamorphosis/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/pom.xml?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/pom.xml (added)
+++ maven/sandbox/maven-metamorphosis/pom.xml Wed Sep 20 04:10:17 2006
@@ -0,0 +1,89 @@
+<?xml version="1.0" ?>
+
+<!--
+  ~ Copyright 2005-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>
+
+  <groupId>org.apache.maven.metamorphosis</groupId>
+  <artifactId>maven-metamorphosis</artifactId>
+  <version>1.0-SNAPSHOT</version>
+  <name>Maven Metamorphosis</name>
+  <description>A tool to transform non-Maven builds to Maven</description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.codehaus.plexus</groupId>
+        <artifactId>plexus-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>descriptor</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-model</artifactId>
+      <version>2.0.2</version>
+      <scope>compile</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-artifact-manager</artifactId>
+      <version>2.0.2</version>
+      <scope>compile</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.maven.archiva</groupId>
+      <artifactId>archiva-indexer</artifactId>
+      <version>1.0-SNAPSHOT</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.maven.archiva</groupId>
+      <artifactId>archiva-utils</artifactId>
+      <version>1.0-SNAPSHOT</version>
+    </dependency>
+
+    <dependency>
+      <groupId>commons-collections</groupId>
+      <artifactId>commons-collections</artifactId>
+      <version>3.1</version>
+      <scope>compile</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+      <version>1.2</version>
+    </dependency>
+
+  </dependencies>
+
+</project>

Propchange: maven/sandbox/maven-metamorphosis/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/DefaultMappingModel.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/DefaultMappingModel.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/DefaultMappingModel.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/DefaultMappingModel.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,130 @@
+package org.apache.maven.modulo;
+
+import java.util.Set;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+
+/**
+ * @author Jason van Zyl
+ */
+public class DefaultMappingModel
+    implements MappingModel
+{
+    private String groupId;
+
+    private String artifactId;
+
+    private String version;
+
+    private String packaging;
+
+    private Set jarDirectories;
+
+    private String sourceDirectory;
+
+    private String testSourceDirectory;
+
+    private String integrationTestSourceDirectory;
+
+    private Set resourceDirectories;
+
+    public String getGroupId()
+    {
+        return groupId;
+    }
+
+    public void setGroupId( String groupId )
+    {
+        this.groupId = groupId;
+    }
+
+    public String getArtifactId()
+    {
+        return artifactId;
+    }
+
+    public void setArtifactId( String artifactId )
+    {
+        this.artifactId = artifactId;
+    }
+
+    public String getVersion()
+    {
+        return version;
+    }
+
+    public void setVersion( String version )
+    {
+        this.version = version;
+    }
+
+    public String getPackaging()
+    {
+        return packaging;
+    }
+
+    public void setPackaging( String packaging )
+    {
+        this.packaging = packaging;
+    }
+
+    public Set getJarDirectories()
+    {
+        return jarDirectories;
+    }
+
+    public void addJarDirectory( Resource jarDirectory )
+    {
+        if ( jarDirectories == null )
+        {
+            jarDirectories = new LinkedHashSet();
+        }
+
+        jarDirectories.add( jarDirectory );
+    }
+
+    public String getSourceDirectory()
+    {
+        return sourceDirectory;
+    }
+
+    public void setSourceDirectory( String sourceDirectory )
+    {
+        this.sourceDirectory = sourceDirectory;
+    }
+
+    public String getTestSourceDirectory()
+    {
+        return testSourceDirectory;
+    }
+
+    public void setTestSourceDirectory( String testSourceDirectory )
+    {
+        this.testSourceDirectory = testSourceDirectory;
+    }
+
+    public String getIntegrationTestSourceDirectory()
+    {
+        return integrationTestSourceDirectory;
+    }
+
+    public void setIntegrationTestSourceDirectory( String integrationTestSourceDirectory )
+    {
+        this.integrationTestSourceDirectory = integrationTestSourceDirectory;
+    }
+
+    public Set getResourceDirectories()
+    {
+        return resourceDirectories;
+    }
+
+    public void addResourceDirectory( Resource resourceDirectory )
+    {
+        if ( resourceDirectories == null )
+        {
+            resourceDirectories = new LinkedHashSet();
+        }
+
+        resourceDirectories.add( resourceDirectory );
+    }
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/DefaultMappingModel.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/DefaultMappingModel.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/DefaultModulo.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/DefaultModulo.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/DefaultModulo.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/DefaultModulo.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,124 @@
+package org.apache.maven.modulo;
+
+import org.apache.maven.pomo.Pomo;
+import org.apache.maven.pomo.PomInfoSource;
+import org.apache.maven.pomo.SimplePomInfoSource;
+import org.apache.maven.pomo.ModelGenerationException;
+import org.apache.maven.pomo.ModelWritingException;
+import org.apache.maven.reducto.Reducto;
+import org.apache.maven.reducto.analysis.JarAnalysisException;
+import org.apache.maven.reducto.analysis.JarAnalysisResult;
+import org.apache.maven.reducto.source.DirectoryJarDataSource;
+import org.apache.maven.reducto.source.JarDataSourceRetrievalException;
+import org.apache.maven.model.Model;
+import org.codehaus.plexus.util.FileUtils;
+
+import java.io.File;
+import java.io.Writer;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.Set;
+import java.util.Map;
+import java.util.LinkedHashMap;
+
+/**
+ * @author Jason van Zyl
+ * @plexus.component
+ */
+public class DefaultModulo
+    implements Modulo
+{
+    /**
+     * @plexus.requirement
+     */
+    private Reducto reducto;
+
+    /**
+     * @plexus.requirement
+     */
+    private Pomo pomo;
+
+    public void convert( File sourceDirectory,
+                         MappingModelSource source,
+                         File outputDirectory )
+        throws ModuleConversionException, MappingModelRetrievalException, JarDataSourceRetrievalException,
+        JarAnalysisException, ModelGenerationException, ModelWritingException
+    {
+        if ( !sourceDirectory.exists() )
+        {
+            throw new ModuleConversionException(
+                "The specified source directory " + sourceDirectory + " does not exist." );
+        }
+
+        if ( !outputDirectory.exists() )
+        {
+            //todo: this should return a boolean/throw an exception and take a file.
+            FileUtils.mkdir( outputDirectory.getAbsolutePath() );
+        }
+
+        MappingModel m = source.getMappingModel();
+
+        // ----------------------------------------------------------------------------
+        // Walk through all the directories of JARs that the user may specify and try
+        // to analyze them all to determine if we have entries for them in the
+        // repository metadata.
+        // ----------------------------------------------------------------------------
+
+        Map jarAnalysisResults = new LinkedHashMap();
+
+        Map unresolvedJars = new LinkedHashMap();
+
+        for ( Iterator i = m.getJarDirectories().iterator(); i.hasNext(); )
+        {
+            Resource r = (Resource) i.next();
+
+            Map results = reducto.analyse( new DirectoryJarDataSource( new File( r.getDirectory() ) ) );
+
+            for ( Iterator j = results.values().iterator(); j.hasNext(); )
+            {
+                JarAnalysisResult result = (JarAnalysisResult) j.next();
+
+                if ( result.isResolved() )
+                {
+                    jarAnalysisResults.put( reducto.createKey( result ), result );
+                }
+                else
+                {
+                    unresolvedJars.put( reducto.createKey( result ), result );
+                }
+            }
+        }
+
+        //todo: do something with the unresolved JARs
+        //      create some events of create stubs in the POM so that when people manually figure
+        //      out what the deps are they can flesh them out
+
+        PomInfoSource pomInfo = new SimplePomInfoSource( "4.0.0", m.getGroupId(), m.getArtifactId(), m.getVersion() );
+
+        Model model = pomo.generateModel( pomInfo, jarAnalysisResults );
+
+        Writer writer;
+
+        try
+        {
+            writer = new FileWriter( new File( outputDirectory, "pom.xml" ) );
+
+            pomo.writeModel( writer, model );
+        }
+        catch ( IOException e )
+        {
+            throw new ModuleConversionException( "Error writing out POM.", e );
+        }
+
+        // ----------------------------------------------------------------------------
+        // Translation
+        // ----------------------------------------------------------------------------
+        
+        // sources
+        // resources
+        // allow maven compliance or to adapt to the existing structure
+    }
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/DefaultModulo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/DefaultModulo.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModel.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModel.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModel.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModel.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,33 @@
+package org.apache.maven.modulo;
+
+import java.util.Set;
+
+/**
+ * Information to map a non-Maven project into a Maven compliant project. This would includes:
+ *
+ * JARs that you want resolved to Maven artifacts
+ * sources you want translated to be Maven compliant
+ * resources you want translated to be Maven compliant
+ *
+ * @author Jason van Zyl
+ */
+public interface MappingModel
+{
+    String getGroupId();
+
+    String getArtifactId();
+
+    String getVersion();
+
+    String getPackaging();
+
+    Set getJarDirectories();
+
+    String getSourceDirectory();
+
+    String getTestSourceDirectory();
+
+    String getIntegrationTestSourceDirectory();
+
+    Set getResourceDirectories();
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModel.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModel.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelParser.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelParser.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelParser.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelParser.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,12 @@
+package org.apache.maven.modulo;
+
+import java.io.File;
+
+/**
+ * @author Jason van Zyl
+ */
+public interface MappingModelParser
+{
+    MappingModel parse( File mapping )
+        throws MappingModelParsingException;
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelParser.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelParser.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelParsingException.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelParsingException.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelParsingException.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelParsingException.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,24 @@
+package org.apache.maven.modulo;
+
+/**
+ * @author Jason van Zyl
+ */
+public class MappingModelParsingException
+    extends Exception
+{
+    public MappingModelParsingException( String id )
+    {
+        super( id );
+    }
+
+    public MappingModelParsingException( String id,
+                                         Throwable throwable )
+    {
+        super( id, throwable );
+    }
+
+    public MappingModelParsingException( Throwable throwable )
+    {
+        super( throwable );
+    }
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelParsingException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelParsingException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelRetrievalException.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelRetrievalException.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelRetrievalException.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelRetrievalException.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,24 @@
+package org.apache.maven.modulo;
+
+/**
+ * @author Jason van Zyl
+ */
+public class MappingModelRetrievalException
+    extends Exception
+{
+    public MappingModelRetrievalException( String id )
+    {
+        super( id );
+    }
+
+    public MappingModelRetrievalException( String id,
+                                           Throwable throwable )
+    {
+        super( id, throwable );
+    }
+
+    public MappingModelRetrievalException( Throwable throwable )
+    {
+        super( throwable );
+    }
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelRetrievalException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelRetrievalException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelSource.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelSource.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelSource.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelSource.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,12 @@
+package org.apache.maven.modulo;
+
+import java.io.File;
+
+/**
+ * @author Jason van Zyl
+ */
+public interface MappingModelSource
+{
+    MappingModel getMappingModel()
+        throws MappingModelRetrievalException;    
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelSource.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/MappingModelSource.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/ModuleConversionException.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/ModuleConversionException.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/ModuleConversionException.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/ModuleConversionException.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,24 @@
+package org.apache.maven.modulo;
+
+/**
+ * @author Jason van Zyl
+ */
+public class ModuleConversionException
+    extends Exception
+{
+    public ModuleConversionException( String id )
+    {
+        super( id );
+    }
+
+    public ModuleConversionException( String id,
+                                      Throwable throwable )
+    {
+        super( id, throwable );
+    }
+
+    public ModuleConversionException( Throwable throwable )
+    {
+        super( throwable );
+    }
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/ModuleConversionException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/ModuleConversionException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/Modulo.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/Modulo.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/Modulo.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/Modulo.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,30 @@
+package org.apache.maven.modulo;
+
+import org.apache.maven.reducto.source.JarDataSourceRetrievalException;
+import org.apache.maven.reducto.analysis.JarAnalysisException;
+import org.apache.maven.pomo.ModelGenerationException;
+import org.apache.maven.pomo.ModelWritingException;
+
+import java.io.File;
+
+//todo: leaving a multi module build in place and using different POMs at different levels (mauro)
+//tood: creating a local repository in the project itself vs making a local repository for all maven projects (mauro)
+//      possbily per project or global as an options
+//todo: an option in Maven itself to use a local library of JARs
+//todo: mapping a directory of JARs using system dependencies
+//todo: for plugins that are created by a migrating project, to create a stand-alone repository that can be installed
+//      so that everything will work locally
+
+/**
+ * @author Jason van Zyl
+ */
+public interface Modulo
+{
+    String ROLE = Modulo.class.getName();
+
+    void convert( File sourceDirectory,
+                  MappingModelSource source,
+                  File outputDirectory )
+        throws ModuleConversionException, MappingModelRetrievalException, JarDataSourceRetrievalException,
+        JarAnalysisException, ModelGenerationException, ModelWritingException;
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/Modulo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/Modulo.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/Resource.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/Resource.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/Resource.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/Resource.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,43 @@
+package org.apache.maven.modulo;
+
+/**
+ * @author Jason van Zyl
+ */
+public class Resource
+{
+    private String directory;
+
+    private String includes;
+
+    private String excludse;
+
+    public String getDirectory()
+    {
+        return directory;
+    }
+
+    public void setDirectory( String directory )
+    {
+        this.directory = directory;
+    }
+
+    public String getIncludes()
+    {
+        return includes;
+    }
+
+    public void setIncludes( String includes )
+    {
+        this.includes = includes;
+    }
+
+    public String getExcludse()
+    {
+        return excludse;
+    }
+
+    public void setExcludse( String excludse )
+    {
+        this.excludse = excludse;
+    }
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/Resource.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/Resource.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/SimpleMappingModelParser.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/SimpleMappingModelParser.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/SimpleMappingModelParser.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/SimpleMappingModelParser.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,110 @@
+package org.apache.maven.modulo;
+
+import org.codehaus.plexus.util.StringUtils;
+
+import java.io.File;
+import java.io.BufferedReader;
+import java.io.Reader;
+import java.io.FileReader;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+/**
+ * @author Jason van Zyl
+ */
+public class SimpleMappingModelParser
+    implements MappingModelParser
+{
+    public MappingModel parse( File mapping )
+        throws MappingModelParsingException
+    {
+        DefaultMappingModel model = new DefaultMappingModel();
+
+        try
+        {
+            String line;
+
+            BufferedReader br = new BufferedReader( new FileReader( mapping ) );
+
+            while ( ( line = br.readLine() ) != null )
+            {
+                if ( line.startsWith( "//" ) || line.startsWith( "#" ) || line.trim().length() == 0 )
+                {
+                    continue;
+                }
+
+                if ( line.startsWith( "groupId" ) )
+                {
+                    model.setGroupId( StringUtils.split( line, ":")[1].trim() );
+                }
+                else if ( line.startsWith( "artifactId" ))
+                {
+                    model.setArtifactId( StringUtils.split( line, ":")[1].trim() );
+                }
+                else if ( line.startsWith( "version" ))
+                {
+                    model.setVersion( StringUtils.split( line, ":")[1].trim() );
+                }
+                else if ( line.startsWith( "packaging" ))
+                {
+                    model.setPackaging( StringUtils.split( line, ":")[1].trim() );
+                }
+                else if ( line.startsWith( "jarDir" ))
+                {
+                    model.addJarDirectory( parseResource( line ) );
+                }
+                else if ( line.startsWith( "resourceDir" ))
+                {
+                    model.addResourceDirectory( parseResource( line ) );
+                }
+                else if ( line.startsWith( "srcDir" ))
+                {
+                    model.setSourceDirectory( StringUtils.split( line, ":")[1].trim() );
+                }
+                else if ( line.startsWith( "testSrcDir" ))
+                {
+                    model.setTestSourceDirectory( StringUtils.split( line, ":")[1].trim() );
+                }
+            }
+        }
+        catch ( FileNotFoundException e )
+        {
+            throw new MappingModelParsingException( "Cannot find " + mapping + "." );
+
+        }
+        catch ( IOException e )
+        {
+            throw new MappingModelParsingException( "Error reading the mapping " + mapping + "." );
+        }
+
+        return model;
+    }
+
+    private Resource parseResource( String line )
+    {
+        String[] s = StringUtils.split( StringUtils.split( line, ":")[1], "," );
+
+        Resource r = new Resource();
+
+        if ( s.length == 1 )
+        {
+            r.setDirectory( s[0].trim() );
+        }
+        else if ( s.length == 2 )
+        {
+            r.setDirectory( s[0].trim() );
+
+            r.setIncludes( s[1].trim() );
+        }
+        else if ( s.length == 3 )
+        {
+            r.setDirectory( s[0].trim() );
+
+            r.setIncludes( s[1].trim() );
+
+            r.setExcludse( s[2].trim() );
+        }
+
+        return r;
+    }
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/SimpleMappingModelParser.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/SimpleMappingModelParser.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/SimpleMappingModelSource.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/SimpleMappingModelSource.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/SimpleMappingModelSource.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/SimpleMappingModelSource.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,32 @@
+package org.apache.maven.modulo;
+
+import java.io.File;
+
+/**
+ * @author Jason van Zyl
+ */
+public class SimpleMappingModelSource
+    implements MappingModelSource
+{
+    private File mappingFile;
+
+    public SimpleMappingModelSource( File mappingFile )
+    {
+        this.mappingFile = mappingFile;
+    }
+
+    public MappingModel getMappingModel()
+        throws MappingModelRetrievalException
+    {
+        MappingModelParser p = new SimpleMappingModelParser();
+
+        try
+        {
+            return p.parse( mappingFile );
+        }
+        catch ( MappingModelParsingException e )
+        {
+            throw new MappingModelRetrievalException( "Error parsing mapping file " + mappingFile + "." );
+        }
+    }
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/SimpleMappingModelSource.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/modulo/SimpleMappingModelSource.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/DefaultPomo.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/DefaultPomo.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/DefaultPomo.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/DefaultPomo.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,67 @@
+package org.apache.maven.pomo;
+
+import org.apache.maven.model.Model;
+import org.apache.maven.model.Dependency;
+import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
+import org.apache.maven.reducto.analysis.JarAnalysisResult;
+
+import java.util.Map;
+import java.util.Iterator;
+import java.io.Writer;
+import java.io.IOException;
+
+/**
+ * @author Jason van Zyl
+ * @plexus.component
+ */
+public class DefaultPomo
+    implements Pomo
+{
+    public Model generateModel( PomInfoSource source,
+                                Map jarAnalysisResults )
+        throws ModelGenerationException
+    {
+        Model model = new Model();
+
+        model.setModelVersion( source.getModelVersion() );
+
+        model.setGroupId( source.getGroupId() );
+
+        model.setArtifactId( source.getArtifactId() );
+
+        model.setVersion( source.getVersion() );
+
+        for ( Iterator i = jarAnalysisResults.values().iterator(); i.hasNext(); )
+        {
+            JarAnalysisResult r = (JarAnalysisResult) i.next();
+
+            Dependency d = new Dependency();
+
+            d.setGroupId( r.getGroupId() );
+
+            d.setArtifactId( r.getArtifactId() );
+
+            d.setVersion( r.getVersion() );
+
+            model.addDependency( d );
+        }
+
+        return model;
+    }
+
+    public void writeModel( Writer writer,
+                            Model model )
+        throws ModelWritingException
+    {
+        MavenXpp3Writer w = new MavenXpp3Writer();
+
+        try
+        {
+            w.write( writer, model );
+        }
+        catch ( IOException e )
+        {
+            throw new ModelWritingException( "Error writing model.", e );
+        }
+    }
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/DefaultPomo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/DefaultPomo.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/ModelGenerationException.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/ModelGenerationException.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/ModelGenerationException.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/ModelGenerationException.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,24 @@
+package org.apache.maven.pomo;
+
+/**
+ * @author Jason van Zyl
+ */
+public class ModelGenerationException
+    extends Exception
+{
+    public ModelGenerationException( String id )
+    {
+        super( id );
+    }
+
+    public ModelGenerationException( String id,
+                                     Throwable throwable )
+    {
+        super( id, throwable );
+    }
+
+    public ModelGenerationException( Throwable throwable )
+    {
+        super( throwable );
+    }
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/ModelGenerationException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/ModelGenerationException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/ModelWritingException.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/ModelWritingException.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/ModelWritingException.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/ModelWritingException.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,24 @@
+package org.apache.maven.pomo;
+
+/**
+ * @author Jason van Zyl
+ */
+public class ModelWritingException
+    extends Exception
+{
+    public ModelWritingException( String id )
+    {
+        super( id );
+    }
+
+    public ModelWritingException( String id,
+                                  Throwable throwable )
+    {
+        super( id, throwable );
+    }
+
+    public ModelWritingException( Throwable throwable )
+    {
+        super( throwable );
+    }
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/ModelWritingException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/ModelWritingException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/PomInfoSource.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/PomInfoSource.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/PomInfoSource.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/PomInfoSource.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,15 @@
+package org.apache.maven.pomo;
+
+/**
+ * @author Jason van Zyl
+ */
+public interface PomInfoSource
+{
+    String getModelVersion();
+
+    String getGroupId();
+
+    String getArtifactId();
+
+    String getVersion();
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/PomInfoSource.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/PomInfoSource.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/Pomo.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/Pomo.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/Pomo.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/Pomo.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,24 @@
+package org.apache.maven.pomo;
+
+import org.apache.maven.model.Model;
+
+import java.util.Map;
+import java.io.Writer;
+
+/**
+ * @author Jason van Zyl
+ */
+public interface Pomo
+{
+    String ROLE = Pomo.class.getName();
+
+    Model generateModel( PomInfoSource source,
+                         Map jarAnalysisResults )
+        throws ModelGenerationException;
+
+
+    void writeModel( Writer writer,
+                     Model model )
+        throws ModelWritingException;
+
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/Pomo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/Pomo.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/SimplePomInfoSource.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/SimplePomInfoSource.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/SimplePomInfoSource.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/SimplePomInfoSource.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,47 @@
+package org.apache.maven.pomo;
+
+/**
+ * @author Jason van Zyl
+ */
+public class SimplePomInfoSource
+    implements PomInfoSource
+{
+    private String modelVersion;
+
+    private String groupId;
+
+    private String artifactId;
+
+    private String version;
+
+    public SimplePomInfoSource( String modelVersion,
+                                String groupId,
+                                String artifactId,
+                                String version )
+    {
+        this.modelVersion = modelVersion;
+        this.groupId = groupId;
+        this.artifactId = artifactId;
+        this.version = version;
+    }
+
+    public String getModelVersion()
+    {
+        return modelVersion;
+    }
+
+    public String getGroupId()
+    {
+        return groupId;
+    }
+
+    public String getArtifactId()
+    {
+        return artifactId;
+    }
+
+    public String getVersion()
+    {
+        return version;
+    }
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/SimplePomInfoSource.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/pomo/SimplePomInfoSource.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/DefaultReducto.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/DefaultReducto.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/DefaultReducto.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/DefaultReducto.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,75 @@
+package org.apache.maven.reducto;
+
+import org.apache.maven.reducto.analysis.DefaultJarAnalysisContext;
+import org.apache.maven.reducto.analysis.DefaultJarAnalysisResult;
+import org.apache.maven.reducto.analysis.JarAnalysisContext;
+import org.apache.maven.reducto.analysis.JarAnalysisException;
+import org.apache.maven.reducto.analysis.JarAnalyzer;
+import org.apache.maven.reducto.analysis.JarAnalysisResult;
+import org.apache.maven.reducto.source.JarDataSource;
+import org.apache.maven.reducto.source.JarDataSourceRetrievalException;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+
+import java.io.File;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.LinkedHashMap;
+
+/**
+ * @author Jason van Zyl
+ * @plexus.component
+ */
+public class DefaultReducto
+    extends AbstractLogEnabled
+    implements Reducto
+{
+    /**
+     * @plexus.requirement role="org.apache.maven.reducto.analysis.JarAnalyzer"
+     */
+    private Map jarAnalyzers;
+
+    public Map analyse( JarDataSource dataSource )
+        throws JarDataSourceRetrievalException, JarAnalysisException
+    {
+        Map jarAnalysisResults = new LinkedHashMap();
+
+        for ( Iterator i = dataSource.retrieveJars().iterator(); i.hasNext(); )
+        {
+            File jar = (File) i.next();
+
+            //todo: reducto found event
+
+            // For each JAR file that we encounter we want to create an analysis context, place the JAR file
+            // and a blank JAR analysis result into the context and then pass that through a chain of
+            // JAR analysers.
+
+            JarAnalysisContext context = new DefaultJarAnalysisContext( jar, new DefaultJarAnalysisResult( jar ) );
+
+            for ( Iterator j = jarAnalyzers.values().iterator(); j.hasNext(); )
+            {
+                JarAnalyzer analyzer = (JarAnalyzer) j.next();
+
+                analyzer.analyze( context );
+
+                if ( context.getJarAnalysisResult().isResolved() )
+                {
+                    break;
+                }
+            }
+
+            jarAnalysisResults.put( createKey( context.getJarAnalysisResult() ), context.getJarAnalysisResult() );
+        }
+
+        return jarAnalysisResults;
+    }
+
+    public String createKey( JarAnalysisResult result )
+    {
+        return result.getGroupId() + result.getArtifactId() + result.getVersion();
+    }
+
+    public String createKey( String groupId, String artifactId, String version )
+    {
+        return groupId + artifactId + version;
+    }
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/DefaultReducto.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/DefaultReducto.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/Reducto.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/Reducto.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/Reducto.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/Reducto.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,43 @@
+package org.apache.maven.reducto;
+
+import org.apache.maven.reducto.analysis.JarAnalysisException;
+import org.apache.maven.reducto.analysis.JarAnalysisResult;
+import org.apache.maven.reducto.source.JarDataSource;
+import org.apache.maven.reducto.source.JarDataSourceRetrievalException;
+
+import java.util.Map;
+
+/**
+ * Take a {@link JarDataSource} and return a set {@link org.apache.maven.reducto.analysis.JarAnalysisResult}
+ * objects. The information contained in each {@link org.apache.maven.reducto.analysis.JarAnalysisResult} object
+ * should be enough to give a property identity to a @{link MavenArtifact}.
+ *
+ * @author Jason van Zyl
+ */
+public interface Reducto
+{
+    String ROLE = Reducto.class.getName();
+
+    Map analyse( JarDataSource dataSource )
+        throws JarDataSourceRetrievalException, JarAnalysisException;
+
+    String createKey( JarAnalysisResult result );
+
+    String createKey( String groupId, String artifactId, String version );
+
+    //todo: How to pick what analysis you want to perform: i think want to step through all the available analysers with precedence
+    //      where we might want to have various analysers having more precedence where an archiva lookup can happen
+    //todo: How to pick which exposers you want to use: exposers are analysers
+    //todo: encapsulate the gleaning of information from a JAR with creating the dep info: everything will become an analyser
+    //todo: what real use are the exposers other then looking up the hash?: the ordering of analysers
+    //todo: we need discovery events to that a UI can hook up to it
+
+    // order
+    // hash search
+    // class search: may map to one or more classes, archiva may know if there are unique classes for versions of log4j for example
+    // manifest
+    // filename
+    // textfile
+    // timestamp
+    // main output
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/Reducto.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/Reducto.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/AbstractJarAnalyser.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/AbstractJarAnalyser.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/AbstractJarAnalyser.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/AbstractJarAnalyser.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,25 @@
+package org.apache.maven.reducto.analysis;
+
+/*
+ * Copyright 2001-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.
+ */
+
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+
+public abstract class AbstractJarAnalyser
+    extends AbstractLogEnabled
+    implements JarAnalyzer
+{
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/AbstractJarAnalyser.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/AbstractJarAnalyser.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/DefaultJarAnalysisContext.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/DefaultJarAnalysisContext.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/DefaultJarAnalysisContext.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/DefaultJarAnalysisContext.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,31 @@
+package org.apache.maven.reducto.analysis;
+
+import java.io.File;
+
+/**
+ * @author Jason van Zyl
+ */
+public class DefaultJarAnalysisContext
+    implements JarAnalysisContext
+{
+    private File jar;
+
+    private JarAnalysisResult jarAnalysisResult;
+
+    public DefaultJarAnalysisContext( File jar,
+                                      JarAnalysisResult result )
+    {
+        this.jar = jar;
+        this.jarAnalysisResult = result;
+    }
+
+    public File getJar()
+    {
+        return jar;
+    }
+
+    public JarAnalysisResult getJarAnalysisResult()
+    {
+        return jarAnalysisResult;
+    }
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/DefaultJarAnalysisContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/DefaultJarAnalysisContext.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/DefaultJarAnalysisResult.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/DefaultJarAnalysisResult.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/DefaultJarAnalysisResult.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/DefaultJarAnalysisResult.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,102 @@
+package org.apache.maven.reducto.analysis;
+
+/*
+ * Copyright 2001-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.
+ */
+
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+
+import java.io.File;
+
+/**
+ * The default JAR analysis result.
+ */
+public class DefaultJarAnalysisResult
+    extends AbstractLogEnabled
+    implements JarAnalysisResult
+{
+    public static final String ROLE = DefaultJarAnalysisResult.class.getName();
+
+    private File jar;
+
+    private boolean isSealed;
+
+    private String groupId;
+
+    private String artifactId;
+
+    private String version;
+
+    private String md5Checksum;
+
+    private String vendor;
+
+    public DefaultJarAnalysisResult( File jar )
+    {
+        this.jar = jar;
+    }
+
+    public File getJar()
+    {
+        return jar;
+    }
+
+    // Accessors
+
+    public String getGroupId()
+    {
+        return groupId;
+    }
+
+    public void setGroupId( String groupId )
+    {
+        this.groupId = groupId;
+    }
+
+    public String getArtifactId()
+    {
+        return artifactId;
+    }
+
+    public void setArtifactId( String artifactId )
+    {
+        this.artifactId = artifactId;
+    }
+
+    public String getVersion()
+    {
+        return version;
+    }
+
+    public void setVersion( String version )
+    {
+        this.version = version;
+    }
+
+    public String getMd5Checksum()
+    {
+        return md5Checksum;
+    }
+
+    public void setMd5Checksum( String md5Checksum )
+    {
+        this.md5Checksum = md5Checksum;
+    }
+
+    public boolean isResolved()
+    {
+        return ( groupId != null ) && ( artifactId != null ) && ( version != null );
+    }
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/DefaultJarAnalysisResult.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/DefaultJarAnalysisResult.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalysisContext.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalysisContext.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalysisContext.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalysisContext.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,13 @@
+package org.apache.maven.reducto.analysis;
+
+import java.io.File;
+
+/**
+ * @author Jason van Zyl
+ */
+public interface JarAnalysisContext
+{
+    public File getJar();
+
+    public JarAnalysisResult getJarAnalysisResult();
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalysisContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalysisContext.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalysisException.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalysisException.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalysisException.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalysisException.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,24 @@
+package org.apache.maven.reducto.analysis;
+
+/**
+ * @author Jason van Zyl
+ */
+public class JarAnalysisException
+    extends Exception
+{
+    public JarAnalysisException( String id )
+    {
+        super( id );
+    }
+
+    public JarAnalysisException( String id,
+                                 Throwable throwable )
+    {
+        super( id, throwable );
+    }
+
+    public JarAnalysisException( Throwable throwable )
+    {
+        super( throwable );
+    }
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalysisException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalysisException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalysisResult.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalysisResult.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalysisResult.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalysisResult.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,29 @@
+package org.apache.maven.reducto.analysis;
+
+import java.io.File;
+
+/**
+ * @author Jason van Zyl
+ */
+public interface JarAnalysisResult
+{
+    String getGroupId();
+
+    void setGroupId( String groupId );
+
+    String getArtifactId();
+
+    void setArtifactId( String artifactId );
+
+    String getVersion();
+
+    void setVersion( String version );
+
+    String getMd5Checksum();
+
+    void setMd5Checksum( String md5Checksum );
+
+    boolean isResolved();
+
+    File getJar();
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalysisResult.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalysisResult.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalyzer.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalyzer.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalyzer.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalyzer.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,28 @@
+package org.apache.maven.reducto.analysis;
+
+/*
+ * Copyright 2001-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.
+ */
+
+/**
+ * Analyzer Interface.
+ */
+public interface JarAnalyzer
+{
+    static final String ROLE = JarAnalyzer.class.getName();
+
+    JarAnalysisResult analyze( JarAnalysisContext context )
+        throws JarAnalysisException;
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalyzer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarAnalyzer.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarEntryComparator.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarEntryComparator.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarEntryComparator.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarEntryComparator.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,29 @@
+/**
+ * 
+ */
+package org.apache.maven.reducto.analysis;
+
+import java.util.Comparator;
+import java.util.jar.JarEntry;
+
+class JarEntryComparator
+    implements Comparator
+{
+
+    public int compare( Object o1, Object o2 )
+    {
+        if ( !( o1 instanceof JarEntry ) )
+        {
+            return 0;
+        }
+        if ( !( o2 instanceof JarEntry ) )
+        {
+            return 0;
+        }
+        JarEntry j1 = (JarEntry) o1;
+        JarEntry j2 = (JarEntry) o2;
+
+        return j1.getName().compareTo( j2.getName() );
+    }
+
+}
\ No newline at end of file

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarEntryComparator.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarEntryComparator.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarException.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarException.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarException.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarException.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,44 @@
+package org.apache.maven.reducto.analysis;
+
+/*
+ * Copyright 2001-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.
+ */
+
+/**
+ * Exceptions that occur during DefaultJarAnalysisResult utility methods.
+ */
+public class JarException
+    extends Exception
+{
+    public JarException()
+    {
+        super();
+    }
+
+    public JarException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
+
+    public JarException( String message )
+    {
+        super( message );
+    }
+
+    public JarException( Throwable cause )
+    {
+        super( cause );
+    }
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/JarException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/AbstractArchivaClient.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/AbstractArchivaClient.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/AbstractArchivaClient.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/AbstractArchivaClient.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,12 @@
+package org.apache.maven.reducto.analysis.archiva;
+
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+
+/**
+ * @author Jason van Zyl
+ */
+public abstract class AbstractArchivaClient
+    extends AbstractLogEnabled
+    implements ArchivaClient
+{
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/AbstractArchivaClient.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/AbstractArchivaClient.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/ArchivaAnalyser.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/ArchivaAnalyser.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/ArchivaAnalyser.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/ArchivaAnalyser.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,92 @@
+package org.apache.maven.reducto.analysis.archiva;
+
+/*
+ * Copyright 2001-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.
+ */
+
+import org.apache.maven.archiva.digest.Digester;
+import org.apache.maven.archiva.digest.DigesterException;
+import org.apache.maven.archiva.indexer.RepositoryIndexSearchException;
+import org.apache.maven.archiva.indexer.record.StandardArtifactIndexRecord;
+import org.apache.maven.reducto.analysis.AbstractJarAnalyser;
+import org.apache.maven.reducto.analysis.JarAnalysisContext;
+import org.apache.maven.reducto.analysis.JarAnalysisException;
+import org.apache.maven.reducto.analysis.JarAnalysisResult;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ * A {@link org.apache.maven.reducto.analysis.JarAnalyzer} which utilizes Archiva to lookup artifacts by
+ * using the checksum calculated for a given JAR file.
+ *
+ * @plexus.component role="org.apache.maven.reducto.analysis.JarAnalyzer" role-hint="archiva"
+ */
+public class ArchivaAnalyser
+    extends AbstractJarAnalyser
+{
+    /**
+     * @plexus.requirement role="org.apache.maven.archiva.digest.Digester" role-hint="md5"
+     */
+    private Digester md5Digester;
+
+    /**
+     * @plexus.requirement role="org.apache.maven.reducto.analysis.archiva.ArchivaClient" role-hint="local"
+     */
+    private ArchivaClient archivaClient;
+
+    public JarAnalysisResult analyze( JarAnalysisContext context )
+        throws JarAnalysisException
+    {
+        File jar = context.getJar();
+
+        JarAnalysisResult result = context.getJarAnalysisResult();
+
+        String md5Checksum;
+
+        try
+        {
+            md5Checksum = md5Digester.calc( jar );
+
+            result.setMd5Checksum( md5Checksum.toLowerCase() );
+        }
+        catch ( DigesterException e )
+        {
+            throw new JarAnalysisException( "Error calculating checksum for " + jar, e );
+        }
+
+        try
+        {
+            List records = archivaClient.searchFileHash( md5Checksum );
+
+            if ( !records.isEmpty() )
+            {
+                StandardArtifactIndexRecord record = (StandardArtifactIndexRecord) records.get( 0 );
+
+                result.setGroupId( record.getGroupId() );
+
+                result.setArtifactId( record.getArtifactId() );
+
+                result.setVersion( record.getVersion() );
+            }
+        }
+        catch ( RepositoryIndexSearchException e )
+        {
+            throw new JarAnalysisException( "Error searching for artifact with checksum " + md5Checksum + ".", e );
+        }
+
+        return result;
+    }
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/ArchivaAnalyser.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/ArchivaAnalyser.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/ArchivaClient.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/ArchivaClient.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/ArchivaClient.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/ArchivaClient.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,29 @@
+package org.apache.maven.reducto.analysis.archiva;
+
+/*
+ * Copyright 2001-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.
+ */
+
+import org.apache.maven.archiva.indexer.RepositoryIndexSearchException;
+
+import java.util.List;
+
+public interface ArchivaClient
+{
+    public static final String ROLE = ArchivaClient.class.getName();
+
+    public List searchFileHash( String hash )
+        throws RepositoryIndexSearchException;
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/ArchivaClient.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/ArchivaClient.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/LocalArchivaClient.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/LocalArchivaClient.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/LocalArchivaClient.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/LocalArchivaClient.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,62 @@
+package org.apache.maven.reducto.analysis.archiva;
+
+import org.apache.lucene.index.Term;
+import org.apache.lucene.search.TermQuery;
+import org.apache.maven.archiva.indexer.RepositoryArtifactIndex;
+import org.apache.maven.archiva.indexer.RepositoryArtifactIndexFactory;
+import org.apache.maven.archiva.indexer.RepositoryIndexSearchException;
+import org.apache.maven.archiva.indexer.lucene.LuceneQuery;
+import org.apache.maven.archiva.indexer.record.StandardIndexRecordFields;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ * This will just use a local Lucene index created by Archiva which contains the md5 checksums of
+ * all the artifacts in the repository.
+ *
+ * @author Jason van Zyl
+ * @plexus.component role="org.apache.maven.reducto.analysis.archiva.ArchivaClient" role-hint="local"
+ */
+public class LocalArchivaClient
+    extends AbstractArchivaClient
+    implements Initializable
+{
+    /**
+     * @plexus.requirement
+     */
+    private RepositoryArtifactIndexFactory factory;
+
+    /**
+     * @plexus.configuration
+     */
+    private String indexPath = "index";
+
+    private RepositoryArtifactIndex index;
+
+    public List searchFileHash( String md5 )
+        throws RepositoryIndexSearchException
+    {
+        return index.search(
+            new LuceneQuery( new TermQuery( new Term( StandardIndexRecordFields.MD5, md5.toLowerCase() ) ) ) );
+    }
+
+    // ----------------------------------------------------------------------------
+    // Lifecycle
+    // ----------------------------------------------------------------------------
+
+    public void initialize()
+        throws InitializationException
+    {
+        File f = new File( indexPath );
+
+        if ( !f.exists() )
+        {
+            throw new InitializationException( "Cannot find index on the specified path: " + indexPath );
+        }
+
+        index = factory.createStandardIndex( f );
+    }
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/LocalArchivaClient.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/analysis/archiva/LocalArchivaClient.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/source/DirectoryJarDataSource.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/source/DirectoryJarDataSource.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/source/DirectoryJarDataSource.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/source/DirectoryJarDataSource.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,35 @@
+package org.apache.maven.reducto.source;
+
+import org.codehaus.plexus.util.FileUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author Jason van Zyl
+ */
+public class DirectoryJarDataSource
+    implements JarDataSource
+{
+    private File directory;
+
+    public DirectoryJarDataSource( File directory )
+    {
+        this.directory = directory;
+    }
+
+    public Set retrieveJars()
+        throws JarDataSourceRetrievalException
+    {
+        try
+        {
+            return new HashSet( FileUtils.getFiles( directory, "*.jar", null ) );
+        }
+        catch ( IOException e )
+        {
+            throw new JarDataSourceRetrievalException( "Error retrieving JARS from " + directory + "." );
+        }
+    }
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/source/DirectoryJarDataSource.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/source/DirectoryJarDataSource.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/source/JarDataSource.java
URL: http://svn.apache.org/viewvc/maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/source/JarDataSource.java?view=auto&rev=448161
==============================================================================
--- maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/source/JarDataSource.java (added)
+++ maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/source/JarDataSource.java Wed Sep 20 04:10:17 2006
@@ -0,0 +1,15 @@
+package org.apache.maven.reducto.source;
+
+import java.util.Set;
+
+/**
+ * An abstract source of JARs. We could look in a directory, fetch a set from a network connection,
+ * pull them out of some dependency source like a POM, or anywhere else.
+ *
+ * @author Jason van Zyl
+ */
+public interface JarDataSource
+{
+    Set retrieveJars()
+        throws JarDataSourceRetrievalException;
+}

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/source/JarDataSource.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/maven-metamorphosis/src/main/java/org/apache/maven/reducto/source/JarDataSource.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"