Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.7.11, 2.6.14, 3.0
-
None
-
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.