Modified:
/trunk/morphia/src/main/java/com/google/code/morphia/AdvancedDatastore.java
/trunk/morphia/src/main/java/com/google/code/morphia/DatastoreImpl.java
/trunk/morphia/src/test/java/com/google/code/morphia/mapping/CompoundId.java
=======================================
---
/trunk/morphia/src/main/java/com/google/code/morphia/AdvancedDatastore.java
Thu Oct 27 12:03:21 2011
+++
/trunk/morphia/src/main/java/com/google/code/morphia/AdvancedDatastore.java
Fri Feb 24 06:11:21 2012
@@ -33,7 +33,10 @@
<T> Query<T> find(String kind, Class<T> clazz);
<T,V> Query<T> find(String kind, Class<T> clazz, String property, V
value, int offset, int size);
<T> Key<T> save(String kind, T entity);
+ /** No validation or conversion is done to the id*/
+ @Deprecated
<T> WriteResult delete(String kind, T id);
+ <T, V> WriteResult delete(String kind, Class<T> clazz, V id);
<T> Key<T> insert(String kind, T entity);
@@ -47,7 +50,7 @@
<T> Query<T> createQuery(String kind, Class<T> clazz);
- //DBObject implementations; incase we don't have features impl'd yet
+ //DBObject implementations; in case we don't have features impl'd yet
<T> Query<T> createQuery(Class<T> kind, DBObject q);
<T> Query<T> createQuery(String kind, Class<T> clazz, DBObject q);
=======================================
--- /trunk/morphia/src/main/java/com/google/code/morphia/DatastoreImpl.java
Wed Feb 22 22:01:27 2012
+++ /trunk/morphia/src/main/java/com/google/code/morphia/DatastoreImpl.java
Fri Feb 24 06:11:21 2012
@@ -128,27 +128,19 @@
return mapr.getKey(entity);
}
- protected <T, V> WriteResult delete(DBCollection dbColl, V id,
WriteConcern wc) {
- WriteResult wr;
- if (wc == null)
- wr = dbColl.remove(BasicDBObjectBuilder.start().add(Mapper.ID_KEY,
id).get());
- else
- wr = dbColl.remove(BasicDBObjectBuilder.start().add(Mapper.ID_KEY,
id).get(), wc);
-
- throwOnError(wc, wr);
-
+ public <T> WriteResult delete(String kind, T id) {
+ DBCollection dbColl = getCollection(kind);
+ WriteResult wr =
dbColl.remove(BasicDBObjectBuilder.start().add(Mapper.ID_KEY, id).get());
+ throwOnError(null, wr);
return wr;
}
-
-
- public <T> WriteResult delete(String kind, T id) {
- DBCollection dbColl = getCollection(kind);
- return delete(dbColl, id, defConcern);
+
+ public <T, V> WriteResult delete(String kind, Class<T> clazz, V id) {
+ return delete(find(kind, clazz).filter(Mapper.ID_KEY, id));
}
public <T, V> WriteResult delete(Class<T> clazz, V id, WriteConcern wc) {
- DBCollection dbColl = getCollection(clazz);
- return delete(dbColl, id, wc);
+ return delete(createQuery(clazz).filter(Mapper.ID_KEY, id), wc);
}
public <T, V> WriteResult delete(Class<T> clazz, V id) {
@@ -821,12 +813,13 @@
cr.throwOnError();
}
}
+
public <T> Key<T> save(String kind, T entity) {
entity = ProxyHelper.unwrap(entity);
DBCollection dbColl = getCollection(kind);
return save(dbColl, entity, getWriteConcern(entity));
}
-
+
public <T> Key<T> save(T entity) {
return save(entity, getWriteConcern(entity));
}
=======================================
---
/trunk/morphia/src/test/java/com/google/code/morphia/mapping/CompoundId.java
Wed Feb 22 22:01:27 2012
+++
/trunk/morphia/src/test/java/com/google/code/morphia/mapping/CompoundId.java
Fri Feb 24 06:11:21 2012
@@ -10,6 +10,7 @@
import org.bson.types.ObjectId;
import org.junit.Test;
+import com.google.code.morphia.AdvancedDatastore;
import com.google.code.morphia.Key;
import com.google.code.morphia.TestBase;
import com.google.code.morphia.annotations.Embedded;
@@ -18,6 +19,7 @@
/**
* @author scott hernandez
*/
+@SuppressWarnings("unused")
public class CompoundId extends TestBase{
@Embedded
@@ -25,7 +27,6 @@
static final long serialVersionUID = 1L;
ObjectId id = new ObjectId();
String name;
- @SuppressWarnings("unused")
CId() {}
CId(String n) {name=n;}
@Override
@@ -53,4 +54,23 @@
Assert.assertEquals("test", e.id.name);
Assert.assertNotNull(e.id.id);
}
-}
+
+ @Test
+ public void testDelete() throws Exception {
+ E e = new E();
+ e.id = new CId("test");
+
+ Key<E> key = ds.save(e);
+ ds.delete(E.class, e.id);
+ }
+
+ @Test
+ public void testOtherDelete() throws Exception {
+ E e = new E();
+ e.id = new CId("test");
+
+ Key<E> key = ds.save(e);
+ ((AdvancedDatastore)ds).delete(ds.getCollection(E.class).getName(),
E.class, e.id);
+ }
+
+}