UISchedule uses event queue for its decoding
--------------------------------------------

                 Key: TOMAHAWK-1332
                 URL: https://issues.apache.org/jira/browse/TOMAHAWK-1332
             Project: MyFaces Tomahawk
          Issue Type: Bug
          Components: Schedule
    Affects Versions: 1.1.7
            Reporter: Kennard Consulting


org.apache.myfaces.custom.schedule.AbstractScheduleRenderer does most of the 
decoding for the UISchedule, but then relies on a deferred step (via the Event 
queue) to finish the job...

   schedule.setSubmittedEntry(entry);
   queueAction = true;

   if (queueAction)
      schedule.queueEvent(new ActionEvent(schedule));

...org.apache.myfaces.custom.schedule.UISchedule has a processAction that 
actually updates the model with the selectedEntry...

    private class ScheduleActionListener implements ActionListener {

        public void processAction(ActionEvent event)
        {
            schedule.getModel().setSelectedEntry(entry);

I am unclear as to what the need is for this deferred step, but at any rate it 
is very brittle. If any other ActionListeners get fired before the 
ScheduleActionListener, they will find the model isn't ready for them yet. This 
is happening for me using RichFace's jsFunction tag, but it doesn't seem like 
it would be specific to that.

Can we move this last step of the decoding into somewhere more appropriate? 
Ideally in the decode() method itself, but at least as a Listener during the 
APPLY_REQUEST_VALUES phase? Having it as a listener during the 
INVOKE_APPLICATION phase, when it could get ordered arbitrarily with respect to 
other ActionListeners, seems like asking for trouble.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to