pjs/extensions/webservices/public/nsISOAPMessage.idl

232 строки
9.0 KiB
Plaintext

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Netscape 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/NPL/
*
* 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):
*
*
* 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 NPL, 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 NPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsISupports.idl"
interface nsIDOMDocument;
interface nsIDOMElement;
interface nsISOAPEncoding;
interface nsISOAPHeaderBlock;
interface nsISOAPParameter;
interface nsIVariant;
/**
* This interface controls all SOAP messages. It permits easy
* construction of a message, typically through encoding of
* parameters and certain properties settable on this interface
* or through deserialization of a transport stream. It
* permits easy processing of a message typically through
* decoding of parameters and certain properties available
* on this interface. It also encapsulates protocol information
* interpreted by the transport.
*/
[scriptable, uuid(3970815e-1dd2-11b2-a475-db4dac6826f1)]
interface nsISOAPMessage : nsISupports {
const unsigned short VERSION_1_1 = 0;
const unsigned short VERSION_1_2 = 1;
const unsigned short VERSION_UNKNOWN = 0xFFFF;
/**
* The document which captures the message, if any. A simple
* sending application passes parameters to the method
* encodeSOAPParameters, which calls SOAP encoders
* to construct this document along with all contained elements.
*
* But an application may create and set the message directly
* instead of invoking encodeSOAPParameters to use encoders
* or access and manipulate the message after it has been
* constructed by encodeSOAPParameters. If the message has
* not been set, invoking a call will fail. A message reciever
* may also use this accessor to get the document to avoid using
* decoders.
*/
attribute nsIDOMDocument message;
/**
* A convenience attribute to obtain the DOM element representing the
* SOAP envelope from the document. DOM methods may be used to
* access, add, or modify attributes of the envelope.
*
* If the message attribute is null or is not a document containing
* a root soap envelope element, then this will be null.
*/
readonly attribute nsIDOMElement envelope;
/**
* A convenience attribute to obtain the SOAP version number, if
* it is known, from the envelope.
*
* If the message attribute is null or is not a document containing
* a root soap envelope element, then this will be VERSION_UNKNOWN.
*/
readonly attribute unsigned short version;
/**
* A convenience attribute to obtain the DOM element representing the
* SOAP header from the envelope. DOM methods may be used to
* access, add, or modify attributes or elements of the header.
*
* If the envelope attribute is null or does not contain a SOAP header
* element type, then this will be null.
*/
readonly attribute nsIDOMElement header;
/**
* A convenience attribute to obtain the DOM element representing the
* SOAP body from the envelope. DOM methods may be used to
* access, add, or modify attributes or elements of the body.
*
* If the envelope attribute is null or does not contain a SOAP body
* element type, then this will be null.
*/
readonly attribute nsIDOMElement body;
/**
* The name of the method being invoked. The methodName is set
* during encoding as the tagname of the single child of body
* of RPC-style messages. When there is no encoded message
* this will be null. The value of this attribute for
* document-style messages may be non-null but should be
* ignored. It is up to the application to know whether the
* message is RPC-style or document style because the SOAP
* specification makes it difficult to tell which way a
* message was encoded.
*/
readonly attribute AString methodName;
/**
* The target object on which the method is being invoked. This URI
* is set during encoding as the namespace to qualify the tagname
* of the single child of body of RPC-style messages. When there
* is no encoded message, this will be null. The value of this
* attribute for document-style messages may be non-null but should
* be ignored. It is up to the application to know whether the
* message is RPC-style or document style because the SOAP
* specification makes it difficult to tell which way a
* message was encoded.
*/
readonly attribute AString targetObjectURI;
/**
* Encodes the specified parameters into this message, if
* this message type supports it.
*
* @param aMethodName The name of the method being invoked
* for rpc-style messages. For document-style messages,
* this must be null.
*
* @param aTargetObjectURI The name of the target object
* for rpc-style messages. For document-style messages,
* this must be null.
*
* @param aHeaderBlockCount Number of header blocks in array to be
* encoded. Must be 0 if header block array is null.
*
* @param aHeaderBlocks Array of header blocks to be encoded, which
* may be null if there are no header blocks.
*
* @param aParameterCount Number of parameters in array
* to be encoded. Must be 0 if parameter array is null.
*
* @param aParameters An array of parameters to be
* encoded, which may null if there are no parameters.
*/
void encode(in unsigned short aVersion,
in AString aMethodName, in AString aTargetObjectURI,
in unsigned long aHeaderBlockCount,
[array,
size_is(aHeaderBlockCount)] in nsISOAPHeaderBlock
aHeaderBlocks, in unsigned long aParameterCount,[array,
size_is
(aParameterCount)]
in nsISOAPParameter aParameters);
/**
* Gathers the header blocks of a message so that they can be
* accessed by a recipient.
*
* @param aCount Integer to receive the length of the list
* of header blocks.
*
* @return Array of header blocks found in the message.
*/
void getHeaderBlocks(out unsigned long aCount,
[array, size_is(aCount),
retval] out nsISOAPHeaderBlock aHeaderBlocks);
/**
* Gathers the parameters of a message so that they can be
* accessed by a recipient.
*
* @param aDocumentStyle If true, then the parameters
* are looked for treating the message as a document
* style message, otherwise it treated as an RPC-style
* message.
*
* @param aCount Integer to receive the length of the list
* of parameters.
*
* @return Array of parameters found in the message.
*/
void getParameters(in boolean aDocumentStyle,
out unsigned long aCount,
[array, size_is(aCount),
retval] out nsISOAPParameter aParameters);
/**
* The primary encoding of the message, which is established
* at the envelope and used unless overridden. By default,
* this is the SOAP encoding, which may be locally modified
* or used to obtain alternative encodings, which may be
* locally modified, but it may be set to an encoding that
* is shared, or it may be set to null, in which case all
* non-literal header blocks and parameters must specify an
* encoding.
*/
attribute nsISOAPEncoding encoding;
/**
* An optional URI that can be used to add a SOAPAction HTTP
* header field. If this attribute is NULL (the default case),
* no SOAPAction header will be added.
*/
attribute AString actionURI;
};