It looks like isUnwrapped() is false, so no dice on trying what you suggested.
Here's a simple test case I threw together.  It's using a publicly available 
WSDL, found here: 


http://www.webservicex.net/stockquote.asmx?WSDL


import javax.xml.namespace.QName;

import org.apache.cxf.endpoint.Client;
import org.apache.cxf.endpoint.dynamic.DynamicClientFactory;
import org.apache.cxf.service.model.MessagePartInfo;

public class SimpleTest {

    public static void main(String[] args) {
        // WebserviceX Stock Quote
        String wsdlUrl = "http://www.webservicex.net/stockquote.asmx?WSDL";;
        QName service = new QName("http://www.webserviceX.NET/","StockQuote";);
        // SOAP port, doesn't have a type class
        QName port = new 
QName("http://www.webserviceX.NET/","StockQuoteSoap12";);
        // POST port, has a type class
        //QName port = new 
QName("http://www.webserviceX.NET/","StockQuoteHttpPost";);
        
        // Generate the SOAP client
        DynamicClientFactory dcf = DynamicClientFactory.newInstance();
        Client client = dcf.createClient(wsdlUrl, service, 
DynamicClientFactory.class.getClassLoader(), port);
        
        // Read and print the messagePartInfo
        MessagePartInfo messagePartInfo = 
client.getEndpoint().getBinding().getBindingInfo().getOperations().iterator().next().getInput().getMessageParts().get(0);
 
        printInfo(messagePartInfo);
        

    }
    
    public static void printInfo(MessagePartInfo messagePartInfo) {
        System.out.println("Message Part Name: "+messagePartInfo.getName());
        System.out.println(" Type Name:    "+messagePartInfo.getTypeQName());
        System.out.println(" Type Class:   "+messagePartInfo.getTypeClass());
        System.out.println(" Element Name: "+messagePartInfo.getElementQName());
        System.out.println("");
    }

}


The output when using the SOAP port above:

Message Part Name: {http://www.webserviceX.NET/}parameters
 Type Name:    null
 Type Class:   null
 Element Name: {http://www.webserviceX.NET/}GetQuote


And when using POST:

Message Part Name: {http://www.webserviceX.NET/}symbol
 Type Name:    {http://www.w3.org/2001/XMLSchema}string
 Type Class:   class java.lang.String
 Element Name: null





________________________________
From: Daniel Kulp <[email protected]>
To: [email protected]
Cc: Kevin McClusky <[email protected]>
Sent: Monday, April 18, 2011 1:30 PM
Subject: Re: Dynamic Client finding parameter classes for soap port

On Monday 18 April 2011 4:22:18 PM Kevin McClusky wrote:
> getTypeClass is actually giving me a null on any MessageParts that don't
> have a type=

Strange.  That definitely should work fine as the class should be in there.  
On the operation, can you try calling isUnwrapped and if true, casting it to 
the UnwrappedOperationInfo and try the message parts on the result of 
getWrappedOperation?

If that still doesn't help, we'd likely need to see a test case.   I'm really 
not sure why those classes are being set in there.

Dan




> 
> 
> -Kevin
> 
> 
> 
> ________________________________
> From: Daniel Kulp <[email protected]>
> To: [email protected]
> Cc: Kevin McClusky <[email protected]>
> Sent: Monday, April 18, 2011 1:00 PM
> Subject: Re: Dynamic Client finding parameter classes for soap port
> 
> 
> This all should work fine.    The getTypeClass should also be used in this
> case and should return the required generated type for that element.
> 
> Dan
> 
> On Friday 15 April 2011 11:33:59 PM Kevin McClusky wrote:
> > Hi,
> >
> >    I have a WSDL that I'm trying to use with the Dynamic Client
> >
> > functionality of CXF.
> >
> >    I've been through this page (and ComplexClient.java), and it works
> >great
> >
> > if my wsdl is using type for message parts.
> > 
> > http://cxf.apache.org/docs/dynamic-clients.html
> >
> >    Unfortunately, the WSDL is using messages like this:
> >
> >   <wsdl:message name="FillTankSoapIn"> 
> >     <wsdl:part name="parameters" element="tns:FillTank" />
> >   </wsdl:message>
> >
> >    I've been able to get the element QName with
> >
> > MessagePartInfo.getElementQName(), and I can see that the classes for the
> > element are being generated, but I'm not sure how to go from the QName to
> > the generated Class.
> > 
> > 
> > (It appears there's no .getElementClass(), but I could just be missing
> > something.)
> >
> >    Any help would be greatly appreciated.  I've been banging my head on
> >the
> >
> > keyboard for a while now :)
> > 
> > Thanks,
> > Kevin

-- 
Daniel Kulp
[email protected]
http://dankulp.com/blog
Talend - http://www.talend.com

Reply via email to