You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by br...@apache.org on 2010/12/30 09:27:39 UTC

svn commit: r1053819 - in /archiva/sandbox/populate-jcr-repo: ./ pom.xml src/main/java/org/apache/archiva/metadata/repository/jcr/ExportRepoApp.java src/main/java/org/apache/archiva/metadata/repository/jcr/PopulateRepoApp.java

Author: brett
Date: Thu Dec 30 08:27:38 2010
New Revision: 1053819

URL: http://svn.apache.org/viewvc?rev=1053819&view=rev
Log:
ability to export a repo for testing purposes

Added:
    archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/ExportRepoApp.java
      - copied, changed from r1053806, archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/QueryRepoApp.java
Modified:
    archiva/sandbox/populate-jcr-repo/   (props changed)
    archiva/sandbox/populate-jcr-repo/pom.xml
    archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/PopulateRepoApp.java

Propchange: archiva/sandbox/populate-jcr-repo/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Thu Dec 30 08:27:38 2010
@@ -1,3 +1,5 @@
 target
+artifacts.xml
+artifacts.xml.gz
 *.iml
 jcr

Modified: archiva/sandbox/populate-jcr-repo/pom.xml
URL: http://svn.apache.org/viewvc/archiva/sandbox/populate-jcr-repo/pom.xml?rev=1053819&r1=1053818&r2=1053819&view=diff
==============================================================================
--- archiva/sandbox/populate-jcr-repo/pom.xml (original)
+++ archiva/sandbox/populate-jcr-repo/pom.xml Thu Dec 30 08:27:38 2010
@@ -32,6 +32,11 @@
       <version>1.4-SNAPSHOT</version>
     </dependency>
     <dependency>
+      <groupId>org.apache.archiva</groupId>
+      <artifactId>maven2-repository</artifactId>
+      <version>1.4-SNAPSHOT</version>
+    </dependency>
+    <dependency>
       <groupId>org.apache.jackrabbit</groupId>
       <artifactId>jackrabbit-core</artifactId>
       <version>2.2.0</version>
@@ -42,5 +47,10 @@
       <version>1.5.8</version>
       <scope>runtime</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.archiva</groupId>
+      <artifactId>npanday-support</artifactId>
+      <version>1.4-SNAPSHOT</version>
+    </dependency>
   </dependencies>
 </project>

Copied: archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/ExportRepoApp.java (from r1053806, archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/QueryRepoApp.java)
URL: http://svn.apache.org/viewvc/archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/ExportRepoApp.java?p2=archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/ExportRepoApp.java&p1=archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/QueryRepoApp.java&r1=1053806&r2=1053819&rev=1053819&view=diff
==============================================================================
--- archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/QueryRepoApp.java (original)
+++ archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/ExportRepoApp.java Thu Dec 30 08:27:38 2010
@@ -20,25 +20,23 @@ package org.apache.archiva.metadata.repo
  */
 
 import org.apache.archiva.metadata.model.MetadataFacetFactory;
-import org.apache.jackrabbit.commons.JcrUtils;
 import org.apache.jackrabbit.core.TransientRepository;
 import org.apache.jackrabbit.core.config.RepositoryConfig;
 
+import java.io.FileOutputStream;
+import java.io.IOException;
 import java.util.Collections;
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
-import javax.jcr.query.Query;
-import javax.jcr.query.QueryResult;
-import javax.jcr.query.Row;
 
 /**
  * Hello world!
  */
