cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Konstantin Piroumian" <kpiroum...@apache.org>
Subject Re: Lenient Woody Binding
Date Mon, 01 Sep 2003 10:32:18 GMT
From: "Marc Portier" <mpo@outerthought.org>

> Hi all,
>
>
> Woody binding currently breaks if the xpath's to bind to don't exist in
> the XML (or JavaBean)
> This 'breaking' is manifesting itself through a JXPathException
> (org.apache.commons.jxpath.*) being thrown.
> The JXpath API offers a 'lenient' setting to change this behaviour into
> just returning a 'null' (see jxpath javadoc at [1])

There is also an option to use:

context.createPathAndSetValue("address/zipCode", "90190");

to avoid NPEs or setting the lenient mode. This way you can be sure that the
specified path will be created and the value is set to it. Though, I'm not
sure if it's a good idea from security POV.

-- Konstantin

>
> The danger in just using that last option is that (e.g for the
> ContextBinding) the current exception would be covered up but instead
> lead to a NPE further down the processing (which would arguably be
> harder to debug/spot)
>
> Furthermore, I can see environments were people would rather be
> confronted with the failing XML and see the exception, so I guess it
> needs to end up as a binding-config file setting. (probably an @lenient
> on each component that has some kind of @path in its config)
>
> In order for Binding to gracefully survive (in a best effort manner) the
> various binding components should thus know their own 'lenient' mode,
> check for null returns and stop any nested child bindings if a null was
> returned.
>
> The lenient member of each binding component should allow for 3 states:
> - null (not set): meaning take it as it comes from the parent binding,
> - true or false : meaning change the jxpath context lenient mode further
> down.
>
> I plan to make the changes in code and docos on this today.
> Any comments welcome.
>
> -marc=
>
>
> [1]
>
http://jakarta.apache.org/commons/jxpath/apidocs/org/apache/commons/jxpath/JXPathContext.html#setLenient(boolean)
> -- 
> Marc Portier                            http://outerthought.org/
> Outerthought - Open Source, Java & XML Competence Support Center
> Read my weblog at              http://radio.weblogs.com/0116284/
> mpo@outerthought.org                              mpo@apache.org
>
>


Mime
View raw message