android - IllegalArgumentException: expected primitive class, but got: class UUID -
my app using gae endpoints. model has uuid. , once try send android app encounters illegalargument exception.
anyone has got recommendations how handle endpoints model uuid on android app google app engine endpoints?
06-14 23:26:49.560 27462-27488/com.example e/androidruntime﹕ fatal exception: asynctask #1 process: com.example, pid: 27462 java.lang.runtimeexception: error occured while executing doinbackground() @ android.os.asynctask$3.done(asynctask.java:300) @ java.util.concurrent.futuretask.finishcompletion(futuretask.java:355) @ java.util.concurrent.futuretask.setexception(futuretask.java:222) @ java.util.concurrent.futuretask.run(futuretask.java:242) @ android.os.asynctask$serialexecutor$1.run(asynctask.java:231) @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1112) @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:587) @ java.lang.thread.run(thread.java:818) caused by: java.lang.illegalargumentexception: key id @ com.google.api.client.json.jsonparser.parsevalue(jsonparser.java:880) @ com.google.api.client.json.jsonparser.parse(jsonparser.java:381) @ com.google.api.client.json.jsonparser.parse(jsonparser.java:354) @ com.google.api.client.json.jsonobjectparser.parseandclose(jsonobjectparser.java:87) @ com.google.api.client.json.jsonobjectparser.parseandclose(jsonobjectparser.java:81) @ com.google.api.client.http.httpresponse.parseas(httpresponse.java:459) @ com.google.api.client.googleapis.services.abstractgoogleclientrequest.execute(abstractgoogleclientrequest.java:460) @ com.example.customasynctask.doinbackground(customasynctask.java:30) @ com.example.customasynctask.doinbackground(customasynctask.java:15) @ android.os.asynctask$2.call(asynctask.java:288) @ java.util.concurrent.futuretask.run(futuretask.java:237) at android.os.asynctask$serialexecutor$1.run(asynctask.java:231) at java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1112) at java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:587) at java.lang.thread.run(thread.java:818) caused by: java.lang.illegalargumentexception: key id, field private com.example.customapi.model.uuid com.example.customapi.model.survey.id @ com.google.api.client.json.jsonparser.parsevalue(jsonparser.java:880) @ com.google.api.client.json.jsonparser.parse(jsonparser.java:471) @ com.google.api.client.json.jsonparser.parsevalue(jsonparser.java:780) at com.google.api.client.json.jsonparser.parse(jsonparser.java:381) at com.google.api.client.json.jsonparser.parse(jsonparser.java:354) at com.google.api.client.json.jsonobjectparser.parseandclose(jsonobjectparser.java:87) at com.google.api.client.json.jsonobjectparser.parseandclose(jsonobjectparser.java:81) at com.google.api.client.http.httpresponse.parseas(httpresponse.java:459) at com.google.api.client.googleapis.services.abstractgoogleclientrequest.execute(abstractgoogleclientrequest.java:460) at com.example.customasynctask.doinbackground(customasynctask.java:30) at com.example.customasynctask.doinbackground(customasynctask.java:15) at android.os.asynctask$2.call(asynctask.java:288) at java.util.concurrent.futuretask.run(futuretask.java:237) at android.os.asynctask$serialexecutor$1.run(asynctask.java:231) at java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1112) at java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:587) at java.lang.thread.run(thread.java:818) caused by: java.lang.illegalargumentexception: **expected primitive class, got: class com.example.customapi.model.uuid** @ com.google.api.client.util.data.parseprimitivevalue(data.java:444) @ com.google.api.client.json.jsonparser.parsevalue(jsonparser.java:850) at com.google.api.client.json.jsonparser.parse(jsonparser.java:471) at com.google.api.client.json.jsonparser.parsevalue(jsonparser.java:780) at com.google.api.client.json.jsonparser.parse(jsonparser.java:381) at com.google.api.client.json.jsonparser.parse(jsonparser.java:354) at com.google.api.client.json.jsonobjectparser.parseandclose(jsonobjectparser.java:87) at com.google.api.client.json.jsonobjectparser.parseandclose(jsonobjectparser.java:81) at com.google.api.client.http.httpresponse.parseas(httpresponse.java:459) at com.google.api.client.googleapis.services.abstractgoogleclientrequest.execute(abstractgoogleclientrequest.java:460) at com.example.customasynctask.doinbackground(customasynctask.java:30) at com.example.customasynctask.doinbackground(customasynctask.java:15) at android.os.asynctask$2.call(asynctask.java:288) at java.util.concurrent.futuretask.run(futuretask.java:237) at android.os.asynctask$serialexecutor$1.run(asynctask.java:231) at java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1112) at java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:587) at java.lang.thread.run(thread.java:818)
my custom class endpoint returning android:
import com.j256.ormlite.field.databasefield; import com.j256.ormlite.table.databasetable; import java.util.uuid; @databasetable public class customclass { @databasefield(generatedid = true) uuid id; @databasefield string title; public customclass() { //nothing } public uuid getid() { return id; } public void setid(uuid id) { this.id = id; } }
my endpoint code:
import java.util.uuid; import javax.inject.named; /** * endpoint class exposing */ @api( name = "customapi", version = "v1", resource = "customr", namespace = @apinamespace( ownerdomain = "xyz", ownername = "xyz", packagepath = "" ) ) public class customclassendpoint { @apimethod( name = "insertcustom", scopes = "profile", clientids = {"xx"}, audiences = {"xx"} ) public customclass insertcustomclass(customclass customclass, com.google.appengine.api.users.user authuser ) throws conflictexception, oauthrequestexception { logger.info("calling insertcustomclass method"); //persisting customclass assigns uuid return customclass; } }
i understand why google api json parser attempting parse uuid primitive, @ least found workaround issue.
in model class kept field uuid changed getter return string, looks this:
public string getid() { return id.tostring(); }
and has solved issue me.
Comments
Post a Comment