PDA

View Full Version : What to do with undefined is not a function during portal.add(portlet)



LancerX
15 Jan 2013, 10:53 AM
I'm working on legacy project with GXT and Highcharts GXT (http://highcharts-gxt.sourceforge.net/wordpress/). I'm getting the following exception:


com.google.gwt.core.client.JavaScriptException: (TypeError): undefined is not a function
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:248)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269)
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:213)
at sun.reflect.GeneratedMethodAccessor34.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:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:292)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:546)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
at java.lang.Thread.run(Thread.java:619)


This is stack trace copied from the debugger


...
... and others methods call connected with ModuleSpaceOOPHM
ModuleSpaceOOPHM.doInvoke(String, Object, Class<?>[], Object[]) line: 109
ModuleSpaceOOPHM(ModuleSpace).invokeNative(String, Object, Class<?>[], Object[]) line: 561
ModuleSpaceOOPHM(ModuleSpace).invokeNativeVoid(String, Object, Class<?>[], Object[]) line: 289
JavaScriptHost.invokeNativeVoid(String, Object, Class<?>[], Object[]) line: 107
RowLayout(Layout).doLayout(Container<?>) line: not available
RowLayout(Layout).callLayout(Component, boolean) line: 234
RowLayout.layoutVertical(El) line: 214
RowLayout.onLayout(Container<?>, El) line: 268
RowLayout(Layout).layout() line: 114
LayoutContainer(Container<T>).doLayout(boolean) line: 351
LayoutContainer(Container<T>).layout(boolean) line: 443
LayoutContainer.layout(boolean) line: 246
LayoutContainer(Container<T>).layout() line: 426
LayoutContainer.layout() line: 241
LayoutContainer(Container<T>).insert(T, int) line: 407
LayoutContainer.insert(Widget, int, LayoutData) line: 220
com.extjs.gxt.ui.client.widget.custom.Portal.insert(Portlet, int, int) line: 213
com.extjs.gxt.ui.client.widget.custom.Portal.add(Portlet, int) line: 142
ChartPortal.add(Portlet) line: 77


Using "Open Implementation" in Eclipse, I found out that the issue is the method:

private native void doLayout(Container<?> c) /*-{
c.@com.extjs.gxt.ui.client.widget.Container::layout()();
}-*/;
And what can I do with it? Please, suggest me something

Colin Alworth
15 Jan 2013, 7:26 PM
Where is that JSNI method found? I can't find it anywhere within GXT.

Can you share a runnable sample that has this issue?

Without more information, I would guess that this is a bug in the linked HighCharts-GXT library - have you tried to contact them for help?