Hi,
I am trying to serialize and deserialize to and from json using
AutoBean as per the link
http://code.google.com/p/google-web-toolkit/wiki/AutoBean
I have the following classes
---------------------------------------------------------------------------------------------
@ProxyFor(User.class)
public interface UserProxy extends EntityProxy {
@Override
EntityProxyId<UserProxy> stableId();
String getId();
void setId(String id);
void setUserName(String userName);
String getUserName();
String getEmail();
void setEmail(String email);
}
---------------------------------------------------------------------------------------------
@Category(EntityProxyCategory.class)
public interface GTAutoBeanFactory extends AutoBeanFactory {
//AutoBean<UserProxy> userProxy();
AutoBean<UserProxy> userProxy(UserProxy toWrap);
}
---------------------------------------------------------------------------------------------
// copied from the URL, I don't have much understanding on this....
public class EntityProxyCategory {
EntityProxyId<?> stableId(AutoBean<EntityProxy> instance) {
return (EntityProxyId<?>) instance.getTag("stableId");
}
}
---------------------------------------------------------------------------------------------
//Serialize: (This has no problem)
//-----------------------------------------------
AutoBean<UserProxy> bean = AutoBeanUtils.getAutoBean(user);
String result = AutoBeanCodex.encode(bean).getPayload();
// The result string is as below
//
{"email":"
te...@gmail.com","id":"4db6be71653a25e72154028c","userName":"test"}
//Deserialize:
//------------------
UserProxy user = AutoBeanCodex.decode(injector.getGTAutoBeanFactory(),
UserProxy.class, result).as();
However, when deserializing, I get the following error
23:08:49.604 [ERROR] [gettag] Failed to create an instance of
'com.gettag.client.GetTagClientModule$WebStorageProvider' via deferred
binding
java.lang.IllegalArgumentException: The AutoBeanFactory cannot create
a com.gettag.shared.proxies.UserProxy
at com.google.gwt.autobean.shared.AutoBeanCodex
$Decoder.push(AutoBeanCodex.java:240)
at com.google.gwt.autobean.shared.AutoBeanCodex
$Decoder.decode(AutoBeanCodex.java:50)
at
com.google.gwt.autobean.shared.AutoBeanCodex.decode(AutoBeanCodex.java:
505)
at
com.google.gwt.autobean.shared.AutoBeanCodex.decode(AutoBeanCodex.java:
521)
at com.gettag.client.resources.WebStorage.<init>
(WebStorage.java:30) <------------------ this is actually the
Deserialize line
at com.gettag.client.GetTagClientModule
$WebStorageProvider.<clinit>(GetTagClientModule.java:52)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at
com.google.gwt.dev.shell.ModuleSpace.loadClassFromSourceName(ModuleSpace.java:
654)
at
com.google.gwt.dev.shell.ModuleSpace.rebindAndCreate(ModuleSpace.java:
458)
at
com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:49)
at com.google.gwt.core.client.GWT.create(GWT.java:98)
at com.gettag.client.GetTagGinjectorImpl.create_Key$type$com$gettag
$client$GetTagClientModule$WebStorageProvider$_annotation$$none$$
(GetTagGinjectorImpl.java:257)
at com.gettag.client.GetTagGinjectorImpl.get_Key$type$com$gettag
$client$GetTagClientModule$WebStorageProvider$_annotation$$none$$
(GetTagGinjectorImpl.java:271)
at com.gettag.client.GetTagGinjectorImpl.create_Key$type$com$gettag
$client$resources$WebStorage$_annotation$$none$$
(GetTagGinjectorImpl.java:44)
at com.gettag.client.GetTagGinjectorImpl.get_Key$type$com$gettag
$client$resources$WebStorage$_annotation$$none$$
(GetTagGinjectorImpl.java:56)
at
com.gettag.client.GetTagGinjectorImpl.getWebStorage(GetTagGinjectorImpl.java:
35)
at
com.gettag.client.presenter.LoginPresenter.onStart(LoginPresenter.java:
42)
at com.mvp4g.client.Mvp4gModuleImpl$3.start(Mvp4gModuleImpl.java:
130)
at
com.mvp4g.client.Mvp4gModuleImpl.createAndStartModule(Mvp4gModuleImpl.java:
163)
at
com.gettag.client.GetTagEntryPoint.onModuleLoad(GetTagEntryPoint.java:
38)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:
396)
at
com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:
183)
at
com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:
510)
at
com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:
352)
at java.lang.Thread.run(Unknown Source)
Any kind help on this will be highly appreciated.
Many thanks & best regards
Andy