Aki Yoshida created CXF-5827:
--------------------------------
Summary: Use only local name matching for inbound rpc/literal
processing to support some older rpc/literal implementation
Key: CXF-5827
URL: https://issues.apache.org/jira/browse/CXF-5827
Project: CXF
Issue Type: Improvement
Components: Soap Binding
Affects Versions: 3.0.0, 2.6.14, 2.7.11
Reporter: Aki Yoshida
Assignee: Aki Yoshida
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.
However, most 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.
{code}
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));
{code}
However, line 168 is rejecting the namespace qualified parameter name.
This patch changes the above if-statement to use only the local name comparison.
--
This message was sent by Atlassian JIRA
(v6.2#6252)