You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pivot.apache.org by "Piotr Kołaczkowski (JIRA)" <ji...@apache.org> on 2011/07/30 13:43:09 UTC

[jira] [Updated] (PIVOT-780) Can't use BXMLSerializer from non-AWT threads makes background resource loading impossible

     [ https://issues.apache.org/jira/browse/PIVOT-780?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Piotr Kołaczkowski updated PIVOT-780:
-------------------------------------

    Description: 
Calling bxmlSerializer.readObject from a non-AWT thread causes the following exception:

An error occurred at line number 5 in file /C:/Users/Piotr/Projekty/viungo/viungo-editor/target/scala_2.9.0/classes/com/viungo/editor/CircuitEditor.bxml:
org.apache.pivot.serialization.SerializationException: java.lang.IllegalStateException: this method can only be called from the AWT event dispatch thread
	at org.apache.pivot.beans.BXMLSerializer.processStartElement(BXMLSerializer.java:769)
	at org.apache.pivot.beans.BXMLSerializer.readObject(BXMLSerializer.java:441)
	at org.apache.pivot.beans.BXMLSerializer.readObject(BXMLSerializer.java:624)
	at org.apache.pivot.beans.BXMLSerializer.readObject(BXMLSerializer.java:579)
	at org.apache.pivot.beans.BXMLSerializer.readObject(BXMLSerializer.java:540)
	at com.viungo.editor.CircuitEditor$$anon$1.execute(CircuitEditor.scala:21)
	at com.viungo.editor.CircuitEditor$$anon$1.execute(CircuitEditor.scala:18)
	at org.apache.pivot.util.concurrent.Task$ExecuteCallback.run(Task.java:42)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.IllegalStateException: this method can only be called from the AWT event dispatch thread
	at org.apache.pivot.wtk.Container$1.run(Container.java:864)
	at org.apache.pivot.wtk.Container.assertEventDispatchThread(Container.java:871)
	at org.apache.pivot.wtk.WTKListenerList.add(WTKListenerList.java:36)
	at org.apache.pivot.wtk.skin.ComponentSkin.install(ComponentSkin.java:96)
	at org.apache.pivot.wtk.skin.ContainerSkin.install(ContainerSkin.java:129)
	at org.apache.pivot.wtk.skin.WindowSkin.install(WindowSkin.java:66)
	at org.apache.pivot.wtk.Component.setSkin(Component.java:749)
	at org.apache.pivot.wtk.Component.installSkin(Component.java:812)
	at org.apache.pivot.wtk.Window.<init>(Window.java:453)
	at org.apache.pivot.wtk.Window.<init>(Window.java:448)
	at com.viungo.editor.EditorWindow.<init>(EditorWindow.scala:20)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at java.lang.Class.newInstance0(Class.java:355)
	at java.lang.Class.newInstance(Class.java:308)
	at org.apache.pivot.beans.BXMLSerializer.newTypedObject(BXMLSerializer.java:1556)
	at org.apache.pivot.beans.BXMLSerializer.processStartElement(BXMLSerializer.java:767)
	... 11 more


Loading objects in background is very important, so that the user can see e.g. a progress indicator while the rest of the UI is deserialized. 
Doing this in AWT thread, blocks what is currently displayed.

  was:
Calling bxmlSerializer.readObject from a non-AWT thread causes the following exception:
<code>
An error occurred at line number 5 in file /C:/Users/Piotr/Projekty/viungo/viungo-editor/target/scala_2.9.0/classes/com/viungo/editor/CircuitEditor.bxml:
org.apache.pivot.serialization.SerializationException: java.lang.IllegalStateException: this method can only be called from the AWT event dispatch thread
	at org.apache.pivot.beans.BXMLSerializer.processStartElement(BXMLSerializer.java:769)
	at org.apache.pivot.beans.BXMLSerializer.readObject(BXMLSerializer.java:441)
	at org.apache.pivot.beans.BXMLSerializer.readObject(BXMLSerializer.java:624)
	at org.apache.pivot.beans.BXMLSerializer.readObject(BXMLSerializer.java:579)
	at org.apache.pivot.beans.BXMLSerializer.readObject(BXMLSerializer.java:540)
	at com.viungo.editor.CircuitEditor$$anon$1.execute(CircuitEditor.scala:21)
	at com.viungo.editor.CircuitEditor$$anon$1.execute(CircuitEditor.scala:18)
	at org.apache.pivot.util.concurrent.Task$ExecuteCallback.run(Task.java:42)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.IllegalStateException: this method can only be called from the AWT event dispatch thread
	at org.apache.pivot.wtk.Container$1.run(Container.java:864)
	at org.apache.pivot.wtk.Container.assertEventDispatchThread(Container.java:871)
	at org.apache.pivot.wtk.WTKListenerList.add(WTKListenerList.java:36)
	at org.apache.pivot.wtk.skin.ComponentSkin.install(ComponentSkin.java:96)
	at org.apache.pivot.wtk.skin.ContainerSkin.install(ContainerSkin.java:129)
	at org.apache.pivot.wtk.skin.WindowSkin.install(WindowSkin.java:66)
	at org.apache.pivot.wtk.Component.setSkin(Component.java:749)
	at org.apache.pivot.wtk.Component.installSkin(Component.java:812)
	at org.apache.pivot.wtk.Window.<init>(Window.java:453)
	at org.apache.pivot.wtk.Window.<init>(Window.java:448)
	at com.viungo.editor.EditorWindow.<init>(EditorWindow.scala:20)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at java.lang.Class.newInstance0(Class.java:355)
	at java.lang.Class.newInstance(Class.java:308)
	at org.apache.pivot.beans.BXMLSerializer.newTypedObject(BXMLSerializer.java:1556)
	at org.apache.pivot.beans.BXMLSerializer.processStartElement(BXMLSerializer.java:767)
	... 11 more
</code>

Loading objects in background is very important, so that the user can see e.g. a progress indicator while the rest of the UI is deserialized. 
Doing this in AWT thread, blocks what is currently displayed.


> Can't use BXMLSerializer from non-AWT threads makes background resource loading impossible
> ------------------------------------------------------------------------------------------
>
>                 Key: PIVOT-780
>                 URL: https://issues.apache.org/jira/browse/PIVOT-780
>             Project: Pivot
>          Issue Type: Bug
>          Components: core-beans, wtk
>    Affects Versions: 2.0.1
>            Reporter: Piotr Kołaczkowski
>              Labels: background, initialization, thread
>
> Calling bxmlSerializer.readObject from a non-AWT thread causes the following exception:
> An error occurred at line number 5 in file /C:/Users/Piotr/Projekty/viungo/viungo-editor/target/scala_2.9.0/classes/com/viungo/editor/CircuitEditor.bxml:
> org.apache.pivot.serialization.SerializationException: java.lang.IllegalStateException: this method can only be called from the AWT event dispatch thread
> 	at org.apache.pivot.beans.BXMLSerializer.processStartElement(BXMLSerializer.java:769)
> 	at org.apache.pivot.beans.BXMLSerializer.readObject(BXMLSerializer.java:441)
> 	at org.apache.pivot.beans.BXMLSerializer.readObject(BXMLSerializer.java:624)
> 	at org.apache.pivot.beans.BXMLSerializer.readObject(BXMLSerializer.java:579)
> 	at org.apache.pivot.beans.BXMLSerializer.readObject(BXMLSerializer.java:540)
> 	at com.viungo.editor.CircuitEditor$$anon$1.execute(CircuitEditor.scala:21)
> 	at com.viungo.editor.CircuitEditor$$anon$1.execute(CircuitEditor.scala:18)
> 	at org.apache.pivot.util.concurrent.Task$ExecuteCallback.run(Task.java:42)
> 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> 	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> 	at java.lang.Thread.run(Thread.java:662)
> Caused by: java.lang.IllegalStateException: this method can only be called from the AWT event dispatch thread
> 	at org.apache.pivot.wtk.Container$1.run(Container.java:864)
> 	at org.apache.pivot.wtk.Container.assertEventDispatchThread(Container.java:871)
> 	at org.apache.pivot.wtk.WTKListenerList.add(WTKListenerList.java:36)
> 	at org.apache.pivot.wtk.skin.ComponentSkin.install(ComponentSkin.java:96)
> 	at org.apache.pivot.wtk.skin.ContainerSkin.install(ContainerSkin.java:129)
> 	at org.apache.pivot.wtk.skin.WindowSkin.install(WindowSkin.java:66)
> 	at org.apache.pivot.wtk.Component.setSkin(Component.java:749)
> 	at org.apache.pivot.wtk.Component.installSkin(Component.java:812)
> 	at org.apache.pivot.wtk.Window.<init>(Window.java:453)
> 	at org.apache.pivot.wtk.Window.<init>(Window.java:448)
> 	at com.viungo.editor.EditorWindow.<init>(EditorWindow.scala:20)
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
> 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
> 	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
> 	at java.lang.Class.newInstance0(Class.java:355)
> 	at java.lang.Class.newInstance(Class.java:308)
> 	at org.apache.pivot.beans.BXMLSerializer.newTypedObject(BXMLSerializer.java:1556)
> 	at org.apache.pivot.beans.BXMLSerializer.processStartElement(BXMLSerializer.java:767)
> 	... 11 more
> Loading objects in background is very important, so that the user can see e.g. a progress indicator while the rest of the UI is deserialized. 
> Doing this in AWT thread, blocks what is currently displayed.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira