Author: olamy
Date: Wed Mar 26 12:16:02 2014
New Revision: 1581807

URL: http://svn.apache.org/r1581807
Log:
add unit test for method getProjectReferences

Modified:
    
archiva/trunk/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/ProjectVersionReference.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-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
    
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/DefaultCassandraArchivaManager.java
    
archiva/trunk/archiva-modules/plugins/metadata-store-jcr/src/main/java/org/apache/archiva/metadata/repository/jcr/JcrMetadataRepository.java

Modified: 
archiva/trunk/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/ProjectVersionReference.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/ProjectVersionReference.java?rev=1581807&r1=1581806&r2=1581807&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/ProjectVersionReference.java
 (original)
+++ 
archiva/trunk/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/ProjectVersionReference.java
 Wed Mar 26 12:16:02 2014
@@ -29,6 +29,20 @@ public class ProjectVersionReference
 
     private String projectVersion;
 
+    public ProjectVersionReference()
+    {
+        // no op
+    }
+
+    public ProjectVersionReference( ReferenceType referenceType, String 
projectId, String namespace,
+                                    String projectVersion )
+    {
+        this.referenceType = referenceType;
+        this.projectId = projectId;
+        this.namespace = namespace;
+        this.projectVersion = projectVersion;
+    }
+
     public void setReferenceType( ReferenceType referenceType )
     {
         this.referenceType = referenceType;
@@ -74,4 +88,48 @@ public class ProjectVersionReference
         DEPENDENCY,
         PARENT
     }
+
+    @Override
+    public boolean equals( Object o )
+    {
+        if ( this == o )
+        {
+            return true;
+        }
+        if ( o == null || getClass() != o.getClass() )
+        {
+            return false;
+        }
+
+        ProjectVersionReference that = (ProjectVersionReference) o;
+
+        if ( !namespace.equals( that.namespace ) )
+        {
+            return false;
+        }
+        if ( !projectId.equals( that.projectId ) )
+        {
+            return false;
+        }
+        if ( !projectVersion.equals( that.projectVersion ) )
+        {
+            return false;
+        }
+        if ( referenceType != that.referenceType )
+        {
+            return false;
+        }
+
+        return true;
+    }
+
+    @Override
+    public int hashCode()
+    {
+        int result = referenceType.hashCode();
+        result = 31 * result + projectId.hashCode();
+        result = 31 * result + namespace.hashCode();
+        result = 31 * result + projectVersion.hashCode();
+        return result;
+    }
 }

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=1581807&r1=1581806&r2=1581807&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
 Wed Mar 26 12:16:02 2014
@@ -31,6 +31,7 @@ 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.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
 import org.assertj.core.util.Sets;
@@ -56,8 +57,8 @@ import java.util.TimeZone;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
-@RunWith(ArchivaSpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = { "classpath*:/META-INF/spring-context.xml", 
"classpath*:/spring-context.xml" })
+@RunWith( ArchivaSpringJUnit4ClassRunner.class )
+@ContextConfiguration( locations = { 
"classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" } )
 public abstract class AbstractMetadataRepositoryTest
     extends TestCase
 {
@@ -1368,6 +1369,57 @@ public abstract class AbstractMetadataRe
     }
 
 
+    @Test
+    public void testgetProjectReferences()
+        throws Exception
+    {
+        ProjectVersionMetadata metadata = new ProjectVersionMetadata();
+        metadata.setId( TEST_PROJECT_VERSION );
+
+        metadata.setName( "project name" );
+        metadata.setDescription( "project description" );
+        metadata.setUrl( "the url" );
+
+        Dependency d = new Dependency();
+        d.setArtifactId( "artifactId" );
+        d.setClassifier( "classifier" );
+        d.setGroupId( "groupId" );
+        d.setScope( "scope" );
+        d.setSystemPath( "system path" );
+        d.setType( "type" );
+        d.setVersion( "version" );
+        d.setOptional( true );
+        metadata.addDependency( d );
+
+        d = new Dependency();
+        d.setArtifactId( "artifactId1" );
+        d.setClassifier( "classifier" );
+        d.setGroupId( "groupId" );
+        d.setScope( "scope" );
+        d.setSystemPath( "system path" );
+        d.setType( "type" );
+        d.setVersion( "version1" );
+        d.setOptional( true );
+        metadata.addDependency( d );
+
+        repository.updateProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, 
TEST_PROJECT, metadata );
+
+        repository.save();
+
+        metadata = repository.getProjectVersion( TEST_REPO_ID, TEST_NAMESPACE, 
TEST_PROJECT, TEST_PROJECT_VERSION );
+
+        Collection<ProjectVersionReference> references =
+            repository.getProjectReferences( TEST_REPO_ID, d.getGroupId(), 
d.getArtifactId(), d.getVersion() );
+
+        log.info( "references: {}", references );
+
+        assertThat( references ).isNotNull().hasSize( 1 ).contains(
+            new ProjectVersionReference( 
ProjectVersionReference.ReferenceType.DEPENDENCY, TEST_PROJECT, TEST_NAMESPACE,
+                                         TEST_PROJECT_VERSION ) );
+
+    }
+
+
     private static ProjectMetadata createProject()
     {
         return createProject( TEST_NAMESPACE );

Modified: 
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java?rev=1581807&r1=1581806&r2=1581807&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
 (original)
+++ 
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
 Wed Mar 26 12:16:02 2014
@@ -875,7 +875,7 @@ public class CassandraMetadataRepository
 
             recordLicenses( key, versionMetadata.getLicenses() );
 
-            recordDependencies( key, versionMetadata.getDependencies() );
+            recordDependencies( key, versionMetadata.getDependencies(), 
repositoryId );
 
             MutationResult mutationResult = mutator.execute();
         }
@@ -942,7 +942,7 @@ public class CassandraMetadataRepository
             recordLicenses( key, versionMetadata.getLicenses() );
 
             removeDependencies( key );
-            recordDependencies( key, versionMetadata.getDependencies() );
+            recordDependencies( key, versionMetadata.getDependencies(), 
repositoryId );
 
             projectVersionMetadataTemplate.update( updater );
 
@@ -1234,7 +1234,8 @@ public class CassandraMetadataRepository
     }
 
 
-    protected void recordDependencies( String projectVersionMetadataKey, 
List<Dependency> dependencies )
+    protected void recordDependencies( String projectVersionMetadataKey, 
List<Dependency> dependencies,
+                                       String repositoryId )
     {
 
         if ( dependencies == null || dependencies.isEmpty() )
@@ -1252,6 +1253,8 @@ public class CassandraMetadataRepository
             addInsertion( dependencyMutator, keyDependency, cfDependency, 
"projectVersionMetadataModel.key",
                           projectVersionMetadataKey );
 
+            addInsertion( dependencyMutator, keyDependency, cfDependency, 
"repositoryName", repositoryId );
+
             addInsertion( dependencyMutator, keyDependency, cfDependency, 
"classifier", dependency.getClassifier() );
 
             addInsertion( dependencyMutator, keyDependency, cfDependency, 
"optional",
@@ -1918,8 +1921,36 @@ public class CassandraMetadataRepository
                                                                      String 
projectVersion )
         throws MetadataResolutionException
     {
-        // FIXME implement this
-        return Collections.emptyList();
+        QueryResult<OrderedRows<String, String, String>> result = HFactory //
+            .createRangeSlicesQuery( keyspace, ss, ss, ss ) //
+            .setColumnFamily( 
cassandraArchivaManager.getDependencyFamilyName() ) //
+            .setColumnNames( "projectVersionMetadataModel.key" ) //
+            .addEqualsExpression( "repositoryName", repoId ) //
+            .addEqualsExpression( "groupId", namespace ) //
+            .addEqualsExpression( "artifactId", projectId ) //
+            .addEqualsExpression( "version", projectVersion ) //
+            .execute();
+
+        List<String> dependenciesIds = new ArrayList<String>( 
result.get().getCount() );
+
+        for ( Row<String, String, String> row : result.get().getList() )
+        {
+            dependenciesIds.add( getStringValue( row.getColumnSlice(), 
"projectVersionMetadataModel.key" ) );
+        }
+
+        List<ProjectVersionReference> references = new 
ArrayList<ProjectVersionReference>( result.get().getCount() );
+
+        for ( String key : dependenciesIds )
+        {
+            ColumnFamilyResult<String, String> columnFamilyResult =
+                this.projectVersionMetadataTemplate.queryColumns( key );
+            references.add( new ProjectVersionReference( 
ProjectVersionReference.ReferenceType.DEPENDENCY, //
+                                                         
columnFamilyResult.getString( "projectId" ), //
+                                                         
columnFamilyResult.getString( "namespaceId" ), //
+                                                         
columnFamilyResult.getString( "projectVersion" ) ) );
+        }
+
+        return references;
     }
 
     @Override

Modified: 
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/DefaultCassandraArchivaManager.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/DefaultCassandraArchivaManager.java?rev=1581807&r1=1581806&r2=1581807&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/DefaultCassandraArchivaManager.java
 (original)
+++ 
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/DefaultCassandraArchivaManager.java
 Wed Mar 26 12:16:02 2014
@@ -375,13 +375,6 @@ public class DefaultCassandraArchivaMana
 
             // creating indexes for cql query
 
-            BasicColumnDefinition projectVersionMetadataIdColumn = new 
BasicColumnDefinition();
-            projectVersionMetadataIdColumn.setName( 
StringSerializer.get().toByteBuffer( "projectVersionMetadataId" ) );
-            projectVersionMetadataIdColumn.setIndexName( 
"projectVersionMetadataId" );
-            projectVersionMetadataIdColumn.setIndexType( ColumnIndexType.KEYS 
);
-            projectVersionMetadataIdColumn.setValidationClass( 
ComparatorType.UTF8TYPE.getClassName() );
-            mailingListCf.addColumnDefinition( projectVersionMetadataIdColumn 
);
-
         }
 
         // license table
@@ -394,13 +387,6 @@ public class DefaultCassandraArchivaMana
 
             // creating indexes for cql query
 
-            BasicColumnDefinition projectVersionMetadataIdColumn = new 
BasicColumnDefinition();
-            projectVersionMetadataIdColumn.setName( 
StringSerializer.get().toByteBuffer( "projectVersionMetadataId" ) );
-            projectVersionMetadataIdColumn.setIndexName( 
"projectVersionMetadataId" );
-            projectVersionMetadataIdColumn.setIndexType( ColumnIndexType.KEYS 
);
-            projectVersionMetadataIdColumn.setValidationClass( 
ComparatorType.UTF8TYPE.getClassName() );
-            licenseCf.addColumnDefinition( projectVersionMetadataIdColumn );
-
         }
 
         // dependency table
@@ -413,12 +399,12 @@ public class DefaultCassandraArchivaMana
 
             // creating indexes for cql query
 
-            BasicColumnDefinition projectVersionMetadataIdColumn = new 
BasicColumnDefinition();
-            projectVersionMetadataIdColumn.setName( 
StringSerializer.get().toByteBuffer( "projectVersionMetadataId" ) );
-            projectVersionMetadataIdColumn.setIndexName( 
"projectVersionMetadataId" );
-            projectVersionMetadataIdColumn.setIndexType( ColumnIndexType.KEYS 
);
-            projectVersionMetadataIdColumn.setValidationClass( 
ComparatorType.UTF8TYPE.getClassName() );
-            dependencyCf.addColumnDefinition( projectVersionMetadataIdColumn );
+            BasicColumnDefinition groupIdColumn = new BasicColumnDefinition();
+            groupIdColumn.setName( StringSerializer.get().toByteBuffer( 
"groupId" ) );
+            groupIdColumn.setIndexName( "groupIdIdx" );
+            groupIdColumn.setIndexType( ColumnIndexType.KEYS );
+            groupIdColumn.setValidationClass( 
ComparatorType.UTF8TYPE.getClassName() );
+            dependencyCf.addColumnDefinition( groupIdColumn );
 
         }
 

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=1581807&r1=1581806&r2=1581807&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
 Wed Mar 26 12:16:02 2014
@@ -987,6 +987,7 @@ public class JcrMetadataRepository
                                                                      String 
projectId, String projectVersion )
         throws MetadataResolutionException
     {
+
         List<ProjectVersionReference> references = new 
ArrayList<ProjectVersionReference>();
 
         // TODO: bind variables instead


Reply via email to