If I pass --autologin=true to my app, there will be kicked off a Task
with a TaskListener right away. Basically the flow is like this:
1. The application class loads a bxml file representing a Frame.
2. If --auto-login=true, call the login() method in the Frame
3. The login() method creates a task and a tasklistener, that would
close the Frame and load another one on successful login.
The first step is performed like this:
LoginFrame loginFrame = (LoginFrame)
serializer.readObject(VortexApplication.class, "LoginFrame.bxml");
loginFrame.open(display, null);
if ("true".equals(properties.get("autologin")))
loginFrame.login();
loginFrame.login() is basically:
Task task = new Task() {
...
}
TaskListener loggedInListener = new TaskListener() {
public void taskExecuted(Task task) {
MainWindow mainWindow = (MainWindow)
serializer.readObject(MainWindow.class, "MainWindow.bxml");
mainWindow.open(display);
close();
...
Not a good idea? :)
-- Edvin
Den 07.05.2011 18:00, skrev Greg Brown:
Are you using background threads in your application by any chance?
On May 7, 2011, at 9:41 AM, Edvin Syse wrote:
Once in a while I will get the following exception when I start my application.
It appears maybe once every 30th start of the application. Since it is
indeterministic I thought I'd post it here. I could create a test-case for
this, but it could take some time to reproduce. Here goes:
Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException
at
org.apache.pivot.collections.ArrayList$ArrayListItemIterator.hasNext(ArrayList.java:50)
at
org.apache.pivot.util.ImmutableIterator.hasNext(ImmutableIterator.java:37)
at org.apache.pivot.wtk.skin.DisplaySkin.layout(DisplaySkin.java:49)
at org.apache.pivot.wtk.Component.layout(Component.java:1951)
at org.apache.pivot.wtk.Container.layout(Container.java:340)
at org.apache.pivot.wtk.Component.validate(Component.java:1942)
at
org.apache.pivot.wtk.ApplicationContext$QueuedCallback.run(ApplicationContext.java:1488)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:602)
at java.awt.EventQueue$1.run(EventQueue.java:600)
at java.security.AccessController.doPrivileged(Native Method)
at
java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:611)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
-- Edvin