Delegating Shale dialog navigation handling based on inconsequential triggers

Shale distro version Screen 1 Screen 2
Nightly Nightly Shale, Screen 1
Action: Click on "Car Color" sortable header.
Nightly Shale, Screen 2
Outcome: Error condition.
Shale with concept of inconsequential triggers
war file *
code ^
Shale with concept of inconsequential triggers, Screen 1
Action: Click on "Car Color" sortable header.
Shale with concept of inconsequential triggers, Screen 2
Outcome: Correct sort in IFrame.

* - Rename to .war since file will probably download with .zip appended. Scroll to bottom of welcome page, once deployed, to find link for the dialog whose screenshots appear above.
^ - Thing to see in code is proof of concept of relevant or "inconsequential" triggers, in handleNavigation()

Background

See
bug report for 37120.

Proof of concept

The proof of concept uses SCXML dialogs, see SCXML in Shale, with implicit transitions, plus the concept of inconsequential triggers (see below).

Inconsequential Triggers

These are events which do not have any consequence on the state of a Shale dialog, and hence are best delegated to the original dialog navigation handler. An "inconsequential" trigger may be defined as one that does not cause any of the dialog transitions to be followed.

Thus, a dialog navigation strategy should delegate if (and only if) it receives:

Disclaimer

This material has not been reviewed by the Apache Struts Shale team.