You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ra...@apache.org on 2008/01/08 21:49:20 UTC
svn commit: r610142 - in
/maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src:
main/java/org/apache/maven/archetype/common/
main/java/org/apache/maven/archetype/common/util/
main/java/org/apache/maven/archetype/repos...
Author: rafale
Date: Tue Jan 8 12:49:18 2008
New Revision: 610142
URL: http://svn.apache.org/viewvc?rev=610142&view=rev
Log:
First draft for a repository crowler component
Added:
maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/repositorycrawler/
maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/repositorycrawler/DefaultRepositoryCrawler.java (with props)
maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/repositorycrawler/RepositoryCrawler.java (with props)
maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/test/java/org/apache/maven/archetype/repositorycrawler/
maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/test/java/org/apache/maven/archetype/repositorycrawler/DefaultRepositoryCrawlerTest.java (with props)
Modified:
maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/ArchetypeArtifactManager.java
maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/DefaultArchetypeArtifactManager.java
maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/DefaultPomManager.java
maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/PomManager.java
maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/util/FileCharsetDetector.java
maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/mdo/archetype-catalog.mdo
Modified: maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/ArchetypeArtifactManager.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/ArchetypeArtifactManager.java?rev=610142&r1=610141&r2=610142&view=diff
==============================================================================
--- maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/ArchetypeArtifactManager.java (original)
+++ maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/ArchetypeArtifactManager.java Tue Jan 8 12:49:18 2008
@@ -20,18 +20,22 @@
package org.apache.maven.archetype.common;
import org.apache.maven.archetype.exception.UnknownArchetype;
-import org.apache.maven.archetype.exception.UnknownGroup;
import org.apache.maven.archetype.metadata.ArchetypeDescriptor;
import org.apache.maven.artifact.repository.ArtifactRepository;
import java.io.File;
+import java.io.IOException;
import java.util.List;
import java.util.zip.ZipFile;
+import org.apache.maven.model.Model;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
public interface ArchetypeArtifactManager
{
String ROLE = ArchetypeArtifactManager.class.getName();
+ public Model getArchetypePom(File jar) throws XmlPullParserException, UnknownArchetype, IOException;
+
/**
*/
File getArchetypeFile(
@@ -99,6 +103,8 @@
ArtifactRepository localRepository,
List repositories
);
+
+ boolean isFileSetArchetype( File archetypeFile );
/**
*/
@@ -135,6 +141,8 @@
ArtifactRepository localRepository,
List repositories
);
+
+ boolean isOldArchetype( File archetypeFile );
/**
*/
@@ -145,6 +153,11 @@
ArtifactRepository archetypeRepository,
ArtifactRepository localRepository,
List repositories
+ )
+ throws
+ UnknownArchetype;
+ org.apache.maven.archetype.old.descriptor.ArchetypeDescriptor getOldArchetypeDescriptor(
+ File archetypeFile
)
throws
UnknownArchetype;
Modified: maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/DefaultArchetypeArtifactManager.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/DefaultArchetypeArtifactManager.java?rev=610142&r1=610141&r2=610142&view=diff
==============================================================================
--- maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/DefaultArchetypeArtifactManager.java (original)
+++ maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/DefaultArchetypeArtifactManager.java Tue Jan 8 12:49:18 2008
@@ -20,19 +20,15 @@
package org.apache.maven.archetype.common;
import org.apache.maven.archetype.exception.UnknownArchetype;
-import org.apache.maven.archetype.exception.UnknownGroup;
import org.apache.maven.archetype.metadata.ArchetypeDescriptor;
import org.apache.maven.archetype.metadata.io.xpp3.ArchetypeDescriptorXpp3Reader;
import org.apache.maven.archetype.old.descriptor.ArchetypeDescriptorBuilder;
import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.metadata.GroupRepositoryMetadata;
-import org.apache.maven.artifact.repository.metadata.Plugin;
-import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager;
-import org.apache.maven.artifact.repository.metadata.RepositoryMetadataResolutionException;
import org.apache.maven.archetype.downloader.DownloadException;
import org.apache.maven.archetype.downloader.DownloadNotFoundException;
import org.apache.maven.archetype.downloader.Downloader;
+import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
@@ -47,11 +43,11 @@
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Enumeration;
-import java.util.Iterator;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
+import org.apache.maven.model.Model;
/** @plexus.component */
public class DefaultArchetypeArtifactManager
@@ -64,6 +60,9 @@
/** @plexus.requirement */
private RepositoryMetadataManager repositoryMetadataManager;
+ /** @plexus.requirement */
+ private PomManager pomManager;
+
public File getArchetypeFile(
final String groupId,
final String artifactId,
@@ -200,10 +199,29 @@
repositories
);
- org.apache.maven.archetype.metadata.ArchetypeDescriptor descriptor =
- loadFileSetArchetypeDescriptor( archetypeJarLoader );
+ return isFileSetArchetype(archetypeJarLoader);
+ }
+ catch ( XmlPullParserException e )
+ {
+ return false;
+ }
+ catch ( IOException e )
+ {
+ return false;
+ }
+ catch ( UnknownArchetype e )
+ {
+ return false;
+ }
+ }
+
+ public boolean isFileSetArchetype(File archetypeFile) {
+ try
+ {
+ ClassLoader archetypeJarLoader =
+ getArchetypeJarLoader(archetypeFile);
- return descriptor.getName() != null;
+ return isFileSetArchetype(archetypeJarLoader);
}
catch ( XmlPullParserException e )
{
@@ -329,10 +347,29 @@
repositories
);
- org.apache.maven.archetype.old.descriptor.ArchetypeDescriptor descriptor =
- loadOldArchetypeDescriptor( archetypeJarLoader );
+ return isOldArchetype(archetypeJarLoader);
+ }
+ catch ( XmlPullParserException e )
+ {
+ return false;
+ }
+ catch ( IOException e )
+ {
+ return false;
+ }
+ catch ( UnknownArchetype ex )
+ {
+ return false;
+ }
+ }
+
+ public boolean isOldArchetype(File archetypeFile) {
+ try
+ {
+ ClassLoader archetypeJarLoader =
+ getArchetypeJarLoader(archetypeFile);
- return descriptor.getId() != null;
+ return isOldArchetype(archetypeJarLoader);
}
catch ( XmlPullParserException e )
{
@@ -398,6 +435,24 @@
return new InputStreamReader( is );
}
+ private boolean isFileSetArchetype ( ClassLoader archetypeJarLoader )
+ throws XmlPullParserException, IOException
+ {
+ org.apache.maven.archetype.metadata.ArchetypeDescriptor descriptor =
+ loadFileSetArchetypeDescriptor ( archetypeJarLoader );
+
+ return descriptor.getName () != null;
+ }
+
+ private boolean isOldArchetype ( ClassLoader archetypeJarLoader )
+ throws IOException, XmlPullParserException
+ {
+ org.apache.maven.archetype.old.descriptor.ArchetypeDescriptor descriptor =
+ loadOldArchetypeDescriptor ( archetypeJarLoader );
+
+ return descriptor.getId () != null;
+ }
+
private org.apache.maven.archetype.metadata.ArchetypeDescriptor loadFileSetArchetypeDescriptor(
ClassLoader archetypeJarLoader
)
@@ -512,5 +567,52 @@
( loader == null )
? Thread.currentThread().getContextClassLoader().getResourceAsStream( name )
: loader.getResourceAsStream( name );
+ }
+
+ public Model getArchetypePom ( File jar )
+ throws XmlPullParserException, UnknownArchetype, IOException
+ {
+ String pomFileName = null;
+ ZipFile zipFile = getArchetypeZipFile ( jar );
+ Enumeration enumeration = zipFile.entries ();
+ while ( enumeration.hasMoreElements () )
+ {
+ ZipEntry el = (ZipEntry) enumeration.nextElement ();
+// System.err.println (
+// "entry=" + el.getName () + " " + el.getComment () + " D" + el.isDirectory ()
+// );
+
+ String entry = el.getName ();
+ if ( entry.startsWith ( "META-INF/maven" ) && entry.endsWith ( "pom.xml" ) )
+ {
+ pomFileName = entry;
+ }
+ }
+
+ return
+ ( pomFileName == null )
+ ? null
+ : pomManager.readPom ( zipFile.getInputStream ( zipFile.getEntry ( pomFileName ) ) );
+ }
+
+ public org.apache.maven.archetype.old.descriptor.ArchetypeDescriptor getOldArchetypeDescriptor (
+ File archetypeFile
+ )
+ throws UnknownArchetype
+ {
+ try
+ {
+ ClassLoader archetypeJarLoader = getArchetypeJarLoader ( archetypeFile );
+
+ return loadOldArchetypeDescriptor ( archetypeJarLoader );
+ }
+ catch ( XmlPullParserException e )
+ {
+ throw new UnknownArchetype ( e );
+ }
+ catch ( IOException e )
+ {
+ throw new UnknownArchetype ( e );
+ }
}
}
Modified: maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/DefaultPomManager.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/DefaultPomManager.java?rev=610142&r1=610141&r2=610142&view=diff
==============================================================================
--- maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/DefaultPomManager.java (original)
+++ maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/DefaultPomManager.java Tue Jan 8 12:49:18 2008
@@ -290,6 +290,40 @@
return model;
}
+
+ public Model readPom( InputStream pomStream )
+ throws
+ IOException,
+ XmlPullParserException
+ { // TODO ensure correct encoding by using default one from method argument !!!
+
+ Model model;
+ Reader pomReader = null;
+ try
+ {
+// FileCharsetDetector detector = new FileCharsetDetector( pomStream );
+
+ String fileEncoding = /*detector.isFound() ? detector.getCharset() :*/ "UTF-8";
+
+ pomReader = new InputStreamReader( pomStream, fileEncoding );
+
+ MavenXpp3Reader reader = new MavenXpp3Reader();
+
+ model = reader.read( pomReader );
+
+ if ( StringUtils.isEmpty( model.getModelEncoding() ) )
+ {
+ model.setModelEncoding( fileEncoding );
+ }
+ }
+ finally
+ {
+ IOUtil.close( pomReader );
+ pomReader = null;
+ }
+ return model;
+ }
+
public void writePom( final Model model,
final File pomFile,
final File initialPomFile )
Modified: maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/PomManager.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/PomManager.java?rev=610142&r1=610141&r2=610142&view=diff
==============================================================================
--- maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/PomManager.java (original)
+++ maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/PomManager.java Tue Jan 8 12:49:18 2008
@@ -25,8 +25,8 @@
import org.dom4j.DocumentException;
import java.io.File;
-import java.io.FileNotFoundException;
import java.io.IOException;
+import java.io.InputStream;
public interface PomManager
{
@@ -53,6 +53,11 @@
XmlPullParserException;
Model readPom( File pomFile )
+ throws
+ IOException,
+ XmlPullParserException;
+
+ Model readPom( InputStream pomStream )
throws
IOException,
XmlPullParserException;
Modified: maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/util/FileCharsetDetector.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/util/FileCharsetDetector.java?rev=610142&r1=610141&r2=610142&view=diff
==============================================================================
--- maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/util/FileCharsetDetector.java (original)
+++ maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/common/util/FileCharsetDetector.java Tue Jan 8 12:49:18 2008
@@ -29,6 +29,7 @@
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.io.InputStream;
/** @author rafale */
public class FileCharsetDetector
@@ -57,6 +58,64 @@
);
BufferedInputStream imp = new BufferedInputStream( new FileInputStream( detectedFile ) );
+
+ byte[] buf = new byte[1024];
+ int len;
+ boolean done = false;
+ boolean isAscii = true;
+
+ while ( ( len = imp.read( buf, 0, buf.length ) ) != -1 )
+ {
+ // Check if the stream is only ascii.
+ if ( isAscii )
+ {
+ isAscii = det.isAscii( buf, len );
+ }
+
+ // DoIt if non-ascii and not done yet.
+ if ( !isAscii && !done )
+ {
+ done = det.DoIt( buf, len, false );
+ found = done;
+ }
+ }
+ det.DataEnd();
+
+ if ( !isFound() )
+ {
+ String[] prob = det.getProbableCharsets();
+
+ if ( prob.length > 0 )
+ {
+ charset = prob[0];
+ }
+ }
+
+ if ( isAscii )
+ {
+ charset = "ASCII";
+ }
+ }
+
+ public FileCharsetDetector( InputStream detectedStream )
+ throws
+ FileNotFoundException,
+ IOException
+ {
+ nsDetector det = new nsDetector( nsPSMDetector.ALL );
+
+ det.Init(
+ new nsICharsetDetectionObserver()
+ {
+ public void Notify( String charset )
+ {
+ FileCharsetDetector.this.charset = charset;
+ FileCharsetDetector.this.found = true;
+ }
+ }
+ );
+
+ BufferedInputStream imp = new BufferedInputStream( detectedStream );
byte[] buf = new byte[1024];
int len;
Added: maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/repositorycrawler/DefaultRepositoryCrawler.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/repositorycrawler/DefaultRepositoryCrawler.java?rev=610142&view=auto
==============================================================================
--- maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/repositorycrawler/DefaultRepositoryCrawler.java (added)
+++ maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/repositorycrawler/DefaultRepositoryCrawler.java Tue Jan 8 12:49:18 2008
@@ -0,0 +1,158 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.maven.archetype.repositorycrawler;
+
+import org.apache.commons.io.FileUtils;
+
+import org.apache.maven.archetype.catalog.Archetype;
+import org.apache.maven.archetype.catalog.ArchetypeCatalog;
+import org.apache.maven.archetype.common.ArchetypeArtifactManager;
+import org.apache.maven.archetype.exception.UnknownArchetype;
+import org.apache.maven.model.Model;
+import org.apache.maven.project.MavenProject;
+
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+
+import java.io.File;
+import java.io.IOException;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+/**
+ * @author rafale
+ * @plexus.component
+ */
+public class DefaultRepositoryCrawler
+extends AbstractLogEnabled
+implements RepositoryCrawler
+{
+ /**
+ * @plexus.requirement
+ */
+ private ArchetypeArtifactManager archetypeArtifactManager;
+
+ public ArchetypeCatalog crawl ( File repository )
+ {
+ if ( repository.isDirectory () )
+ {
+ ArchetypeCatalog catalog = new ArchetypeCatalog ();
+ Iterator jars =
+ FileUtils.listFiles ( repository, new String[] { "jar" }, true ).iterator ();
+
+ while ( jars.hasNext () )
+ {
+ File jar = (File) jars.next ();
+ getLogger ().info ( "Scanning " + jar );
+ if ( archetypeArtifactManager.isFileSetArchetype ( jar )
+ || archetypeArtifactManager.isOldArchetype ( jar )
+ )
+ {
+ try
+ {
+ Archetype archetype = new Archetype ();
+
+ Model pom = archetypeArtifactManager.getArchetypePom ( jar );
+
+ if ( archetypeArtifactManager.isFileSetArchetype ( jar ) )
+ {
+ org.apache.maven.archetype.metadata.ArchetypeDescriptor descriptor =
+ archetypeArtifactManager.getFileSetArchetypeDescriptor ( jar );
+ archetype.setDescription ( descriptor.getName () );
+ }
+ else
+ {
+ org.apache.maven.archetype.old.descriptor.ArchetypeDescriptor descriptor =
+ archetypeArtifactManager.getOldArchetypeDescriptor ( jar );
+ archetype.setDescription ( descriptor.getId () );
+ }
+ if ( pom != null )
+ {
+ if ( pom.getGroupId () != null )
+ {
+ archetype.setGroupId ( pom.getGroupId () );
+ }
+ else
+ {
+ archetype.setGroupId ( pom.getParent ().getGroupId () );
+ }
+ archetype.setArtifactId ( pom.getArtifactId () );
+ if ( pom.getVersion () != null )
+ {
+ archetype.setVersion ( pom.getVersion () );
+ }
+ else
+ {
+ archetype.setVersion ( pom.getParent ().getVersion () );
+ }
+ getLogger ().info ( "\tArchetype " + archetype + " found in pom" );
+ }
+ else
+ {
+ String version = jar.getParentFile ().getName ();
+
+ String artifactId = jar.getParentFile ().getParentFile ().getName ();
+
+ String groupIdSep =
+ jar.getParentFile ().getParentFile ().getParentFile ().getPath ()
+ .replace ( repository.getPath (), "" );
+ String groupId = groupIdSep.replace ( File.separator, "." );
+ groupId =
+ groupId.startsWith ( "." ) ? groupId.substring ( 1 ) : groupId;
+ groupId =
+ groupId.endsWith ( "." )
+ ? groupId.substring ( 0, groupId.length () - 1 )
+ : groupId;
+
+ archetype.setGroupId ( groupId );
+ archetype.setArtifactId ( artifactId );
+ archetype.setVersion ( version );
+
+ getLogger ().info (
+ "\tArchetype " + archetype + " defined by repository path"
+ );
+ } // end if-else
+
+ catalog.addArchetype ( archetype );
+ }
+ catch ( XmlPullParserException ex )
+ {
+ ex.printStackTrace ();
+ }
+ catch ( IOException ex )
+ {
+ ex.printStackTrace ();
+ }
+ catch ( UnknownArchetype ex )
+ {
+ ex.printStackTrace ();
+ } // end try-catch
+ } // end if
+ } // end while
+ return catalog;
+ }
+ else
+ {
+ getLogger ().warn ( "File is not a directory" );
+ return null;
+ } // end if-else
+ }
+}
Propchange: maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/repositorycrawler/DefaultRepositoryCrawler.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/repositorycrawler/RepositoryCrawler.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/repositorycrawler/RepositoryCrawler.java?rev=610142&view=auto
==============================================================================
--- maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/repositorycrawler/RepositoryCrawler.java (added)
+++ maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/repositorycrawler/RepositoryCrawler.java Tue Jan 8 12:49:18 2008
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.maven.archetype.repositorycrawler;
+
+import org.apache.maven.archetype.catalog.ArchetypeCatalog;
+
+import java.io.File;
+
+/**
+ * @author rafale
+ */
+public interface RepositoryCrawler
+{
+ String ROLE = RepositoryCrawler.class.getName ();
+
+ ArchetypeCatalog crawl ( File repository );
+}
Propchange: maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/java/org/apache/maven/archetype/repositorycrawler/RepositoryCrawler.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/mdo/archetype-catalog.mdo
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/mdo/archetype-catalog.mdo?rev=610142&r1=610141&r2=610142&view=diff
==============================================================================
--- maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/mdo/archetype-catalog.mdo (original)
+++ maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/main/mdo/archetype-catalog.mdo Tue Jan 8 12:49:18 2008
@@ -45,6 +45,16 @@
</association>
</field>
</fields>
+ <codeSegments>
+ <codeSegment>
+ <code><![CDATA[
+ public String toString ()
+ {
+ return archetypes.toString();
+ }
+ ]]></code>
+ </codeSegment>
+ </codeSegments>
</class>
<class>
<name>Archetype</name>
Added: maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/test/java/org/apache/maven/archetype/repositorycrawler/DefaultRepositoryCrawlerTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/test/java/org/apache/maven/archetype/repositorycrawler/DefaultRepositoryCrawlerTest.java?rev=610142&view=auto
==============================================================================
--- maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/test/java/org/apache/maven/archetype/repositorycrawler/DefaultRepositoryCrawlerTest.java (added)
+++ maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/test/java/org/apache/maven/archetype/repositorycrawler/DefaultRepositoryCrawlerTest.java Tue Jan 8 12:49:18 2008
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.maven.archetype.repositorycrawler;
+
+import org.apache.maven.archetype.catalog.ArchetypeCatalog;
+import org.apache.maven.plugin.testing.AbstractMojoTestCase;
+
+import java.io.File;
+
+/**
+ * @author rafale
+ */
+public class DefaultRepositoryCrawlerTest
+extends AbstractMojoTestCase
+{
+ /**
+ * Test of crawl method, of class DefaultRepositoryCrawler.
+ */
+ public void testCrawl ()
+ throws Exception
+ {
+ System.out.println ( "crawl" );
+
+ File repository = getTestFile ( "target/test-classes/repositories/central" );
+ RepositoryCrawler instance =
+ (RepositoryCrawler) lookup ( RepositoryCrawler.class.getName () );
+
+ ArchetypeCatalog result = instance.crawl ( repository );
+ System.err.println ( "result = " + result );
+ assertTrue (
+ ( 5 <= result.getArchetypes ().size () )
+ && ( result.getArchetypes ().size () >= 7 )
+ );
+ }
+
+// public void testCrawl2 ()
+// throws Exception
+// {
+// System.out.println ( "\n\n\n\n\n\ncrawl2" );
+//
+// File repository = new File("/home/rafale/.m2/repository");
+// //getTestFile ( "target/test-classes/repositories/central" );
+// RepositoryCrawler instance =
+// (RepositoryCrawler) lookup ( RepositoryCrawler.class.getName () );
+//
+// ArchetypeCatalog expResult = null;
+// ArchetypeCatalog result = instance.crawl ( repository );
+// System.err.println("result = "+result);
+// assertEquals ( expResult, result );
+// // TODO review the generated test code and remove the default call to fail.
+//// fail ( "The test case is a prototype." );
+// }
+
+ protected void tearDown ()
+ throws Exception
+ {
+ super.tearDown ();
+ }
+
+ protected void setUp ()
+ throws Exception
+ {
+ super.setUp ();
+ }
+}
Propchange: maven/sandbox/branches/archetypeng-rafale-experiment/archetypeng/archetypeng-common/src/test/java/org/apache/maven/archetype/repositorycrawler/DefaultRepositoryCrawlerTest.java
------------------------------------------------------------------------------
svn:eol-style = native