[
https://issues.apache.org/jira/browse/CXF-2753?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
William Tam updated CXF-2753:
-----------------------------
Attachment: CXF-2753.patch
> Need a way to preserve parameters wrapper in DocLiteralInInterceptor
> --------------------------------------------------------------------
>
> Key: CXF-2753
> URL: https://issues.apache.org/jira/browse/CXF-2753
> Project: CXF
> Issue Type: Improvement
> Components: Core
> Reporter: William Tam
> Fix For: 2.3, 2.2.8
>
> Attachments: CXF-2753.patch
>
>
> In DocLiteralInInterceptor, the following condition determines whether the
> wrapper is preserved when unmarshalling the parameters.
> {code}
> if (msgInfo.getMessageParts().get(0).getTypeClass() != null) {
> {code}
> Currently, the parameters that I will get depending on whether service class
> (TypeClass) is provided. It is questionable that the condition is suitable
> for all DataBindings. For example, my endpoint uses SourceDataBinding which
> does not require to specify service class. So, when service class is
> provided, I get one parameter that wraps multi parts.
> For example,
> {code}
> <GetPerson>
> <personId>foo</personId>
> <ssn>1234</ssn>
> </GetPerson>
> {code}
> Otherwise, I get 2 parameters (in the example)
> {code}
> <personId>foo</personId>
> <ssn>1234</ssn>
> {code}
> We should get consistent behavior regardless of whether service class is
> provided by users.
> Here is my proposal to add a property to override the built-in condition (as
> in the attached patch). Free feel to come up with a better fix if you see
> fit.
> {code}
> protected boolean shouldWrapParameters(MessageInfo msgInfo, Message
> message) {
> Object keepParametersWrapperFlag =
> message.get(KEEP_PARAMETERS_WRAPPER);
> if (keepParametersWrapperFlag == null) {
> return msgInfo.getMessageParts().get(0).getTypeClass() != null;
> } else {
> return Boolean.parseBoolean(keepParametersWrapperFlag.toString());
> }
> }
> {code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.