Author: olamy
Date: Wed Mar 26 02:40:51 2014
New Revision: 1581638
URL: http://svn.apache.org/r1581638
Log:
implement cassandra record of dependencies
Modified:
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraArchivaManager.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-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java
Modified:
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraArchivaManager.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraArchivaManager.java?rev=1581638&r1=1581637&r2=1581638&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraArchivaManager.java
(original)
+++
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraArchivaManager.java
Wed Mar 26 02:40:51 2014
@@ -54,4 +54,6 @@ public interface CassandraArchivaManager
String getLicenseFamilyName();
+ String getDependencyFamilyName();
+
}
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=1581638&r1=1581637&r2=1581638&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 02:40:51 2014
@@ -40,6 +40,7 @@ import me.prettyprint.hector.api.query.R
import org.apache.archiva.configuration.ArchivaConfiguration;
import org.apache.archiva.metadata.model.ArtifactMetadata;
import org.apache.archiva.metadata.model.CiManagement;
+import org.apache.archiva.metadata.model.Dependency;
import org.apache.archiva.metadata.model.FacetedMetadata;
import org.apache.archiva.metadata.model.IssueManagement;
import org.apache.archiva.metadata.model.License;
@@ -108,6 +109,8 @@ public class CassandraMetadataRepository
private final ColumnFamilyTemplate<String, String> licenseTemplate;
+ private final ColumnFamilyTemplate<String, String> dependencyTemplate;
+
public CassandraMetadataRepository( Map<String, MetadataFacetFactory>
metadataFacetFactories,
ArchivaConfiguration configuration,
CassandraArchivaManager
cassandraArchivaManager )
@@ -154,6 +157,13 @@ public class CassandraMetadataRepository
//
StringSerializer.get(), //
StringSerializer.get() );
+
+ this.dependencyTemplate =
+ new ThriftColumnFamilyTemplate<String, String>(
cassandraArchivaManager.getKeyspace(), //
+
cassandraArchivaManager.getDependencyFamilyName(),
+ //
+
StringSerializer.get(), //
+
StringSerializer.get() );
}
@@ -902,13 +912,12 @@ public class CassandraMetadataRepository
}
}
- if ( versionMetadata.getMailingLists() != null )
- {
- recordMailingList( key, versionMetadata.getMailingLists() );
- }
+ recordMailingList( key, versionMetadata.getMailingLists() );
recordLicenses( key, versionMetadata.getLicenses() );
+ recordDependencies( key, versionMetadata.getDependencies() );
+
MutationResult mutationResult = mutator.execute();
}
else
@@ -973,6 +982,9 @@ public class CassandraMetadataRepository
removeLicenses( key );
recordLicenses( key, versionMetadata.getLicenses() );
+ removeDependencies( key );
+ recordDependencies( key, versionMetadata.getDependencies() );
+
projectVersionMetadataModelTemplate.update( updater );
}
@@ -1047,7 +1059,7 @@ public class CassandraMetadataRepository
}
projectVersionMetadata.setMailingLists( getMailingLists( key ) );
projectVersionMetadata.setLicenses( getLicenses( key ) );
- // FIXME complete collections !!
+ projectVersionMetadata.setDependencies( getDependencies( key ) );
// facets
StringSerializer ss = StringSerializer.get();
@@ -1204,9 +1216,9 @@ public class CassandraMetadataRepository
addInsertion( licenseMutator, keyLicense, cfLicense,
"projectVersionMetadataModel.key",
projectVersionMetadataKey );
- addInsertion( licenseMutator, keyLicense, cfLicense,
"license.name", license.getName() );
+ addInsertion( licenseMutator, keyLicense, cfLicense, "name",
license.getName() );
- addInsertion( licenseMutator, keyLicense, cfLicense,
"license.url", license.getUrl() );
+ addInsertion( licenseMutator, keyLicense, cfLicense, "url",
license.getUrl() );
}
licenseMutator.execute();
@@ -1245,13 +1257,108 @@ public class CassandraMetadataRepository
{
ColumnFamilyResult<String, String> columnFamilyResult =
this.licenseTemplate.queryColumns( row.getKey() );
- licenses.add( new License( columnFamilyResult.getString(
"license.name" ),
- columnFamilyResult.getString(
"license.url" ) ) );
+ licenses.add(
+ new License( columnFamilyResult.getString( "name" ),
columnFamilyResult.getString( "url" ) ) );
}
return licenses;
}
+
+ protected void recordDependencies( String projectVersionMetadataKey,
List<Dependency> dependencies )
+ {
+
+ if ( dependencies == null || dependencies.isEmpty() )
+ {
+ return;
+ }
+ Mutator<String> dependencyMutator =
this.dependencyTemplate.createMutator();
+
+ for ( Dependency dependency : dependencies )
+ {
+ // we don't care about the key as the real used one with the
projectVersionMetadata
+ String keyDependency = UUID.randomUUID().toString();
+ String cfDependency =
cassandraArchivaManager.getDependencyFamilyName();
+
+ addInsertion( dependencyMutator, keyDependency, cfDependency,
"projectVersionMetadataModel.key",
+ projectVersionMetadataKey );
+
+ addInsertion( dependencyMutator, keyDependency, cfDependency,
"classifier", dependency.getClassifier() );
+
+ addInsertion( dependencyMutator, keyDependency, cfDependency,
"optional",
+ Boolean.toString( dependency.isOptional() ) );
+
+ addInsertion( dependencyMutator, keyDependency, cfDependency,
"scope", dependency.getScope() );
+
+ addInsertion( dependencyMutator, keyDependency, cfDependency,
"systemPath", dependency.getSystemPath() );
+
+ addInsertion( dependencyMutator, keyDependency, cfDependency,
"type", dependency.getType() );
+
+ addInsertion( dependencyMutator, keyDependency, cfDependency,
"artifactId", dependency.getArtifactId() );
+
+ addInsertion( dependencyMutator, keyDependency, cfDependency,
"groupId", dependency.getGroupId() );
+
+ addInsertion( dependencyMutator, keyDependency, cfDependency,
"version", dependency.getVersion() );
+
+ } dependencyMutator.execute();
+ }
+
+ protected void removeDependencies( String projectVersionMetadataKey )
+ {
+ StringSerializer ss = StringSerializer.get();
+ QueryResult<OrderedRows<String, String, String>> result =
+ HFactory.createRangeSlicesQuery(
cassandraArchivaManager.getKeyspace(), ss, ss, ss ) //
+ .setColumnFamily(
cassandraArchivaManager.getDependencyFamilyName() ) //
+ .setColumnNames( "groupId" ) //
+ .setRowCount( Integer.MAX_VALUE ) //
+ .addEqualsExpression( "projectVersionMetadataModel.key",
projectVersionMetadataKey ) //
+ .execute();
+ for ( Row<String, String, String> row : result.get() )
+ {
+ this.dependencyTemplate.deleteRow( row.getKey() );
+ }
+ }
+
+ protected List<Dependency> getDependencies( String
projectVersionMetadataKey )
+ {
+ List<Dependency> dependencies = new ArrayList<Dependency>();
+
+ StringSerializer ss = StringSerializer.get();
+ QueryResult<OrderedRows<String, String, String>> result =
+ HFactory.createRangeSlicesQuery(
cassandraArchivaManager.getKeyspace(), ss, ss, ss ) //
+ .setColumnFamily(
cassandraArchivaManager.getDependencyFamilyName() ) //
+ .setColumnNames( "projectVersionMetadataModel.key" ) //
+ .setRowCount( Integer.MAX_VALUE ) //
+ .addEqualsExpression( "projectVersionMetadataModel.key",
projectVersionMetadataKey ) //
+ .execute();
+
+ for ( Row<String, String, String> row : result.get() )
+ {
+ ColumnFamilyResult<String, String> columnFamilyResult =
this.dependencyTemplate.queryColumns( row.getKey() );
+
+ Dependency dependency = new Dependency();
+ dependency.setClassifier( columnFamilyResult.getString(
"classifier" ) );
+
+ dependency.setOptional( Boolean.parseBoolean(
columnFamilyResult.getString( "optional" ) ) );
+
+ dependency.setScope( columnFamilyResult.getString( "scope" ) );
+
+ dependency.setSystemPath( columnFamilyResult.getString(
"systemPath" ) );
+
+ dependency.setType( columnFamilyResult.getString( "type" ) );
+
+ dependency.setArtifactId( columnFamilyResult.getString(
"artifactId" ) );
+
+ dependency.setGroupId( columnFamilyResult.getString( "groupId" ) );
+
+ dependency.setVersion( columnFamilyResult.getString( "version" ) );
+
+ dependencies.add( dependency );
+ }
+
+ return dependencies;
+ }
+
@Override
public void updateArtifact( String repositoryId, String namespaceId,
String projectId, String projectVersion,
ArtifactMetadata artifactMeta )
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=1581638&r1=1581637&r2=1581638&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 02:40:51 2014
@@ -85,6 +85,8 @@ public class DefaultCassandraArchivaMana
private String licenseFamilyName = "license";
+ private String dependencyFamilyName = "dependency";
+
@PostConstruct
public void initialize()
@@ -401,6 +403,25 @@ public class DefaultCassandraArchivaMana
}
+ // dependency table
+ {
+ final ColumnFamilyDefinition dependencyCf =
+ HFactory.createColumnFamilyDefinition(
keyspace.getKeyspaceName(), //
+
getDependencyFamilyName(), //
+ ComparatorType.UTF8TYPE
);
+ cfds.add( dependencyCf );
+
+ // 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 );
+
+ }
+
// TODO take care of update new table!!
{ // ensure keyspace exists, here if the keyspace doesn't exist we
suppose nothing exist
if ( cluster.describeKeyspace( keyspaceName ) == null )
@@ -483,4 +504,9 @@ public class DefaultCassandraArchivaMana
{
return licenseFamilyName;
}
+
+ public String getDependencyFamilyName()
+ {
+ return dependencyFamilyName;
+ }
}
Modified:
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java?rev=1581638&r1=1581637&r2=1581638&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java
(original)
+++
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java
Wed Mar 26 02:40:51 2014
@@ -100,6 +100,9 @@ public class CassandraMetadataRepository
cassandraArchivaManager.getCluster().truncate(
cassandraArchivaManager.getKeyspace().getKeyspaceName(),
cassandraArchivaManager.getLicenseFamilyName() );
+ cassandraArchivaManager.getCluster().truncate(
cassandraArchivaManager.getKeyspace().getKeyspaceName(),
+
cassandraArchivaManager.getDependencyFamilyName() );
+
}
}