だから私はrestletで初めてです。私はGAEサーバーと通信できるAndroidアプリケーションを作成しています(objectify DBを使用 )
それは非常にうまく機能していますが、ほとんど効果がありません。唯一の2つの方法:
public interface UserControllerInterface {
@Put
void create(User user);
@Get
Container getAllUsers();
}
私のアプリケーションではより複雑なので、さらに多くのメソッドを追加します。
public interface UserControllerInterface {
@Put
public void createUser(ObagooUser user);
@Put
public void createMessage(ObagooUser user, String message);
@Put
public void updateMessage(ObagooMessage message);
@Get
public List<ObagooUser> getAllUser();
@Get
public ObagooUser getUserById(String id);
@Get
public List<ObagooMessage> getAllMessage();
@Get
public List<ObagooMessage> getAllMessageFromSender(ObagooUser sender);
@Get
public ObagooMessage getFreeMessage(ObagooUser user);
}
これらの mothd はそれぞれサーバー側で動作します (私は Junit でテストしました)。
今、私はアンドロイドの部分をコーディングしていますが、問題があります。getAllMessage() への単純な呼び出しを行うと、エラーが発生します。
java.lang.IllegalArgumentException: id cannot be zero
at com.google.appengine.api.datastore.KeyFactory.createKey(KeyFactory.java:44)
at com.googlecode.objectify.ObjectifyFactory.typedKeyToRawKey(ObjectifyFactory.java:269)
at com.googlecode.objectify.impl.ObjectifyImpl.find(ObjectifyImpl.java:159)
at com.googlecode.objectify.impl.ObjectifyImpl.find(ObjectifyImpl.java:183)
at com.obagoo.dao.ObagooUserDAO.getUserById(ObagooUserDAO.java:43)
at com.obagoo.controller.ObagooController.getUserById(ObagooController.java:47)
間違ったメソッド (getUserById) で行われています。
getAllMessage にブレークポイントを設定すると、それが入りますが、他のメソッドにも入ります。
何度もテストすると、createUser または別のランダムなメソッドが呼び出されることがあります。
私が間違っていることがわかりますか?
getAllMessage コードを追加します。
public List<ObagooMessage> getAllMessage() {
// logger.debug("Getting all Obagoo Messages");
List<ObagooMessage> msg = new ArrayList<ObagooMessage>();
Objectify ofy = ObjectifyService.begin();
Query<ObagooMessage> q = ofy.query(ObagooMessage.class);
for (ObagooMessage u : q) {
msg.add(u);
}
return msg;
}