views:

1076

answers:

1

I am using GWT-RPC to populate Ext-GWT TreeGrids with data from a server. I am using 4 callbacks to populate 6 TreeGrids. As the callback onSuccess function modifies the TreeGrid by inserting rows, the TreeGridView needs to render the rows. The callback class is called MainPnlSummaryTablesAsyncCallback.

For some reason, when it needs to determine the TreeGridView's scroller's offsetHeight via JSNI, onSuccess or onFailure is called on another instance of the callback in the stack trace. A copy of the stack trace I encountered is below.

Isn't this really weird? Why is this happening?

FYI I am using Ext-GWT 2.0.1 and GWT 1.7.0 and I am using hosted mode browser to debug this, although I am pretty sure that this is an issue for web mode.

PnlSummaryClientDebug_as10node6 [Java Application]  
com.google.gwt.dev.HostedMode at localhost:3595 
 Thread [main] (Suspended (breakpoint at line 403 in MainPage$MainPnlSummaryTablesAsyncCallback)) 
  MainPage$8(MainPage$MainPnlSummaryTablesAsyncCallback).onSuccess(GWTPair<AggregateStringGWTTable,AggregateStringGWTTable>) line: 403 
  MainPage$8(MainPage$MainPnlSummaryTablesAsyncCallback).onSuccess(Object) line: 1 
  RequestCallbackAdapter<T>.onResponseReceived(Request, Response) line: 215 
  Request.fireOnResponseReceivedImpl(RequestCallback) line: 264 
  Request.fireOnResponseReceivedAndCatch(GWT$UncaughtExceptionHandler, RequestCallback) line: 236 
  Request.fireOnResponseReceived(RequestCallback) line: 227 
  NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method] [local variables unavailable] 
  NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39 
  DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 
  Method.invoke(Object, Object...) line: 597 
  MethodAdaptor.invoke(Object, Object...) line: 103 
  IDispatchImpl.callMethod(CompilingClassLoader, Object, Variant[], MethodAdaptor) line: 126 
  IDispatchProxy.invoke(int, int, Variant[]) line: 155 
  IDispatchProxy(IDispatchImpl).Invoke(int, int, int, int, int, int, int, int) line: 294 
  IDispatchProxy(IDispatchImpl).method6(int[]) line: 194 
  COMObject.callback6(int[]) line: 117 
  COM.VtblCall(int, int, int, GUID, int, int, DISPPARAMS, int, EXCEPINFO, int[]) line: not available [native method] 
  IDispatch.Invoke(int, GUID, int, int, DISPPARAMS, int, EXCEPINFO, int[]) line: 64 
  OleAutomation.invoke(int, int, Variant[], int[], Variant) line: 493 
  OleAutomation.invoke(int, Variant[]) line: 417 
  ModuleSpaceIE6.doInvokeOnWindow(OleAutomation, String, Variant[]) line: 68 
  ModuleSpaceIE6.doInvoke(String, Object, Class<?>[], Object[]) line: 153 
  ModuleSpaceIE6(ModuleSpace).invokeNative(String, Object, Class<?>[], Object[]) line: 453 
  ModuleSpaceIE6(ModuleSpace).invokeNativeInt(String, Object, Class<?>[], Object[]) line: 207 
  JavaScriptHost.invokeNativeInt(String, Object, Class<?>[], Object[]) line: 75 
  Element$.getOffsetHeight$(Element) line: not available 
  El.getHeight(boolean) line: 984 
  TreeGridView(BufferView).getVisibleRowCount() line: 313 
  TreeGridView(BufferView).doRender(List<ColumnData>, List<ModelData>, int, int, boolean, boolean) line: 189 
  TreeGridView(BufferView).doRender(List<ColumnData>, List<ModelData>, int, int, boolean) line: 181 
  TreeGridView(GridView).renderRows(int, int) line: 1559 
  TreeGridView(GridView).insertRows(ListStore<ModelData>, int, int, boolean) line: 1242 
  TreeGridView(GridView).onAdd(ListStore<ModelData>, List<ModelData>, int) line: 1293 
  GridView$5.storeAdd(StoreEvent<ModelData>) line: 1179 
  GridView$5(StoreListener<M>).handleEvent(StoreEvent<M>) line: 22 
  GridView$5(StoreListener<M>).handleEvent(BaseEvent) line: 1 
  TreeGrid$2(BaseObservable).callListener(Listener<BaseEvent>, BaseEvent) line: 176 
  TreeGrid$2(BaseObservable).fireEvent(EventType, BaseEvent) line: 96 
  TreeGrid$2(ListStore<M>).insert(List<? extends M>, int, boolean) line: 467 
  TreeGrid$2(ListStore<M>).insert(List<? extends M>, int) line: 266 
  TreeGrid<M>.onAdd(TreeStoreEvent<M>) line: 430 
  TreeGrid$1.storeAdd(StoreEvent<M>) line: 123 
  TreeGrid$1(StoreListener<M>).handleEvent(StoreEvent<M>) line: 22 
  TreeGrid$1(StoreListener<M>).handleEvent(BaseEvent) line: 1 
  TreeStore<M>(BaseObservable).callListener(Listener<BaseEvent>, BaseEvent) line: 176 
  TreeStore<M>(BaseObservable).fireEvent(EventType, BaseEvent) line: 96 
  TreeStore<M>.doInsert(TreeModel, List<TreeModel>, int, boolean, boolean) line: 799 
  TreeStore<M>.insert(List<M>, int, boolean) line: 493 
  TreeStore<M>.add(List<M>, boolean) line: 163 
  TreeStore<M>.add(M, boolean) line: 174 
  PnlClientFactory.populatePnlDataTreeStore(AggregateStringGWTTable, TreeStore<BaseModel>) line: 42 
  MainPage$9(MainPage$MainPnlSummaryTablesAsyncCallback).onSuccess(GWTPair<AggregateStringGWTTable,AggregateStringGWTTable>) line: 403 
  MainPage$9(MainPage$MainPnlSummaryTablesAsyncCallback).onSuccess(Object) line: 1 
  RequestCallbackAdapter<T>.onResponseReceived(Request, Response) line: 215 
  Request.fireOnResponseReceivedImpl(RequestCallback) line: 264 
  Request.fireOnResponseReceivedAndCatch(GWT$UncaughtExceptionHandler, RequestCallback) line: 236 
  Request.fireOnResponseReceived(RequestCallback) line: 227 
  NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method] 
  NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39 
  DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25 
  Method.invoke(Object, Object...) line: 597 
  MethodAdaptor.invoke(Object, Object...) line: 103 
  IDispatchImpl.callMethod(CompilingClassLoader, Object, Variant[], MethodAdaptor) line: 126 
  IDispatchProxy.invoke(int, int, Variant[]) line: 155 
  IDispatchProxy(IDispatchImpl).Invoke(int, int, int, int, int, int, int, int) line: 294 
  IDispatchProxy(IDispatchImpl).method6(int[]) line: 194 
  COMObject.callback6(int[]) line: 117 
  OS.DispatchMessageW(MSG) line: not available [native method] 
  OS.DispatchMessage(MSG) line: 1925 
  Display.readAndDispatch() line: 2966 
  HostedMode(SwtHostedModeBase).processEvents() line: 235 
  HostedMode(HostedModeBase).pumpEventLoop() line: 558 
  HostedMode(HostedModeBase).run() line: 405 
  HostedMode.main(String[]) line: 232 
C:\Program Files\Java\jdk1.6.0_06\bin\javaw.exe (Jul 29, 2009 2:11:16 PM)
A: 

Ok, it seems that the server was throwing some NullPointerExceptions when the RPC calls were being made... still, I don't understand why the client-side stack trace looked like this (looks kind of misleading, as if two stack traces bled into each other).

P4ndaman