Author: brett
Date: Mon Jan 17 05:38:00 2011
New Revision: 1059754

URL: http://svn.apache.org/viewvc?rev=1059754&view=rev
Log:
some tests with different mappings of dependencies

Added:
    
archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/PopulateRepoAppConfig.java
    archiva/sandbox/populate-jcr-repo/src/main/resources/
    archiva/sandbox/populate-jcr-repo/src/main/resources/META-INF/
    
archiva/sandbox/populate-jcr-repo/src/main/resources/META-INF/spring-context.xml
Modified:
    
archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/PopulateRepoApp.java
    
archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/QueryRepoApp.java

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=1059754&r1=1059753&r2=1059754&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
 Mon Jan 17 05:38:00 2011
@@ -2,26 +2,29 @@ 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.model.ProjectVersionMetadata;
 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.RepositoryStorageMetadataInvalidException;
+import 
org.apache.archiva.metadata.repository.storage.RepositoryStorageMetadataNotFoundException;
 import 
org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryPathTranslator;
+import 
org.apache.archiva.metadata.repository.storage.maven2.Maven2RepositoryStorage;
 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;
 import org.apache.commons.io.filefilter.WildcardFileFilter;
 import org.apache.jackrabbit.core.TransientRepository;
 import org.apache.jackrabbit.core.config.RepositoryConfig;
+import org.codehaus.plexus.spring.PlexusClassPathXmlApplicationContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.ConfigurableApplicationContext;
 
 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;
@@ -33,8 +36,15 @@ public class PopulateRepoApp
 {
     private static final String REPO_ID = "internal";
 
+    private static final String[] CONFIG_LOCATIONS =
+        new String[]{"classpath*:META-INF/spring-context.xml", 
"classpath*:META-INF/plexus/components.xml",
+            "classpath:META-INF/spring-context.xml"};
+
+    private static Logger log = LoggerFactory.getLogger( PopulateRepoApp.class 
);
+
     public static void main( String[] args )
-        throws RepositoryException, MetadataRepositoryException
+        throws RepositoryException, MetadataRepositoryException, 
RepositoryStorageMetadataNotFoundException,
+        RepositoryStorageMetadataInvalidException
     {
         RepositoryConfig config = RepositoryConfig.create( 
"src/main/repository.xml", "jcr" );
         Repository repository = new TransientRepository( config );
@@ -47,9 +57,8 @@ public class PopulateRepoApp
 
         JcrMetadataRepository.initialize( 
jcrMetadataRepository.getJcrSession() );
 
-        List<ArtifactMappingProvider> artifactMappingProviders = 
Arrays.asList( new DefaultArtifactMappingProvider(),
-                                                                               
 new NPandayArtifactMappingProvider() );
-        Maven2RepositoryPathTranslator translator = new 
Maven2RepositoryPathTranslator( artifactMappingProviders );
+        ConfigurableApplicationContext applicationContext = new 
PlexusClassPathXmlApplicationContext(
+            CONFIG_LOCATIONS );
 
         try
         {
@@ -63,14 +72,29 @@ public class PopulateRepoApp
                 basedir = new File( System.getProperty( "user.home" ),
                                     "Library/Application 
Support/Archiva/data/repositories/internal" );
             }
-            IOFileFilter dirFilter = new NotFileFilter( new 
WildcardFileFilter( ".index*" ) );
+
+            PopulateRepoAppConfig archivaConfig = (PopulateRepoAppConfig) 
applicationContext.getBean(
+                "archivaConfiguration" );
+            archivaConfig.addManagedRepo( REPO_ID, basedir );
+
+            Maven2RepositoryPathTranslator translator = 
(Maven2RepositoryPathTranslator) applicationContext.getBean(
+                "repositoryPathTranslator#maven2" );
+
+            Maven2RepositoryStorage storage = (Maven2RepositoryStorage) 
applicationContext.getBean(
+                "repositoryStorage#maven2" );
+
+            File dir = basedir;
+//            File dir = new File( basedir, "org/apache/archiva" );
+
+            IOFileFilter dirFilter = new NotFileFilter( new 
WildcardFileFilter( new String[]{".index*", ".archiva"} ) );
             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( dir, fileFilter, 
dirFilter );
 
             int index = basedir.getAbsolutePath().length() + 1;
 
             int count = 0, total = files.size();
+            System.out.println( "Processing " + total + " files" );
             for ( File f : files )
             {
                 String path = f.getAbsolutePath().substring( index );
@@ -83,6 +107,21 @@ public class PopulateRepoApp
 
                 // skipping checksums for speed
 
+                try
+                {
+                    ProjectVersionMetadata metadata;
+                    metadata = storage.readProjectVersionMetadata( REPO_ID, 
artifact.getNamespace(),
+                                                                   
artifact.getProject(),
+                                                                   
artifact.getProjectVersion() );
+
+                    jcrMetadataRepository.updateProjectVersion( REPO_ID, 
artifact.getNamespace(), artifact.getProject(),
+                                                                metadata );
+                }
+                catch ( Exception e )
+                {
+                    log.warn( "Unable to read POM, skipping: " + 
e.getMessage() );
+                }
+
                 jcrMetadataRepository.updateArtifact( REPO_ID, 
artifact.getNamespace(), artifact.getProject(),
                                                       
artifact.getProjectVersion(), artifact );
 
@@ -97,6 +136,7 @@ public class PopulateRepoApp
         finally
         {
             jcrMetadataRepository.close();
+            applicationContext.close();
         }
     }
 }

Added: 
archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/PopulateRepoAppConfig.java
URL: 
http://svn.apache.org/viewvc/archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/PopulateRepoAppConfig.java?rev=1059754&view=auto
==============================================================================
--- 
archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/PopulateRepoAppConfig.java
 (added)
+++ 
archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/PopulateRepoAppConfig.java
 Mon Jan 17 05:38:00 2011
@@ -0,0 +1,75 @@
+package org.apache.archiva.metadata.repository.jcr;
+
+/*
+ * 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.
+ */
+
+import org.apache.maven.archiva.configuration.ArchivaConfiguration;
+import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.configuration.ConfigurationListener;
+import 
org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+import org.codehaus.plexus.registry.RegistryException;
+import org.codehaus.plexus.registry.RegistryListener;
+
+import java.io.File;
+
+public class PopulateRepoAppConfig
+    implements ArchivaConfiguration
+{
+    private Configuration configuration = new Configuration();
+
+    public Configuration getConfiguration()
+    {
+        return configuration;
+    }
+
+    public void save( Configuration configuration )
+        throws RegistryException, IndeterminateConfigurationException
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean isDefaulted()
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public void addListener( ConfigurationListener listener )
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public void removeListener( ConfigurationListener listener )
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public void addChangeListener( RegistryListener listener )
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public void addManagedRepo( String id, File location )
+    {
+        ManagedRepositoryConfiguration config = new 
ManagedRepositoryConfiguration();
+        config.setId( id );
+        config.setLocation( location.getAbsolutePath() );
+        configuration.addManagedRepository( config );
+    }
+}

Modified: 
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/QueryRepoApp.java?rev=1059754&r1=1059753&r2=1059754&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/QueryRepoApp.java
 Mon Jan 17 05:38:00 2011
@@ -25,6 +25,7 @@ import org.apache.jackrabbit.core.Transi
 import org.apache.jackrabbit.core.config.RepositoryConfig;
 
 import java.util.Collections;
+import javax.jcr.Node;
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
@@ -53,11 +54,17 @@ public class QueryRepoApp
 
             QueryManager queryManager = 
session.getWorkspace().getQueryManager();
 
-            queryAllArtifactsInRepo( queryManager );
+            queryProjectsWithDependency( queryManager, "org.springframework", 
"spring-web", "2.5.6" );
 
-            queryAllProjectsInRepo( queryManager );
+            queryProjectsWithDependency( queryManager, "org.springframework", 
"spring-web" );
 
-            queryAllGroupsInRepo( queryManager );
+            queryProjectsWithDependency( queryManager, "org.codehaus.plexus", 
"plexus-utils" );
+
+//            queryAllArtifactsInRepo( queryManager );
+//
+//            queryAllProjectsInRepo( queryManager );
+//
+//            queryAllGroupsInRepo( queryManager );
         }
         finally
         {
@@ -65,6 +72,12 @@ public class QueryRepoApp
         }
     }
 
+    private static void queryProjectsWithDependency( QueryManager 
queryManager, String namespace, String project )
+        throws RepositoryException
+    {
+        queryProjectsWithDependency( queryManager, namespace, project, null );
+    }
+
     private static void queryAllGroupsInRepo( QueryManager queryManager )
         throws RepositoryException
     {
@@ -82,6 +95,50 @@ public class QueryRepoApp
                 " ms" );
     }
 
+    private static void queryProjectsWithDependency( QueryManager 
queryManager, String namespace, String project,
+                                                     String version )
+        throws RepositoryException
+    {
+        System.out.println( "querying dependencies on project " + namespace + 
":" + project + ":" + version );
+
+        long time = System.currentTimeMillis();
+        String q = "SELECT * FROM archiva:dependency WHERE jcr:path LIKE '%/" 
+ namespace + "/" + project;
+        if ( version != null )
+        {
+            q += "/" + version;
+        }
+        q += "/%' ORDER BY jcr:score";
+        Query query = queryManager.createQuery( q, Query.SQL );
+
+        QueryResult execute = query.execute();
+        System.out.println( "query in " + ( System.currentTimeMillis() - time 
) + " ms" );
+        time = System.currentTimeMillis();
+        for ( Row r : JcrUtils.getRows( execute ) )
+        {
+            Node n = r.getNode();
+            n = n.getParent(); // dependency version
+            String dependencyVersion = n.getName();
+
+            n = n.getParent(); // dependency project
+            n = n.getParent(); // dependency namespace
+            n = n.getParent(); // dependencies element
+            n = n.getParent(); // project version
+
+            String usedByProjectVersion = n.getName();
+
+            n = n.getParent(); // project
+            String usedByProject = n.getName();
+
+            n = n.getParent(); // namespace
+            String usedByNamespace = n.getProperty( "namespace" ).getString();
+
+//            System.out.println(
+//                usedByNamespace + ":" + usedByProject + ":" + 
usedByProjectVersion + " -> " + dependencyVersion );
+        }
+
+        System.out.println( "results in " + ( System.currentTimeMillis() - 
time ) + " ms" );
+    }
+
     private static void queryAllProjectsInRepo( QueryManager queryManager )
         throws RepositoryException
     {

Added: 
archiva/sandbox/populate-jcr-repo/src/main/resources/META-INF/spring-context.xml
URL: 
http://svn.apache.org/viewvc/archiva/sandbox/populate-jcr-repo/src/main/resources/META-INF/spring-context.xml?rev=1059754&view=auto
==============================================================================
--- 
archiva/sandbox/populate-jcr-repo/src/main/resources/META-INF/spring-context.xml
 (added)
+++ 
archiva/sandbox/populate-jcr-repo/src/main/resources/META-INF/spring-context.xml
 Mon Jan 17 05:38:00 2011
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+
+<beans xmlns="http://www.springframework.org/schema/beans";
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd";>
+  <bean name="archivaConfiguration" 
class="org.apache.archiva.metadata.repository.jcr.PopulateRepoAppConfig"/>
+</beans>
\ No newline at end of file


Reply via email to