DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUGĀ· RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=38841>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED ANDĀ· INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=38841 Summary: JXPath: does not properly handle NodeSet returned by extension function Product: Commons Version: 1.2 Final Platform: All OS/Version: other Status: NEW Severity: normal Priority: P2 Component: JXPath AssignedTo: [email protected] ReportedBy: [EMAIL PROTECTED] Per the documentation, my function is returning a BasicNodeSet containing zero or more pointers: public static NodeSet observations(ExpressionContext context) { // the cast below shouldn't break, as this is the only pointer type that // makes sense in this context List<NodePointer> ptrs = extractObservations( (NodePointer)context.getContextNodePointer(), new ArrayList<NodePointer>()); BasicNodeSet result = new BasicNodeSet(); for (NodePointer ptr : ptrs) { result.add(ptr); } return result; } However, if I call JXPathContext.selectNodes("ems:observations()"), I'm getting a single node containing the BasicNodeSet. I notice that there is a testcase for functions that return NodeSets, but that it uses expressions that actually return the children of the NodeSet ("test:nodeSet()/name"). There appear to be two problems. First, Expression.iterate() and Expression.iteratePointers() do not correctly recognize a NodeSet as something iterable. I've resolved this by reaching into the NodeSet and getting an iterator over its pointers. Second, Expression.PointerIterator doesn't recognize when it already has a pointer, and instead tries to wrap it in a new pointer. This ends up treating the pointer as a bean. I've made these changes, and written a testcase that uses an unadorned NodeSet function. I also found a class that used a variable named "enum", and changed this so that it would compile under 1.5. The patch is attached. It's relative to "commons-jxpath-1.2" (root of extract directory). -- Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
