Question

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)   
Was it helpful?

Solution

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).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top