Hello,
I am experiencing a problem with SmartGWT that I cannot figure out after hours of trying.
I am running SmartGWT 2.2 and GWT 2.0.3.
I've created a custom DataSource that uses ClientCustom protocol, and I've overriden the transformRequest() call.
When I bind this datasource to a ListGrid and call grid.fetchData(), I am presented with the *com.google.gwt.core.client.JavaScriptException
(null): null* exception in Firefox while running GWT development mode.
Chrome and IE appear to work correctly. I wish I could let this go, but because GWT development mode and firefox is critical during our development efforts I thought I'd post a quick message here.
Here is the stack trace:
com.google.gwt.core.client.JavaScriptException: (null): null
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:195)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:120)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:507)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeVoid(ModuleSpace.java:284)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeVoid(JavaScriptHost.java:107)
at com.smartgwt.client.widgets.grid.ListGrid.fetchData(ListGrid.java)
at gov.state.wraps.web.orgs.client.OrgListViewImpl.fetchData(OrgListViewImpl.java:81)
at gov.state.wraps.web.orgs.client.OrgListPresenter.go(OrgListPresenter.java:50)
at gov.state.wraps.web.controller.gwt.BaseControllerImpl.performNavigation(BaseControllerImpl.java:109)
at gov.state.wraps.web.controller.gwt.BaseControllerImpl.onAction(BaseControllerImpl.java:86)
at gov.state.wraps.web.controller.gwt.ActionEvent.dispatch(ActionEvent.java:52)
at gov.state.wraps.web.controller.gwt.ActionEvent.dispatch(ActionEvent.java:1)
at com.google.gwt.event.shared.HandlerManager$HandlerRegistry.fireEvent(HandlerManager.java:65)
at com.google.gwt.event.shared.HandlerManager$HandlerRegistry.access$100(HandlerManager.java:41)
at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:178)
at gov.state.wraps.web.controller.gwt.BaseControllerImpl.performAction(BaseControllerImpl.java:52)
at gov.state.wraps.web.core.client.CorePresenter$6.onClick(CorePresenter.java:71)
at com.smartgwt.client.widgets.menu.events.MenuItemClickEvent.dispatch(MenuItemClickEvent.java:95)
at com.smartgwt.client.widgets.menu.events.MenuItemClickEvent.dispatch(MenuItemClickEvent.java:57)
at com.google.gwt.event.shared.HandlerManager$HandlerRegistry.fireEvent(HandlerManager.java:65)
at com.google.gwt.event.shared.HandlerManager$HandlerRegistry.access$100(HandlerManager.java:41)
at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:178)
at com.smartgwt.client.core.DataClass.fireEvent(DataClass.java:197)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157)
at com.google.gwt.dev.shell.BrowserChannel.reactToMessagesWhileWaitingForReturn(BrowserChannel.java:1714)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:165)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:120)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:507)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:264)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:188)
at sun.reflect.GeneratedMethodAccessor90.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157)
at com.google.gwt.dev.shell.BrowserChannel.reactToMessages(BrowserChannel.java:1669)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:401)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:222)
at java.lang.Thread.run(Thread.java:619)
And my data source:
and
Thanks
I am experiencing a problem with SmartGWT that I cannot figure out after hours of trying.
I am running SmartGWT 2.2 and GWT 2.0.3.
I've created a custom DataSource that uses ClientCustom protocol, and I've overriden the transformRequest() call.
When I bind this datasource to a ListGrid and call grid.fetchData(), I am presented with the *com.google.gwt.core.client.JavaScriptException
(null): null* exception in Firefox while running GWT development mode.
Chrome and IE appear to work correctly. I wish I could let this go, but because GWT development mode and firefox is critical during our development efforts I thought I'd post a quick message here.
Here is the stack trace:
com.google.gwt.core.client.JavaScriptException: (null): null
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:195)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:120)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:507)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeVoid(ModuleSpace.java:284)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeVoid(JavaScriptHost.java:107)
at com.smartgwt.client.widgets.grid.ListGrid.fetchData(ListGrid.java)
at gov.state.wraps.web.orgs.client.OrgListViewImpl.fetchData(OrgListViewImpl.java:81)
at gov.state.wraps.web.orgs.client.OrgListPresenter.go(OrgListPresenter.java:50)
at gov.state.wraps.web.controller.gwt.BaseControllerImpl.performNavigation(BaseControllerImpl.java:109)
at gov.state.wraps.web.controller.gwt.BaseControllerImpl.onAction(BaseControllerImpl.java:86)
at gov.state.wraps.web.controller.gwt.ActionEvent.dispatch(ActionEvent.java:52)
at gov.state.wraps.web.controller.gwt.ActionEvent.dispatch(ActionEvent.java:1)
at com.google.gwt.event.shared.HandlerManager$HandlerRegistry.fireEvent(HandlerManager.java:65)
at com.google.gwt.event.shared.HandlerManager$HandlerRegistry.access$100(HandlerManager.java:41)
at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:178)
at gov.state.wraps.web.controller.gwt.BaseControllerImpl.performAction(BaseControllerImpl.java:52)
at gov.state.wraps.web.core.client.CorePresenter$6.onClick(CorePresenter.java:71)
at com.smartgwt.client.widgets.menu.events.MenuItemClickEvent.dispatch(MenuItemClickEvent.java:95)
at com.smartgwt.client.widgets.menu.events.MenuItemClickEvent.dispatch(MenuItemClickEvent.java:57)
at com.google.gwt.event.shared.HandlerManager$HandlerRegistry.fireEvent(HandlerManager.java:65)
at com.google.gwt.event.shared.HandlerManager$HandlerRegistry.access$100(HandlerManager.java:41)
at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:178)
at com.smartgwt.client.core.DataClass.fireEvent(DataClass.java:197)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157)
at com.google.gwt.dev.shell.BrowserChannel.reactToMessagesWhileWaitingForReturn(BrowserChannel.java:1714)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:165)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:120)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:507)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:264)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:188)
at sun.reflect.GeneratedMethodAccessor90.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157)
at com.google.gwt.dev.shell.BrowserChannel.reactToMessages(BrowserChannel.java:1669)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:401)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:222)
at java.lang.Thread.run(Thread.java:619)
And my data source:
Code:
public class OrganizationDataSource extends BaseDataSource<Organization> {
private static DataSourceField id = new DataSourceField("id", FieldType.INTEGER);
private static DataSourceField name = new DataSourceField("name", FieldType.TEXT);
private static DataSourceField description = new DataSourceField("description", FieldType.TEXT);
private static DataSourceField active = new DataSourceField("active", FieldType.BOOLEAN);
public OrganizationDataSource() {
super(Organization.class.getName());
addField(id);
addField(name);
addField(description);
addField(active);
}
private static ToRecord<Organization> converter = new ToRecord<Organization>() {
@Override public ListGridRecord toRecord(Organization t) {
ListGridRecord lgr = new ListGridRecord();
lgr.setAttribute(id.getName(), t.getId());
lgr.setAttribute(name.getName(), t.getName());
lgr.setAttribute(description.getName(), t.getDescription());
lgr.setAttribute(active.getName(), new Boolean(t.isActive()));
return lgr;
}
};
@Override protected ToRecord<Organization> getConverter() {
return converter;
}
}
Code:
public abstract class BaseDataSource<T> extends DataSource implements HasRequestDataHandler<T> {
private HandlerManager handlerManager = new HandlerManager(this);
protected String dataSourceId;
public BaseDataSource(String dataSourceId) {
setDataProtocol(DSProtocol.CLIENTCUSTOM);
setDataFormat(DSDataFormat.CUSTOM);
setTitle("Testing");
if (dataSourceId.indexOf('.') >= 0) {
this.dataSourceId = fixDataSource(dataSourceId);
} else {
this.dataSourceId = dataSourceId;
}
//setID(this.dataSourceId);
}
private String fixDataSource(String dataSourceId) {
return dataSourceId.substring(dataSourceId.lastIndexOf('.')+1);
}
public ListGridRecord[] getListGridRecords(List<T> objects) {
return ListToRecord.listToRecord(objects, getConverter());
}
protected abstract ToRecord<T> getConverter();
@Override
protected Object transformRequest(DSRequest r) {
RequestDataEvent<T> rde = new RequestDataEvent<T>();
rde.setDataSourceId(dataSourceId);
rde.setLength(r.getEndRow().intValue() - r.getStartRow().intValue());
rde.setRequestId(r.getRequestId());
rde.setStartRow(r.getStartRow().intValue());
handlerManager.fireEvent(rde);
return r;
}
public void appendData(RequestDataEvent<T> response) {
DSResponse r = new DSResponse();
r.setData(getListGridRecords(response.getData()));
r.setStartRow(response.getStartRow());
r.setEndRow(new Integer((response.getStartRow() + response.getLength())));
r.setTotalRows(response.getTotalRecords());
processResponse(response.getRequestId(),r);
}
@Override public HandlerRegistration addLiveDataHandler(RequestDataHandler handler) {
return handlerManager.addHandler(RequestDataEvent.TYPE, handler);
}
}
Comment