[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-openjfx-dev
Subject:    API break in 2.1 JavaFXBuilderFactory
From:       tom.schindl () bestsolution ! at (Tom Schindl)
Date:       2011-12-31 13:37:35
Message-ID: 4EFF101F.5030407 () bestsolution ! at
[Download RAW message or body]

Hi,

It looks like the JavaFXBuilderFactory lost the
JavaFXBuilderFactory(boolean) constructor.

I've been this constructor like this "new JavaFXBuilderFactory(false)"
because with the default one (new JavaFXBuilderFactory()) an FXML-File
like this:

> <?xml version="1.0" encoding="UTF-8"?>
> <!-- 
> 	Do not edit this file it is generated by e(fx)clipse from \
>                 /at/bestsolution/efxclipse/testcases/fxgraph/BindingTest.fxgraph
> -->
> 
> <?import java.lang.*?>
> <?import javafx.scene.control.Label?>
> <?import javafx.scene.control.TextField?>
> <?import javafx.scene.layout.HBox?>
> 
> <HBox xmlns:fx="http://javafx.com/fxml">
> 	
> 	<children>
> 		<Label> 
> 			<text>Binding</text>
> 		</Label>
> 		<TextField fx:id="field1"/> 
> 		<TextField text="${field1.text}"/> 
> 	</children>
> 
> </HBox>

Fails with an exception like this.

> WARNUNG: Method text failed
> java.lang.NullPointerException
> 	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 javafx.fxml.JavaFXBuilder$ObjectBuilder.put(JavaFXBuilderFactory.java:237)
> 	at javafx.fxml.JavaFXBuilder$ObjectBuilder.put(JavaFXBuilderFactory.java:138)
> 	at javafx.fxml.FXMLLoader$ExpressionTargetMapping.changed(FXMLLoader.java:1127)
> 	at com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(ExpressionHelper.java:181)
>   at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:64)
>   at javafx.beans.property.ReadOnlyObjectPropertyBase.fireValueChangedEvent(ReadOnlyObjectPropertyBase.java:43)
>   at com.sun.javafx.fxml.expression.ExpressionBinding$ValueProperty.fireValueChangedEvent(ExpressionBinding.java:87)
>   at com.sun.javafx.fxml.expression.ExpressionBinding$KeyPathMonitor$2.onChanged(ExpressionBinding.java:154)
>   at com.sun.javafx.fxml.BeanAdapter$PropertyInvalidationListener.invalidated(BeanAdapter.java:170)
>   at com.sun.javafx.binding.ExpressionHelper$MultipleInvalidation.fireValueChangedEvent(ExpressionHelper.java:301)
>   at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:64)
>   at javafx.scene.control.TextInputControl$TextProperty.fireValueChangedEvent(TextInputControl.java:991)
>   at javafx.scene.control.TextInputControl$TextProperty.markInvalid(TextInputControl.java:995)
>   at javafx.scene.control.TextInputControl$TextProperty.invalidate(TextInputControl.java:935)
>   at javafx.scene.control.TextInputControl$TextProperty.access$100(TextInputControl.java:907)
>   at javafx.scene.control.TextInputControl$1.invalidated(TextInputControl.java:109)
> 	at com.sun.javafx.binding.ExpressionHelper$SingleInvalidation.fireValueChangedEvent(ExpressionHelper.java:140)
>   at com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(ExpressionHelper.java:64)
>   at javafx.scene.control.TextField$TextFieldContent.insert(TextField.java:70)
> 	at javafx.scene.control.TextInputControl.replaceText(TextInputControl.java:338)
> 	at com.sun.javafx.scene.control.skin.TextFieldSkin.replaceText(TextFieldSkin.java:407)
>   at com.sun.javafx.scene.control.behavior.TextFieldBehavior.replaceText(TextFieldBehavior.java:134)
>   at com.sun.javafx.scene.control.behavior.TextInputControlBehavior.defaultKeyTyped(TextInputControlBehavior.java:185)
>   at com.sun.javafx.scene.control.behavior.TextInputControlBehavior.callAction(TextInputControlBehavior.java:114)
>   at com.sun.javafx.scene.control.behavior.BehaviorBase.callActionForEvent(BehaviorBase.java:165)
>   at com.sun.javafx.scene.control.behavior.TextInputControlBehavior.callActionForEvent(TextInputControlBehavior.java:107)
>   at com.sun.javafx.scene.control.behavior.BehaviorBase$1.handle(BehaviorBase.java:127)
>   at com.sun.javafx.scene.control.behavior.BehaviorBase$1.handle(BehaviorBase.java:125)
>   at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:56)
>   at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:162)
>   at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:115)
>   at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38)
>   at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37)
>   at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
>   at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
>   at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
>   at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:47)
> 	at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:33)
> 	at javafx.event.Event.fireEvent(Event.java:171)
> 	at javafx.scene.Scene$KeyHandler.process(Scene.java:2938)
> 	at javafx.scene.Scene$KeyHandler.access$1700(Scene.java:2868)
> 	at javafx.scene.Scene.impl_processKeyEvent(Scene.java:1431)
> 	at javafx.scene.Scene$ScenePeerListener.keyEvent(Scene.java:1862)
> 	at com.sun.javafx.tk.quantum.EmbeddedScene$3.run(EmbeddedScene.java:366)
> 	at com.sun.javafx.application.PlatformImpl$3.run(PlatformImpl.java:119)
> 	at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
> 	at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2545)
> 	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3752)
> 	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:977)
>   at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
> 	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:893)
>   at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:91)
>   at org.eclipse.ui.internal.Workbench$3.run(Workbench.java:565)
> 	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
> 	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:520)
> 	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
> 	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
>   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:352)
> 	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
> 	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 org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:624)
> 	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:579)
> 	at org.eclipse.equinox.launcher.Main.run(Main.java:1433)
> 	at org.eclipse.equinox.launcher.Main.main(Main.java:1409)

Why has the constructor been removed? Should binding work also if one
uses the default constructor?

Tom

-- 
B e s t S o l u t i o n . a t                        EDV Systemhaus GmbH
------------------------------------------------------------------------
tom schindl                 gesch?ftsf?hrer/CEO
------------------------------------------------------------------------
eduard-bodem-gasse 5-7/1   A-6020 innsbruck     fax      ++43 512 935833
http://www.BestSolution.at                      phone    ++43 512 935834


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic