From 5b1b1d11cac067b104307dbffe4bee986cee6e92 Mon Sep 17 00:00:00 2001 From: Michael Nitschinger Date: Mon, 8 Apr 2013 11:05:35 +0200 Subject: [PATCH] Adding simple remove --- .../spring/core/CouchbaseOperations.java | 16 +++++++++- .../spring/core/CouchbaseTemplate.java | 29 ++++++++++++++----- .../spring/core/CouchbaseTemplateTest.java | 13 +++++++++ 3 files changed, 50 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/couchbase/spring/core/CouchbaseOperations.java b/src/main/java/com/couchbase/spring/core/CouchbaseOperations.java index 02efe96e..5dea352b 100644 --- a/src/main/java/com/couchbase/spring/core/CouchbaseOperations.java +++ b/src/main/java/com/couchbase/spring/core/CouchbaseOperations.java @@ -112,5 +112,19 @@ public interface CouchbaseOperations { * @param entityClass the entity to map to. * @return returns the found object or null otherwise. */ - public T findById(String id, Class entityClass); + T findById(String id, Class entityClass); + + /** + * Remove the given object from the bucket by id. + * + * @param object the Object to remove. + */ + void remove(Object object); + + /** + * Remove a list of objects from the bucket by id. + * + * @param batchToRemove the list of Objects to remove. + */ + void remove(Collection batchToRemove); } diff --git a/src/main/java/com/couchbase/spring/core/CouchbaseTemplate.java b/src/main/java/com/couchbase/spring/core/CouchbaseTemplate.java index f0628fd1..74362832 100644 --- a/src/main/java/com/couchbase/spring/core/CouchbaseTemplate.java +++ b/src/main/java/com/couchbase/spring/core/CouchbaseTemplate.java @@ -97,10 +97,10 @@ public class CouchbaseTemplate implements CouchbaseOperations { } public void save(Collection batchToSave) { - Iterator iter = batchToSave.iterator(); - while(iter.hasNext()) { - save(iter.next()); - } + Iterator iter = batchToSave.iterator(); + while(iter.hasNext()) { + save(iter.next()); + } } public void update(Object objectToSave) { @@ -113,14 +113,14 @@ public class CouchbaseTemplate implements CouchbaseOperations { public void update(Collection batchToSave) { Iterator iter = batchToSave.iterator(); - while(iter.hasNext()) { + while (iter.hasNext()) { save(iter.next()); } } public T findById(String id, Class entityClass) { String result = (String) client.get(id); - if(result == null) { + if (result == null) { return null; } @@ -128,12 +128,27 @@ public class CouchbaseTemplate implements CouchbaseOperations { return couchbaseConverter.read(entityClass, converted); } + public void remove(Object objectToRemove) { + ensureNotIterable(objectToRemove); + + ConvertedCouchbaseDocument converted = new ConvertedCouchbaseDocument(); + couchbaseConverter.write(objectToRemove, converted); + client.delete(converted.getId()); + } + + public void remove(Collection batchToRemove) { + Iterator iter = batchToRemove.iterator(); + while (iter.hasNext()) { + remove(iter.next()); + } + } + /** * Make sure the given object is not a iterable. * * @param o the object to verify. */ - protected void ensureNotIterable(Object o) { + protected final void ensureNotIterable(Object o) { if (null != o) { if (o.getClass().isArray() || ITERABLE_CLASSES.contains(o.getClass().getName())) { throw new IllegalArgumentException("Cannot use a collection here."); diff --git a/src/test/java/com/couchbase/spring/core/CouchbaseTemplateTest.java b/src/test/java/com/couchbase/spring/core/CouchbaseTemplateTest.java index e4e54994..2eecd246 100644 --- a/src/test/java/com/couchbase/spring/core/CouchbaseTemplateTest.java +++ b/src/test/java/com/couchbase/spring/core/CouchbaseTemplateTest.java @@ -108,6 +108,19 @@ public class CouchbaseTemplateTest { assertEquals(name, found.getName()); assertEquals(active, found.getActive()); } + + @Test + public void removeDocument() { + String id = "beers:findme-stout"; + Object result = client.get(id); + assertNotNull(result); + + Beer beer = new Beer(id); + template.remove(beer); + + result = client.get(id); + assertNull(result); + } /** * A sample document with just an id and property.