commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matt Benson (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (JXPATH-154) Resetting the default namespace causes a serious endless loop when requesting .asPath() on a node.
Date Fri, 20 Jan 2012 18:09:42 GMT

    [ https://issues.apache.org/jira/browse/JXPATH-154?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13189959#comment-13189959
] 

Matt Benson commented on JXPATH-154:
------------------------------------

It is a convention within JXPath code that the empty namespace be represented as a Java {{null}}.
 Rather than check for {{""}} at the point you identified, I have elected to modify DOMNodePointer
to translate {{""}} to {{null}} when returning its result.  In this manner JXPath's DOM handling
will function in the same manner as its JDOM handling, and any other callers of the method
will be fixed as well.


Committed revision 1234036.

                
> Resetting the default namespace causes a serious endless loop when requesting .asPath()
on a node.
> --------------------------------------------------------------------------------------------------
>
>                 Key: JXPATH-154
>                 URL: https://issues.apache.org/jira/browse/JXPATH-154
>             Project: Commons JXPath
>          Issue Type: Bug
>    Affects Versions: 1.3
>         Environment: jxpath eclipse plugin from orbit
>            Reporter: Hugo de Almeida Cocharro
>
> sample smaller case:
> {code}
> <...>
>  <b:foo xmlns:b="bla" xmlns="test111">    <!--  No nodes are placed in the tree
within ns "test111" but the attribute is still there.-->
>   <b:bar>a</b:bar>                         <!-- is in ns 'bla' -->
>   <test xmlns=""></test>                   <!-- does not have a namespace
-->
>  </b:foo>
> </...>
> {code}
> when requesting .asPath() on the 'test' node, it loops in org.apache.commons.jxpath.ri.NamespaceResolver.getPrefix(NodePointer,
String), 
> and if it didn't loop it would create a wrong xpath '//b:fo/null:test' DOMNodePointer.asPath().
> So I think that the fix should be in org.apache.commons.jxpath.ri.model.dom.DOMNodePointer.asPath()
> {code}
> ....
>                     String ln = DOMNodePointer.getLocalName(node);
>                     String nsURI = getNamespaceURI();
>                     if (nsURI == null) {
>                         buffer.append(ln);
>                         buffer.append('[');
>                         buffer.append(getRelativePositionByName()).append(']');
>                     }
>                     else {
>                         String prefix = getNamespaceResolver().getPrefix(nsURI);
>                         if (prefix != null) {
> ...
> {code}
> should become
> {code}
> ...
>                     String ln = DOMNodePointer.getLocalName(node);
>                     String nsURI = getNamespaceURI();
>                     if (nsURI == null || nsURI.length() == 0) { // check for empty string
which means that the node doesn't have a namespace.
>                         buffer.append(ln);
>                         buffer.append('[');
>                         buffer.append(getRelativePositionByName()).append(']');
>                     }
>                     else {
>                         String prefix = getNamespaceResolver().getPrefix(nsURI);
>                         if (prefix != null) {
> ...
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message