diff options
author | Olivier Lamy <olamy@apache.org> | 2014-03-24 06:16:09 +0000 |
---|---|---|
committer | Olivier Lamy <olamy@apache.org> | 2014-03-24 06:16:09 +0000 |
commit | 0df0a0a14ac5fbbd4a40638e913b0ea2f8bd48fc (patch) | |
tree | b0ebcf911e211fbfb67ee1dd617dd19577135ee0 | |
parent | e4f454dd78a04a5ffb05eeb3b908946653893c5d (diff) | |
download | archiva-0df0a0a14ac5fbbd4a40638e913b0ea2f8bd48fc.tar.gz archiva-0df0a0a14ac5fbbd4a40638e913b0ea2f8bd48fc.zip |
fix cleanup repository and namespace
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1580764 13f79535-47bb-0310-9956-ffa450edef68
2 files changed, 120 insertions, 94 deletions
diff --git a/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java b/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java index 2189b0ae3..9db23c698 100644 --- a/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java +++ b/archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java @@ -321,7 +321,6 @@ public abstract class AbstractMetadataRepositoryTest assertEquals( 1, metadata.getMailingLists().size() ); mailingList = metadata.getMailingLists().get( 0 ); assertEquals( "Foo List", mailingList.getName() ); - //assertEquals( Collections.singletonList( "other archive" ), mailingList.getOtherArchives() ); Assertions.assertThat( mailingList.getOtherArchives() ).isNotNull().isNotEmpty().hasSize( 1 ).contains( "other archive" ); diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java index 90d9a4e76..7af4581fc 100644 --- a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java +++ b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java @@ -261,16 +261,79 @@ public class CassandraMetadataRepository public void removeNamespace( String repositoryId, String namespaceId ) throws MetadataRepositoryException { + Keyspace keyspace = cassandraArchivaManager.getKeyspace(); try { String key = new Namespace.KeyBuilder().withNamespace( namespaceId ).withRepositoryId( repositoryId ).build(); - MutationResult result = - HFactory.createMutator( cassandraArchivaManager.getKeyspace(), new StringSerializer() ) // - .addDeletion( key, cassandraArchivaManager.getNamespaceFamilyName() ) // - .execute(); + HFactory.createMutator( cassandraArchivaManager.getKeyspace(), new StringSerializer() ) // + .addDeletion( key, cassandraArchivaManager.getNamespaceFamilyName() ) // + .execute(); + + QueryResult<OrderedRows<String, String, String>> result = HFactory // + .createRangeSlicesQuery( keyspace, // + StringSerializer.get(), // + StringSerializer.get(), // + StringSerializer.get() ) // + .setColumnFamily( cassandraArchivaManager.getProjectFamilyName() ) // + .setColumnNames( "repositoryName" ) // + .addEqualsExpression( "repositoryName", repositoryId ) // + .addEqualsExpression( "namespaceId", namespaceId ) // + .execute(); + + for ( Row<String, String, String> row : result.get() ) + { + this.projectTemplate.deleteRow( row.getKey() ); + } + result = HFactory // + .createRangeSlicesQuery( keyspace, // + StringSerializer.get(), // + StringSerializer.get(), // + StringSerializer.get() ) // + .setColumnFamily( cassandraArchivaManager.getProjectVersionMetadataModelFamilyName() ) // + .setColumnNames( "repositoryName" ) // + .addEqualsExpression( "repositoryName", repositoryId ) // + .addEqualsExpression( "namespaceId", namespaceId ) // + .execute(); + + for ( Row<String, String, String> row : result.get() ) + { + this.projectVersionMetadataModelTemplate.deleteRow( row.getKey() ); + } + + result = HFactory // + .createRangeSlicesQuery( keyspace, // + StringSerializer.get(), // + StringSerializer.get(), // + StringSerializer.get() ) // + .setColumnFamily( cassandraArchivaManager.getArtifactMetadataModelFamilyName() ) // + .setColumnNames( "repositoryName" ) // + .addEqualsExpression( "repositoryName", repositoryId ) // + .addEqualsExpression( "namespaceId", namespaceId ) // + .execute(); + + for ( Row<String, String, String> row : result.get() ) + { + this.artifactMetadataTemplate.deleteRow( row.getKey() ); + } + + result = HFactory // + .createRangeSlicesQuery( keyspace, // + StringSerializer.get(), // + StringSerializer.get(), // + StringSerializer.get() ) // + .setColumnFamily( cassandraArchivaManager.getMetadataFacetModelFamilyName() ) // + .setColumnNames( "repositoryName" ) // + .addEqualsExpression( "repositoryName", repositoryId ) // + .addEqualsExpression( "namespaceId", namespaceId ) // + .execute(); + + for ( Row<String, String, String> row : result.get() ) + { + this.metadataFacetTemplate.deleteRow( row.getKey() ); + } } catch ( HInvalidRequestException e ) @@ -286,21 +349,16 @@ public class CassandraMetadataRepository throws MetadataRepositoryException { - // FIXME remove all datas attached to the repositoryId - - // retrieve and delete all namespace with this repositoryId + StringSerializer ss = StringSerializer.get(); // TODO use cql queries to delete all List<String> namespacesKey = new ArrayList<String>(); Keyspace keyspace = cassandraArchivaManager.getKeyspace(); QueryResult<OrderedRows<String, String, String>> result = HFactory // - .createRangeSlicesQuery( keyspace, // - StringSerializer.get(), // - StringSerializer.get(), // - StringSerializer.get() ) // + .createRangeSlicesQuery( keyspace, ss, ss, ss ) // .setColumnFamily( cassandraArchivaManager.getNamespaceFamilyName() ) // - .setColumnNames( "repositoryName", "name" ) // + .setColumnNames( "repositoryName" ) // .addEqualsExpression( "repositoryName", repositoryId ) // .execute(); @@ -309,109 +367,78 @@ public class CassandraMetadataRepository namespacesKey.add( row.getKey() ); } - HFactory.createMutator( cassandraArchivaManager.getKeyspace(), new StringSerializer() ) // + HFactory.createMutator( cassandraArchivaManager.getKeyspace(), ss ) // .addDeletion( namespacesKey, cassandraArchivaManager.getNamespaceFamilyName() ) // .execute(); //delete repositoryId - HFactory.createMutator( cassandraArchivaManager.getKeyspace(), new StringSerializer() ) // + HFactory.createMutator( cassandraArchivaManager.getKeyspace(), ss ) // .addDeletion( repositoryId, cassandraArchivaManager.getRepositoryFamilyName() ) // .execute(); -/* - final List<ArtifactMetadataModel> artifactMetadataModels = new ArrayList<ArtifactMetadataModel>(); - // remove data related to the repository - this.getArtifactMetadataModelEntityManager().visitAll( new Function<ArtifactMetadataModel, Boolean>() - { - @Override - public Boolean apply( ArtifactMetadataModel artifactMetadataModel ) - { - if ( artifactMetadataModel != null ) - { - if ( StringUtils.equals( artifactMetadataModel.getRepositoryId(), repositoryId ) ) - { - artifactMetadataModels.add( artifactMetadataModel ); - } - } - return Boolean.TRUE; - } - } ); - - getArtifactMetadataModelEntityManager().remove( artifactMetadataModels ); - final List<Namespace> namespaces = new ArrayList<Namespace>(); + result = HFactory // + .createRangeSlicesQuery( keyspace, // + StringSerializer.get(), // + StringSerializer.get(), // + StringSerializer.get() ) // + .setColumnFamily( cassandraArchivaManager.getProjectFamilyName() ) // + .setColumnNames( "repositoryName" ) // + .addEqualsExpression( "repositoryName", repositoryId ) // + .execute(); - getNamespaceEntityManager().visitAll( new Function<Namespace, Boolean>() + for ( Row<String, String, String> row : result.get() ) { - @Override - public Boolean apply( Namespace namespace ) - { - if ( namespace != null ) - { - if ( StringUtils.equals( namespace.getRepository().getId(), repositoryId ) ) - { - namespaces.add( namespace ); - } - } - return Boolean.TRUE; - } - } ); + this.projectTemplate.deleteRow( row.getKey() ); + } - getNamespaceEntityManager().remove( namespaces ); + result = HFactory // + .createRangeSlicesQuery( keyspace, // + StringSerializer.get(), // + StringSerializer.get(), // + StringSerializer.get() ) // + .setColumnFamily( cassandraArchivaManager.getProjectVersionMetadataModelFamilyName() ) // + .setColumnNames( "repositoryName" ) // + .addEqualsExpression( "repositoryName", repositoryId ) // + .execute(); - final List<Project> projects = new ArrayList<Project>(); - getProjectEntityManager().visitAll( new Function<Project, Boolean>() + for ( Row<String, String, String> row : result.get() ) { - @Override - public Boolean apply( Project project ) - { - if ( project != null ) - { - if ( StringUtils.equals( project.getNamespace().getRepository().getId(), repositoryId ) ) - { - projects.add( project ); - } - } - return Boolean.TRUE; - } - } ); - - getProjectEntityManager().remove( projects ); - - // TODO cleanup or not - //final List<MetadataFacetModel> metadataFacetModels = new ArrayList<MetadataFacetModel>( ); - //getMetadataFacetModelEntityManager().visitAll( new Function<MetadataFacetModel, Boolean>() + this.projectVersionMetadataModelTemplate.deleteRow( row.getKey() ); + } - final List<ProjectVersionMetadataModel> projectVersionMetadataModels = - new ArrayList<ProjectVersionMetadataModel>(); + result = HFactory // + .createRangeSlicesQuery( keyspace, // + StringSerializer.get(), // + StringSerializer.get(), // + StringSerializer.get() ) // + .setColumnFamily( cassandraArchivaManager.getArtifactMetadataModelFamilyName() ) // + .setColumnNames( "repositoryName" ) // + .addEqualsExpression( "repositoryName", repositoryId ) // + .execute(); - getProjectVersionMetadataModelEntityManager().visitAll( new Function<ProjectVersionMetadataModel, Boolean>() + for ( Row<String, String, String> row : result.get() ) { - @Override - public Boolean apply( ProjectVersionMetadataModel projectVersionMetadataModel ) - { - if ( projectVersionMetadataModel != null ) - { - if ( StringUtils.equals( projectVersionMetadataModel.getNamespace().getRepository().getId(), - repositoryId ) ) - { - projectVersionMetadataModels.add( projectVersionMetadataModel ); - } - } - return Boolean.TRUE; - } - } ); + this.artifactMetadataTemplate.deleteRow( row.getKey() ); + } - getProjectVersionMetadataModelEntityManager().remove( projectVersionMetadataModels ); + result = HFactory // + .createRangeSlicesQuery( keyspace, // + StringSerializer.get(), // + StringSerializer.get(), // + StringSerializer.get() ) // + .setColumnFamily( cassandraArchivaManager.getMetadataFacetModelFamilyName() ) // + .setColumnNames( "repositoryName" ) // + .addEqualsExpression( "repositoryName", repositoryId ) // + .execute(); - Repository repository = getRepositoryEntityManager().get( repositoryId ); - if ( repository != null ) + for ( Row<String, String, String> row : result.get() ) { - getRepositoryEntityManager().remove( repository ); + this.metadataFacetTemplate.deleteRow( row.getKey() ); } - */ + } @Override |