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