Found in GWT Release:
GWT 2.4.0beta GWT Designer 2.3.4r36
Encountered on OS / Browser (e.g. WinXP, IE6-7, FF3):
Windows 7 x64 Eclipse 3.6
Detailed description (please be as specific as possible):
Use a @UiField and let UiBinder use GWT.create(SomeInterface.class) to create a concrete instance via deferred binding. When using custom property-provider, like form factor detection, GWT Designer is unable to get value of property 'formfactor'. http://code.google.com/p/google-web-toolkit/source/browse/trunk/samples/mobilewebapp/src/com/google/gwt/sample/mobilewebapp/FormFactor.gwt.xml?r=10041
Shortest code snippet which demonstrates issue (please indicate where actual result differs from expected result):
When switching to design view it should compile with the default permutation (desktop).
replace-with class="com.example.client.DesktopProvider"> <when-type-is class="com.example.client.PropertyProvider" /> </replace-with>
<replace-with class="com.example.client.MobileProvider">
<when-type-is class="com.example.client.PropertyProvider" />
<any>
<when-property-is name="formfactor" value="androidmobile"/>
<when-property-is name="formfactor" value="iosmobile"/>
</any>
</replace-with>
<replace-with class="com.example.client.TabletProvider">
<when-type-is class="com.example.client.PropertyProvider" />
<any>
<when-property-is name="formfactor" value="androidtablet"/>
<when-property-is name="formfactor" value="iostablet"/>
</any>
</replace-with>
Workaround if you have one: Comment permutations rules that depend on property-provider (e.g. FormFactor).
Links to relevant GWT Developer Forum posts: http://groups.google.com/group/google-web-toolkit/browse_thread/thread/6ff3c16ff26e09af?pli=1
- report-20110816-154358.zip 320.06KB
Comment #1
Posted on Aug 16, 2011 by Happy Lion(No comment was entered for this change.)
Comment #2
Posted on Jan 24, 2012 by Massive LionSame problem here.
Comment #3
Posted on Feb 13, 2012 by Happy RhinoI have the same problem.
Comment #4
Posted on Feb 16, 2012 by Happy LionFixed in trunk. Now GWT Designer can run "property-provider" scripts from gwt.xml files to define property value. This allows for example using mGWT.
Comment #5
Posted on Feb 16, 2012 by Swift Pandavery nice. Thank you very much!
Comment #6
Posted on Jul 25, 2012 by Happy RhinoI have UIBinder code like this
<mgwt:LayoutPanel>
<mgwt:HeaderPanel>
<mgwt:center>
<g:HTML ui:field="center"></g:HTML>
</mgwt:center>
</mgwt:HeaderPanel>
<mgwt:ScrollPanel scrollingEnabledX="false">
<g:FlowPanel>
<mgwt:RoundPanel>
<mgwt:MTextBox ui:field="name"></mgwt:MTextBox>
</mgwt:RoundPanel>
<mgwt:Button ui:field="editButton" text="edit"></mgwt:Button>
</g:FlowPanel>
</mgwt:ScrollPanel>
</mgwt:LayoutPanel>
I am still facing the same problem. Using GWT 2.4.0, GWT Designer 2.6, Windows Builder 1.5 ? Could you please help me with this ?
Comment #7
Posted on Jul 25, 2012 by Happy RhinoJust for details adding stack trace :
Internal Error encountered unexpected internal error.
This could be caused by a bug or by a misconfiguration issue, conflict, partial update, etc.
org.mvel2.PropertyAccessException: unable to resolve method: com.google.gdt.eclipse.designer.uibinder.model.widgets.WidgetInfo.getWidget() [arglength=0]
Show stack trace. Hide stack trace.
Stack trace: [Error: unable to resolve method: com.google.gdt.eclipse.designer.uibinder.model.widgets.WidgetInfo.getWidget() [arglength=0]] [Near : {... Unknown ....}] ^ [Line: 1, Column: 0] at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:929) at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:313) at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:136) at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:134) at org.mvel2.compiler.ExecutableAccessor.getValue(ExecutableAccessor.java:37) at org.mvel2.ast.AssignmentNode.getReducedValueAccelerated(AssignmentNode.java:90) at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85) at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:103) at org.mvel2.MVEL.executeExpression(MVEL.java:1069) at org.eclipse.wb.internal.core.model.util.ScriptUtils.evaluate(ScriptUtils.java:146) at org.eclipse.wb.internal.core.model.util.ScriptUtils.evaluate(ScriptUtils.java:85) at com.google.gdt.eclipse.designer.model.widgets.support.UIObjectUtils.executeScript(UIObjectUtils.java:441) at com.google.gdt.eclipse.designer.uibinder.model.widgets.WidgetTopBoundsSupport.invokeSizeScript(WidgetTopBoundsSupport.java:126) at com.google.gdt.eclipse.designer.uibinder.model.widgets.WidgetTopBoundsSupport.applySizeUsingScript(WidgetTopBoundsSupport.java:111) at com.google.gdt.eclipse.designer.uibinder.model.widgets.WidgetTopBoundsSupport.doApply(WidgetTopBoundsSupport.java:84) at com.google.gdt.eclipse.designer.uibinder.model.widgets.WidgetTopBoundsSupport.apply(WidgetTopBoundsSupport.java:63) at org.eclipse.wb.internal.core.xml.model.AbstractComponentInfo.refresh_afterCreate(AbstractComponentInfo.java:255) at com.google.gdt.eclipse.designer.uibinder.model.widgets.UIObjectInfo.refresh_afterCreate(UIObjectInfo.java:215) at org.eclipse.wb.core.model.ObjectInfo.refreshCreate0(ObjectInfo.java:552) at org.eclipse.wb.core.model.ObjectInfo.access$0(ObjectInfo.java:546) at org.eclipse.wb.core.model.ObjectInfo$5$1.run(ObjectInfo.java:486) at org.eclipse.wb.internal.core.utils.execution.ExecutionUtils.runDesignTime(ExecutionUtils.java:139) at org.eclipse.wb.core.model.ObjectInfo$5.run(ObjectInfo.java:484) at org.eclipse.wb.core.model.ObjectInfo.execRefreshOperation(ObjectInfo.java:514) at org.eclipse.wb.core.model.ObjectInfo.refresh(ObjectInfo.java:482) at org.eclipse.wb.internal.core.xml.editor.XmlDesignPage.internal_refreshGEF(XmlDesignPage.java:459) at org.eclipse.wb.internal.core.xml.editor.XmlDesignPage.access$2(XmlDesignPage.java:443) at org.eclipse.wb.internal.core.xml.editor.XmlDesignPage$7$1.run(XmlDesignPage.java:417) at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:180) at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150) at org.eclipse.swt.widgets.Display.syncExec(Display.java:4683) at org.eclipse.wb.internal.core.xml.editor.XmlDesignPage$7.run(XmlDesignPage.java:414) at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:464) at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:372) at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:507) at org.eclipse.wb.internal.core.xml.editor.XmlDesignPage.internal_refreshGEF_withProgress(XmlDesignPage.java:435) at org.eclipse.wb.internal.core.xml.editor.XmlDesignPage.internal_refreshGEF(XmlDesignPage.java:388) at org.eclipse.wb.internal.core.xml.editor.UndoManager.refreshDesignerEditor(UndoManager.java:252) at org.eclipse.wb.internal.core.xml.editor.UndoManager.activate(UndoManager.java:85) at org.eclipse.wb.internal.core.xml.editor.XmlDesignPage.setActive(XmlDesignPage.java:171) at org.eclipse.wb.internal.core.xml.editor.AbstractXmlEditor.pageChange(AbstractXmlEditor.java:651) at org.eclipse.ui.part.MultiPageEditorPart$2.widgetSelected(MultiPageEditorPart.java:290) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:240) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:774) at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:2746) at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1433) at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:257) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) 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 org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) at org.eclipse.equinox.launcher.Main.run(Main.java:1410) at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Full context stack trace: [Error: unable to resolve method: com.google.gdt.eclipse.designer.uibinder.model.widgets.WidgetInfo.getWidget() [arglength=0]] [Near : {... Unknown ....}] ^ [Line: 1, Column: 0] at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.getMethod(ReflectiveAccessorOptimizer.java:929) at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.compileGetChain(ReflectiveAccessorOptimizer.java:313) at org.mvel2.optimizers.impl.refl.ReflectiveAccessorOptimizer.optimizeAccessor(ReflectiveAccessorOptimizer.java:136) at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:134) at org.mvel2.compiler.ExecutableAccessor.getValue(ExecutableAccessor.java:37) at org.mvel2.ast.AssignmentNode.getReducedValueAccelerated(AssignmentNode.java:90) at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85) at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:103) at org.mvel2.MVEL.executeExpression(MVEL.java:1069) at org.eclipse.wb.internal.core.model.util.ScriptUtils.evaluate(ScriptUtils.java:146) at org.eclipse.wb.internal.core.model.util.ScriptUtils.evaluate(ScriptUtils.java:85) at com.google.gdt.eclipse.designer.model.widgets.support.UIObjectUtils.executeScript(UIObjectUtils.java:441) at com.google.gdt.eclipse.designer.uibinder.model.widgets.WidgetTopBoundsSupport.invokeSizeScript(WidgetTopBoundsSupport.java:126) at com.google.gdt.eclipse.designer.uibinder.model.widgets.WidgetTopBoundsSupport.applySizeUsingScript(WidgetTopBoundsSupport.java:111) at com.google.gdt.eclipse.designer.uibinder.model.widgets.WidgetTopBoundsSupport.doApply(WidgetTopBoundsSupport.java:84) at com.google.gdt.eclipse.designer.uibinder.model.widgets.WidgetTopBoundsSupport.apply(WidgetTopBoundsSupport.java:63) at org.eclipse.wb.internal.core.xml.model.AbstractComponentInfo.refresh_afterCreate(AbstractComponentInfo.java:255) at com.google.gdt.eclipse.designer.uibinder.model.widgets.UIObjectInfo.refresh_afterCreate(UIObjectInfo.java:215) at org.eclipse.wb.core.model.ObjectInfo.refreshCreate0(ObjectInfo.java:552) at org.eclipse.wb.core.model.ObjectInfo.access$0(ObjectInfo.java:546) at org.eclipse.wb.core.model.ObjectInfo$5$1.run(ObjectInfo.java:486) at org.eclipse.wb.internal.core.utils.execution.ExecutionUtils.runDesignTime(ExecutionUtils.java:139) at org.eclipse.wb.core.model.ObjectInfo$5.run(ObjectInfo.java:484) at org.eclipse.wb.core.model.ObjectInfo.execRefreshOperation(ObjectInfo.java:514) at org.eclipse.wb.core.model.ObjectInfo.refresh(ObjectInfo.java:482) at org.eclipse.wb.internal.core.xml.editor.XmlDesignPage.internal_refreshGEF(XmlDesignPage.java:459) at org.eclipse.wb.internal.core.xml.editor.XmlDesignPage.access$2(XmlDesignPage.java:443) at org.eclipse.wb.internal.core.xml.editor.XmlDesignPage$7$1.run(XmlDesignPage.java:417) at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:180) at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150) at org.eclipse.swt.widgets.Display.syncExec(Display.java:4683) at org.eclipse.wb.internal.core.xml.editor.XmlDesignPage$7.run(XmlDesignPage.java:414) at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:464) at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:372) at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:507) at org.eclipse.wb.internal.core.xml.editor.XmlDesignPage.internal_refreshGEF_withProgress(XmlDesignPage.java:435) at org.eclipse.wb.internal.core.xml.editor.XmlDesignPage.internal_refreshGEF(XmlDesignPage.java:388) at org.eclipse.wb.internal.core.xml.editor.UndoManager.refreshDesignerEditor(UndoManager.java:252) at org.eclipse.wb.internal.core.xml.editor.UndoManager.activate(UndoManager.java:85) at org.eclipse.wb.internal.core.xml.editor.XmlDesignPage.setActive(XmlDesignPage.java:171) at org.eclipse.wb.internal.core.xml.editor.AbstractXmlEditor.pageChange(AbstractXmlEditor.java:651) at org.eclipse.ui.part.MultiPageEditorPart$2.widgetSelected(MultiPageEditorPart.java:290) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:240) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:774) at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:2746) at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1433) at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:257) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) 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 org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) at org.eclipse.equinox.launcher.Main.run(Main.java:1410) at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Status: Fixed
Labels:
Category-Designer