Android : Removing/deleting from google datastore using endpoints, illegal arguement exception, delete with non-zero content length not supported

on Saturday, August 2, 2014


I'm trying to delete objects from the datastore (using cloud endpoints)


I know the connection is valid because I'm pulling/inserting objects with no problem


However when I try to delete using various approaches I get the same exception



java.lang.illegalArgumentException:DELETE with non-zero content length is not supported


approach 1(using the raw datastore service and the key I stored when inserting the item):



@ApiMethod(name = "removeRPurchase")
public RPurchase removeRPurchase(RPurchase purchase) {
NamespaceManager.set(purchase.getAccount());
DatastoreService d=DatastoreServiceFactory.getDatastoreService();
Key k=KeyFactory.stringToKey(purchase.getKeyrep());
try {
d.delete(k);
} catch (Exception e) {
e.printStackTrace();
purchase=null;
}
return purchase;
}


Approach 2



@ApiMethod(name = "removeRPurchase")
public RPurchase removeRPurchase(RPurchase purchase) {
NamespaceManager.set(purchase.getAccount());
Key k=KeyFactory.stringToKey(purchase.getKeyrep());
EntityManager mgr = getEntityManager();
RPurchase removed=null;
try {
RPurchase rpurchase = mgr.find(RPurchase.class, k);
mgr.remove(rpurchase);
removed=rpurchase;
} finally {
mgr.close();
}
return removed;
}


Ive also tried various variations with the entity manager and the Id, but all with the same exception


The object that i've passed in does contain the namespace in the account, and it does contain the 'KeytoString' of the key associated with the object


the endpoint is called as it should in an AsyncTask endpoint.removeRPurchase(p).execute();


Any help suggestions are appreciated


0 comments:

Post a Comment