bug 203836 - changes impl of addref/release for default sopa encoeding so they don't inherit the model for gnereal encodings, also changes some class names
r=rayw sr=jst a=asa
This commit is contained in:
Родитель
9e015ce8ad
Коммит
f524307e9a
|
@ -59,7 +59,7 @@
|
|||
#include "nsWebScriptsAccess.h"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// Define the contructor function for the objects
|
||||
// Define the constructor function for the objects
|
||||
//
|
||||
// NOTE: This creates an instance of objects by using the default constructor
|
||||
//
|
||||
|
@ -73,8 +73,8 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsSOAPEncoding)
|
|||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSOAPFault)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSOAPHeaderBlock)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSOAPParameter)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsDefaultSOAPEncoder_1_1)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsDefaultSOAPEncoder_1_2)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsDefaultSOAPEncoding_1_1)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsDefaultSOAPEncoding_1_2)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsHTTPSOAPTransport)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsHTTPSSOAPTransport)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSOAPPropertyBagMutator)
|
||||
|
@ -276,12 +276,12 @@ static const nsModuleComponentInfo gComponents[] = {
|
|||
NS_CI_INTERFACE_GETTER_NAME(nsSOAPParameter),
|
||||
nsnull, &NS_CLASSINFO_NAME(nsSOAPParameter),
|
||||
nsIClassInfo::DOM_OBJECT },
|
||||
{ "Default SOAP 1.1 Encoder", NS_DEFAULTSOAPENCODER_1_1_CID,
|
||||
NS_DEFAULTSOAPENCODER_1_1_CONTRACTID,
|
||||
nsDefaultSOAPEncoder_1_1Constructor },
|
||||
{ "Default SOAP 1.2 Encoder", NS_DEFAULTSOAPENCODER_1_2_CID,
|
||||
NS_DEFAULTSOAPENCODER_1_2_CONTRACTID,
|
||||
nsDefaultSOAPEncoder_1_2Constructor },
|
||||
{ "Default SOAP 1.1 Encoding", NS_DEFAULTSOAPENCODING_1_1_CID,
|
||||
NS_DEFAULTSOAPENCODING_1_1_CONTRACTID,
|
||||
nsDefaultSOAPEncoding_1_1Constructor },
|
||||
{ "Default SOAP 1.2 Encoding", NS_DEFAULTSOAPENCODING_1_2_CID,
|
||||
NS_DEFAULTSOAPENCODING_1_2_CONTRACTID,
|
||||
nsDefaultSOAPEncoding_1_2Constructor },
|
||||
{ "HTTP SOAP Transport", NS_HTTPSOAPTRANSPORT_CID,
|
||||
NS_HTTPSOAPTRANSPORT_CONTRACTID,
|
||||
nsHTTPSOAPTransportConstructor, nsnull, nsnull, nsnull,
|
||||
|
|
|
@ -297,16 +297,16 @@ interface nsISOAPEncoding : nsISupports {
|
|||
"@mozilla.org/xmlextras/soap/encoding;1"
|
||||
#define NS_SOAPENCODING_CONTRACTID_PREFIX \
|
||||
NS_SOAPENCODING_CONTRACTID "?uri="
|
||||
#define NS_DEFAULTSOAPENCODER_1_1_CID \
|
||||
#define NS_DEFAULTSOAPENCODING_1_1_CID \
|
||||
{ /* 06fb035c-1dd2-11b2-bc30-f6d8e314d6b9 */ \
|
||||
0x06fb035c, 0x1dd2, 0x11b2, \
|
||||
{0xbc, 0x30, 0xf6, 0xd8, 0xe3, 0x14, 0xd6, 0xb9} }
|
||||
#define NS_DEFAULTSOAPENCODER_1_1_CONTRACTID \
|
||||
#define NS_DEFAULTSOAPENCODING_1_1_CONTRACTID \
|
||||
NS_SOAPENCODING_CONTRACTID_PREFIX "http://schemas.xmlsoap.org/soap/encoding/"
|
||||
#define NS_DEFAULTSOAPENCODER_1_2_CID \
|
||||
#define NS_DEFAULTSOAPENCODING_1_2_CID \
|
||||
{ /* e0ee4044-1dd1-11b2-9d7e-8899d4d89648 */ \
|
||||
0xe0ee4044, 0x1dd1, 0x11b2, \
|
||||
{0x9d, 0x7e, 0x88, 0x99, 0xd4, 0xd8, 0x96, 0x48} }
|
||||
#define NS_DEFAULTSOAPENCODER_1_2_CONTRACTID \
|
||||
#define NS_DEFAULTSOAPENCODING_1_2_CONTRACTID \
|
||||
NS_SOAPENCODING_CONTRACTID_PREFIX "http://www.w3.org/2001/09/soap-encoding"
|
||||
%}
|
||||
|
|
|
@ -128,6 +128,12 @@ static NS_NAMED_LITERAL_STRING(kNonNegativeIntegerSchemaType,
|
|||
"nonNegativeInteger");
|
||||
static NS_NAMED_LITERAL_STRING(kPositiveIntegerSchemaType, "positiveInteger");
|
||||
|
||||
#define MAX_ARRAY_DIMENSIONS 100
|
||||
|
||||
//
|
||||
// Macros to declare and implement the default encoder classes
|
||||
//
|
||||
|
||||
#define DECLARE_ENCODER(name) \
|
||||
class ns##name##Encoder : \
|
||||
public nsISOAPEncoder, \
|
||||
|
@ -178,6 +184,7 @@ ns##name##Encoder::~ns##name##Encoder() {}
|
|||
SetEncoder(encodingKey, handler); \
|
||||
SetDecoder(encodingKey, handler); \
|
||||
}
|
||||
|
||||
#define REGISTER_SCHEMA_ENCODER(name) REGISTER_ENCODER(name,Schema,nsSOAPUtils::kXSURI)
|
||||
#define REGISTER_SOAP_ENCODER(name) REGISTER_ENCODER(name,SOAP,nsSOAPUtils::kSOAPEncURI)
|
||||
|
||||
|
@ -202,11 +209,17 @@ ns##name##Encoder::~ns##name##Encoder() {}
|
|||
REGISTER_SCHEMA_ENCODER(UnsignedLong)\
|
||||
REGISTER_SCHEMA_ENCODER(UnsignedInt)\
|
||||
REGISTER_SCHEMA_ENCODER(UnsignedShort)\
|
||||
REGISTER_SCHEMA_ENCODER(UnsignedByte)\
|
||||
REGISTER_SCHEMA_ENCODER(UnsignedByte)
|
||||
|
||||
nsDefaultSOAPEncoder_1_1::nsDefaultSOAPEncoder_1_1() : nsSOAPEncoding(nsSOAPUtils::kSOAPEncURI11,
|
||||
nsnull,
|
||||
nsnull)
|
||||
//
|
||||
// Default SOAP Encodings
|
||||
//
|
||||
|
||||
NS_IMPL_ADDREF(nsDefaultSOAPEncoding_1_1)
|
||||
NS_IMPL_RELEASE(nsDefaultSOAPEncoding_1_1)
|
||||
|
||||
nsDefaultSOAPEncoding_1_1::nsDefaultSOAPEncoding_1_1()
|
||||
: nsSOAPEncoding(nsSOAPUtils::kSOAPEncURI11, nsnull, nsnull)
|
||||
{
|
||||
PRUint16 version = nsISOAPMessage::VERSION_1_1;
|
||||
PRBool result;
|
||||
|
@ -216,9 +229,11 @@ nsDefaultSOAPEncoder_1_1::nsDefaultSOAPEncoder_1_1() : nsSOAPEncoding(nsSOAPUtil
|
|||
REGISTER_ENCODERS
|
||||
}
|
||||
|
||||
nsDefaultSOAPEncoder_1_2::nsDefaultSOAPEncoder_1_2() : nsSOAPEncoding(nsSOAPUtils::kSOAPEncURI,
|
||||
nsnull,
|
||||
nsnull)
|
||||
NS_IMPL_ADDREF(nsDefaultSOAPEncoding_1_2)
|
||||
NS_IMPL_RELEASE(nsDefaultSOAPEncoding_1_2)
|
||||
|
||||
nsDefaultSOAPEncoding_1_2::nsDefaultSOAPEncoding_1_2()
|
||||
: nsSOAPEncoding(nsSOAPUtils::kSOAPEncURI, nsnull, nsnull)
|
||||
{
|
||||
PRUint16 version = nsISOAPMessage::VERSION_1_2;
|
||||
PRBool result;
|
||||
|
@ -228,7 +243,9 @@ nsDefaultSOAPEncoder_1_2::nsDefaultSOAPEncoder_1_2() : nsSOAPEncoding(nsSOAPUtil
|
|||
REGISTER_ENCODERS
|
||||
}
|
||||
|
||||
// Here is the implementation of the encoders.
|
||||
//
|
||||
// Default Encoders -- static helper functions intermixed
|
||||
//
|
||||
|
||||
// Getting the immediate supertype of any type
|
||||
static nsresult GetSupertype(nsISOAPEncoding * aEncoding, nsISchemaType* aType, nsISchemaType** _retval)
|
||||
|
@ -1036,17 +1053,23 @@ NS_IMETHODIMP
|
|||
return rc;
|
||||
// We still have to fake this one, because there is no any simple type in schema.
|
||||
if (aName.IsEmpty() && !aSchemaType) {
|
||||
return EncodeSimpleValue(aEncoding, value,
|
||||
nsSOAPUtils::kSOAPEncURI, kAnySimpleTypeSchemaType, aSchemaType, aDestination,
|
||||
return EncodeSimpleValue(aEncoding,
|
||||
value,
|
||||
nsSOAPUtils::kSOAPEncURI,
|
||||
kAnySimpleTypeSchemaType,
|
||||
aSchemaType,
|
||||
aDestination,
|
||||
aReturnValue);
|
||||
}
|
||||
return EncodeSimpleValue(aEncoding, value,
|
||||
aNamespaceURI, aName, aSchemaType, aDestination,
|
||||
return EncodeSimpleValue(aEncoding,
|
||||
value,
|
||||
aNamespaceURI,
|
||||
aName,
|
||||
aSchemaType,
|
||||
aDestination,
|
||||
aReturnValue);
|
||||
}
|
||||
|
||||
#define MAX_ARRAY_DIMENSIONS 100
|
||||
|
||||
/**
|
||||
* Recursive method used by array encoding which counts the sizes of the specified dimensions
|
||||
* and does a very primitive determination whether all the members of the array are of a single
|
||||
|
|
|
@ -36,19 +36,29 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifndef nsDefaultSOAPEncoder_h__
|
||||
#define nsDefaultSOAPEncoder_h__
|
||||
#ifndef nsDefaultSOAPEncoding_h__
|
||||
#define nsDefaultSOAPEncoding_h__
|
||||
|
||||
#include "nsSOAPEncoding.h"
|
||||
|
||||
class nsDefaultSOAPEncoder_1_1:public nsSOAPEncoding {
|
||||
class nsDefaultSOAPEncoding_1_1:public nsSOAPEncoding {
|
||||
public:
|
||||
nsDefaultSOAPEncoder_1_1();
|
||||
|
||||
NS_IMETHOD_(nsrefcnt) AddRef(void);
|
||||
NS_IMETHOD_(nsrefcnt) Release(void);
|
||||
|
||||
nsDefaultSOAPEncoding_1_1();
|
||||
virtual ~nsDefaultSOAPEncoding_1_1() {}
|
||||
};
|
||||
|
||||
class nsDefaultSOAPEncoder_1_2:public nsSOAPEncoding {
|
||||
class nsDefaultSOAPEncoding_1_2:public nsSOAPEncoding {
|
||||
public:
|
||||
nsDefaultSOAPEncoder_1_2();
|
||||
|
||||
NS_IMETHOD_(nsrefcnt) AddRef(void);
|
||||
NS_IMETHOD_(nsrefcnt) Release(void);
|
||||
|
||||
nsDefaultSOAPEncoding_1_2();
|
||||
virtual ~nsDefaultSOAPEncoding_1_2() {}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
static PRBool PR_CALLBACK
|
||||
DeleteEncodingEntry(nsHashKey *aKey, void *aData, void *aClosure)
|
||||
{
|
||||
NS_DELETEXPCOM(aData);
|
||||
NS_DELETEXPCOM((nsISOAPEncoding*)aData);
|
||||
return PR_TRUE;
|
||||
}
|
||||
|
||||
|
@ -73,7 +73,7 @@ nsSOAPEncodingRegistry::nsSOAPEncodingRegistry(nsISOAPEncoding *aEncoding)
|
|||
: mEncodings(nsnull, nsnull, DeleteEncodingEntry, nsnull, 4)
|
||||
{
|
||||
nsAutoString style;
|
||||
nsresult rc = aEncoding->GetStyleURI(style);
|
||||
aEncoding->GetStyleURI(style);
|
||||
NS_ASSERTION(!style.IsEmpty(), "nsSOAPEncoding Regsitry constructed without style");
|
||||
|
||||
nsStringKey styleKey(style);
|
||||
|
@ -177,7 +177,7 @@ nsSOAPEncoding::nsSOAPEncoding() : mEncoders(),
|
|||
{
|
||||
mStyleURI.Assign(nsSOAPUtils::kSOAPEncURI11);
|
||||
mRegistry = new nsSOAPEncodingRegistry(this);
|
||||
mDefaultEncoding = do_GetService(NS_DEFAULTSOAPENCODER_1_1_CONTRACTID);
|
||||
mDefaultEncoding = do_GetService(NS_DEFAULTSOAPENCODING_1_1_CONTRACTID);
|
||||
}
|
||||
|
||||
nsSOAPEncoding::nsSOAPEncoding(const nsAString & aStyleURI,
|
||||
|
|
|
@ -36,8 +36,8 @@
|
|||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifndef nsSOAPEncodingRegistry_h__
|
||||
#define nsSOAPEncodingRegistry_h__
|
||||
#ifndef nsSOAPEncoding_h__
|
||||
#define nsSOAPEncoding_h__
|
||||
|
||||
#include "nsString.h"
|
||||
#include "nsIDOMElement.h"
|
||||
|
@ -47,7 +47,6 @@
|
|||
#include "nsCOMPtr.h"
|
||||
#include "nsHashtable.h"
|
||||
#include "nsISchema.h"
|
||||
#include "nsWeakReference.h"
|
||||
|
||||
// Notes regarding the ownership model between the nsSOAPEncoding (encoding)
|
||||
// and the nsSOAPEncodingRegsitry (registry). To avoid cyclic referencing
|
||||
|
|
|
@ -43,7 +43,6 @@
|
|||
#include "nsSOAPMessage.h"
|
||||
#include "nsSOAPParameter.h"
|
||||
#include "nsSOAPHeaderBlock.h"
|
||||
#include "nsSOAPEncoding.h"
|
||||
#include "nsSOAPException.h"
|
||||
#include "nsIDOMDocument.h"
|
||||
#include "nsIDOMAttr.h"
|
||||
|
|
Загрузка…
Ссылка в новой задаче