-public class QueryRepoApp
+public class ExportRepoApp
 {
     public static void main( String[] args )
-        throws RepositoryException
+        throws RepositoryException, IOException
     {
         RepositoryConfig config = RepositoryConfig.create( "src/main/repository.xml", "jcr" );
         Repository repository = new TransientRepository( config );
@@ -50,34 +48,8 @@ public class QueryRepoApp
         {
             Session session = jcrMetadataRepository.getJcrSession();
 
-            System.out.println( "querying" );
-            long time = System.currentTimeMillis();
-
-            String q = "SELECT size FROM [archiva:artifact] AS artifact";
-
-            Query query = session.getWorkspace().getQueryManager().createQuery( q, Query.JCR_SQL2 );
-
-            QueryResult queryResult = query.execute();
-            System.out.println( "query in " + ( System.currentTimeMillis() - time ) + "ms" );
-
-            time = System.currentTimeMillis();
-
-            long totalSize = 0, totalJars = 0, totalArtifacts = 0;
-            for ( Row row : JcrUtils.getRows( queryResult ) )
-            {
-                if ( row.getPath().startsWith( "/repositories/internal/content/" ) )
-                {
-                    totalSize += row.getValue( "size" ).getLong();
-                    if ( row.getNode().getName().endsWith( ".jar" ) )
-                    {
-                        totalJars++;
-                    }
-                    totalArtifacts++;
-                }
-            }
-            System.out.println(
-                totalArtifacts + " artifacts, " + totalSize + " bytes, " + totalJars + " jars (count in " +
-                    ( System.currentTimeMillis() - time ) + "ms)" );
+            session.exportSystemView( "/repositories/internal/content/org/apache/archiva", new FileOutputStream(
+                "artifacts.xml" ), false, false );
         }
         finally
         {

Modified: archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/PopulateRepoApp.java
URL: http://svn.apache.org/viewvc/archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/PopulateRepoApp.java?rev=1053819&r1=1053818&r2=1053819&view=diff
==============================================================================
--- archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/PopulateRepoApp.java (original)
+++ archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/PopulateRepoApp.java Thu Dec 30 08:27:38 2010
@@ -3,6 +3,12 @@ package org.apache.archiva.metadata.repo
 import org.apache.archiva.metadata.model.ArtifactMetadata;
 import org.apache.archiva.metadata.model.MetadataFacetFactory;
 import org.apache.archiva.metadata.repository.MetadataRepositoryException;
+import org.apache.archiva.metadata.repository.storage.maven2.ArtifactMappingProvider;
+import org.apache.archiva.metadata.repository.storage.maven2.DefaultArtifactMappingProvider;
+import org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryPathTranslator;
+import org.apache.archiva.metadata.repository.storage.maven2.MavenArtifactFacet;
+import org.apache.archiva.metadata.repository.storage.maven2.MavenArtifactFacetFactory;
+import org.apache.archiva.plugins.npanday.NPandayArtifactMappingProvider;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.filefilter.IOFileFilter;
 import org.apache.commons.io.filefilter.NotFileFilter;
@@ -11,9 +17,12 @@ import org.apache.jackrabbit.core.Transi
 import org.apache.jackrabbit.core.config.RepositoryConfig;
 
 import java.io.File;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Date;
+import java.util.List;
+import java.util.Map;
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 
@@ -30,11 +39,18 @@ public class PopulateRepoApp
         RepositoryConfig config = RepositoryConfig.create( "src/main/repository.xml", "jcr" );
         Repository repository = new TransientRepository( config );
 
-        JcrMetadataRepository jcrMetadataRepository = new JcrMetadataRepository(
-            Collections.<String, MetadataFacetFactory>emptyMap(), repository );
+        MavenArtifactFacetFactory factory = new MavenArtifactFacetFactory();
+
+        Map<String, MetadataFacetFactory> metadataFacetFactories =
+            Collections.<String, MetadataFacetFactory>singletonMap( MavenArtifactFacet.FACET_ID, factory );
+        JcrMetadataRepository jcrMetadataRepository = new JcrMetadataRepository( metadataFacetFactories, repository );
 
         JcrMetadataRepository.initialize( jcrMetadataRepository.getJcrSession() );
 
+        List<ArtifactMappingProvider> artifactMappingProviders = Arrays.asList( new DefaultArtifactMappingProvider(),
+                                                                                new NPandayArtifactMappingProvider() );
+        Maven2RepositoryPathTranslator translator = new Maven2RepositoryPathTranslator( artifactMappingProviders );
+
         try
         {
             File basedir;
@@ -50,35 +66,25 @@ public class PopulateRepoApp
             IOFileFilter dirFilter = new NotFileFilter( new WildcardFileFilter( ".index*" ) );
             IOFileFilter fileFilter = new NotFileFilter( new WildcardFileFilter(
                 new String[]{"*.asc", "*.md5", "*.sha1", "maven-metadata*.xml"} ) );
-            Collection<File> files = FileUtils.listFiles( basedir, fileFilter, dirFilter );
+            Collection<File> files = FileUtils.listFiles( new File( basedir, "org/apache/archiva" ), fileFilter, dirFilter );
+
+            int index = basedir.getAbsolutePath().length() + 1;
 
             int count = 0, total = files.size();
             for ( File f : files )
             {
-                ArtifactMetadata artifact = new ArtifactMetadata();
-                artifact.setId( f.getName() );
-                artifact.setWhenGathered( new Date() );
+                String path = f.getAbsolutePath().substring( index );
 
-                File projectVersion = f.getParentFile();
-                File project = projectVersion.getParentFile();
-                File namespace = project.getParentFile();
-                String ns = namespace.getName();
-                while ( !namespace.getParentFile().equals( basedir ) )
-                {
-                    namespace = namespace.getParentFile();
-                    ns = namespace.getName() + "." + ns;
-                }
+                ArtifactMetadata artifact = translator.getArtifactForPath( REPO_ID, path );
+                artifact.setWhenGathered( new Date() );
 
-                artifact.setNamespace( ns );
-                artifact.setProject( project.getName() );
-                artifact.setRepositoryId( REPO_ID );
                 artifact.setFileLastModified( f.lastModified() );
-                artifact.setVersion( projectVersion.getName() );
-                artifact.setProjectVersion( projectVersion.getName() );
                 artifact.setSize( f.length() );
 
-                jcrMetadataRepository.updateArtifact( REPO_ID, ns, artifact.getProject(), artifact.getProjectVersion(),
-                                                      artifact );
+                // skipping checksums for speed
+
+                jcrMetadataRepository.updateArtifact( REPO_ID, artifact.getNamespace(), artifact.getProject(),
+                                                      artifact.getProjectVersion(), artifact );
 
                 if ( ++count % 500 == 0 )
                 {