You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Gyorgy Orban (JIRA)" <ji...@apache.org> on 2010/01/21 15:59:54 UTC
[jira] Updated: (CXF-2628)
StaxUtils.writeStartElement(XMLStreamReader reader, XMLStreamWriter writer)
does not write namespace for header elements that have a namespace URI and
an empty prefix
[ https://issues.apache.org/jira/browse/CXF-2628?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gyorgy Orban updated CXF-2628:
------------------------------
Attachment: StaxUtils.patch
> StaxUtils.writeStartElement(XMLStreamReader reader, XMLStreamWriter writer) does not write namespace for header elements that have a namespace URI and an empty prefix
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: CXF-2628
> URL: https://issues.apache.org/jira/browse/CXF-2628
> Project: CXF
> Issue Type: Bug
> Affects Versions: 2.2.6
> Environment: apache-cxf-2.2.6-SNAPSHOT 20100119 and STAX RI (the one included in JDK 1.6.0_16)
> Reporter: Gyorgy Orban
> Attachments: StaxUtils.patch
>
>
> Please see attached patch. The patch changes the order of these two codeblocks:
> //codeblock1:
> if (uri != null) {
> writeElementNS = true;
> Iterator<String> it = CastUtils.cast(writer.getNamespaceContext().getPrefixes(uri));
> while (it != null && it.hasNext()) {
> String s = it.next();
> if (s == null) {
> s = "";
> }
> if (s.equals(prefix)) {
> writeElementNS = false;
> }
> }
> }
> //codeblock2:
> if (uri != null) {
> if (prefix.length() == 0 && StringUtils.isEmpty(uri)) {
> writer.writeStartElement(local);
> } else {
> writer.writeStartElement(prefix, local, uri);
> }
> } else {
> writer.writeStartElement(local);
> }
> The issue happens because:
> 1) writer.writeStartElement(prefix, local, uri); gets executed
> 2) because of 1), writer.getNamespaceContext().getPrefixes(uri) returns an iterator with the "" prefix for the namespace uri
> 3) writeElementNS is set to false because of 2)
> 4) W3CDOMStreamReader.getNamespaceCount() always returns 0
> 5) because of 3) and 4), writer.writeDefaultNamespace(uri) never gets executed
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.