function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
sonisoni 

Apex classes generated from WSDL, has missing return types.

I generated apex classes from a WSDL provided by external app. But it seems like the generated class replaces the return type of all the methods with void. I can even see some variables missing in some of the classes, when they are clearly mentioned in WSDL. Any idea why is this so?Below is the WSDL am using ..

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
                  xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
                  xmlns:tns="http://temporg"                
                  targetNamespace="http://temporg">
   <wsdl:types>
      <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
                 xmlns="http://temporg"
                 targetNamespace="http://temporg"
                 elementFormDefault="qualified"
                 attributeFormDefault="unqualified"
                 version="v1_0">
         <xs:annotation>
            <xs:documentation>
            External Service for Sales Related Integration - Version 1.0.0 - Release 03/19/2010
        </xs:documentation>
         </xs:annotation>
 <xs:complexType>
            <xs:sequence>
               <xs:element/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
         </xs:complexType>
 
         <xs:complexType abstract="true">
            <xs:sequence>
               <xs:element minOccurs="1" maxOccurs="1"/>
            </xs:sequence>
         </xs:complexType>
 
         <xs:complexType abstract="true">
            <xs:sequence>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
            <xs:attribute use="required"/> 
         </xs:complexType>
 
         <xs:complexType>
            <xs:sequence>
               <xs:element>
                  <xs:annotation>
                     <xs:documentation>This element carries a standard message code from the message catalog</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element maxOccurs="1" minOccurs="0">
                  <xs:annotation>
                     <xs:documentation>This element carries static exception message from the message catalog</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element minOccurs="0" maxOccurs="1">
                  <xs:annotation>
                     <xs:documentation>This element will carry dynamic exception messaging determined by provider at runtime</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element minOccurs="0" maxOccurs="unbounded">
                  <xs:annotation>
                     <xs:documentation>This element carries supporting exception details to further qualify the primary exception</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:complexType>
 
         <xs:complexType>
            <xs:sequence>
               <xs:element>
                  <xs:annotation>
                     <xs:documentation>This element carries a standard message code from the message catalog</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element minOccurs="0" maxOccurs="1">
                  <xs:annotation>
                     <xs:documentation>This element carries static exception message from the message catalog</xs:documentation>
                  </xs:annotation>
               </xs:element>
               <xs:element minOccurs="0" maxOccurs="1">
                  <xs:annotation>
                     <xs:documentation>This element will carry dynamic exception messaging determined by provider at runtime</xs:documentation>
                  </xs:annotation>
               </xs:element>
            </xs:sequence>
         </xs:complexType>
 <xs:complexType>
            <xs:sequence>
               <xs:element minOccurs="0"/>
            </xs:sequence>
         </xs:complexType>
 
         <xs:complexType>
            <xs:sequence>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0"
                           maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0"
                           maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
         </xs:complexType> 
 <xs:complexType>
            <xs:complexContent>
               <xs:extension base="GeographicAddress">
                  <xs:sequence>
                     <xs:element minOccurs="0" maxOccurs="1"/>
                  </xs:sequence>
               </xs:extension>
            </xs:complexContent>
         </xs:complexType>
 <xs:complexType>
            <xs:sequence>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
         </xs:complexType>
 
         <xs:complexType>
            <xs:sequence>
               <xs:element minOccurs="0"/>
            </xs:sequence>
         </xs:complexType>
         <xs:complexType>
            <xs:sequence>
               <xs:element minOccurs="1" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
         </xs:complexType>
         <xs:complexType>
            <xs:sequence>
               <xs:element minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
         </xs:complexType>
         <xs:complexType>
            <xs:sequence>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
         </xs:complexType>
         <xs:complexType>
            <xs:sequence>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
               <xs:element minOccurs="0" maxOccurs="1"/>
            </xs:sequence>
         </xs:complexType>
