You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by bu...@apache.org on 2002/09/27 02:26:28 UTC

DO NOT REPLY [Bug 13057] New: - RPCElement serialization doesn't use prefixes

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13057>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13057

RPCElement serialization doesn't use prefixes

           Summary: RPCElement serialization doesn't use prefixes
           Product: Axis
           Version: 1.0-rc1
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Serialization/Deserialization
        AssignedTo: axis-dev@xml.apache.org
        ReportedBy: wollsch@us.ibm.com


The code in RPCElement.outputImpl creates a default namespace when using RPC/literal encoding. This means that all elements in message parts that have previously ment to unqualified are now in that default namespace. 

I suggest to avoid that
a) the user can set a prefix on RPCElement with setPrefix
b) the outputImpl code is change to not add a default namespace when this prefix is set. E.g. the code will be change to this:

       if (isRPC || noParams) {
            // Set default namespace if appropriate (to avoid prefix mappings
            // in literal style).  Do this only if there is no encodingStyle.
            if (encodingStyle != null && encodingStyle.equals("") && getPrefix()==null) {
                context.registerPrefixForURI("", getNamespaceURI());
            }
            context.startElement(new QName(namespaceURI,name), attributes);
        }

        for (int i = 0; i < params.size(); i++) {
            RPCParam param = (RPCParam)params.elementAt(i);
            if (!isRPC && encodingStyle.equals("") && getPrefix()==null) {
                context.registerPrefixForURI("", param.getQName().getNamespaceURI());
            }
            param.serialize(context);
        }