I created OQL (and it’s successor JEC) to achieve bidirectional data binding in the WAM presentation framework.
Let’s say you have the following expression:
book.pages[selectedPage].text
So, you have a context Map with a key/value pair ("book" -> Book) pointing to a business object Book that holds a list of pages, that’s an object with a text attribute. Another context key/value pair relates the selectedPage to an integer number: ("selectedPage" -> Int).
In the view rendering phase (it was done at the server side, the usual approach at that time), that expression was evaluated (we did a get) and the text of the selected book page was printed.
In the control phase, we received model updates and did a set of that expression.
That’s all :-)
The 2nd version JEC was released to the Open Source community in SourceForge jec.sourceforge.net. Here’s an annotated class diagram of the JEC project:
