• Spector
  • NEWBIE
  • 0 Points
  • Member since 2008

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 5
    Questions
  • 6
    Replies
Since using Winter 09 release (my account is on the "na6" server), I have been having intermittant session validation problems. The error can occurr in multiple places:

1. When trying to use the partner API via setting ServerURL and SessionID I get:
UNKNOWN_EXCEPTION: An unexpected error occurred. Please include this ErrorId if you contact support: 662265498-446 (-779933274)

2. When trying to use the System Log to execute a simple line of code, I get:
17:43:56 DEBUG - Executing: string test = 'test';
17:43:56 ERROR - INVALID_SESSION_ID: Invalid Session ID found in SessionHeader: Illegal Session. Try logging in again.

Aparently any attempt to call the partner API results in a session invalid error. I have tried using the session ID produced by {!$Api.Session_ID} and UserInfo.getSessionId().

Is the partner web service API broken??? We were planning to demo an app at Dreamforce using the Winter 09 release, but this is making it completely impossible.

Any help appreciated.



Message Edited by Spector on 10-29-2008 05:52 PM
 Hello,

Since the upgrade to Winter 09 I have had several critical problems with my current application (that was working fine before the upgrade). The main difference is that I now have a package that I have created with many VisualForce pages in them. These pages work in conjunction with a web service (which I have written and control).

At first my problem was that within a package, the {!$API.Partner_Server_Url_XX} variable was not getting set appropriately. I was getting set  to "https://www.salesforce.com/services/Soap/u/14.0/" which is entirely different from what it used to be (ex. "https://<server>.salesforce.com/services/Soap/u/14.0/<partial sess id>"). With a little help from the community I found a workaround that involved just modifiying that URL before sending it to my web service (as the web service needs to call getUserInfo() in the partner API). Now I have modified that URL to be "https://<package namespace>.<server>.visual.force.com/services/Soap/u/14.0/<partial sess id>".

This seems to work fine on the initial callback to the partner API. I can get the user info via getUserInfo() on the first page load. However... whenever I call the webservice again (via a submit button on the same page) the session ID (via UserInfo.getSessionId()) is CHANGING! It does not match the initial value that was used when the page was first loaded! This causes my call to the parner API to throw an exception that reads: "INVALID_SESSION_ID: Invalid Session ID found in SessionHeader: Illegal Session".

So why is the session id changing? This only seems to happen in a package. When I run the code in unmanaged form (unpackaged) it works just fine. Is this a bug?

Our company is planning to showcase this at our booth at Dreamforce, please help!
Sorry if this question seems remedial, but I can't seem to find the answer anywhere...

I have a set of VisualForce pages that make calls to a 3rd party web service that I wrote. This web service requires a "key" that is retrieved by calling the "Login()" function on the web service. This function sends back a string that should be used with all subsequent calls to this web service. My question is, is there some equivalent of session variables I can use in Apex to store this variable? I would like some variable I can set that will live as long as the SF user is logged in, and should only be accessible by that SF user.

Thanks,
Spector


Message Edited by Spector on 10-03-2008 04:12 PM
I inquired about this at the beginning of July, but have not seen an update... are VisualForce pages packable yet? I was told this was their #1 priority but have seen no change. Any idea when this will become available?

Also, where can I look to monitor if this type of thing changes. Would this be something they would do in a big press release, or simply some footnote in an obscure part of the documentation?

Thanks in advance,
Spector
Hello,
 
Currently the proxy code generated by the wsdl2apex utility is behaving badly in regard to SOAP headers. From the documentation, it is said that these headers are supported via the public fields generated in the SOAP proxy class. I have no problem when using these headers to call out to my service. The problem however is that the proxy class does NOT read the headers passed back from the remote call and populate these fields. See code below:
 
The problem:
EXTAPI.EXTAPISoap stub = new EXTAPI.EXTAPISoap();
stub.Login();
// this is not set, even though the SOAP header DOES exist in the XML passed back
stub.MFResponseHeader == null; <-- This value should not be null!
 
Any help at all would be greatly appreciated.
 
Here is my proxy class:
 
 
//Generated by wsdl2apex

public class EXTAPI {
    public static testMethod void Test() {
 EXTAPISoap service = new EXTAPISoap();
        service.MFAuthHeader = new MFAuthHeader();
        service.Login();
    }
    public class Login_element {
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{};
    }
    public class EXTAPISoap {
        public String endpoint_x = <address omitted>;
        public EXTAPI.MFAuthHeader MFAuthHeader;
        public EXTAPI.MFResponseHeader MFResponseHeader;
        private String MFAuthHeader_hns = 'MFAuthHeader=http://tempuri.org/';
        private String MFResponseHeader_hns = 'MFResponseHeader=http://tempuri.org/';
        private String[] ns_map_type_info = new String[]{'http://tempuri.org/', 'EXTAPI'};
        public EXTAPI.EXTForm GetForm(String formID) {
            EXTAPI.GetForm_element request_x = new EXTAPI.GetForm_element();
            EXTAPI.GetFormResponse_element response_x;
            request_x.formID = formID;
            Map<String, EXTAPI.GetFormResponse_element> response_map_x = new Map<String, EXTAPI.GetFormResponse_element>();
            response_map_x.put('response_x', response_x);
            WebServiceCallout.invoke(
              this,
              request_x,
              response_map_x,
              new String[]{endpoint_x,
              'http://tempuri.org/GetForm',
              'http://tempuri.org/',
              'GetForm',
              'http://tempuri.org/',
              'GetFormResponse',
              'EXTAPI.GetFormResponse_element'}
            );
            response_x = response_map_x.get('response_x');
            return response_x.GetFormResult;
        }
        public void ProcessForm(EXTAPI.EXTForm form) {
            EXTAPI.ProcessForm_element request_x = new EXTAPI.ProcessForm_element();
            EXTAPI.ProcessFormResponse_element response_x;
            request_x.form = form;
            Map<String, EXTAPI.ProcessFormResponse_element> response_map_x = new Map<String, EXTAPI.ProcessFormResponse_element>();
            response_map_x.put('response_x', response_x);
            WebServiceCallout.invoke(
              this,
              request_x,
              response_map_x,
              new String[]{endpoint_x,
              'http://tempuri.org/ProcessForm',
              'http://tempuri.org/',
              'ProcessForm',
              'http://tempuri.org/',
              'ProcessFormResponse',
              'EXTAPI.ProcessFormResponse_element'}
            );
            response_x = response_map_x.get('response_x');
        }
        public void Login() {
            EXTAPI.Login_element request_x = new EXTAPI.Login_element();
            EXTAPI.LoginResponse_element response_x;
            Map<String, EXTAPI.LoginResponse_element> response_map_x = new Map<String, EXTAPI.LoginResponse_element>();
            response_map_x.put('response_x', response_x);
            WebServiceCallout.invoke(
              this,
              request_x,
              response_map_x,
              new String[]{endpoint_x,
              'http://tempuri.org/Login',
              'http://tempuri.org/',
              'Login',
              'http://tempuri.org/',
              'LoginResponse',
              'EXTAPI.LoginResponse_element'}
            );
            response_x = response_map_x.get('response_x');
        }
    }
    public class EXTForm {
        public String FormID;
        public String FormHeader;
        public EXTAPI.ArrayOfEXTFormElement elements;
        private String[] FormID_type_info = new String[]{'FormID','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] FormHeader_type_info = new String[]{'FormHeader','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] elements_type_info = new String[]{'elements','http://tempuri.org/','ArrayOfEXTFormElement','0','1','false'};
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{'FormID','FormHeader','elements'};
    }
    public class LoginResponse_element {
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{};
    }
    public class MFAuthHeader {
        public String EXTID;
        public String EXTAccountID;
        public String EXTUserID;
        public String EXTUserName;
        public String EXTUserEmail;
        public String EXTSessionID;
        public String EXTServerLocation;
        public String MFSessID;
        public String MFDomainName;
        private String[] EXTID_type_info = new String[]{'EXTID','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] EXTAccountID_type_info = new String[]{'EXTAccountID','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] EXTUserID_type_info = new String[]{'EXTUserID','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] EXTUserName_type_info = new String[]{'EXTUserName','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] EXTUserEmail_type_info = new String[]{'EXTUserEmail','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] EXTSessionID_type_info = new String[]{'EXTSessionID','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] EXTServerLocation_type_info = new String[]{'EXTServerLocation','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] MFSessID_type_info = new String[]{'MFSessID','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] MFDomainName_type_info = new String[]{'MFDomainName','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{'EXTID','EXTAccountID','EXTUserID','EXTUserName','EXTUserEmail','EXTSessionID','EXTServerLocation','MFSessID','MFDomainName'};
    }
    public class EXTFormElement {
        public String Type_x;
        public String Layout;
        public String Caption;
        public String Value;
        public String Name;
        public Boolean IsPassword;
        public EXTAPI.ArrayOfEXTFormElement Options;
        private String[] Type_x_type_info = new String[]{'Type','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] Layout_type_info = new String[]{'Layout','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] Caption_type_info = new String[]{'Caption','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] Value_type_info = new String[]{'Value','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] Name_type_info = new String[]{'Name','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] IsPassword_type_info = new String[]{'IsPassword','http://www.w3.org/2001/XMLSchema','boolean','1','1','false'};
        private String[] Options_type_info = new String[]{'Options','http://tempuri.org/','ArrayOfEXTFormElement','0','1','false'};
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{'Type_x','Layout','Caption','Value','Name','IsPassword','Options'};
    }
    public class ProcessFormResponse_element {
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{};
    }
    public class GetFormResponse_element {
        public EXTAPI.EXTForm GetFormResult;
        private String[] GetFormResult_type_info = new String[]{'GetFormResult','http://tempuri.org/','EXTForm','0','1','false'};
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{'GetFormResult'};
    }
    public class MFResponseHeader {
        public String ResponseCode;
        public String ErrorMessage;
        public String ErrorHTML;
        public String StackTrace;
        public Integer ErrorCode;
        private String[] ResponseCode_type_info = new String[]{'ResponseCode','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] ErrorMessage_type_info = new String[]{'ErrorMessage','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] ErrorHTML_type_info = new String[]{'ErrorHTML','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] StackTrace_type_info = new String[]{'StackTrace','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] ErrorCode_type_info = new String[]{'ErrorCode','http://www.w3.org/2001/XMLSchema','int','1','1','false'};
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{'ResponseCode','ErrorMessage','ErrorHTML','StackTrace','ErrorCode'};
    }
    public class GetForm_element {
        public String formID;
        private String[] formID_type_info = new String[]{'formID','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{'formID'};
    }
    public class ArrayOfEXTFormElement {
        public EXTAPI.EXTFormElement[] EXTFormElement;
        private String[] EXTFormElement_type_info = new String[]{'EXTFormElement','http://tempuri.org/','EXTFormElement','0','-1','true'};
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{'EXTFormElement'};
    }
    public class ProcessForm_element {
        public EXTAPI.EXTForm form;
        private String[] form_type_info = new String[]{'form','http://tempuri.org/','EXTForm','0','1','false'};
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{'form'};
    }
}
The Force.com IDE, a powerful client application for developing, testing and deploying Force.com applications, is now Generally Available.  To get started, visit the Force.com IDE page on developer.force.com.

The Winter '09 release of the Force.com IDE contains the following major new features:
  • New Metadata Support in Winter '09 includes new Analytics and Translation Workbench components, an expanded Custom Object definition, Apex class templates, and more.
  • Metadata Component Directory displays a complete list of the metadata components in your organization available for downloading into your Force.com project.
  • Simpler Project Structure removes package folders, so metadata components are easier to find and synchronize regardless of what packages they are in.
  • Documentation and User Assistance adds 40 new IDE topics, context-sensitive help for all IDE dialogs, wizards, and actions, and the complete Force.com platform documentation and tutorials.
  • Usability Enhancements add a friendly Start Page and improve wizards, screens, commands, editors, and error handling in the Force.com IDE.
Get an overview of all the IDE from An Introduction to the Force.com IDE, learn about what’s new in the Winter '09 Release Notes, or jump right in with the installation instructions.


Note:  There is no direct upgrade path from previous Developer Preview releases to the Winter ’09 Force.com IDE GA.  Please see the release notes for more details.

  • October 28, 2008
  • Like
  • 0
Hello,
 
Currently the proxy code generated by the wsdl2apex utility is behaving badly in regard to SOAP headers. From the documentation, it is said that these headers are supported via the public fields generated in the SOAP proxy class. I have no problem when using these headers to call out to my service. The problem however is that the proxy class does NOT read the headers passed back from the remote call and populate these fields. See code below:
 
The problem:
EXTAPI.EXTAPISoap stub = new EXTAPI.EXTAPISoap();
stub.Login();
// this is not set, even though the SOAP header DOES exist in the XML passed back
stub.MFResponseHeader == null; <-- This value should not be null!
 
Any help at all would be greatly appreciated.
 
Here is my proxy class:
 
 
//Generated by wsdl2apex

public class EXTAPI {
    public static testMethod void Test() {
 EXTAPISoap service = new EXTAPISoap();
        service.MFAuthHeader = new MFAuthHeader();
        service.Login();
    }
    public class Login_element {
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{};
    }
    public class EXTAPISoap {
        public String endpoint_x = <address omitted>;
        public EXTAPI.MFAuthHeader MFAuthHeader;
        public EXTAPI.MFResponseHeader MFResponseHeader;
        private String MFAuthHeader_hns = 'MFAuthHeader=http://tempuri.org/';
        private String MFResponseHeader_hns = 'MFResponseHeader=http://tempuri.org/';
        private String[] ns_map_type_info = new String[]{'http://tempuri.org/', 'EXTAPI'};
        public EXTAPI.EXTForm GetForm(String formID) {
            EXTAPI.GetForm_element request_x = new EXTAPI.GetForm_element();
            EXTAPI.GetFormResponse_element response_x;
            request_x.formID = formID;
            Map<String, EXTAPI.GetFormResponse_element> response_map_x = new Map<String, EXTAPI.GetFormResponse_element>();
            response_map_x.put('response_x', response_x);
            WebServiceCallout.invoke(
              this,
              request_x,
              response_map_x,
              new String[]{endpoint_x,
              'http://tempuri.org/GetForm',
              'http://tempuri.org/',
              'GetForm',
              'http://tempuri.org/',
              'GetFormResponse',
              'EXTAPI.GetFormResponse_element'}
            );
            response_x = response_map_x.get('response_x');
            return response_x.GetFormResult;
        }
        public void ProcessForm(EXTAPI.EXTForm form) {
            EXTAPI.ProcessForm_element request_x = new EXTAPI.ProcessForm_element();
            EXTAPI.ProcessFormResponse_element response_x;
            request_x.form = form;
            Map<String, EXTAPI.ProcessFormResponse_element> response_map_x = new Map<String, EXTAPI.ProcessFormResponse_element>();
            response_map_x.put('response_x', response_x);
            WebServiceCallout.invoke(
              this,
              request_x,
              response_map_x,
              new String[]{endpoint_x,
              'http://tempuri.org/ProcessForm',
              'http://tempuri.org/',
              'ProcessForm',
              'http://tempuri.org/',
              'ProcessFormResponse',
              'EXTAPI.ProcessFormResponse_element'}
            );
            response_x = response_map_x.get('response_x');
        }
        public void Login() {
            EXTAPI.Login_element request_x = new EXTAPI.Login_element();
            EXTAPI.LoginResponse_element response_x;
            Map<String, EXTAPI.LoginResponse_element> response_map_x = new Map<String, EXTAPI.LoginResponse_element>();
            response_map_x.put('response_x', response_x);
            WebServiceCallout.invoke(
              this,
              request_x,
              response_map_x,
              new String[]{endpoint_x,
              'http://tempuri.org/Login',
              'http://tempuri.org/',
              'Login',
              'http://tempuri.org/',
              'LoginResponse',
              'EXTAPI.LoginResponse_element'}
            );
            response_x = response_map_x.get('response_x');
        }
    }
    public class EXTForm {
        public String FormID;
        public String FormHeader;
        public EXTAPI.ArrayOfEXTFormElement elements;
        private String[] FormID_type_info = new String[]{'FormID','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] FormHeader_type_info = new String[]{'FormHeader','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] elements_type_info = new String[]{'elements','http://tempuri.org/','ArrayOfEXTFormElement','0','1','false'};
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{'FormID','FormHeader','elements'};
    }
    public class LoginResponse_element {
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{};
    }
    public class MFAuthHeader {
        public String EXTID;
        public String EXTAccountID;
        public String EXTUserID;
        public String EXTUserName;
        public String EXTUserEmail;
        public String EXTSessionID;
        public String EXTServerLocation;
        public String MFSessID;
        public String MFDomainName;
        private String[] EXTID_type_info = new String[]{'EXTID','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] EXTAccountID_type_info = new String[]{'EXTAccountID','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] EXTUserID_type_info = new String[]{'EXTUserID','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] EXTUserName_type_info = new String[]{'EXTUserName','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] EXTUserEmail_type_info = new String[]{'EXTUserEmail','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] EXTSessionID_type_info = new String[]{'EXTSessionID','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] EXTServerLocation_type_info = new String[]{'EXTServerLocation','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] MFSessID_type_info = new String[]{'MFSessID','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] MFDomainName_type_info = new String[]{'MFDomainName','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{'EXTID','EXTAccountID','EXTUserID','EXTUserName','EXTUserEmail','EXTSessionID','EXTServerLocation','MFSessID','MFDomainName'};
    }
    public class EXTFormElement {
        public String Type_x;
        public String Layout;
        public String Caption;
        public String Value;
        public String Name;
        public Boolean IsPassword;
        public EXTAPI.ArrayOfEXTFormElement Options;
        private String[] Type_x_type_info = new String[]{'Type','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] Layout_type_info = new String[]{'Layout','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] Caption_type_info = new String[]{'Caption','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] Value_type_info = new String[]{'Value','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] Name_type_info = new String[]{'Name','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] IsPassword_type_info = new String[]{'IsPassword','http://www.w3.org/2001/XMLSchema','boolean','1','1','false'};
        private String[] Options_type_info = new String[]{'Options','http://tempuri.org/','ArrayOfEXTFormElement','0','1','false'};
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{'Type_x','Layout','Caption','Value','Name','IsPassword','Options'};
    }
    public class ProcessFormResponse_element {
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{};
    }
    public class GetFormResponse_element {
        public EXTAPI.EXTForm GetFormResult;
        private String[] GetFormResult_type_info = new String[]{'GetFormResult','http://tempuri.org/','EXTForm','0','1','false'};
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{'GetFormResult'};
    }
    public class MFResponseHeader {
        public String ResponseCode;
        public String ErrorMessage;
        public String ErrorHTML;
        public String StackTrace;
        public Integer ErrorCode;
        private String[] ResponseCode_type_info = new String[]{'ResponseCode','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] ErrorMessage_type_info = new String[]{'ErrorMessage','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] ErrorHTML_type_info = new String[]{'ErrorHTML','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] StackTrace_type_info = new String[]{'StackTrace','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] ErrorCode_type_info = new String[]{'ErrorCode','http://www.w3.org/2001/XMLSchema','int','1','1','false'};
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{'ResponseCode','ErrorMessage','ErrorHTML','StackTrace','ErrorCode'};
    }
    public class GetForm_element {
        public String formID;
        private String[] formID_type_info = new String[]{'formID','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{'formID'};
    }
    public class ArrayOfEXTFormElement {
        public EXTAPI.EXTFormElement[] EXTFormElement;
        private String[] EXTFormElement_type_info = new String[]{'EXTFormElement','http://tempuri.org/','EXTFormElement','0','-1','true'};
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{'EXTFormElement'};
    }
    public class ProcessForm_element {
        public EXTAPI.EXTForm form;
        private String[] form_type_info = new String[]{'form','http://tempuri.org/','EXTForm','0','1','false'};
        private String[] apex_schema_type_info = new String[]{'http://tempuri.org/','true'};
        private String[] field_order_type_info = new String[]{'form'};
    }
}