<xs:element/>
         <xs:complexType>
            <xs:complexContent>
               <xs:extension base="baseRequest">
                  <xs:sequence>
                     <xs:element minOccurs="1"/>
                     <xs:element minOccurs="1"/>
                     <xs:element minOccurs="1"/>
                  </xs:sequence>
               </xs:extension>
            </xs:complexContent>
         </xs:complexType>
         <xs:element/>
         <xs:complexType>
            <xs:complexContent>
               <xs:extension base="baseResponse">
                  <xs:sequence/>
               </xs:extension>
            </xs:complexContent>
         </xs:complexType>
         <xs:element/>
         <xs:complexType>
            <xs:complexContent>
               <xs:extension base="baseRequest">
                  <xs:sequence>
                     <xs:element minOccurs="1"/>
                     <xs:element minOccurs="1"/>
                     <xs:element minOccurs="1"/>
                  </xs:sequence>
               </xs:extension>
            </xs:complexContent>
         </xs:complexType>
         <xs:element/>
         <xs:complexType>
            <xs:complexContent>
               <xs:extension base="baseResponse">
                  <xs:sequence/>
               </xs:extension>
            </xs:complexContent>
         </xs:complexType>
         <xs:element/>
         <xs:complexType>
            <xs:complexContent>
               <xs:extension base="baseRequest">
                  <xs:sequence>
                     <xs:element minOccurs="1" maxOccurs="unbounded"/>
                     <xs:element minOccurs="1"/>
                  </xs:sequence>
               </xs:extension>
            </xs:complexContent>
         </xs:complexType>
         <xs:element/>
         <xs:complexType>
            <xs:complexContent>
               <xs:extension base="baseResponse">
                  <xs:sequence/>
               </xs:extension>
            </xs:complexContent>
         </xs:complexType>
         <xs:element/>
         <xs:complexType>
            <xs:complexContent>
               <xs:extension base="baseRequest">
                  <xs:sequence>
                     <xs:element minOccurs="1" maxOccurs="unbounded"/>
                     <xs:element minOccurs="1"/>
                  </xs:sequence>
               </xs:extension>
            </xs:complexContent>
         </xs:complexType>
         <xs:element/>
         <xs:complexType>
            <xs:complexContent>
               <xs:extension base="baseResponse">
                  <xs:sequence/>
               </xs:extension>
            </xs:complexContent>
         </xs:complexType>
      </xs:schema>
   </wsdl:types>
   <wsdl:message>
      <wsdl:part element="tns:setupCustomerAccount"/>
   </wsdl:message>
   <wsdl:message>
      <wsdl:part element="tns:setupCustomerAccountResponse"/>
   </wsdl:message>
   <wsdl:message>
      <wsdl:part element="tns:updateCustomerAccount"/>
   </wsdl:message>
   <wsdl:message>
      <wsdl:part element="tns:updateCustomerAccountResponse"/>
   </wsdl:message>
   <wsdl:message>
      <wsdl:part element="tns:createCustomerContact"/>
   </wsdl:message>
   <wsdl:message>
      <wsdl:part element="tns:createCustomerContactResponse"/>
   </wsdl:message>
   <wsdl:message>
      <wsdl:part element="tns:updateCustomerContact"/>
   </wsdl:message>
   <wsdl:message>
      <wsdl:part element="tns:updateCustomerContactResponse"/>
   </wsdl:message>
   <wsdl:portType>
      <wsdl:operation>
         <wsdl:input  message="tns:setupCustomerAccount"/>
         <wsdl:output message="tns:setupCustomerAccountResponse"/>
      </wsdl:operation>
      <wsdl:operation>
         <wsdl:input message="tns:updateCustomerAccount"/>
         <wsdl:output message="tns:updateCustomerAccountResponse"/>
      </wsdl:operation>
      <wsdl:operation>
         <wsdl:input  message="tns:createCustomerContact"/>
         <wsdl:output  message="tns:createCustomerContactResponse"/>
      </wsdl:operation>
      <wsdl:operation>
         <wsdl:input message="tns:updateCustomerContact"/>
         <wsdl:output message="tns:updateCustomerContactResponse"/>
      </wsdl:operation>
   </wsdl:portType> 
   <wsdl:binding>
      <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
      <wsdl:operation>
         <wsdlsoap:operation soapAction="setupCustomerAccount_v1_0"/>
         <wsdl:input>
            <wsdlsoap:body use="literal"/>
         </wsdl:input>
         <wsdl:output>
            <wsdlsoap:body use="literal"/>
         </wsdl:output>
      </wsdl:operation>
      <wsdl:operation>
         <wsdlsoap:operation soapAction="updateCustomerAccount_v1_0"/>
         <wsdl:input>
            <wsdlsoap:body use="literal"/>
         </wsdl:input>
         <wsdl:output >
            <wsdlsoap:body use="literal"/>
         </wsdl:output>
      </wsdl:operation>
      <wsdl:operation>
         <wsdlsoap:operation soapAction="createCustomerContact_v1_0"/>
         <wsdl:input>
            <wsdlsoap:body use="literal"/>
         </wsdl:input>
         <wsdl:output>
            <wsdlsoap:body use="literal"/>
         </wsdl:output>
      </wsdl:operation>
      <wsdl:operation>
         <wsdlsoap:operation soapAction="updateCustomerContact_v1_0"/>
         <wsdl:input>
            <wsdlsoap:body use="literal"/>
         </wsdl:input>
         <wsdl:output>
            <wsdlsoap:body use="literal"/>
         </wsdl:output>
      </wsdl:operation>
   </wsdl:binding>
   <wsdl:service>
      <wsdl:port binding="tns:SecureWebSalesBinding">
         <wsdlsoap:address location="http://temp.org"/>
      </wsdl:port>
   </wsdl:service>
</wsdl:definitions>
sonisoni

And here goes a part of the apex class which  was generated from  -

 

Even if the wsdl says that the output is a response object. I don't see them in the generated code.

 

For eg : In the below code setupCustomerAccount method returns void, whereas the wsdl says that it should return setupCustomerAccountResponse object(which actually inherited from Base Response object). Sadly I cant see this relation even here.

 

Is this some type of fault with how salesforce generates code or this has something to do with the wsdl.

 

//Generated by wsdl2apex

global class level3SecurewebServiceSalesApiV10 {
    global class SecureWebSalesPort {
        global String endpoint_x = '';
        global Map<String,String> inputHttpHeaders_x;
        global Map<String,String> outputHttpHeaders_x;
        global String clientCertName_x;
        global String clientCert_x;
        global String clientCertPasswd_x;
        global Integer timeout_x;
        private String[] ns_map_type_info = new String[]{'http://level3/secureweb/service/sales/api_v1_0', 'level3SecurewebServiceSalesApiV10'};
        global void setupCustomerAccount(level3SecurewebServiceSalesApiV10.CustomerAccount customerAccountDetail,level3SecurewebServiceSalesApiV10.Contact primaryContactDetail,String accountTeamName) {
            level3SecurewebServiceSalesApiV10.setupCustomerAccount request_x = new level3SecurewebServiceSalesApiV10.setupCustomerAccount();
            level3SecurewebServiceSalesApiV10.setupCustomerAccountResponse response_x;
            request_x.customerAccountDetail = customerAccountDetail;
            request_x.primaryContactDetail = primaryContactDetail;
            request_x.accountTeamName = accountTeamName;
            Map<String, level3SecurewebServiceSalesApiV10.setupCustomerAccountResponse> response_map_x = new Map<String, level3SecurewebServiceSalesApiV10.setupCustomerAccountResponse>();
            response_map_x.put('response_x', response_x);
            WebServiceCallout.invoke(
              this,
              request_x,
              response_map_x,
              new String[]{endpoint_x,
              'setupCustomerAccount_v1_0',
              'http://level3/secureweb/service/sales/api_v1_0',
              'setupCustomerAccount',
              'http://level3/secureweb/service/sales/api_v1_0',
              'setupCustomerAccountResponse',
              'level3SecurewebServiceSalesApiV10.setupCustomerAccountResponse'}
            );
            response_x = response_map_x.get('response_x');
        }
    }
    global class baseResponse {
        global level3SecurewebServiceSalesApiV10.Context context;
        global level3SecurewebServiceSalesApiV10.exception_x exception_x;
        global Boolean isError;
        private String[] context_type_info = new String[]{'context','http://level3/secureweb/service/sales/api_v1_0','Context','0','1','false'};
        private String[] exception_x_type_info = new String[]{'exception','http://level3/secureweb/service/sales/api_v1_0','exception','0','1','false'};
        private String[] isError_att_info = new String[]{'isError'};
        private String[] apex_schema_type_info = new String[]{'http://level3/secureweb/service/sales/api_v1_0','true','false'};
        private String[] field_order_type_info = new String[]{'context','exception_x'};
    }
    global class setupCustomerAccountResponse {
        private String[] apex_schema_type_info = new String[]{'http://level3/secureweb/service/sales/api_v1_0','true','false'};
        private String[] field_order_type_info = new String[]{};
    }
    global class baseRequest {
        global level3SecurewebServiceSalesApiV10.Context context;
        private String[] context_type_info = new String[]{'context','http://level3/secureweb/service/sales/api_v1_0','Context','1','1','false'};
        private String[] apex_schema_type_info = new String[]{'http://level3/secureweb/service/sales/api_v1_0','true','false'};
        private String[] field_order_type_info = new String[]{'context'};
    }
    global class Context {
        global String source;
        global String performer;
        global String transactionId;
        private String[] source_type_info = new String[]{'source','http://www.w3.org/2001/XMLSchema','string','1','1','false'};
        private String[] performer_type_info = new String[]{'performer','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] transactionId_type_info = new String[]{'transactionId','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] apex_schema_type_info = new String[]{'http://level3/secureweb/service/sales/api_v1_0','true','false'};
        private String[] field_order_type_info = new String[]{'source','performer','transactionId'};
    }
    global class exception_x {
        global String code;
        global String message;
        global String detail;
        global level3SecurewebServiceSalesApiV10.detailMessage[] subException;
        private String[] code_type_info = new String[]{'code','http://www.w3.org/2001/XMLSchema','string','1','1','false'};
        private String[] message_type_info = new String[]{'message','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] detail_type_info = new String[]{'detail','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] subException_type_info = new String[]{'subException','http://level3/secureweb/service/sales/api_v1_0','detailMessage','0','-1','false'};
        private String[] apex_schema_type_info = new String[]{'http://level3/secureweb/service/sales/api_v1_0','true','false'};
        private String[] field_order_type_info = new String[]{'code','message','detail','subException'};
    }
}

 

 

rnavaretternavarette

Ever get anywhere with this?