Author: brett
Date: Sat Mar 26 14:00:06 2011
New Revision: 1085722
URL: http://svn.apache.org/viewvc?rev=1085722&view=rev
Log:
[MRM-1327] fix 'used by' to work under JCR store. This will still have problems
under the file store at the moment
Modified:
archiva/sandbox/populate-jcr-repo/src/main/java/org/apache/archiva/metadata/repository/jcr/QueryRepoApp.java
archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java
archiva/trunk/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java
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=1085722&r1=1085721&r2=1085722&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
Sat Mar 26 14:00:06 2011
@@ -102,13 +102,16 @@ public class QueryRepoApp
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;
+
+ // TODO: bind variables instead
+ String q =
+ "SELECT * FROM [archiva:dependency] WHERE
ISDESCENDANTNODE([/repositories/internal/content]) AND [groupId]='" +
+ namespace + "' AND [artifactId]='" + project + "'";
if ( version != null )
{
- q += "/" + version;
+ q += " AND [version]='" + version + "'";
}
- q += "/%' ORDER BY jcr:score";
- Query query = queryManager.createQuery( q, Query.SQL );
+ Query query = queryManager.createQuery( q, Query.JCR_SQL2 );
QueryResult execute = query.execute();
System.out.println( "query in " + ( System.currentTimeMillis() - time
) + " ms" );
@@ -116,11 +119,11 @@ public class QueryRepoApp
for ( Row r : JcrUtils.getRows( execute ) )
{
Node n = r.getNode();
- n = n.getParent(); // dependency version
+// n = n.getParent(); // dependency version
String dependencyVersion = n.getName();
- n = n.getParent(); // dependency project
- n = n.getParent(); // dependency namespace
+// n = n.getParent(); // dependency project
+// n = n.getParent(); // dependency namespace
n = n.getParent(); // dependencies element
n = n.getParent(); // project version
@@ -132,8 +135,8 @@ public class QueryRepoApp
n = n.getParent(); // namespace
String usedByNamespace = n.getProperty( "namespace" ).getString();
-// System.out.println(
-// usedByNamespace + ":" + usedByProject + ":" +
usedByProjectVersion + " -> " + dependencyVersion );
+ System.out.println(
+ usedByNamespace + ":" + usedByProject + ":" +
usedByProjectVersion + " -> " + dependencyVersion );
}
System.out.println( "results in " + ( System.currentTimeMillis() -
time ) + " ms" );
Modified:
archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java?rev=1085722&r1=1085721&r2=1085722&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java
(original)
+++
archiva/trunk/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java
Sat Mar 26 14:00:06 2011
@@ -30,7 +30,6 @@ import org.apache.archiva.metadata.model
import org.apache.archiva.metadata.model.Organization;
import org.apache.archiva.metadata.model.ProjectMetadata;
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
-import org.apache.archiva.metadata.model.ProjectVersionReference;
import org.apache.archiva.metadata.model.Scm;
import org.codehaus.plexus.spring.PlexusInSpringTestCase;
@@ -307,29 +306,6 @@ public abstract class AbstractMetadataRe
assertTrue( d.isOptional() );
}
- public void testUpdateProjectReference()
- throws Exception
- {
- ProjectVersionReference reference = new ProjectVersionReference();
- reference.setNamespace( "another.namespace" );
- reference.setProjectId( "another-project-id" );
- reference.setProjectVersion( "1.1" );
- reference.setReferenceType(
ProjectVersionReference.ReferenceType.DEPENDENCY );
-
- repository.updateProjectReference( TEST_REPO_ID, TEST_NAMESPACE,
TEST_PROJECT, TEST_PROJECT_VERSION,
- reference );
-
- Collection<ProjectVersionReference> references =
repository.getProjectReferences( TEST_REPO_ID, TEST_NAMESPACE,
-
TEST_PROJECT,
-
TEST_PROJECT_VERSION );
- assertEquals( 1, references.size() );
- reference = references.iterator().next();
- assertEquals( "another.namespace", reference.getNamespace() );
- assertEquals( "another-project-id", reference.getProjectId() );
- assertEquals( "1.1", reference.getProjectVersion() );
- assertEquals( ProjectVersionReference.ReferenceType.DEPENDENCY,
reference.getReferenceType() );
- }
-
public void testGetRepositories()
throws Exception
{
Modified:
archiva/trunk/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java?rev=1085722&r1=1085721&r2=1085722&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java
(original)
+++
archiva/trunk/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java
Sat Mar 26 14:00:06 2011
@@ -943,42 +943,37 @@ public class JcrMetadataRepository
{
List<ProjectVersionReference> references = new
ArrayList<ProjectVersionReference>();
+ // TODO: bind variables instead
+ String q = "SELECT * FROM [archiva:dependency] WHERE
ISDESCENDANTNODE([/repositories/" + repositoryId +
+ "/content]) AND [groupId]='" + namespace + "' AND [artifactId]='"
+ projectId + "'";
+ if ( projectVersion != null )
+ {
+ q += " AND [version]='" + projectVersion + "'";
+ }
try
{
- Node root = session.getRootNode();
+ Query query =
session.getWorkspace().getQueryManager().createQuery( q, Query.JCR_SQL2 );
+ QueryResult result = query.execute();
- String path = getProjectVersionPath( repositoryId, namespace,
projectId, projectVersion ) + "/references";
- if ( root.hasNode( path ) )
+ for ( Node n : JcrUtils.getNodes( result ) )
{
- Node node = root.getNode( path );
-
- NodeIterator i = node.getNodes();
- while ( i.hasNext() )
- {
- Node ns = i.nextNode();
+ n = n.getParent(); // dependencies grouping element
- NodeIterator j = ns.getNodes();
+ n = n.getParent(); // project version
+ String usedByProjectVersion = n.getName();
- while ( j.hasNext() )
- {
- Node project = j.nextNode();
-
- NodeIterator k = project.getNodes();
-
- while ( k.hasNext() )
- {
- Node version = k.nextNode();
+ n = n.getParent(); // project
+ String usedByProject = n.getName();
- ProjectVersionReference ref = new
ProjectVersionReference();
- ref.setNamespace( ns.getName() );
- ref.setProjectId( project.getName() );
- ref.setProjectVersion( version.getName() );
- String type = version.getProperty( "type"
).getString();
- ref.setReferenceType(
ProjectVersionReference.ReferenceType.valueOf( type ) );
- references.add( ref );
- }
- }
- }
+ n = n.getParent(); // namespace
+ String usedByNamespace = n.getProperty( "namespace"
).getString();
+
+ ProjectVersionReference ref = new ProjectVersionReference();
+ ref.setNamespace( usedByNamespace );
+ ref.setProjectId( usedByProject );
+ ref.setProjectVersion( usedByProjectVersion );
+ ref.setReferenceType(
ProjectVersionReference.ReferenceType.DEPENDENCY );
+ references.add( ref );
}
}
catch ( RepositoryException e )