[ 
https://issues.apache.org/jira/browse/JXPATH-86?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matt Benson resolved JXPATH-86.
-------------------------------

    Resolution: Invalid

This comes down to another misunderstanding wrt the JXPath XPath 
implementation.  The JXPath users guide has the following to say, under "Object 
Graph Traversal"->"Containers":

    For example, if property "foo" of the context node has a Container as its 
value, the XPath "foo" will produce the contents of that Container, not the 
container itself.

Remember that JXPath functions by "pretending" a Java object graph is an XML 
document.  Think of this implementation decision as a conscious choice of:
<object>
  <foo />
  <foo />
</object>

over

<object>
  <foo>
    <foo_child />
    <foo_child />
  </foo>
</object>
.

This seems to have been a more sensible solution than trying to autogenerate an 
element name as has been done in the second case.  Finally, as JXPath is headed 
for a 1.3 release in the near future, I urge you to conduct any further testing 
against SVN HEAD so that you might have an opportunity to review the codebase 
planned for release for consistency with what I have said here, and with the 
users' guide, and to be sure that any further examples you submit are fully 
reproducible.  It might be good to conduct discussions on the commons-user 
mailing list (preface subjects with [jxpath]) until the determination has been 
made of items' bug status.

br,
Matt

> Children returned instead of self for arrays when using . selector
> ------------------------------------------------------------------
>
>                 Key: JXPATH-86
>                 URL: https://issues.apache.org/jira/browse/JXPATH-86
>             Project: Commons JXPath
>          Issue Type: Bug
>    Affects Versions: 1.2 Final
>            Reporter: Adam Crume
>
> The . selector should always return the context node, and the * selector 
> should return child elements.  However, this doesn't work for arrays:
> JXPathContext context = JXPathContext.newContext(new HashMap());
> context.setValue("array", new String[] {"one", "two", "three"});
> context.setValue("array2", new String[][] { {"a", "b"}, {"c", "d"}});
> context.setValue("person", new Person("Bob", 25));
> String[] paths = {"/array", "/array/.", "/array/*", "/person", "/person/.", 
> "/person/*"};
> for(int i = 0; i < paths.length; i++) {
>       Pointer pointer = context.getPointer(paths[i]);
>       System.out.println(pointer.asPath());
>       Object value = context.getValue(paths[i]);
>       System.out.println(value);
>       System.out.println();
> }
> This produces the following output:
> /[EMAIL PROTECTED]'array']
> [Ljava.lang.String;@59b659b6
> /[EMAIL PROTECTED]'array'][1]
> one
> /[EMAIL PROTECTED]'array'][1]/bytes[1]
> 111
> /[EMAIL PROTECTED]'person']
> [EMAIL PROTECTED]
> /[EMAIL PROTECTED]'person']
> [EMAIL PROTECTED]
> /[EMAIL PROTECTED]'person']/age
> 25

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


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

Reply via email to