Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-5827

Use only local name matching for inbound rpc/literal processing to support some older rpc/literal implementation

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.7.11, 2.6.14, 3.0
    • Fix Version/s: 2.6.15, 2.7.12, 3.0.1
    • Component/s: Soap Binding
    • Labels:
      None
    • Estimated Complexity:
      Unknown

      Description

      Although WS-i BP R2735 states the part parameter elements must be in no namespace, some old rpc/literal implementation prior to WS-I BP use qualified elements.

      In fact, many rpc/literal services in production use such older implementation and there is a benefit in tolerating namespaced elements.

      RPCInInterceptor.java has the following comment to address this point.

      156	                // WSI-BP states that RPC/Lit part accessors should be completely unqualified
      157	                // However, older toolkits (Axis 1.x) are qualifying them.   We'll go
      158	                // ahead and just match on the localpart.   The RPCOutInterceptor
      159	                // will always generate WSI-BP compliant messages so it's unknown if
      160	                // the non-WSI-BP toolkits will be able to understand the CXF
      161	                // generated messages if they are expecting it to be qualified.
      162	                Iterator<MessagePartInfo> partItr = msg.getMessageParts().iterator();
      163	                while (!qn.getLocalPart().equals(part.getConcreteName().getLocalPart())
      164	                    && partItr.hasNext()) {
      165	                    part = partItr.next();
      166	                }
      167	                
      168	                if (!qn.equals(part.getConcreteName())) {
      169	                    throw new Fault(
      170	                                    new org.apache.cxf.common.i18n.Message(
      171	                                                                "UNKNOWN_RPC_LIT_PART",
      172	                                                                 LOG,
      173	                                                                 qn));
      

      However, line 168 is rejecting the namespace qualified parameter name.

      This patch changes the above if-statement to use only the local name comparison.

        Attachments

          Activity

            People

            • Assignee:
              ay Akitoshi Yoshida
              Reporter:
              ay Akitoshi Yoshida
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: