• rnavarette
  • NEWBIE
  • 0 Points
  • Member since 2010

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 0
    Questions
  • 6
    Replies

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>
  • April 03, 2010
  • Like
  • 0

Is it possible to do any reflective calls on custom classes?

 

I have something like

 

public class CustomTaskObject { public Boolean isSelected {get;set;} public String Id {get;set;} public String Subject {get;set;} public String AccountName {get;set;} public WhatName {get;set;} public WhatStatus {get;set} public Double Timezone {get;set} ... }

 

Basically I populate a list of this CustomTaskObject, and do a very special sort done by Timezone (10 hours ahead of the current user's Timezone, desc), and then by "WhatStatus" priority (which is all done in code as there is no way to do this in SOQL) and throw it into a VisualForce pageBlockTable.

 

Users want to have the functionality to sort by other columns, such as AccountName, or WhatStatus, and I would like to have a way to make it so that I can call

 

object.getField('WhatStatus')

 

to simplify the sorting routine. Otherwise I would have to write a sort procedure to handle each field that is available for sorting.

 

Is reflection possible?

 

I have seen in other threads where people are dealing with sObjects which do have reflection, but I'm guessing that this is not possible with custom classes?

 

Thanks!

  • March 10, 2010
  • Like
  • 0

Hi,

 

I am stuck trying to integrate to an external web service using an Apex callout.

 

I have generated the classes using WSDL2Apex and am trapping the SOAP callout in Eclipse.  When I run it from Salesforce (via execute anonymous in Eclipse) it gives me this SOAP message (which returns an error along the line of 'Expression produces unexpected value: null.' from the web service provider):

 

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Header /> <env:Body> <m:dynamicQandA xmlns:m="http://qddynamicqandaservice/"> <arg0> <PolicyData policyExpiryDate="?" noClaimsDiscountStatus="?" lastRenewalDate="?" premiumPaidTodateStatus="?" levelOfCoverCode="?" nextRenewalDate="?" productCode="?" policyEffectiveDate="?" policyType="?" policyInceptionDate="?" terminationCode="?" reinsurerIndicator="?" /> <ManagementInformation executeFinish="?" lastRuleID="?" message="?" executeTime="?" executeStart="?" /> <Outcome nextQuestion="?" ruleState="?" outcomeMessage="?" rulesComplete="true" outcomeName="?" /> <Question> <QuestionName>Service Request Type</QuestionName> <AnswerDataType>String</AnswerDataType> <AnswerValue>Insurance Claim</AnswerValue> </Question> </arg0> </m:dynamicQandA> </env:Body> </env:Envelope>

 

HOWEVER when I run it from SOAP UI (a non-Salesforce tool that generates Webservice calls outs from WSDL) I get the following SOAP message (which works fine, no error msg):

 

 

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:qdd="http://qddynamicqandaservice/" xmlns:ccl="http://www.cdecisions.com/cclaimsrulesservice"> <soapenv:Header/> <soapenv:Body> <qdd:dynamicQandA> <!--Optional:--> <arg0> <ccl:PolicyData productCode="?" lastRenewalDate="?" levelOfCoverCode="?" nextRenewalDate="?" noClaimsDiscountStatus="?" policyEffectiveDate="?" policyExpiryDate="?" policyInceptionDate="?" policyType="?" premiumPaidTodateStatus="?" reinsurerIndicator="?" terminationCode="?"/> <ccl:ManagementInformation lastRuleID="?" executeTime="?" message="?" executeStart="?" executeFinish="?"/> <Outcome outcomeName="?" outcomeMessage="?" rulesComplete="?" ruleState="?" nextQuestion="?">?</Outcome> <!--Zero or more repetitions:--> <ccl:Question> <QuestionName>Service Request Type</QuestionName> <AnswerDataType>String</AnswerDataType> <AnswerValue>Insurance Claim</AnswerValue> </ccl:Question> </arg0> </qdd:dynamicQandA> </soapenv:Body> </soapenv:Envelope>

 

So it appears that Salesforce is not forming the SOAP message well - specifically it appears to be dropping the second namespace (= http://www.cdecisions.com/cclaimsrulesservice).

 

I have tried hacking the generated classes from WSDL2Apex without much luck (although to be honest it has been mainly trial and error!).

  

My issue seems very similar to that discribed here: http://community.salesforce.com/sforce/board/message?board.id=apex&message.id=4679

 

However the answer to that one was that it is a SF bug that is now allegedly fixed??....  So I am at a loss!

 

Can anyone help?  Any advice on how I might fix (is it possible to fix by tweaking the generated WSDL2Apex Classes?)

 

Thanks in advance,

 

Demi 

Message Edited by Demint on 12-16-2009 02:13 AM
  • December 15, 2009
  • Like
  • 0

Hi everyone,

 

   In my appliction i am using picklist field.My requirement is, in picklist i should not be display "-None-" option and it won't accept null values also.if any one knows this plz tell me the solution.

 

Thanks in advance,

anu..