WSDL structures for complex data types

Hi there
Assume that a WSDL returned this:
<s:complexType name="Employee">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="fname"
type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="lname"
type="s:string" />
<s:element minOccurs="1" maxOccurs="1" name="active"
type="s:boolean" />
</s:sequence>
</s:complexType>
You would build your structure like this:
stEmployee = structNew();
stEmployee.fname = "John";
stEmployee.lname = "Smith";
stEmployee.active = TRUE;
But is your structure function the same if the WSDL returns
this?
<s:complexType name="Employee">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="fname"
type="tns1:FName" />
<s:element minOccurs="1" maxOccurs="1" name="lname"
type="tns1:LName" />
<s:element minOccurs="1" maxOccurs="1" name="active"
type="s:boolean" />
</s:sequence>
</s:complexType>
<complexType name="FName">
<simpleContent>
<extension base="xsd:string"/>
</simpleContent>
</complexType>
<complexType name="LName">
<simpleContent>
<extension base="xsd:string"/>
</simpleContent>
</complexType>
Don't ask *me* why they did it that way.... why a simple
string value had to be defined again as a complex type with simple
content.
Would my structure still be
stEmployee = structNew();
stEmployee.fname = "John";
stEmployee.lname = "Smith";
stEmployee.active = TRUE;
or would it have to somehow acknowledge that the first two
variables (the first and last names) have this redundant level of
complexity?
Thanks
Neal

Neal, can you please provide me with the URL of WSDL you are
using, method you are trying to call and sample data (if there is
any specific data you have to pass) to check this particular method
call?

