/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/*
 * 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.
 *
 * The Initial Developer of the Original Code is Netscape
 * Communications.  Portions created by Netscape Communications are
 * Copyright (C) 2001 by Netscape Communications.  All
 * Rights Reserved.
 *
 * Contributor(s):
 *   Vidur Apparao <vidur@netscape.com> (original author)
 */

#include "nsISupports.idl"

%{ C++
#include "nsAString.h"
%}

interface nsIWSDLPort;
interface nsIWSDLLoadListener;

// Does this need to be scriptable, and exposed to scripters? We think
// not...
[scriptable, uuid(0458dac5-65de-11d5-9b42-00104bdf5339)]
interface nsIWSDLLoader : nsISupports
{
  nsIWSDLPort load(in AString wsdlURI, in AString portName);
  void loadAsync(in AString wsdlURI, in AString portName,
                 in nsIWSDLLoadListener listener);
};

[scriptable, uuid(0458dac6-65de-11d5-9b42-00104bdf5339)]
interface nsIWSDLLoadListener : nsISupports
{
  void onLoad(in nsIWSDLPort port);
  void onError(in nsresult status, in AString statusMessage);
};

%{ C++
#define NS_WSDLLOADER_CID                             \
{ /* 0a5af577-a61e-4492-ba0e-dd3c7b657e18 */          \
 0x0a5af577, 0xa61e, 0x4492,                          \
 {0xba, 0x0e, 0xdd, 0x3c, 0x7b, 0x65, 0x7e, 0x18}}

#define NS_WSDLLOADER_CONTRACTID "@mozilla.org/xmlextras/wsdl/wsdlloader;1"

#define NS_ERROR_WSDL_NOT_WSDL_ELEMENT          NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_GENERAL, 1)
#define NS_ERROR_WSDL_SCHEMA_PROCESSING_ERROR   NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_GENERAL, 2)
#define NS_ERROR_WSDL_BINDING_NOT_FOUND         NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_GENERAL, 3)
#define NS_ERROR_WSDL_UNKNOWN_SCHEMA_COMPONENT  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_GENERAL, 4)
#define NS_ERROR_WSDL_UNKNOWN_WSDL_COMPONENT    NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_GENERAL, 5)
#define NS_ERROR_WSDL_LOADING_ERROR             NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_GENERAL, 6)
#define NS_ERROR_WSDL_RECURSIVE_IMPORT          NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_GENERAL, 7)
#define NS_ERROR_WSDL_NOT_ENABLED               NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_GENERAL, 8)
%}
