/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is mozilla.org code. * * The Initial Developer of the Original Code is * Netscape Communications Corporation. * Portions created by the Initial Developer are Copyright (C) 2001 * the Initial Developer. All Rights Reserved. * * Contributor(s): * John Bandhauer (jband@netscape.com) * Vidur Apparao (vidur@netscape.com) * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include "nsISupports.idl" #include "nsIWSDL.idl" #include "nsISimpleEnumerator.idl" #include "nsIException.idl" #include "nsISOAPResponse.idl" #include "nsISOAPBlock.idl" #include "nsIScriptableInterfaces.idl" interface nsIWebServiceProxy; interface nsIWebServiceProxyCreationListener; interface nsIInterfaceInfo; interface nsIPropertyBag; [scriptable, uuid(693611be-bb38-40e0-a98e-b46ff8a5bcca)] interface nsIWebServiceProxyFactory : nsISupports { /** * Create a service proxy. Loading of the WSDL URL will occur * in a synchronous manner. Calls to web service can be made as * soon as this method completes. * * @param wsdlURL The URL of the WSDL service description. This * description will be loaded and used as the basis * for the service proxy. * @param portname The name of the port of the service that this * service proxy represents. Currently the port * must represent a SOAP binding. * @param qualifier The user-specified qualifier is incorporated into * the names of XPCOM interfaces created for the * service proxy. For C++ callers, this qualifier * should be the same one used in creating the IDL * used at compile time. Script callers need not * specify a qualifier. * @param isAsync If PR_TRUE, the method signatures of the service * proxy represent an asynchronous calling convention. * A callback instance must be registered with the proxy. * A method call to a web service is only completed when * the corresponding callback method is invoked. * If PR_FALSE, the method signatures of the service * proxy represent a synchronous callling convention. * A method call to a web service is completed when the * method call to the proxy returns. */ nsIWebServiceProxy createProxy(in AString wsdlURL, in AString portname, in AString qualifier, in boolean isAsync); /** * Create a service proxy. Loading of the WSDL URL will occur * in an asynchronous manner. Methods on the listener instance will * be invoked when the proxy has been created. Any method invocations * on the service proxy prior to asynchronous completion of the * intialization step will fail. The caller is guaranteed that this * method will return before the listener is invoked. * * @param wsdlURL The URL of the WSDL service description. This * description will be loaded and used as the basis * for the service proxy. * @param portname The name of the port of the service that this * service proxy represents. Currently the port * must represent a SOAP binding. * @param qualifier The user-specified qualifier is incorporated into * the names of XPCOM interfaces created for the * service proxy. For C++ callers, this qualifier * should be the same one used in creating the IDL * used at compile time. Script callers need not * specify a qualifier. * @param isAsync If PR_TRUE, the method signatures of the service * proxy represent an asynchronous calling convention. * A callback instance must be registered with the proxy. * A method call to a web service is only completed when * the corresponding callback method is invoked. * If PR_FALSE, the method signatures of the service * proxy represent a synchronous callling convention. * A method call to a web service is completed when the * method call to the proxy returns. * @param listener The callback instance which will be invoked when * the proxy is completely initialized. */ void createProxyAsync(in AString wsdlURL, in AString portname, in AString qualifier, in boolean isAsync, in nsIWebServiceProxyCreationListener listener); }; /** * This interface should be implemented by a user who creates * a web service proxy in an asynchronous manner. An instance * of this interface is passed into the initAsync * method of the proxy. */ [scriptable, uuid(a711250b-47da-4f16-a1fd-593de16375a1)] interface nsIWebServiceProxyCreationListener : nsISupports { /** * Invoked when the proxy is completely initialized. Method * calls on the proxy can be made once this method is called. * * @param proxy The initialized web service proxy */ void onLoad(in nsIWebServiceProxy proxy); /** * Invoked if an error occurs during web service proxy * initialization. This error code be a result of attempting * to load the specified WSDL URL or a result of processing * the WSDL and creating the interface information for the * proxy. * * @param error The exception generated as a result of the * error. This object can be introspected * for further information. */ void onError(in nsIException error); }; [scriptable, uuid(2122421c-1326-41db-87f8-25519d8a12cb)] interface nsIWebServiceProxy : nsISupports { [noscript] void Init(in nsIWSDLPort aPort, in nsIInterfaceInfo aPrimaryInterface, in nsIInterfaceInfoManager aInterfaceInfoManager, in AString aQualifier, in boolean aIsAsync); /** * The WSDL port that this service proxy represents. * * @see nsIWSDLPort */ readonly attribute nsIWSDLPort port; /** * PR_TRUE if the service proxy methods represent an asynchronous * calling convention. PR_FALSE if the methods are synchronous. */ readonly attribute boolean isAsync; /** * The qualifier used for interface names related to * this service proxy. */ readonly attribute AString qualifier; /** * An enumerator that returns the set of pending calls for the * service proxy. Each call is an instance of the * nsIWebServiceCallContext interface. * * @see nsIWebServiceCallContext */ readonly attribute nsISimpleEnumerator pendingCalls; /** * The name of the primary interface for this proxy. This may or may not be * the async version depending on whether or not this is an async proxy. */ readonly attribute string primaryInterfaceName; /** * The name of the primary async listener interface for this proxy. * This will be null if this is not an async proxy. */ readonly attribute string primaryAsyncListenerInterfaceName; /** * The collection of interfaces related to this service proxy. This * will include the primary interface implemented by the service * proxy as well as any listener or complex type interfaces required * for method parameters and return values. * NOTE: only interesting from JavaScript. */ readonly attribute nsIScriptableInterfaces interfaces; }; /** * A representation of a method invocation on a web service. * An instance of this interface is returned as a result of making * an asynchronous call and can be queried for status of the * call. */ [scriptable, uuid(87d87900-f102-4a15-b345-7b77a49d2df2)] interface nsIWebServiceCallContext : nsISupports { /** * Possible values of the status attribute. A pending * call has a status of PENDING. A completed call has a status of * SUCCEEDED or FAILED depending on the result of the call. */ const PRUint32 PENDING = 0; const PRUint32 SUCCEEDED = 1; const PRUint32 FAILED = 2; const PRUint32 ABORTED = 3; /** * The proxy object on which the call was made. * * @see nsIWebServiceProxy */ readonly attribute nsIWebServiceProxy proxy; /** * The name of the method that was invoked. */ readonly attribute AString methodName; /** * The status of the call, whether pending, completed successfully * or completed with a fault. */ readonly attribute PRUint32 status; /** * The exception generated by the call if the status is FAILURE. * The exception object can be introspected for more information. * The data member can be QIed to a * nsISOAPFault instance for calls that use a * SOAP binding. */ readonly attribute nsIException pendingException; /** * The WSDL operation that correpsonds to the method being invoked. * * @see nsIWSDLOperation */ readonly attribute nsIWSDLOperation operation; /** * Called to abort a pending call. If the call is still pending, * its callback instance's onError will be invoked, * passing in the specified exception. * * @param error The exception passed to the callback instance's * onError method. */ void abort(in nsIException error); }; [scriptable, uuid(1ef83ece-b645-4b55-a501-df42c3333b47)] interface nsIWebServiceSOAPCallContext : nsIWebServiceCallContext { /** * For users who want access to the lower-level constructs that * are used for the method invocation, this attributes provides * the SOAP response once the call has completed. * * @see nsISOAPResponse */ readonly attribute nsISOAPResponse soapResponse; }; [uuid(b16b15bc-bfad-43cf-b374-2e4651acbc3c)] interface nsIWebServiceComplexTypeWrapper : nsISupports { void Init(in nsISupports aComplexTypeInstance, in nsIInterfaceInfo aInterfaceInfo); }; [uuid(e0b1765e-c0be-4a28-aca3-b292c5c3788b)] interface nsIWebServicePropertyBagWrapper : nsISupports { void Init(in nsIPropertyBag aPropertyBag, in nsIInterfaceInfo aInterfaceInfo); }; %{ C++ #define NS_WEBSERVICEPROXYFACTORY_CLASSID \ { /* 4E557E69-CCE0-47da-A7D3-2A7ED666F566 */ \ 0x4e557e69, 0xcce0, 0x47da, \ {0xa7, 0xd3, 0x2a, 0x7e, 0xd6, 0x66, 0xf5, 0x66}} #define NS_WEBSERVICEPROXYFACTORY_CONTRACTID "@mozilla.org/xmlextras/proxy/webserviceproxyfactory;1" #define NS_WEBSERVICEPROXY_CLASSID \ { /* 1220efd4-8018-45b0-bfc1-0c0716ee0bfb */ \ 0x1220efd4, 0x8018, 0x45b0, \ {0xbf, 0xc1, 0x0c, 0x07, 0x16, 0xee, 0x0b, 0xfb}} #define NS_WEBSERVICEPROXY_CONTRACTID "@mozilla.org/xmlextras/proxy/webserviceproxy;1" #define NS_WEBSERVICECOMPLEXTYPEWRAPPER_CLASSID \ { /* 615272eb-3908-4fcc-b8f6-94d5a146e2bc */ \ 0x615272eb, 0x3908, 0x4fcc, \ {0xb8, 0xf6, 0x94, 0xd5, 0xa1, 0x46, 0xe2, 0xbc}} #define NS_WEBSERVICECOMPLEXTYPEWRAPPER_CONTRACTID "@mozilla.org/xmlextras/proxy/webservicecomplextypewrapper;1" #define NS_WEBSERVICEPROPERTYBAGWRAPPER_CLASSID \ { /* 1c76aea3-0810-45b7-bce9-03abc209eb8c */ \ 0x1c76aea3, 0x0810, 0x45b7, \ {0xbc, 0xe9, 0x03, 0xab, 0xc2, 0x09, 0xeb, 0x8c}} #define NS_WEBSERVICEPROPERTYBAGWRAPPER_CONTRACTID "@mozilla.org/xmlextras/proxy/webservicepropertybagwrapper;1" %}