wip: Completed single update and delete tests.

This commit is contained in:
dwebb
2013-11-15 16:57:44 -05:00
parent fa7a5d2401
commit c6119ca7fa
4 changed files with 336 additions and 59 deletions

View File

@@ -545,35 +545,35 @@ public interface CassandraOperations {
*
* @param object
*/
<T> void deleteAsychronously(T entity);
<T> void deleteAsynchronously(T entity);
/**
* @param entity
* @param tableName
* @param options
*/
<T> void deleteAsychronously(T entity, QueryOptions options);
<T> void deleteAsynchronously(T entity, QueryOptions options);
/**
* @param entity
* @param tableName
* @param optionsByName
*/
<T> void deleteAsychronously(T entity, Map<String, Object> optionsByName);
<T> void deleteAsynchronously(T entity, Map<String, Object> optionsByName);
/**
* @param entity
* @param tableName
* @param options
*/
<T> void deleteAsychronously(T entity, String tableName, QueryOptions options);
<T> void deleteAsynchronously(T entity, String tableName, QueryOptions options);
/**
* @param entity
* @param tableName
* @param optionsByName
*/
<T> void deleteAsychronously(T entity, String tableName, Map<String, Object> optionsByName);
<T> void deleteAsynchronously(T entity, String tableName, Map<String, Object> optionsByName);
/**
* Removes the given object from the given table.
@@ -581,14 +581,14 @@ public interface CassandraOperations {
* @param object
* @param table must not be {@literal null} or empty.
*/
<T> void deleteAsychronously(T entity, String tableName);
<T> void deleteAsynchronously(T entity, String tableName);
/**
* Remove the given object from the table by id.
*
* @param object
*/
<T> void deleteAsychronously(List<T> entities);
<T> void deleteAsynchronously(List<T> entities);
/**
* Removes the given object from the given table.
@@ -596,35 +596,35 @@ public interface CassandraOperations {
* @param object
* @param table must not be {@literal null} or empty.
*/
<T> void deleteAsychronously(List<T> entities, String tableName);
<T> void deleteAsynchronously(List<T> entities, String tableName);
/**
* @param entities
* @param tableName
* @param options
*/
<T> void deleteAsychronously(List<T> entities, QueryOptions options);
<T> void deleteAsynchronously(List<T> entities, QueryOptions options);
/**
* @param entities
* @param tableName
* @param optionsByName
*/
<T> void deleteAsychronously(List<T> entities, Map<String, Object> optionsByName);
<T> void deleteAsynchronously(List<T> entities, Map<String, Object> optionsByName);
/**
* @param entities
* @param tableName
* @param options
*/
<T> void deleteAsychronously(List<T> entities, String tableName, QueryOptions options);
<T> void deleteAsynchronously(List<T> entities, String tableName, QueryOptions options);
/**
* @param entities
* @param tableName
* @param optionsByName
*/
<T> void deleteAsychronously(List<T> entities, String tableName, Map<String, Object> optionsByName);
<T> void deleteAsynchronously(List<T> entities, String tableName, Map<String, Object> optionsByName);
/**
* Returns the underlying {@link CassandraConverter}.

View File

@@ -234,48 +234,48 @@ public class CassandraTemplate implements CassandraOperations {
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsychronously(java.util.List)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsynchronously(java.util.List)
*/
@Override
public <T> void deleteAsychronously(List<T> entities) {
public <T> void deleteAsynchronously(List<T> entities) {
String tableName = getTableName(entities.get(0).getClass());
Assert.notNull(tableName);
deleteAsychronously(entities, tableName);
deleteAsynchronously(entities, tableName);
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsychronously(java.util.List, java.util.Map)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsynchronously(java.util.List, java.util.Map)
*/
@Override
public <T> void deleteAsychronously(List<T> entities, Map<String, Object> optionsByName) {
public <T> void deleteAsynchronously(List<T> entities, Map<String, Object> optionsByName) {
String tableName = getTableName(entities.get(0).getClass());
Assert.notNull(tableName);
deleteAsychronously(entities, tableName, optionsByName);
deleteAsynchronously(entities, tableName, optionsByName);
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsychronously(java.util.List, org.springframework.data.cassandra.core.QueryOptions)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsynchronously(java.util.List, org.springframework.data.cassandra.core.QueryOptions)
*/
@Override
public <T> void deleteAsychronously(List<T> entities, QueryOptions options) {
public <T> void deleteAsynchronously(List<T> entities, QueryOptions options) {
String tableName = getTableName(entities.get(0).getClass());
Assert.notNull(tableName);
deleteAsychronously(entities, tableName, options);
deleteAsynchronously(entities, tableName, options);
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsychronously(java.util.List, java.lang.String)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsynchronously(java.util.List, java.lang.String)
*/
@Override
public <T> void deleteAsychronously(List<T> entities, String tableName) {
public <T> void deleteAsynchronously(List<T> entities, String tableName) {
insertAsynchronously(entities, tableName, new HashMap<String, Object>());
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsychronously(java.util.List, java.lang.String, java.util.Map)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsynchronously(java.util.List, java.lang.String, java.util.Map)
*/
@Override
public <T> void deleteAsychronously(List<T> entities, String tableName, Map<String, Object> optionsByName) {
public <T> void deleteAsynchronously(List<T> entities, String tableName, Map<String, Object> optionsByName) {
Assert.notNull(entities);
Assert.notEmpty(entities);
Assert.notNull(tableName);
@@ -284,56 +284,56 @@ public class CassandraTemplate implements CassandraOperations {
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsychronously(java.util.List, java.lang.String, org.springframework.data.cassandra.core.QueryOptions)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsynchronously(java.util.List, java.lang.String, org.springframework.data.cassandra.core.QueryOptions)
*/
@Override
public <T> void deleteAsychronously(List<T> entities, String tableName, QueryOptions options) {
deleteAsychronously(entities, tableName, options.toMap());
public <T> void deleteAsynchronously(List<T> entities, String tableName, QueryOptions options) {
deleteAsynchronously(entities, tableName, options.toMap());
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsychronously(java.lang.Object)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsynchronously(java.lang.Object)
*/
@Override
public <T> void deleteAsychronously(T entity) {
public <T> void deleteAsynchronously(T entity) {
String tableName = getTableName(entity.getClass());
Assert.notNull(tableName);
deleteAsychronously(entity, tableName);
deleteAsynchronously(entity, tableName);
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsychronously(java.lang.Object, java.util.Map)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsynchronously(java.lang.Object, java.util.Map)
*/
@Override
public <T> void deleteAsychronously(T entity, Map<String, Object> optionsByName) {
public <T> void deleteAsynchronously(T entity, Map<String, Object> optionsByName) {
String tableName = getTableName(entity.getClass());
Assert.notNull(tableName);
deleteAsychronously(entity, tableName, optionsByName);
deleteAsynchronously(entity, tableName, optionsByName);
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsychronously(java.lang.Object, org.springframework.data.cassandra.core.QueryOptions)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsynchronously(java.lang.Object, org.springframework.data.cassandra.core.QueryOptions)
*/
@Override
public <T> void deleteAsychronously(T entity, QueryOptions options) {
public <T> void deleteAsynchronously(T entity, QueryOptions options) {
String tableName = getTableName(entity.getClass());
Assert.notNull(tableName);
deleteAsychronously(entity, tableName, options);
deleteAsynchronously(entity, tableName, options);
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsychronously(java.lang.Object, java.lang.String)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsynchronously(java.lang.Object, java.lang.String)
*/
@Override
public <T> void deleteAsychronously(T entity, String tableName) {
deleteAsychronously(entity, tableName, new HashMap<String, Object>());
public <T> void deleteAsynchronously(T entity, String tableName) {
deleteAsynchronously(entity, tableName, new HashMap<String, Object>());
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsychronously(java.lang.Object, java.lang.String, java.util.Map)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsynchronously(java.lang.Object, java.lang.String, java.util.Map)
*/
@Override
public <T> void deleteAsychronously(T entity, String tableName, Map<String, Object> optionsByName) {
public <T> void deleteAsynchronously(T entity, String tableName, Map<String, Object> optionsByName) {
Assert.notNull(entity);
Assert.notNull(tableName);
Assert.notNull(optionsByName);
@@ -341,11 +341,11 @@ public class CassandraTemplate implements CassandraOperations {
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsychronously(java.lang.Object, java.lang.String, org.springframework.data.cassandra.core.QueryOptions)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsynchronously(java.lang.Object, java.lang.String, org.springframework.data.cassandra.core.QueryOptions)
*/
@Override
public <T> void deleteAsychronously(T entity, String tableName, QueryOptions options) {
deleteAsychronously(entity, tableName, options.toMap());
public <T> void deleteAsynchronously(T entity, String tableName, QueryOptions options) {
deleteAsynchronously(entity, tableName, options.toMap());
}
/* (non-Javadoc)

View File

@@ -31,7 +31,6 @@ import com.datastax.driver.core.querybuilder.QueryBuilder;
import com.datastax.driver.core.querybuilder.Update;
/**
*
* Utilties to convert Cassandra Annotated objects to Queries and CQL.
*
* @author Alex Shvid
@@ -204,11 +203,9 @@ public abstract class CqlUtils {
*
* @param keyspaceName
* @param tableName
* @param entity
* @param objectToSave
* @param entity
* @param optionsByName
* @param mappingContext
* @param beanClassLoader
*
* @return The Query object to run with session.execute();
* @throws EntityWriterException
@@ -270,11 +267,9 @@ public abstract class CqlUtils {
*
* @param keyspaceName
* @param tableName
* @param entity
* @param objectToSave
* @param entity
* @param optionsByName
* @param mappingContext
* @param beanClassLoader
*
* @return The Query object to run with session.execute();
* @throws EntityWriterException
@@ -340,10 +335,9 @@ public abstract class CqlUtils {
*
* @param keyspaceName
* @param tableName
* @param entity
* @param objectsToSave
* @param mappingContext
* @param beanClassLoader
* @param entity
* @param optionsByName
*
* @return The Query object to run with session.execute();
* @throws EntityWriterException
@@ -374,10 +368,9 @@ public abstract class CqlUtils {
*
* @param keyspaceName
* @param tableName
* @param entity
* @param objectsToSave
* @param mappingContext
* @param beanClassLoader
* @param entity
* @param optionsByName
*
* @return The Query object to run with session.execute();
* @throws EntityWriterException
@@ -404,10 +397,13 @@ public abstract class CqlUtils {
}
/**
* Create a Delete Query Object from an annotated POJO
*
* @param keyspace
* @param tableName
* @param objectToRemove
* @param entity
* @param optionsByName
* @return
* @throws EntityWriterException
*/
@@ -496,10 +492,14 @@ public abstract class CqlUtils {
}
/**
* Create a Batch Query object for multiple deletes.
*
* @param keyspace
* @param tableName
* @param entities
* @param cPEntity
* @param entity
* @param optionsByName
*
* @return
* @throws EntityWriterException
*/

View File

@@ -359,6 +359,283 @@ public class CassandraOperationsTest {
return books;
}
@Test
public void updateTest() {
insertTest();
QueryOptions options = new QueryOptions();
options.setConsistencyLevel(ConsistencyLevel.ONE);
options.setRetryPolicy(RetryPolicy.DOWNGRADING_CONSISTENCY);
Map<String, Object> optionsByName = new HashMap<String, Object>();
optionsByName.put(QueryOptions.QueryOptionMapKeys.CONSISTENCY_LEVEL, ConsistencyLevel.ALL);
optionsByName.put(QueryOptions.QueryOptionMapKeys.RETRY_POLICY, RetryPolicy.FALLTHROUGH);
optionsByName.put(QueryOptions.QueryOptionMapKeys.TTL, 30);
/*
* Test Single Insert with entity
*/
Book b1 = new Book();
b1.setIsbn("123456-1");
b1.setTitle("Spring Data Cassandra Book");
b1.setAuthor("Cassandra Guru");
b1.setPages(521);
cassandraTemplate.update(b1);
Book b2 = new Book();
b2.setIsbn("123456-2");
b2.setTitle("Spring Data Cassandra Book");
b2.setAuthor("Cassandra Guru");
b2.setPages(521);
cassandraTemplate.update(b2, "book_alt");
/*
* Test Single Insert with entity
*/
Book b3 = new Book();
b3.setIsbn("123456-3");
b3.setTitle("Spring Data Cassandra Book");
b3.setAuthor("Cassandra Guru");
b3.setPages(265);
cassandraTemplate.update(b3, "book", options);
/*
* Test Single Insert with entity
*/
Book b4 = new Book();
b4.setIsbn("123456-4");
b4.setTitle("Spring Data Cassandra Book");
b4.setAuthor("Cassandra Guru");
b4.setPages(465);
cassandraTemplate.update(b4, "book", optionsByName);
/*
* Test Single Insert with entity
*/
Book b5 = new Book();
b5.setIsbn("123456-5");
b5.setTitle("Spring Data Cassandra Book");
b5.setAuthor("Cassandra Guru");
b5.setPages(265);
cassandraTemplate.update(b5, options);
/*
* Test Single Insert with entity
*/
Book b6 = new Book();
b6.setIsbn("123456-6");
b6.setTitle("Spring Data Cassandra Book");
b6.setAuthor("Cassandra Guru");
b6.setPages(465);
cassandraTemplate.update(b6, optionsByName);
}
@Test
public void updateAsynchronouslyTest() {
insertTest();
QueryOptions options = new QueryOptions();
options.setConsistencyLevel(ConsistencyLevel.ONE);
options.setRetryPolicy(RetryPolicy.DOWNGRADING_CONSISTENCY);
Map<String, Object> optionsByName = new HashMap<String, Object>();
optionsByName.put(QueryOptions.QueryOptionMapKeys.CONSISTENCY_LEVEL, ConsistencyLevel.ALL);
optionsByName.put(QueryOptions.QueryOptionMapKeys.RETRY_POLICY, RetryPolicy.FALLTHROUGH);
optionsByName.put(QueryOptions.QueryOptionMapKeys.TTL, 30);
/*
* Test Single Insert with entity
*/
Book b1 = new Book();
b1.setIsbn("123456-1");
b1.setTitle("Spring Data Cassandra Book");
b1.setAuthor("Cassandra Guru");
b1.setPages(521);
cassandraTemplate.updateAsynchronously(b1);
Book b2 = new Book();
b2.setIsbn("123456-2");
b2.setTitle("Spring Data Cassandra Book");
b2.setAuthor("Cassandra Guru");
b2.setPages(521);
cassandraTemplate.updateAsynchronously(b2, "book_alt");
/*
* Test Single Insert with entity
*/
Book b3 = new Book();
b3.setIsbn("123456-3");
b3.setTitle("Spring Data Cassandra Book");
b3.setAuthor("Cassandra Guru");
b3.setPages(265);
cassandraTemplate.updateAsynchronously(b3, "book", options);
/*
* Test Single Insert with entity
*/
Book b4 = new Book();
b4.setIsbn("123456-4");
b4.setTitle("Spring Data Cassandra Book");
b4.setAuthor("Cassandra Guru");
b4.setPages(465);
cassandraTemplate.updateAsynchronously(b4, "book", optionsByName);
/*
* Test Single Insert with entity
*/
Book b5 = new Book();
b5.setIsbn("123456-5");
b5.setTitle("Spring Data Cassandra Book");
b5.setAuthor("Cassandra Guru");
b5.setPages(265);
cassandraTemplate.updateAsynchronously(b5, options);
/*
* Test Single Insert with entity
*/
Book b6 = new Book();
b6.setIsbn("123456-6");
b6.setTitle("Spring Data Cassandra Book");
b6.setAuthor("Cassandra Guru");
b6.setPages(465);
cassandraTemplate.updateAsynchronously(b6, optionsByName);
}
@Test
public void deleteTest() {
insertTest();
QueryOptions options = new QueryOptions();
options.setConsistencyLevel(ConsistencyLevel.ONE);
options.setRetryPolicy(RetryPolicy.DOWNGRADING_CONSISTENCY);
Map<String, Object> optionsByName = new HashMap<String, Object>();
optionsByName.put(QueryOptions.QueryOptionMapKeys.CONSISTENCY_LEVEL, ConsistencyLevel.ALL);
optionsByName.put(QueryOptions.QueryOptionMapKeys.RETRY_POLICY, RetryPolicy.FALLTHROUGH);
/*
* Test Single Insert with entity
*/
Book b1 = new Book();
b1.setIsbn("123456-1");
cassandraTemplate.delete(b1);
Book b2 = new Book();
b2.setIsbn("123456-2");
cassandraTemplate.delete(b2, "book_alt");
/*
* Test Single Insert with entity
*/
Book b3 = new Book();
b3.setIsbn("123456-3");
cassandraTemplate.delete(b3, "book", options);
/*
* Test Single Insert with entity
*/
Book b4 = new Book();
b4.setIsbn("123456-4");
cassandraTemplate.delete(b4, "book", optionsByName);
/*
* Test Single Insert with entity
*/
Book b5 = new Book();
b5.setIsbn("123456-5");
cassandraTemplate.delete(b5, options);
/*
* Test Single Insert with entity
*/
Book b6 = new Book();
b6.setIsbn("123456-6");
cassandraTemplate.delete(b6, optionsByName);
}
@Test
public void deleteAsynchronouslyTest() {
insertTest();
QueryOptions options = new QueryOptions();
options.setConsistencyLevel(ConsistencyLevel.ONE);
options.setRetryPolicy(RetryPolicy.DOWNGRADING_CONSISTENCY);
Map<String, Object> optionsByName = new HashMap<String, Object>();
optionsByName.put(QueryOptions.QueryOptionMapKeys.CONSISTENCY_LEVEL, ConsistencyLevel.ALL);
optionsByName.put(QueryOptions.QueryOptionMapKeys.RETRY_POLICY, RetryPolicy.FALLTHROUGH);
/*
* Test Single Insert with entity
*/
Book b1 = new Book();
b1.setIsbn("123456-1");
cassandraTemplate.deleteAsynchronously(b1);
Book b2 = new Book();
b2.setIsbn("123456-2");
cassandraTemplate.deleteAsynchronously(b2, "book_alt");
/*
* Test Single Insert with entity
*/
Book b3 = new Book();
b3.setIsbn("123456-3");
cassandraTemplate.deleteAsynchronously(b3, "book", options);
/*
* Test Single Insert with entity
*/
Book b4 = new Book();
b4.setIsbn("123456-4");
cassandraTemplate.deleteAsynchronously(b4, "book", optionsByName);
/*
* Test Single Insert with entity
*/
Book b5 = new Book();
b5.setIsbn("123456-5");
cassandraTemplate.deleteAsynchronously(b5, options);
/*
* Test Single Insert with entity
*/
Book b6 = new Book();
b6.setIsbn("123456-6");
cassandraTemplate.deleteAsynchronously(b6, optionsByName);
}
@After
public void clearCassandra() {
EmbeddedCassandraServerHelper.cleanEmbeddedCassandra();