Author: brett
Date: Wed Jul 26 20:42:47 2006
New Revision: 425943

URL: http://svn.apache.org/viewvc?rev=425943&view=rev
Log:
[MNG-127] add support for archetypes

Added:
    
maven/repository-manager/trunk/maven-repository-indexer/src/test/managed-repository/org/apache/maven/repository/record/test-archetype/
    
maven/repository-manager/trunk/maven-repository-indexer/src/test/managed-repository/org/apache/maven/repository/record/test-archetype/1.0/
    
maven/repository-manager/trunk/maven-repository-indexer/src/test/managed-repository/org/apache/maven/repository/record/test-archetype/1.0/test-archetype-1.0.jar
   (with props)
    
maven/repository-manager/trunk/maven-repository-indexer/src/test/managed-repository/org/apache/maven/repository/record/test-archetype/1.0/test-archetype-1.0.pom
   (with props)
Modified:
    
maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/record/StandardArtifactIndexRecordFactory.java
    
maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/record/StandardArtifactIndexRecordFactoryTest.java

Modified: 
maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/record/StandardArtifactIndexRecordFactory.java
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/record/StandardArtifactIndexRecordFactory.java?rev=425943&r1=425942&r2=425943&view=diff
==============================================================================
--- 
maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/record/StandardArtifactIndexRecordFactory.java
 (original)
+++ 
maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/record/StandardArtifactIndexRecordFactory.java
 Wed Jul 26 20:42:47 2006
@@ -18,8 +18,6 @@
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.repository.metadata.Metadata;
-import 
org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.repository.digest.Digester;
@@ -68,6 +66,8 @@
 
     private static final String PLUGIN_METADATA_NAME = 
"META-INF/maven/plugin.xml";
 
+    private static final String ARCHETYPE_METADATA_NAME = 
"META-INF/maven/archetype.xml";
+
     public RepositoryIndexRecord createRecord( Artifact artifact )
         throws RepositoryIndexException
     {
@@ -177,35 +177,6 @@
         }
     }
 
-    private Metadata readMetadata( File file )
-        throws RepositoryIndexException
-    {
-        MetadataXpp3Reader r = new MetadataXpp3Reader();
-
-        FileReader reader = null;
-        try
-        {
-            reader = new FileReader( file );
-            return r.read( reader );
-        }
-        catch ( FileNotFoundException e )
-        {
-            throw new RepositoryIndexException( "Unable to find requested 
metadata: " + e.getMessage(), e );
-        }
-        catch ( IOException e )
-        {
-            throw new RepositoryIndexException( "Unable to read metadata: " + 
e.getMessage(), e );
-        }
-        catch ( XmlPullParserException xe )
-        {
-            throw new RepositoryIndexException( "Unable to parse metadata: " + 
xe.getMessage(), xe );
-        }
-        finally
-        {
-            IOUtil.close( reader );
-        }
-    }
-
     private void populateArchiveEntries( List files, 
StandardArtifactIndexRecord record, File artifactFile )
         throws RepositoryIndexException
     {
@@ -225,21 +196,34 @@
                 {
                     classes.append( name.substring( 0, name.length() - 6 
).replace( '/', '.' ) ).append( "\n" );
                 }
-                else
+                else if ( PLUGIN_METADATA_NAME.equals( name ) )
                 {
-                    if ( PLUGIN_METADATA_NAME.equals( name ) )
-                    {
-                        populatePluginEntries( readPluginMetadata( 
artifactFile ), record );
-                    }
+                    populatePluginEntries( readXmlMetadataFileInJar( 
artifactFile, PLUGIN_METADATA_NAME ), record );
+                }
+                else if ( ARCHETYPE_METADATA_NAME.equals( name ) )
+                {
+                    populateArchetypeEntries( record );
                 }
             }
         }
 
-        record.setClasses( classes.toString() );
-        record.setFiles( fileBuffer.toString() );
+        if ( classes.length() > 0 )
+        {
+            record.setClasses( classes.toString() );
+        }
+        if ( fileBuffer.length() > 0 )
+        {
+            record.setFiles( fileBuffer.toString() );
+        }
+    }
+
+    private void populateArchetypeEntries( StandardArtifactIndexRecord record )
+    {
+        // Typically discovered as a JAR
+        record.setType( "maven-archetype" );
     }
 
