Simon Kitching wrote:

The question in my mind is still: what use cases require the
CallMethodRule to fire when the params are available?

Ok I remember why I needed this feature. I wanted to parse a file of i18n labels and insert them in a database. The file looked like this :


<messages>
  <message key="global.cancel">
    <label lang="en">Cancel</label>
    <label lang="fr">Annuler</label>
  </message>
  <message key="global.apply">
    <label lang="en">Apply</label>
    <label lang="fr">Appliquer</label>
  </message>
</messages>

I first pushed a "MessageFactory" on the stack with the following interface :

interface MessageFactory {
    void setKey(String key);
    void addLabel(String lang, String label);
}

and the parsing rules were :
- call setKey() on messages/message using the key attribute
- call addLabel() on messages/message/lang. This method issued the INSERT in the database, using the key previously specified.



I was then surprised to find in my database :


global.cancel=Apply

That's how I discovered that the call to setKey() was issued after the call to addLabel().

I admit I could have done it differently, but that illustrates the case of a rule fired on a child element depending on a context parameter set by a rule fired at the beginning of the parent element.

Emmanuel Bourg


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to