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


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.

Reply via email to