[ 
https://issues.apache.org/jira/browse/CXF-8796?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Daniel Kulp updated CXF-8796:
-----------------------------
    Fix Version/s: 3.5.5
                   3.4.10

> IllegalArgumentException: argument type mismatch with code first RPC when 
> parameter omitted
> -------------------------------------------------------------------------------------------
>
>                 Key: CXF-8796
>                 URL: https://issues.apache.org/jira/browse/CXF-8796
>             Project: CXF
>          Issue Type: Bug
>          Components: Soap Binding
>    Affects Versions: 3.5.4
>            Reporter: Alexander Ziubin
>            Priority: Major
>             Fix For: 3.5.5, 3.4.10
>
>         Attachments: RpcSoapBindingArgumentTypeMismatch.zip, allocate.xml
>
>
> When migrating legacy code-first RPC Web application from Axis to CXF, I 
> found an issue with SOAP binding. CXF is passing 
> MessageContentsList.REMOVED_MARKER instead of absent parameter producing 
> "argument type mismatch while invoking ... with params ... java.lang.Object" 
> response faultstring and "java.lang.IllegalArgumentException: argument type 
> mismatch" message in the log.
> {code:java}
> @WebService(targetNamespace = "http://test.apache.org/";)
> @SOAPBinding(style = javax.jws.soap.SOAPBinding.Style.RPC, use = 
> javax.jws.soap.SOAPBinding.Use.LITERAL)
> public class SoapBindingArgumentTypeMismatch {
>     public boolean allocate(Integer projectId,
>             Integer[] targetIds,
>             Integer[] parameterIds) {
>         return targetIds == null;
>     }
> }{code}
> Expected behavior of this sample Web service is to return true, when the 
> targetIds parameter is absent in the SOAP request, but instead, CXF produces 
> exception and fault response. Below is a sample SOAP request:
> {code:xml}
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
> xmlns:test="http://test.apache.org/";
>     xmlns:SOAP-ENC = "http://schemas.xmlsoap.org/soap/encoding/";
>     xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance";>
>    <soapenv:Header/>
>    <soapenv:Body>
>       <test:allocate>
>          <arg0>1</arg0>
>          <arg2 xsi:type = "SOAP-ENC:Array" SOAP-ENC:arrayType = "xsd:int[1]">
>              <item>222</item>
>          </arg2>
>       </test:allocate>
>    </soapenv:Body>
> </soapenv:Envelope>{code}
> Everything else works as expected with CXF and this issue is the only 
> blocker. I did some research and found that bean validation is also affected 
> for both hibernate-validator and Apache bval bean validation providers.
> I verified the behavior with CXF 3.5.2 and 3.5.4, but it seems that other 
> versions have this issue too.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to