commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matt Benson (JIRA)" <>
Subject [jira] Resolved: (JXPATH-128) JXPath support for LazyDynaBean is broken.
Date Thu, 29 Jan 2009 21:19:59 GMT


Matt Benson resolved JXPATH-128.

       Resolution: Fixed
    Fix Version/s: post-1.3

Committed revision 739019.

> JXPath support for LazyDynaBean is broken.
> ------------------------------------------
>                 Key: JXPATH-128
>                 URL:
>             Project: Commons JXPath
>          Issue Type: Bug
>    Affects Versions: 1.3
>            Reporter: Mikael Nordenberg
>             Fix For: post-1.3
> The following code throws a "java.lang.NegativeArraySizeException":
> LazyDynaBean bean = new LazyDynaBean();
> JXPathContext context = JXPathContext.newContext(bean);
> Iterator i = context.iterate("anything");
> i.hasNext();
> Which is due to the fact that in org.apache.commons.jxpath.ri.model.dynabeans.DynaBeanPropertyPointer.getPropertyNames()
this code:
> boolean hasClass = dynaClass.getDynaProperty("class") != null;
> assumes that hasClass is false if there is no property named "class". This is not true
for LazyDynaClass (and therefore LazyDynaBean), which documents this feature:
> "This implementation has one slightly unusual default behaviour - calling the getDynaProperty(name)
method for a property which doesn't exist returns a DynaProperty rather than null. [...] For
this reason the isDynaProperty(name) method has been added to this implementation in order
to determine if a property actually exists."
> So I guess a solution would be to check if it's a LazyDynaClass and check the existance
of the property using "isDynaProperty(name)" instead.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message