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