[ 
https://issues.apache.org/jira/browse/CXF-4745?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13551297#comment-13551297
 ] 

Daniel Kulp commented on CXF-4745:
----------------------------------


I'm not sure if this is really a bug other than "it should provide a better 
error message".   If you do a wsdl2java on the wsdl, the testSOAP method would 
look like:

{code:java}
    @WebMethod
    @WebResult(name = "testSOAPResponse", targetNamespace = 
"http://test2.test1/";, partName = "parameters")
    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
    public TestSOAPResponse testSOAP(
        @WebParam(name = "testSOAP", targetNamespace = "http://test2.test1/";, 
partName = "parameters")
        TestSOAP parameters,
        @WebParam(name = "credentials", targetNamespace = 
"http://test2.test1/";, header = true, partName = "credentials")
        Credentials credentials);
{code}

and THAT is the format of the parameters that needs to be sent into the invoke 
for the DynamicClient.   Not the two WrappedList things.   Most likely, we 
should do a quick check to make sure the passed in parameter objects match the 
type that is expected and throw an exception if not.


                
> jaxb errors when calling with @WebParam and header=true
> -------------------------------------------------------
>
>                 Key: CXF-4745
>                 URL: https://issues.apache.org/jira/browse/CXF-4745
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-WS Runtime
>    Affects Versions: 2.7.1
>         Environment: Windows 7 64 bit, jdk with jre 32 bit 1.6.0_18. Eclipse 
> Helios sr2
>            Reporter: [email protected]
>              Labels: cxf, runtime
>             Fix For: 2.7.3
>
>         Attachments: camelcxf.zip
>
>
> When calling a method with @WebParam and header=true in the signature like 
> the following:
>     @WebResult(targetNamespace = "http://test2.test1/";, name = 
> "returnedValFromTestSOAP")
>     public String testSOAP(@WebParam(mode = WebParam.Mode.IN, header = true, 
> name = "credentials") Credentials credentials,
>               @WebParam(name="par1") WrappedList<String> par1,
>               @WebParam(name="par2") WrappedList<String> par2);    
>  the call fails (the parameters are not correctly put in the message). 
> Without the header=true the call it is ok and the message it is correctly 
> formatted. The soap header it is formed in an intercetor:
> package test1.test3;
> import java.util.List;
> import javax.xml.bind.JAXBException;
> import org.apache.cxf.binding.soap.SoapHeader;
> import org.apache.cxf.binding.soap.SoapMessage;
> import org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor;
> import org.apache.cxf.headers.Header;
> import org.apache.cxf.interceptor.Fault;
> import org.apache.cxf.jaxb.JAXBDataBinding;
> import org.apache.cxf.phase.Phase;
> import javax.xml.namespace.QName;
> import test1.test2.Credentials;
> public class CustomSOAPHeaderOutInterceptor extends AbstractSoapInterceptor
> {
>       public CustomSOAPHeaderOutInterceptor() {
>               super(Phase.PRE_PROTOCOL);
>       }
>       @Override
>       public void handleMessage(SoapMessage message) throws Fault{
>               SoapMessage soapMessage = (SoapMessage) message;
>               List<Header> list = message.getHeaders();
>               QName q = new QName("http://test2.test1/";, "credentials"); 
>               Credentials credentials = new Credentials();
>               
>               credentials.setUsername("uname");
>               credentials.setPassword("password");
>               credentials.setDomain("domain");
>               
>               JAXBDataBinding dataBinding = null;
>               try {
>                       dataBinding = new 
> JAXBDataBinding(credentials.getClass());
>               } catch (JAXBException e1) {
>                       e1.printStackTrace();
>               }
>               SoapHeader header = new SoapHeader(q, credentials, dataBinding);
>               list.add(header);
>       }
> }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to