-    private Xpp3Dom readPluginMetadata( File file )
+    private Xpp3Dom readXmlMetadataFileInJar( File file, String name )
         throws RepositoryIndexException
     {
         // TODO: would be more efficient with original ZipEntry still around
@@ -249,7 +233,7 @@
         try
         {
             zipFile = new ZipFile( file );
-            ZipEntry entry = zipFile.getEntry( PLUGIN_METADATA_NAME );
+            ZipEntry entry = zipFile.getEntry( name );
             xpp3Dom = Xpp3DomBuilder.build( new InputStreamReader( 
zipFile.getInputStream( entry ) ) );
         }
         catch ( ZipException e )

Modified: 
maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/record/StandardArtifactIndexRecordFactoryTest.java
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/record/StandardArtifactIndexRecordFactoryTest.java?rev=425943&r1=425942&r2=425943&view=diff
==============================================================================
--- 
maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/record/StandardArtifactIndexRecordFactoryTest.java
 (original)
+++ 
maven/repository-manager/trunk/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/record/StandardArtifactIndexRecordFactoryTest.java
 Wed Jul 26 20:42:47 2006
@@ -169,6 +169,35 @@
         assertEquals( "check record", expectedRecord, record );
     }
 
+    public void testIndexedArchetype()
+        throws RepositoryIndexException, IOException, XmlPullParserException
+    {
+        Artifact artifact = createArtifact( "test-archetype" );
+
+        RepositoryIndexRecord record = factory.createRecord( artifact );
+
+        StandardArtifactIndexRecord expectedRecord = new 
StandardArtifactIndexRecord();
+        expectedRecord.setMd5Checksum( "ecefd4674c75a175119572b19edc45f1" );
+        expectedRecord.setFilename( repository.pathOf( artifact ) );
+        expectedRecord.setLastModified( artifact.getFile().lastModified() );
+        expectedRecord.setSize( artifact.getFile().length() );
+        expectedRecord.setArtifactId( "test-archetype" );
+        expectedRecord.setGroupId( TEST_GROUP_ID );
+        expectedRecord.setVersion( "1.0" );
+        expectedRecord.setSha1Checksum( 
"5ebabafdbcd6684ae434c06e22c32844df284b05" );
+        expectedRecord.setType( "maven-archetype" );
+        expectedRecord.setRepository( "test" );
+        expectedRecord.setFiles( "META-INF/MANIFEST.MF\n" + 
"archetype-resources/pom.xml\n" +
+            "archetype-resources/src/main/java/App.java\n" + 
"archetype-resources/src/test/java/AppTest.java\n" +
+            "META-INF/maven/archetype.xml\n" +
+            
"META-INF/maven/org.apache.maven.repository.record/test-archetype/pom.xml\n" +
+            
"META-INF/maven/org.apache.maven.repository.record/test-archetype/pom.properties\n"
 );
+        expectedRecord.setPackaging( "jar" );
+        expectedRecord.setProjectName( "Archetype - test-archetype" );
+
+        assertEquals( "check record", expectedRecord, record );
+    }
+
     public void testCorruptJar()
         throws RepositoryIndexException
     {

Added: 
maven/repository-manager/trunk/maven-repository-indexer/src/test/managed-repository/org/apache/maven/repository/record/test-archetype/1.0/test-archetype-1.0.jar
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-indexer/src/test/managed-repository/org/apache/maven/repository/record/test-archetype/1.0/test-archetype-1.0.jar?rev=425943&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
maven/repository-manager/trunk/maven-repository-indexer/src/test/managed-repository/org/apache/maven/repository/record/test-archetype/1.0/test-archetype-1.0.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
maven/repository-manager/trunk/maven-repository-indexer/src/test/managed-repository/org/apache/maven/repository/record/test-archetype/1.0/test-archetype-1.0.pom
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-indexer/src/test/managed-repository/org/apache/maven/repository/record/test-archetype/1.0/test-archetype-1.0.pom?rev=425943&view=auto
==============================================================================
--- 
maven/repository-manager/trunk/maven-repository-indexer/src/test/managed-repository/org/apache/maven/repository/record/test-archetype/1.0/test-archetype-1.0.pom
 (added)
+++ 
maven/repository-manager/trunk/maven-repository-indexer/src/test/managed-repository/org/apache/maven/repository/record/test-archetype/1.0/test-archetype-1.0.pom
 Wed Jul 26 20:42:47 2006
@@ -0,0 +1,8 @@
+<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.repository.record</groupId>
+  <artifactId>test-archetype</artifactId>
+  <version>1.0</version>
+  <name>Archetype - test-archetype</name>
+</project>

Propchange: 
maven/repository-manager/trunk/maven-repository-indexer/src/test/managed-repository/org/apache/maven/repository/record/test-archetype/1.0/test-archetype-1.0.pom
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/repository-manager/trunk/maven-repository-indexer/src/test/managed-repository/org/apache/maven/repository/record/test-archetype/1.0/test-archetype-1.0.pom
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision


Reply via email to