Similar Messages

  • Manual WSDL creation with Complex data types

    I'm trying to manually generate a WSDL, for a bpel workflow, so the wsdl constructs do not come from a Java class file, or any of the other normal ways you might generate a WSDL.
    I have successfully created a Definition object from the WSDLFactory, with the code shown below, that appears to be correct, based on reverse engineering of a WS compliant WSDL. The reversed engineered WSDL was created by IONA Artix.
    When I use file WSDLFactoryImpl.WSDLWriterImpl.writeWSDL() to write the WSDL file I get the wsdl:types and wsdl:service definition objectsin the file, but not the wsdl:message, wsdl:portType or wsdl:binding objects.
    The reverse engineered WSDL file has been imported into objects via WSDLReaderImpl, and the resulting Definition object appears correct (based on all system.outs). This definition can be successfully written to file via the same WSDLFactoryImpl.WSDLWriterImpl.writeWSDL(). which results in a correct WSDL file.
    I'm hoping someone can spot my problem.
    Chris Yoerg
    WSDLFactory.java************************************************************************************************
    package com.dralasoft.bpel.util;
    import java.util.*;
    import java.io.*;
    import javax.xml.namespace.QName;
    import javax.xml.parsers.*;
    import javax.wsdl.WSDLException;
    import javax.wsdl.extensions.UnknownExtensibilityElement;
    import org.w3c.dom.*;
    import com.ibm.wsdl.*;
    import com.ibm.wsdl.factory.WSDLFactoryImpl;
    import com.ibm.wsdl.extensions.soap.*;
    /** This class generates a wsdl from scratch
    * the way the namespaces have been left seem to be correct in that the individual
    * porttype, binding and service objects pick up the message parts as seen in the
    * individual system.outs and in the system.out of the definition
    * if you use the tns prefix iteration as seen in the comment out "trial" code
    * you get an error that the tns namespace does not exist in the definition
    * even though it is definitely there
    * the non namespace "trial" code also behaves the same way as this iteration,
    * aka the stuff shows in the definition outputs, but never ends up outputed to
    * file */
    //import com.dralasoft.bpel.BPELWorkflow;
    public class WSDLFactory {
    public WSDLFactory() {
    public void makeWorkflowWSDL(){
    WSDLFactoryImpl factory = null;
    Constants constants = new Constants();
    SOAPConstants soapconstants = new SOAPConstants();
    try {
    factory = (WSDLFactoryImpl) WSDLFactoryImpl.newInstance();
    catch (WSDLException we) {
    System.out.println("wsdl excepiotn " + we.getMessage());
    // get a new definition from the factory
    DefinitionImpl definition = (DefinitionImpl) factory.newDefinition();
    // add target namespace and additional namespaces that might be there
    definition.setTargetNamespace("http://www.yoerg.net");
    definition.addNamespace("tns", "http://www.yoerg.net");
    definition.addNamespace("soap", "http://schemas.xmlsoap.org/wsdl/soap/");
    definition.addNamespace("xsd", "http://www.w3.org/2001/XMLSchema");
    definition.addNamespace("wsdl", "http://schemas.xmlsoap.org/wsdl/");
    // added for generic purposes
    definition.addNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
    // specify the service name
    QName qname = new QName("http://www.yoerg.net",
    "PurchaseOrderProcess");
    definition.setQName(qname);
    // create types **********************************************************
    TypesImpl types = (TypesImpl) definition.createTypes();
    // generate a schema in DOM to set into the types object
    javax.xml.parsers.DocumentBuilderFactory domfactory =
    javax.xml.parsers.DocumentBuilderFactory.newInstance();
    javax.xml.parsers.DocumentBuilder builder = null;
    try {
    builder = domfactory.newDocumentBuilder();
    catch (javax.xml.parsers.ParserConfigurationException pce) {
    System.out.println("parser config exception " + pce.getMessage());
    DOMImplementation dImpl = builder.getDOMImplementation();
    // namespace for the schema
    String namespaceURI = "http://www.w3.org/2001/XMLSchema";
    Document doc = dImpl.createDocument(namespaceURI, "schema", null);
    Element schema = doc.getDocumentElement();
    //schema.setPrefix("xsd");
    schema.setAttribute("xmlns", "http://www.w3.org/2001/XMLSchema");
    schema.setAttribute("targetNamespace", "http://www.yoerg.net");
    //set other namespaces on schema
    // this doesn't make it into the schema at final save, because there
    // are no wsdl elements inside the box
    schema.setAttribute("xmlns:wsdl", "http://schemas.xmlsoap.org/wsdl/");
    // this is not needed
    schema.setAttribute("tns", "http://www.yoerg.net");
    Element first = doc.createElement("element");
    first.setAttribute("name", "sendPurchaseOrder");
    first.setAttribute("type", "tns:sendPORequest");
    schema.appendChild(first);
    Element fourth = doc.createElement("element");
    fourth.setAttribute("name", "sendSchedule");
    fourth.setAttribute("type", "tns:sendScheduleRequest");
    schema.appendChild(fourth);
    Element fifth = doc.createElement("element");
    fifth.setAttribute("name", "sendInvoice");
    fifth.setAttribute("type", "tns:sendInvoiceRequest");
    schema.appendChild(fifth);
    // now add correlations
    Element corfirst = doc.createElement("element");
    corfirst.setAttribute("name", "correlations");
    corfirst.setAttribute("type", "tns:correlationset");
    schema.appendChild(corfirst);
    Element second = doc.createElement("element");
    second.setAttribute("name", "portType");
    second.setAttribute("type", "xsd:string");
    schema.appendChild(second);
    Element third = doc.createElement("element");
    third.setAttribute("name", "partnerLink");
    third.setAttribute("type", "xsd:string");
    schema.appendChild(third);
    // sequence element thats used over and over
    Element sequence = null;
    Element sixth = doc.createElement("complexType");
    sixth.setAttribute("name", "sendPORequest");
    sequence = doc.createElement("sequence");
    Element part1 = doc.createElement("element");
    part1.setAttribute("name", "customerId");
    part1.setAttribute("type", "xsd:long");
    sequence.appendChild(part1);
    Element part2 = doc.createElement("element");
    part2.setAttribute("name", "purchaseOrderNumber");
    part2.setAttribute("type", "xsd:long");
    sequence.appendChild(part2);
    Element part3 = doc.createElement("element");
    part3.setAttribute("name", "productId");
    part3.setAttribute("type", "xsd:long");
    sequence.appendChild(part3);
    Element part4 = doc.createElement("element");
    part4.setAttribute("name", "quantity");
    part4.setAttribute("type", "xsd:int");
    sequence.appendChild(part4);
    sixth.appendChild(sequence);
    schema.appendChild(sixth);
    Element seventh = doc.createElement("complexType");
    seventh.setAttribute("name", "sendScheduleRequest");
    sequence = doc.createElement("sequence");
    Element part6 = doc.createElement("element");
    part6.setAttribute("name", "shipDate");
    part6.setAttribute("type", "xsd:dateTime");
    sequence.appendChild(part6);
    Element part7 = doc.createElement("element");
    part7.setAttribute("name", "customerId");
    part7.setAttribute("type", "xsd:long");
    sequence.appendChild(part7);
    Element part8 = doc.createElement("element");
    part8.setAttribute("name", "purchaseOrderNumber");
    part8.setAttribute("type", "xsd:long");
    sequence.appendChild(part8);
    seventh.appendChild(sequence);
    schema.appendChild(seventh);
    Element eighth = doc.createElement("complexType");
    eighth.setAttribute("name", "sendInvoiceRequest");
    sequence = doc.createElement("sequence");
    Element part5 = doc.createElement("element");
    part5.setAttribute("name", "price");
    part5.setAttribute("type", "xsd:double");
    sequence.appendChild(part5);
    Element part9 = doc.createElement("element");
    part9.setAttribute("name", "customerId");
    part9.setAttribute("type", "xsd:long");
    sequence.appendChild(part9);
    Element part10 = doc.createElement("element");
    part10.setAttribute("name", "purchaseOrderNumber");
    part10.setAttribute("type", "xsd:long");
    sequence.appendChild(part10);
    eighth.appendChild(sequence);
    schema.appendChild(eighth);
    Element ninth = doc.createElement("complexType");
    ninth.setAttribute("name", "correlationset");
    sequence = doc.createElement("sequence");
    Element part11 = doc.createElement("element");
    part11.setAttribute("name", "PurchaseOrder");
    part11.setAttribute("type", "tns:correlationsetvalues");
    sequence.appendChild(part11);
    ninth.appendChild(sequence);
    schema.appendChild(ninth);
    Element tenth = doc.createElement("complexType");
    tenth.setAttribute("name", "correlationsetvalues");
    sequence = doc.createElement("sequence");
    Element part12 = doc.createElement("element");
    part12.setAttribute("name", "PurchaseOrderNumber");
    part12.setAttribute("type", "xsd:string");
    sequence.appendChild(part12);
    Element part13 = doc.createElement("element");
    part13.setAttribute("name", "customerID");
    part13.setAttribute("type", "xsd:string");
    sequence.appendChild(part13);
    tenth.appendChild(sequence);
    schema.appendChild(tenth);
    // show the schema w3c element via conversion JDOM Element and coversion to string
    org.jdom.input.DOMBuilder jdbuilder = new org.jdom.input.DOMBuilder();
    org.jdom.Element jelement = jdbuilder.build(schema);
    //System.out.println("\njelement " + jelement);
    org.jdom.output.XMLOutputter xmloutput = new org.jdom.output.XMLOutputter();
    xmloutput.setIndent(" ");
    xmloutput.setNewlines(true);
    xmloutput.setTrimAllWhite(true);
    xmloutput.setTextTrim(true);
    xmloutput.setEncoding("ISO-8859-1");
    String strelement = xmloutput.outputString(jelement);
    System.out.println("schema in jdom = \n " + strelement);
    UnknownExtensibilityElement extel = new UnknownExtensibilityElement();
    extel.setElement(schema);
    extel.setElementType(new QName(Constants.Q_ELEM_XSD_2001.getNamespaceURI(),
    schema.getLocalName()));
    types.addExtensibilityElement(extel);
    // the above is preferrable to this
    //types.setDocumentationElement(schema);
    //System.out.println("schema " + schema);
    // and set the types definiton back to the definition object
    definition.setTypes(types);
    // these lines all show null or empty on system.out.println
    //System.out.println("\ntypes " + types);
    // end of setting the types
    // add the messages*******************************************************
    MessageImpl message1 = (MessageImpl)definition.createMessage();
    QName messageqname= new QName("http://www.yoerg.net", "newMessage");
    message1.setQName(messageqname);
    PartImpl partma = (PartImpl)definition.createPart();
    partma.setName("sendPurchaseOrderBody");
    partma.setElementName(new QName("http://www.yoerg.net", "sendPurchaseOrder"));
    message1.addPart(partma);
    partma = (PartImpl)definition.createPart();
    partma.setName("correlationsBody");
    partma.setElementName(new QName("http://www.yoerg.net", "correlations"));
    message1.addPart(partma);
    partma = (PartImpl)definition.createPart();
    partma.setName("portTypeBody");
    partma.setElementName(new QName("http://www.yoerg.net", "portType"));
    message1.addPart(partma);
    partma = (PartImpl)definition.createPart();
    partma.setName("partnerLinkBody");
    partma.setElementName(new QName("http://www.yoerg.net", "partnerLink"));
    message1.addPart(partma);
    definition.addMessage(message1);
    // create new blank message for response, with no parts
    MessageImpl message2 = (MessageImpl)definition.createMessage();
    QName messageqname2= new QName("http://www.yoerg.net", "sendPurchaseOrderResponseMessage");
    message2.setQName(messageqname2);
    definition.addMessage(message2);
    System.out.println("\nmessage1 " + message1);
    System.out.println("\nmessage2 " + message2);
    //Map map = message.getParts();
    //Element mes = message.getDocumentationElement();
    //System.out.println("\nmessage map = " + map);
    // done adding messages
    // add the porttypes******************************************************
    PortTypeImpl porttype = (PortTypeImpl)definition.createPortType();
    porttype.setQName(new QName("http://www.yoerg.net", "purchaseOrderPortType"));
    OperationImpl operation = (OperationImpl)definition.createOperation();
    operation.setName("sendMyPurchaseOrder");
    operation.setStyle(javax.wsdl.OperationType.REQUEST_RESPONSE);
    InputImpl input = (InputImpl)definition.createInput();
    input.setName("sendPurchaseOrderRequest");
    input.setMessage(message1);
    operation.setInput(input);
    OutputImpl output = (OutputImpl)definition.createOutput();
    output.setName("sendPurchaseOrderResponse");
    output.setMessage(message2);
    operation.setOutput(output);
    porttype.addOperation(operation);
    System.out.println("\nporttype " + porttype);
    definition.addPortType(porttype);
    // done adding the porttypes
    // add the bindings*******************************************************
    BindingImpl binding = (BindingImpl)definition.createBinding();
    binding.setQName(new QName("http://www.yoerg.net",
    "purchaseOrderSOAPBinding"));
    binding.setPortType(porttype);
    SOAPBindingImpl bindingextension = new SOAPBindingImpl();
    bindingextension.setStyle("document");
    bindingextension.setTransportURI("http://schemas.xmlsoap.org/soap/http");
    //System.out.println("binding extension " + bindingextension);
    binding.addExtensibilityElement(bindingextension);
    BindingOperationImpl bindingoperation
    = (BindingOperationImpl)definition.createBindingOperation();
    bindingoperation.setName("sendMyPurchaseOrder");
    bindingoperation.setOperation(operation);
    // this is not present in the Imported correct version, and these lines of code
    // are not necessary, but they also do not hurt or help
    //SOAPOperationImpl operationextension = new SOAPOperationImpl();
    //operationextension.setStyle("document");
    //operationextension.setSoapActionURI("");
    ///////operationextension.setElementType(new QName("http://www.yoerg.net", "ListenerService"));
    //operationextension.setRequired(new Boolean(true));
    //bindingoperation.addExtensibilityElement(operationextension);
    BindingInputImpl bindinginput
    = (BindingInputImpl)definition.createBindingInput();
    bindinginput.setName("sendPurchaseOrderRequest");
    SOAPBodyImpl inputextension = new SOAPBodyImpl();
    inputextension.setUse("literal");
    inputextension.setRequired(new Boolean(true));
    inputextension.setNamespaceURI("http://www.yoerg.net");
    bindinginput.addExtensibilityElement(inputextension);
    //System.out.println("\ninputextension " + inputextension);
    bindingoperation.setBindingInput(bindinginput);
    BindingOutputImpl bindingoutput
    = (BindingOutputImpl)definition.createBindingOutput();
    bindingoutput.setName("sendPurchaseOrderResponse");
    SOAPBodyImpl outputextension = new SOAPBodyImpl();
    outputextension.setUse("literal");
    outputextension.setRequired(new Boolean(true));
    outputextension.setNamespaceURI("http://www.yoerg.net");
    bindingoutput.addExtensibilityElement(outputextension);
    //System.out.println("\noutputextension " + outputextension);
    bindingoperation.setBindingOutput(bindingoutput);
    binding.addBindingOperation(bindingoperation);
    System.out.println("\nbinding " + binding);
    definition.addBinding(binding);
    // done adding binding
    // adding service*********************************************************
    ServiceImpl service = (ServiceImpl)definition.createService();
    service.setQName(new QName("http://www.yoerg.net",
    "ListenerServiceService"));
    PortImpl port = (PortImpl)definition.createPort();
    port.setBinding(binding);
    port.setName("ListenerService");
    SOAPAddressImpl soapaddress = new SOAPAddressImpl();
    soapaddress
    .setLocationURI("http://localhost:8080/axis/services/ListenerService");
    port.addExtensibilityElement(soapaddress);
    service.addPort(port);
    definition.addService(service);
    System.out.println("\nService " + service);
    // done adding service
    // print def object, and you will see all objects, except types
    System.out.println("\ndefinition \n" + definition);
    // output to file, just like we would in bpel workflow environment
    com.ibm.wsdl.xml.WSDLWriterImpl writer
    = (com.ibm.wsdl.xml.WSDLWriterImpl)factory.newWSDLWriter();
    File file = new File("c:\\chris\\w.wsdl");
    FileOutputStream out = null;
    // this has been proven to be correct
    try{
    out = new FileOutputStream(file);
    writer.writeWSDL(definition, out);
    catch(FileNotFoundException fnfe){
    System.out.println("file not found " + fnfe.getMessage());
    catch(IOException ioe){
    System.out.println("file not found " + ioe.getMessage());
    catch(javax.wsdl.WSDLException we){
    System.out.println("wsdl exception " + we.getMessage());
    // now bring it back in just for fun
    FileInputStream in = null;
    byte[] inputfile = null;
    org.jdom.Document jdocument = null;
    try{
    in = new FileInputStream(file);
    inputfile = new byte[in.available()];
    in.read(inputfile, 0, in.available());
    org.jdom.input.SAXBuilder jdombuilder = new org.jdom.input.SAXBuilder();
    ByteArrayInputStream byteinput = new ByteArrayInputStream(inputfile);
    jdocument = jdombuilder.build(byteinput);
    catch(FileNotFoundException fnfe){
    System.out.println("file not found " + fnfe.getMessage());
    catch(org.jdom.JDOMException jde){
    System.out.println("jdom exception " + jde.getMessage());
    catch(IOException ioe){
    System.out.println("io exception " + ioe.getMessage());
    String strdocument = xmloutput.outputString(jdocument);
    System.out.println("\nJDOM beautified version \n" + strdocument);
    public static void main(String[] args){
    WSDLFactory factory = new WSDLFactory();
    factory.makeWorkflowWSDL();
    End ofWSDLFactory.java*********************************************************************
    Desired WSDL output to file******************************************************************
    <?xml version="1.0" encoding="UTF-8"?>
    <definitions name="PurchaseOrderProcess" targetNamespace="http://www.yoerg.net"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:http-conf="http://schemas.iona.com/transports/http/configuration"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:tns="http://www.yoerg.net" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <types>
    <schema targetNamespace="http://www.yoerg.net"
    xmlns="http://www.w3.org/2001/XMLSchema"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <element name="sendPurchaseOrder" type="tns:sendPORequest"/>
    <element name="correlations" type="tns:correlationset"/>
    <element name="portType" type="xsd:string"/>
    <element name="partnerLink" type="xsd:string"/>
    <element name="sendSchedule" type="tns:sendScheduleRequest"/>
    <element name="sendInvoice" type="tns:sendInvoiceRequest"/>
    <complexType name="correlationsetvalues">
    <sequence>
    <element name="PurchaseOrderNumber" type="xsd:string"/>
    <element name="customerID" type="xsd:string"/>
    </sequence>
    </complexType>
    <complexType name="correlationset">
    <sequence>
    <element name="PurchaseOrder" type="tns:correlationsetvalues"/>
    </sequence>
    </complexType>
    <complexType name="sendPORequest">
    <sequence>
    <element name="customerId" type="xsd:long"/>
    <element name="purchaseOrderNumber" type="xsd:long"/>
    <element name="productId" type="xsd:long"/>
    <element name="quantity" type="xsd:int"/>
    </sequence>
    </complexType>
    <complexType name="sendScheduleRequest">
    <sequence>
    <element name="shipDate" type="xsd:dateTime"/>
    <element name="customerId" type="xsd:long"/>
    <element name="purchaseOrderNumber" type="xsd:long"/>
    </sequence>
    </complexType>
    <complexType name="sendInvoiceRequest">
    <sequence>
    <element name="price" type="xsd:double"/>
    <element name="customerId" type="xsd:long"/>
    <element name="purchaseOrderNumber" type="xsd:long"/>
    </sequence>
    </complexType>
    </schema>
    </types>
    <message name="newMessage">
    <part element="tns:sendPurchaseOrder" name="sendPurchaseOrderBody"/>
    <part element="tns:correlations" name="correlationsBody"/>
    <part element="tns:portType" name="portTypeBody"/>
    <part element="tns:partnerLink" name="partnerLinkBody"/>
    </message>
    <message name="sendPurchaseOrderResponseMessage"/>
    <message name="sendScheduleRequestMessage">
    <part element="tns:sendSchedule" name="sendScheduleBody"/>
    <part element="tns:correlations" name="correlationBody"/>
    <part element="tns:portType" name="portTypeBody"/>
    <part element="tns:partnerLink" name="partnerLinkBody"/>
    </message>
    <message name="sendInvoiceRequestMessage">
    <part element="tns:sendInvoice" name="sendInvoiceBody"/>
    <part element="tns:correlations" name="correlationsBody"/>
    <part element="tns:portType" name="portTypeBody"/>
    <part element="tns:partnerLink" name="partnerLinkBody"/>
    </message>
    <portType name="purchaseOrderPortType">
    <operation name="sendMyPurchaseOrder">
    <input message="tns:newMessage" name="sendPurchaseOrderRequest"/>
    <output message="tns:sendPurchaseOrderResponseMessage"
    name="sendPurchaseOrderResponse"/>
    </operation>
    <operation name="sendMySchedule">
    <input message="tns:sendScheduleRequestMessage" name="sendMySchedule"/>
    </operation>
    <operation name="sendInvoice">
    <input message="tns:sendInvoiceRequestMessage" name="sendInvoice"/>
    </operation>
    </portType>
    <binding name="purchaseOrderSOAPBinding" type="tns:purchaseOrderPortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="sendMyPurchaseOrder">
    <soap:operation soapAction="" style="document"/>
    <input name="sendPurchaseOrderRequest">
    <soap:body use="literal"/>
    </input>
    <output name="sendPurchaseOrderResponse">
    <soap:body use="literal"/>
    </output>
    </operation>
    <operation name="sendMySchedule">
    <soap:operation soapAction="" style="document"/>
    <input name="sendMySchedule">
    <soap:body use="literal"/>
    </input>
    </operation>
    <operation name="sendInvoice">
    <soap:operation soapAction="" style="document"/>
    <input name="sendInvoice">
    <soap:body use="literal"/>
    </input>
    </operation>
    </binding>
    <service name="ListenerServiceService">
    <port binding="tns:purchaseOrderSOAPBinding" name="ListenerService">
    <soap:address location="http://localhost:8080/axis/services/ListenerService"/>
    <http-conf:client/>
    <http-conf:server/>
    </port>
    </service>
    </definitions>
    End of desired WSDL*************************************************************************************

    Adding these statements solved the problem
    message1.setUndefined(false);
    message2.setUndefined(false);
    binding.setUndefined(false);
    operation.setUndefined(false);
    porttype.setUndefined(false);
    This is kind of weird because you explicitly define them thru API calls, and this call seems redundant.
    Chris Yoerg

  • Links to Web Service Data Control for complex data types

    Hello Forum members,
    Could anyone please post good reference links to docs/blogs illustrating how to create and use a Data Control for a Web Serice Proxy Client providing interfcae for a complex xml schema ?
    Any help highly appreciated :)

    http://blogs.oracle.com/shay/2010/05/updateinsert_with_adf_web_serv.html

  • ++Custom Serialization with Complex Data type (Nested Classes)

    Hi,
    We have a scenario wherein we need to write CUSTOM SERIALIZERS for complex datatypes like INVOICE & ORDER (INVOICE inturn has ADDRESS type among others, ORDER has ADDRESS type, a COLLECTION of type ORDERITEM each of which are Java Classes in themselves)
    The example of Custom Serializer given in the SOA AS Dev Guide http://download.oracle.com/docs/cd/B31017_01/web.1013/b28975/custserial.htm#CFHHIBCA)
    shows only a simple java type used for serialization and deserialization.
    Can anyone please help us out by sharing any example depicting the CUSTOM SERIALIZERs for COMPLEX DATA TYPES?
    Thanks in advance,
    Pavan.

    Hello,
    Could you please post the code of your classes in the forum (at least the interfaces) ?
    Regards
    Tugdual Grall

  • Parse/read complex data types in WSDLs

    i need to read the WSDL and identify the Ports, Operation, Bindings and types.
    My intention is to compare 2 WSDLS and also to create a UI client for web Service based on the WSDLs.
    My issue here is the WSDL contains Complex Data Type,i couldnt find classes that cud help me to read the complex/custom data types.
    A portion of wsdl is given below.
    <definitions ..>
    <types>
    <xsd:schema ....">
    <xsd:annotation>..
    </xsd:annotation>
    <xsd:complexType name="Address">
    <xsd:sequence>
    <xsd:element name="Address" maxOccurs="unbounded" minOccurs="0" type="xsdLocal:Address"></xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="Name"><xsd:sequence>
    <xsd:element name="LastUpdated" maxOccurs="1" minOccurs="0" type="xsd:string"></xsd:element>
    <xsd:element name="House No" maxOccurs="1" minOccurs="0" type="xsdLocal1:string15"></xsd:element>
    <xsd:element name="City" maxOccurs="1" minOccurs="0" type="xsdLocal1:string30"></xsd:element>
    </definitions>{code}
    I got the Operations in the WSDLs as shown below.
    The input parameters are not direct parameters , they as nested/complex data types which i couldnt find a way to read..
    {code}
    protected void assertPortTypes(Definition definition) {
             Map portTypes = definition.getPortTypes();
             for (Object p : portTypes.values()) {
               PortType portType = (PortType) p;         
               String portTypeName = portType.getQName().getLocalPart();
               System.out.println("portTypeName\t"+portTypeName);
                  for (Object o : portType.getOperations()) {
                   Operation operation = (Operation) o;
                   String operationName = operation.getName();
                      System.out.println("operationName\t"+operationName);
    {code}
    Could any one please tell me if it is possible to parse the WSDL to read the Complex data types using java-wsdl classes
    Kindly give me the approaches that i could take here...
    thanks
    vyas                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

    No, I am not using the AAL functions, but I was relying on the C99 support of clang and this document. The title of this document suggests that these extensions should also be available in CVI2015, CVI2017...

  • How to pass complex data type structure to WebService under mx:request?

    From my Flex client, I need to pass data to a web service whose operation expects a complex data type with multiple layers of nesting structure. How can I populate the <mx:request> for the <mx:WebServices>? Any examples?
    A couple of approaches come to my mind:
    (1) construct ActionScript object to mimic the datatype expected by web service, and pass an instance of the AS object to mx:request; or
    (2) construct an entire SOAP request body in XML and pass it into mx:request.
    Does any of these (or both) work? If both work, which is the better way?
    Thanks in advance for your input!
    -William

    Thanks a lot for the rapid response, Marcel.
    For further details on the maping between WS complexType structure and AS object, is there any specific requirement? such as naming, binding, structure of nesting, etc.
    William

  • Creating Web service for PL/SQL Procedure with Complex Data Types

    I need to created web service for PL/SQL Procedure with Complex Data types like table of records as parameters, how do we map the pl/sql table type parameters with web service, how to go about these?

    Hello,
    When you are creating a service from a Stored Procedure, the OracleAS WS tools will create necessary Java and PL wrapper code to handle the complex types (table of record) properly and make them compatible with XML format for SOAP messages.
    So what you should do is to use JDeveloper or WSA command line, to create a service from your store procedure and you will see that most of the work will be done for you.
    You can find more information in the:
    - Developing Web Services that Expose Database Resources
    chapter of the Web Service Developer's guide.
    Regards
    Tugdual Grall

  • How to get  values of complex data type  specified in webservice wsdl file

    I'm trying to retreive cid from a complex data type[b] course which I'm getting as response from the webservice, it throwing that cid is not valid .
    <course>
    <part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="payload">
    <syncbpelResponse xmlns="http://acm.org/samples">
    <course>
    <startDate xmlns="urn:cms_soa">2005-12-11T18:30:00.000Z</startDate>
    <materialid xmlns="urn:cms_soa">234</materialid>
    <cdescription xmlns="urn:cms_soa">learn spoken english</cdescription>
    <instructorid xmlns="urn:cms_soa">145</instructorid>
    <regEndDate xmlns="urn:cms_soa">2005-11-30T18:30:00.000Z</regEndDate>
    <cid xmlns="urn:cms_soa">12222</cid>
    <cfee xmlns="urn:cms_soa">1000.0</cfee>
    <strength xmlns="urn:cms_soa">20</strength>
    <currentStrength xmlns="urn:cms_soa">2</currentStrength>
    <endDate xmlns="urn:cms_soa">2005-12-30T18:30:00.000Z</endDate>
    <cvenue xmlns="urn:cms_soa">ELNET</cvenue>
    <cname xmlns="urn:cms_soa">english</cname>
    </course>
    </syncbpelResponse>
    </part>
    </course>
    I tried using
    <from variable="course" part="payload" query="/tns:syncbpelRespons/tns:course/@cid"/>
    but not at all accepting....
    I 'll be thankfull if u send me a response

    Hi
    This can not be done Vc only "sees" the returned data in the webservice, it can not access the meta data from the webservice.
    Jarrod

  • Consuming an ASP web service which responds with complex data types...

    Here's my problem - I'm trying to consume a web service from a provider that uses complex data types.
    The starting part of the WSDL looks like this (I've not included the whole thing) - named have been changed to protect the innocent:
    <wsdl:definitions targetNamespace="http://domain_name">
    <wsdl:types>
    <s:schema elementFormDefault="qualified" targetNamespace="http://domain_name">
    <s:element name="Authentication">
    <s:complexType>
    <s:sequence>
    <s:element minOccurs="0" maxOccurs="1" name="Username" type="s:string"/>
    <s:element minOccurs="0" maxOccurs="1" name="Password" type="s:string"/>
    <s:element minOccurs="0" maxOccurs="1" name="Token"/>
    </s:sequence>
    </s:complexType>
    </s:element>
    <s:element name="AuthenticateResponse">
    <s:complexType>
    <s:sequence>
    <s:element minOccurs="1" maxOccurs="1" name="AuthOK" type="s:int"/>
    <s:element minOccurs="0" maxOccurs="1" name="Token"/>
    </s:sequence>
    </s:complexType>
    </s:element>
    Since it's a complexType return, with a sequence, I'd expect an array or structure returned, but instead I just get the "AuthOK" value, and no way to get anything else.
    Here are the ways I've tried calling it:
    <cfscript>
        WS = createObject("webservice", "https://WSDL_URL");
        WS_ret = WS.Authentication(Username = "username", Password = "password", Token = "");
    </cfscript>
    <cfdump var="#WS_ret#" />
    <cfinvoke webservice="WSDL_URL" method="Authentication" returnVariable="WS_ret">
        <cfinvokeargument name="userID" value="7253320" />
        <cfinvokeargument name="password" value="ctpjxs3" />
        <cfinvokeargument name="SecurityToken" value="" />
    </cfinvoke>
    <cfdump var="#WS_ret#" />
    Any ideas how I can get the other variables in the sequence? I have other calls after this that have a much larger amount of variables, and as such I can't use it without being about to get more of the

    Thanks for the reply.
    If I CFDUMP the variable it returns just "1", no XML tags, nothing at all around the data - according to the web service providers they say that they are supplying the Token part as long as the first variable is "1" (a logical true if the authentication passed). If it is "0" then no Token is returned, that is why it's optional.
    As for the CFdocs issue, look here:
    http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=webservices_25.html
    The paragraph before it (about 2/3 down the page) states:
    In this example, the operation updateEmployeeInfo takes a complex type as input and returns a complex type as output. To handle the input parameter, you create a structure. To handle the returned value, you write it to a ColdFusion variable, as the following example shows:
    It even states that you call "updateEmployeeInfo", and nowhere mentions "echoStruct" as a method - it's seemingly been put in as a random method name, or a function call for something else. The WSDL above the example only mentions "updateEmployeeInfo" and "updateEmployeeInfoSoapOut", again not mentioning "echoStruct".
    I see this as an error in the docs as it's calling a non-existant entity in the WSDL, which should cause a run-time error.

  • Problem while accessing a complex data type

    hi,
    I am getting a problem while accessing a complex data type
    I have a wsdl as:
    <?xml version="1.0" encoding="UTF-8" ?>
    - <definitions name="OutlookReminderService" targetNamespace="http://ws.aftek.com/outlook-reminder" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:ns2="http://ws.aftek.com/outlook-reminder/schemas" xmlns:ns3="http://java.sun.com/jax-rpc-ri/internal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.aftek.com/outlook-reminder" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    - <types>
    - <schema targetNamespace="http://ws.aftek.com/outlook-reminder/schemas" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://ws.aftek.com/outlook-reminder/schemas" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
    <import namespace="http://java.sun.com/jax-rpc-ri/internal" />
    - <complexType name="TaskVO">
    - <sequence>
    <element name="dueDate" type="long" />
    <element name="percentageComplete" type="int" />
    <element name="priorty" type="int" />
    <element name="reminderDate" type="long" />
    <element name="reminderSet" type="boolean" />
    <element name="startDate" type="long" />
    <element name="status" type="int" />
    <element name="subject" type="string" />
    <element name="taskId" type="string" />
    </sequence>
    </complexType>
    - <complexType name="NoSuchUserException">
    - <sequence>
    <element name="message" type="string" />
    </sequence>
    </complexType>
    - <complexType name="ArrayOfContactVO">
    - <complexContent>
    - <restriction base="soap11-enc:Array">
    <attribute ref="soap11-enc:arrayType" wsdl:arrayType="tns:ContactVO[]" />
    </restriction>
    </complexContent>
    </complexType>
    - <complexType name="ContactVO">
    - <sequence>
    <element name="birthDate" type="long" />
    <element name="companyAddress" type="string" />
    <element name="companyName" type="string" />
    <element name="emailID1" type="string" />
    <element name="emailID2" type="string" />
    <element name="emailID3" type="string" />
    <element name="faxNumber" type="string" />
    <element name="firstName" type="string" />
    <element name="homeAddress" type="string" />
    <element name="lastName" type="string" />
    <element name="middleName" type="string" />
    <element name="mobileNumber" type="string" />
    <element name="phoneNumber" type="string" />
    <element name="workContactNumber" type="string" />
    </sequence>
    </complexType>
    </schema>
    - <schema targetNamespace="http://java.sun.com/jax-rpc-ri/internal" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://java.sun.com/jax-rpc-ri/internal" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
    <import namespace="http://ws.aftek.com/outlook-reminder/schemas" />
    - <complexType name="arrayList">
    - <complexContent>
    - <extension base="tns:list">
    <sequence />
    </extension>
    </complexContent>
    </complexType>
    - <complexType name="list">
    - <complexContent>
    - <extension base="tns:collection">
    <sequence />
    </extension>
    </complexContent>
    </complexType>
    - <complexType name="collection">
    - <complexContent>
    - <restriction base="soap11-enc:Array">
    <attribute ref="soap11-enc:arrayType" wsdl:arrayType="anyType[]" />
    </restriction>
    </complexContent>
    </complexType>
    </schema>
    </types>
    <message name="OutlookServer_addTaskResponse" />
    - <message name="OutlookServer_getListResponse">
    <part name="result" type="ns3:arrayList" />
    </message>
    - <message name="OutlookServer_getContactListResponse">
    <part name="result" type="ns2:ArrayOfContactVO" />
    </message>
    - <message name="NoSuchUserException">
    <part name="NoSuchUserException" type="ns2:NoSuchUserException" />
    </message>
    - <message name="OutlookServer_getContactList">
    <part name="String_1" type="xsd:string" />
    </message>
    - <message name="OutlookServer_getList">
    <part name="String_1" type="xsd:string" />
    </message>
    - <message name="OutlookServer_addTask">
    <part name="String_1" type="xsd:string" />
    <part name="TaskVO_2" type="ns2:TaskVO" />
    </message>
    - <message name="OutlookServer_reminderOccurredResponse">
    <part name="result" type="xsd:boolean" />
    </message>
    - <message name="OutlookServer_reminderOccurred">
    <part name="String_1" type="xsd:string" />
    <part name="TaskVO_2" type="ns2:TaskVO" />
    </message>
    - <portType name="OutlookServer">
    - <operation name="addTask" parameterOrder="String_1 TaskVO_2">
    <input message="tns:OutlookServer_addTask" />
    <output message="tns:OutlookServer_addTaskResponse" />
    <fault message="tns:NoSuchUserException" name="NoSuchUserException" />
    </operation>
    - <operation name="getContactList" parameterOrder="String_1">
    <input message="tns:OutlookServer_getContactList" />
    <output message="tns:OutlookServer_getContactListResponse" />
    <fault message="tns:NoSuchUserException" name="NoSuchUserException" />
    </operation>
    - <operation name="getList" parameterOrder="String_1">
    <input message="tns:OutlookServer_getList" />
    <output message="tns:OutlookServer_getListResponse" />
    <fault message="tns:NoSuchUserException" name="NoSuchUserException" />
    </operation>
    - <operation name="reminderOccurred" parameterOrder="String_1 TaskVO_2">
    <input message="tns:OutlookServer_reminderOccurred" />
    <output message="tns:OutlookServer_reminderOccurredResponse" />
    <fault message="tns:NoSuchUserException" name="NoSuchUserException" />
    </operation>
    </portType>
    - <binding name="OutlookServerBinding" type="tns:OutlookServer">
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
    - <operation name="addTask">
    <soap:operation soapAction="" />
    - <input>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </input>
    - <output>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </output>
    - <fault name="NoSuchUserException">
    <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="NoSuchUserException" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </fault>
    </operation>
    - <operation name="getContactList">
    <soap:operation soapAction="" />
    - <input>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </input>
    - <output>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </output>
    - <fault name="NoSuchUserException">
    <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="NoSuchUserException" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </fault>
    </operation>
    - <operation name="getList">
    <soap:operation soapAction="" />
    - <input>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </input>
    - <output>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </output>
    - <fault name="NoSuchUserException">
    <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="NoSuchUserException" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </fault>
    </operation>
    - <operation name="reminderOccurred">
    <soap:operation soapAction="" />
    - <input>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </input>
    - <output>
    <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </output>
    - <fault name="NoSuchUserException">
    <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="NoSuchUserException" namespace="http://ws.aftek.com/outlook-reminder" use="encoded" />
    </fault>
    </operation>
    </binding>
    - <service name="OutlookReminderService">
    - <port binding="tns:OutlookServerBinding" name="OutlookServerPort">
    <soap:address location="http://truptid:8080/outlook-reminder-service/outlook" />
    </port>
    </service>
    </definitions>
    My client is :
    private static String     BODY_NAMESPACE_VALUE     = "http://ws.abc.com/outlook-reminder";
         private static String     ENCODING_STYLE_PROPERTY     = "javax.xml.rpc.encodingstyle.namespace.uri";
         private static String     NS_XSD                         = "http://www.w3.org/2001/XMLSchema";
         private static String     URI_ENCODING               = "http://schemas.xmlsoap.org/soap/encoding/";     
    try{
    ServiceFactory factory = ServiceFactory.newInstance();
                        Service service = factory.createService(new QName("OutlookReminderService"));
                        QName port =new QName("OutlookReminderService","OutlookServerPort");
                        Call call =service.createCall(port);
                        call.setTargetEndpointAddress("http://localhost:8080/outlook-reminder-service/outlook?wsdl");
                        call.setProperty(Call.SOAPACTION_USE_PROPERTY, new Boolean(true));
                        call.setProperty(Call.SOAPACTION_URI_PROPERTY, "");
                        call.setProperty(ENCODING_STYLE_PROPERTY, URI_ENCODING);
                        call.getReturnType();
                        call.setOperationName(new QName(BODY_NAMESPACE_VALUE, "getList"));
                        QName QNAME_TYPE_STRING = new QName(NS_XSD, "string");
                        call.addParameter("String_1", QNAME_TYPE_STRING, ParameterMode.IN);
                        //http://ws.aftek.com/outlook-reminder/schemas
                        QName QNAME_TYPE_VO = new QName("http://schemas.xmlsoap.org/soap/encoding/", "Array");
                        System.out.println("Before Add Parameter");
                   //     call.addParameter("result", QNAME_TYPE_VO, ParameterMode.OUT);
                        call.setReturnType(QNAME_TYPE_VO,ArrayList.class);
                        System.out.println("After Add Parameter");
                        Object[] params ={oUserVO.getUserName()};
                        oArrayList =(ArrayList)call.invoke(params);
                        System.out.println("After Invoked");
                        //System.out.println("invoked"+ arrayList);          
                   catch(SOAPFaultException faultException)
                        moLogger.debug("SOAPFaultException : ", faultException);
                   catch(RemoteException oremoteException)
                        moLogger.debug("RemoteException", oremoteException);
              catch(ServiceException oServiceException)
                        moLogger.debug("ServiceException", oServiceException);          }          
    Error got is :
    trailing block elements must have an id attribute
         at com.sun.xml.rpc.encoding.SOAPDeserializationContext.deserializeMultiRefObjects(SOAPDeserializationContext.java:81)
         at com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:239)
         at com.sun.xml.rpc.client.dii.CallInvokerImpl.doInvoke(CallInvokerImpl.java:103)
         at com.sun.xml.rpc.client.dii.BasicCall.invoke(BasicCall.java:492)
         at com.ail.dhg.poc.business.dao.ContactDAO.getList(ContactDAO.java:255)
         at com.ail.dhg.poc.business.facade.ContactFacade.getList(ContactFacade.java:189)
         at com.ail.dhg.poc.business.AcceptInput.main(AcceptInput.java:72)
    java.lang.NullPointerException
         at com.ail.dhg.poc.business.dao.ContactDAO.getList(ContactDAO.java:277)
         at com.ail.dhg.poc.business.facade.ContactFacade.getList(ContactFacade.java:189)
         at com.ail.dhg.poc.business.AcceptInput.main(AcceptInput.java:72)
    Message was edited by:
    trupti_d

    Use lower case letters for your variable names (name, pwd). The code works then.
    package com.bluenile.bean;
    import java.io.*;
    public class Bean1 implements Serializable
    private String name="Uname";
    private String pwd="Pword";
    public String getName()
    return name;
    public String getPwd()
    return pwd;
    void setName(String name)
    this.name = name;
    void setPwd(String pwd)
    this.pwd = pwd;
    <HTML>
    <BODY BGCOLOR="#FFFFFF">
    <%@ page language="java" contentType="text/html" %>
    <jsp:useBean id="b1" class="com.bluenile.bean.Bean1" />
    <ul>
    <li>Name : <jsp:getProperty name="b1" property="name" />
    <li>Pwd : <jsp:getProperty name="b1" property="pwd" />
    </ul>
    </BODY>
    </HTML>

  • Call a method with complex data type from a DLL file

    Hi,
    I have a win32 API with a dll file, and I am trying to call some methods from it in the labview. To do this, I used the import library wizard, and everything is working as expected. The only problem which I have is with a method with complex data type as return type (a vector). According to this link, import library wizard can not import methods with complex data type.
    The name of this method is this:   const std::vector< BlackfinInterfaces::Count > Counts ()
    where Count is a structure defined as below:
    struct Count
       Count() : countTime(0) {}
       std::vector<unsigned long> countLines;
       time_t countTime;
    It seems that I should manually use the Call Library Function Node. How can I configure parameters for the above method?

    You cannot configure Call Library Function Node to call this function.  LabVIEW has no way to pass a C++ class such as vector to a DLL.

  • How to access complex data type objects in webdynpro

    Hi
    Need help on the detailed procedure to access the complex data type objects.
    I am importing an external wsdl file, its request and response have complex data type objects , how do i access the same as the values are nested in them.
    The structure of request and response at my end is as below:
    request(I level)
    --complextypeobject(II level)
    requestheader(III level)
    field1
    field2
    request
    --response
    messages
    resp1
    resp2
    Any help would be highly appreciated.
    Thanks and Regards,
    Amar Bhagat Challa.

    here you go
    WS Structure
    Request_MI_PortWellOB_MI_PortWellOB
    |-- MT_PortWellOut
       |--agency ( attr)
       |--user (attr)
       |-- well ( node)
         |-- borehole
         |-- downhole
         |-- interval
         |-- surface
    // code to set complex type
              wdContext.nodeRequest_MI_PortWellOB_MI_PortWellOB().bind(new Request_MI_PortWellOB_MI_PortWellOB());
              //        port well object
              Request_MI_PortWellOB_MI_PortWellOB oPWRequest = new Request_MI_PortWellOB_MI_PortWellOB();
              ComplexType_DT_PortWell oPWParameters = new ComplexType_DT_PortWell();
              oPWRequest.setMT_PortWellOut(oPWParameters);
              wdContext.nodeRequest_MI_PortWellOB_MI_PortWellOB().bind(oPWRequest);
              DT_PortWell oPWInputbean =
                   this.wdContext.nodeRequest_MI_PortWellOB_MI_PortWellOB().nodeMT_PortWellOut().currentMT_PortWellOutElement().modelObject().getOriginalBean();
              //       oPWInputbean.setTEST("test");
              //          well object
              DT_CWR_Well oWParameters = new DT_CWR_Well();
              //          all object
              //        surface
              DT_CWR_Surface oSParameters = new DT_CWR_Surface();
              ComplexType_DT_CWR_Surface s = new ComplexType_DT_CWR_Surface();
              //          Borehole
              DT_CWR_BoreHole[] oBParameters = new DT_CWR_BoreHole[wdContext.nodeBoreholedetail().size()];
              //          Downhole
              DT_CWR_DownHole[] oDParameters = new DT_CWR_DownHole[wdContext.nodeDownholedetail().size()];
              //          Interval
              DT_CWR_Interval[] oIParameters = new DT_CWR_Interval[wdContext.nodeIntervaldetail().size()];
              //        add all into well object       
              oWParameters.setSURFACE(oSParameters);
              oWParameters.setBOREHOLE(oBParameters);
              oWParameters.setDOWNHOLE(oDParameters);
              oWParameters.setINTERVAL(oIParameters);
              //       oPWParameters.setWELL(oWParameters );      
              oPWInputbean.setWELL(oWParameters);
              oPWRequest.setMT_PortWellOut(oPWParameters);
              wdContext.nodeRequest_MI_PortWellOB_MI_PortWellOB().bind(oPWRequest);
              wdContext.currentMT_PortWellOutElement().setUSERID("user");
              wdContext.currentMT_PortWellOutElement().setAGENCY("agency");
    Rahul

  • Files generated by Web Service Proxy give errors for complex input types

    Hi ,
    I generated a Java Web Service Proxy using a WSDL file.
    The input params are of this fashion -
    1) Object 1 have 3 attributes
    2) Object 2 having nested Object 2 (yes , again) which has a nested attribute which needs to be passed say Param 1.
    When I generate the proxy classes ... Param 1 is referred to as private Object2.Object2 param1 which gives error for the data types.
    How can we resolve this .. what should be the correct data type representation for param 1 ?
    Thanks

    Issue was resolved . Details here - 11g PS2 - WebServiceProxy Class give errors for complex input types

  • How to reference complex data type when consuming web services in WAS 620?

    In WAS 620, I tried to consume a web service in ABAP. I was successful when the web service returned one or more simple data type. But when the web service is changed to return a complex data type (eg. a structure with 3 elements), the call to the web service did not return anything.
    Do any of you know how to reference the individual element in the structure of an output parameter in a web service? I use the add_parameter method of the CSoapDocument class to identify the output parameters.
    Here is part of the WSDL file:
      <?xml version="1.0" encoding="UTF-8" ?>
    - <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:s0="urn:sap-com:document:sap:rfc:functions" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="urn:sap-com:document:sap:rfc:functions">
    - <types>
    - <xsd:schema targetNamespace="urn:sap-com:document:sap:rfc:functions">
    - <xsd:element name="Z_SRM_SOAP_TEST_COMPLEX">
    - <xsd:complexType>
    - <xsd:all>
    - <xsd:element name="INTEXT">
    - <xsd:simpleType>
    - <xsd:restriction base="xsd:string">
      <xsd:maxLength value="50" />
      </xsd:restriction>
      </xsd:simpleType>
      </xsd:element>
      </xsd:all>
      </xsd:complexType>
      </xsd:element>
    - <xsd:element name="Z_SRM_SOAP_TEST_COMPLEX.Response">
    - <xsd:complexType>
    - <xsd:all>
      <xsd:element name="OUTTEXT" type="s0:ZSRM_TEST_STRUCT" />
      </xsd:all>
      </xsd:complexType>
      </xsd:element>
    - <xsd:complexType name="ZSRM_TEST_STRUCT">
    - <xsd:sequence>
    - <xsd:element name="ELEMENT1" minOccurs="0">
    - <xsd:simpleType>
    - <xsd:restriction base="xsd:string">
      <xsd:maxLength value="50" />
      </xsd:restriction>
      </xsd:simpleType>
      </xsd:element>
    - <xsd:element name="ELEMENT2" minOccurs="0">
    - <xsd:simpleType>
    - <xsd:restriction base="xsd:string">
      <xsd:maxLength value="50" />
      </xsd:restriction>
      </xsd:simpleType>
      </xsd:element>
    - <xsd:element name="ELEMENT3" minOccurs="0">
    - <xsd:simpleType>
    - <xsd:restriction base="xsd:string">
      <xsd:maxLength value="50" />
      </xsd:restriction>
      </xsd:simpleType>
      </xsd:element>
      </xsd:sequence>
      </xsd:complexType>
      </xsd:schema>
      </types>

    Hi,
      [email protected] is my id and one more thing u by looking at the wsdl file u can know what al the parameters we have to give to the webservice so try it out also.
    Regards,
    Sirisha.

  • Can "SPML Web Service Complex Data Type field" take multiple values ?

    In Generic Technology Connector's -SPML design parameters section, Can we give multiple values in SPML Web Service Complex Data Type field?
    If not, how can i call methods directly instead of calling them through a values of the "name" attribute of the "complexType" element in SPML Web Service Complex Data Type?
    I need 'SPML Web Service Complex Data Type' to hold multiple values.And based on the request it has to initiate appropriate method of action.
    Presently i have three methods add,modify and delete which i am calling through a single value of the "name" attribute of the "complexType" element in SPML Web Service Complex Data Type.
    I want to replace this single value with multiple menthods , so that a direct interaction between the method,OIM and target can be established.
    Edited by: 821054 on 16/02/2011 04:23

    Thanks Robert.
    You'll need to create your own interface to the webapp database for those kind of data operations
    by this, are you speaking of the internal BC database which stores web app schema data? That would be great if it were possible to update that programmatically because I need to use the List (Checkbox List) field type (for the search functionality), but I need to supply the checkbox options from a web app rather than by manually updating the list entered in the Fields view of the web app settings (shown below).
    I'm curious if anyone else has tried this?
    Again, my reason for needing to use the List (Checkbox List) field type is that the page which processes searches knows to expect a comma separated list for this field type and then appears to be parsing out the individual values for searching out web app items with 1 or more matching values. You're right that text fields (string and multiline) just check for 'string contains' matches, and this would be ok if I was only ever needing to search just one value at a time. Here's an example of what I might do:
    Web App item field value (as recorded against the List (Checkbox List) field type:
    8294877,8294878
    Web App Search value (for this same field):
    8294879,8294877,8294885
    The search would return this web app item because the field contains 2 (1 or more) individual values even though they were entered into the search field in a different order. If this web app item were just a Text (string or multiline) field, the searched value is not a substring of the web app item's stored value, so it would not find a match. Hence the need to use Checkbox List field type.
    The web app will have thousands if not 10s of thousands of records, so dumping them all into one big array or object and searching on the front-end won't be practical (though it works great on smaller datasets).

Maybe you are looking for

  • GarageBand Loops Projects Missing

    I have a MacBook Air, trying to creat some loops using GarageBand, but I couldn't find Loops projects. Thanks My GarageBand looks different than others Here is a image I found on Google

  • How can I use a variable for an interface log and error fle

    I want to use a variable for the interface's log and error file so that when I migrate from Dev to QA to Prod I don't have to do a lot of editing. Specifically on the "flow" tab for the "target", I want a variable to be the first part of the path for

  • IMovie on iPad transfer project to iMovie for Mac?

    Would I be able to transfer an iMovie project, mid-project, between an iPad and Mac versions of iMovie? Apple made it clear in the keynote and press releases that this would be possible in GarageBand, but I want to know about iMovie.

  • How to access the table type field in the structure

    Hi All, I have a BADI CRM_MKT_ADR_SEARCH and a method CHANGE_SEARCH_RESULTS in this method I have a parameter CT_BP_CP_CHANNEL .This parameter has type CRMT_BP_CP_CHANNEL_TAB(this is table type) this has the line type CRMT_BP_CP_CHANNEL(this is struc

  • Parent Disk - File Share - VM Placement

    Hi, I did some testing with Cluster and File Share (with Parent Disk). I figured that the Parent Disk will be placed on the File Share a not on the Cluster Shared Volume. I'm now trying to do it with hosts who are not clustered. I went to the Fabic i