Sylvain Wallez wrote:
Can you explain in more details what's the purpose of the jxpathContext here and where its value come from? Adding a dependency on JXPath so high in Woody interfaces doesn't seem good to me.

The value comes from WoodyTemplateTransformer:


        Object flowContext = FlowHelper.getContextObject(objectModel);
        WebContinuation wk = FlowHelper.getWebContinuation(objectModel);
        JXPathContext jxpc = JXPathContext.newContext(flowContext);

(similar code must be added to WoodyGenerator also).

We need this if we want to populate selection lists with collections defined in the flowscript and avoid the need to call a different pipeline. Please have a look at the following (contrived) sample, while I try to prepare a more meaningful one:

<wd:selection-list model="model" key="key" value="value"/>

...

public class MyBean {
  public int getKey() { ... }
  public String getValue() { ... }
};

...

var list = [ new MyBean(1, 'One'), new MyBean(2, 'Two') ];
form.showForm("uri", { "model" : list });


Now that I think about it, we might as well pass "Object flowContext" to generateSaxFragment, thus avoiding a dependency on JXPath. So, I'm changing my proposal to the following:


Change the signature of two interface methods:

org.apache.cocoon.woody.formmodel.Widget.generateSaxFragment
org.apache.cocoon.woody.datatype.SelectionList.generateSaxFragment

by adding a third parameter:

void generateSaxFragment(ContentHandler contentHandler, Locale locale, Object flowContext)

Hope this answers your doubts.

Ugo

--
Ugo Cei - Consorzio di Bioingegneria e Informatica Medica
P.le Volontari del Sangue, 2 - 27100 Pavia - Italy
Phone: +39.0382.525100 - E-mail: [EMAIL PROTECTED]



Reply via email to