Author: jvanzyl
Date: Thu Oct 18 20:15:29 2007
New Revision: 586244

URL: http://svn.apache.org/viewvc?rev=586244&view=rev
Log:
o adding a sink for the catalog so that I can read from any source and create a 
local catalog that can be used a lot faster then then trying to hit the wiki. 
We could also couple this with a method to pull down all the archetypes and 
their deps as well so someone could work completely off line.

Added:
    
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/ArchetypeDataSink.java
   (with props)
    
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/ArchetypeDataSinkException.java
   (with props)
    
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/CatalogArchetypeDataSink.java
   (with props)
    
maven/sandbox/trunk/archetypeng/archetypeng-common/src/test/java/org/apache/maven/archetype/source/
    
maven/sandbox/trunk/archetypeng/archetypeng-common/src/test/java/org/apache/maven/archetype/source/CatalogArchetypeDataSinkTest.java
   (with props)
Modified:
    maven/sandbox/trunk/archetypeng/archetypeng-common/pom.xml

Modified: maven/sandbox/trunk/archetypeng/archetypeng-common/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/pom.xml?rev=586244&r1=586243&r2=586244&view=diff
==============================================================================
--- maven/sandbox/trunk/archetypeng/archetypeng-common/pom.xml (original)
+++ maven/sandbox/trunk/archetypeng/archetypeng-common/pom.xml Thu Oct 18 
20:15:29 2007
@@ -111,6 +111,10 @@
       <artifactId>commons-collections</artifactId>
     </dependency>
     <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.maven.shared</groupId>
       <artifactId>maven-invoker</artifactId>
       <version>2.0.6</version>

Added: 
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/ArchetypeDataSink.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/ArchetypeDataSink.java?rev=586244&view=auto
==============================================================================
--- 
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/ArchetypeDataSink.java
 (added)
+++ 
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/ArchetypeDataSink.java
 Thu Oct 18 20:15:29 2007
@@ -0,0 +1,11 @@
+package org.apache.maven.archetype.source;
+
+import java.io.Writer;
+import java.util.List;
+
+/** @author Jason van Zyl */
+public interface ArchetypeDataSink
+{
+    void putArchetypes( List archetypes, Writer writer )
+        throws ArchetypeDataSinkException;
+}

Propchange: 
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/ArchetypeDataSink.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/ArchetypeDataSink.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: 
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/ArchetypeDataSinkException.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/ArchetypeDataSinkException.java?rev=586244&view=auto
==============================================================================
--- 
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/ArchetypeDataSinkException.java
 (added)
+++ 
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/ArchetypeDataSinkException.java
 Thu Oct 18 20:15:29 2007
@@ -0,0 +1,22 @@
+package org.apache.maven.archetype.source;
+
+/** @author Jason van Zyl */
+public class ArchetypeDataSinkException
+    extends Exception
+{
+    public ArchetypeDataSinkException( String s )
+    {
+        super( s );
+    }
+
+    public ArchetypeDataSinkException( String s,
+                                       Throwable throwable )
+    {
+        super( s, throwable );
+    }
+
+    public ArchetypeDataSinkException( Throwable throwable )
+    {
+        super( throwable );
+    }
+}

Propchange: 
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/ArchetypeDataSinkException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/ArchetypeDataSinkException.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: 
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/CatalogArchetypeDataSink.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/CatalogArchetypeDataSink.java?rev=586244&view=auto
==============================================================================
--- 
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/CatalogArchetypeDataSink.java
 (added)
+++ 
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/CatalogArchetypeDataSink.java
 Thu Oct 18 20:15:29 2007
@@ -0,0 +1,47 @@
+package org.apache.maven.archetype.source;
+
+import org.apache.maven.archetype.catalog.Archetype;
+import org.apache.maven.archetype.catalog.ArchetypeCatalog;
+import org.apache.maven.archetype.catalog.io.xpp3.ArchetypeCatalogXpp3Writer;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.util.IOUtil;
+
+import java.io.IOException;
+import java.io.Writer;
+import java.util.Iterator;
+import java.util.List;
+
+/** @author Jason van Zyl */
+public class CatalogArchetypeDataSink
+    extends AbstractLogEnabled
+    implements ArchetypeDataSink
+{
+    private ArchetypeCatalogXpp3Writer catalogWriter = new 
ArchetypeCatalogXpp3Writer();
+
+    public void putArchetypes( List archetypes,
+                               Writer writer )
+        throws ArchetypeDataSinkException
+    {
+        ArchetypeCatalog catalog = new ArchetypeCatalog();
+
+        for ( Iterator i = archetypes.iterator(); i.hasNext(); )
+        {
+            Archetype archetype = (Archetype) i.next();
+
+            catalog.addArchetype( archetype );
+        }
+
+        try
+        {
+            catalogWriter.write( writer, catalog );
+        }
+        catch ( IOException e )
+        {
+            throw new ArchetypeDataSinkException( "Error writing archetype 
catalog.", e );
+        }
+        finally
+        {
+            IOUtil.close( writer );
+        }
+    }
+}

Propchange: 
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/CatalogArchetypeDataSink.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/sandbox/trunk/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/source/CatalogArchetypeDataSink.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: 
maven/sandbox/trunk/archetypeng/archetypeng-common/src/test/java/org/apache/maven/archetype/source/CatalogArchetypeDataSinkTest.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/archetypeng/archetypeng-common/src/test/java/org/apache/maven/archetype/source/CatalogArchetypeDataSinkTest.java?rev=586244&view=auto
==============================================================================
--- 
maven/sandbox/trunk/archetypeng/archetypeng-common/src/test/java/org/apache/maven/archetype/source/CatalogArchetypeDataSinkTest.java
 (added)
+++ 
maven/sandbox/trunk/archetypeng/archetypeng-common/src/test/java/org/apache/maven/archetype/source/CatalogArchetypeDataSinkTest.java
 Thu Oct 18 20:15:29 2007
@@ -0,0 +1,61 @@
+package org.apache.maven.archetype.source;
+
+import org.apache.maven.archetype.catalog.Archetype;
+import org.apache.maven.archetype.catalog.ArchetypeCatalog;
+import org.apache.maven.archetype.catalog.io.xpp3.ArchetypeCatalogXpp3Reader;
+import org.codehaus.plexus.PlexusTestCase;
+
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.List;
+
+/** @author Jason van Zyl */
+public class CatalogArchetypeDataSinkTest
+    extends PlexusTestCase
+{
+    public void testCatalogArchetypeDataSink()
+        throws Exception
+    {
+        Archetype a0 = new Archetype();
+
+        a0.setGroupId( "groupId" );
+
+        a0.setArtifactId( "artifactId" );
+
+        a0.setVersion( "1.0" );
+
+        a0.setDescription( "description" );
+
+        a0.setRepository( "http://magicbunny.com/maven2"; );
+
+        List archetypes = new ArrayList();
+
+        archetypes.add( a0 );
+
+        ArchetypeDataSink sink = new CatalogArchetypeDataSink();
+
+        Writer writer = new StringWriter();
+
+        sink.putArchetypes( archetypes, writer );
+
+        StringReader reader = new StringReader( writer.toString() );
+
+        ArchetypeCatalogXpp3Reader catalogReader = new 
ArchetypeCatalogXpp3Reader();
+
+        ArchetypeCatalog catalog = catalogReader.read( reader );
+
+        Archetype a1 = (Archetype) catalog.getArchetypes().get( 0 );
+
+        assertEquals( "groupId", a1.getGroupId()  );
+
+        assertEquals( "artifactId", a1.getArtifactId() );
+
+        assertEquals( "1.0", a1.getVersion()  );
+
+        assertEquals( "description", a1.getDescription()  );
+
+        assertEquals( "http://magicbunny.com/maven2";, a1.getRepository()  );
+    }
+}

Propchange: 
maven/sandbox/trunk/archetypeng/archetypeng-common/src/test/java/org/apache/maven/archetype/source/CatalogArchetypeDataSinkTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/sandbox/trunk/archetypeng/archetypeng-common/src/test/java/org/apache/maven/archetype/source/CatalogArchetypeDataSinkTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision


Reply via email to