From 0945394e5048757e0cb8a455db452b06e846806e Mon Sep 17 00:00:00 2001 From: "rayw%netscape.com" Date: Thu, 22 Nov 2001 23:14:03 +0000 Subject: [PATCH] Eliminated need for encoding contractID, made all registered services available as styles in the default encoding, and fixed to create services. git-svn-id: svn://10.0.0.236/branches/SOAP_20010403_BRANCH@108824 18797224-902f-48f8-a5cc-f745e15eee43 --- .../webservices/public/nsISOAPEncoding.idl | 2 -- .../soap/src/nsDefaultSOAPEncoder.cpp | 2 +- .../webservices/soap/src/nsSOAPEncoding.cpp | 25 ++++++++----------- .../webservices/soap/src/nsSOAPEncoding.h | 2 +- .../webservices/soap/src/nsSOAPMessage.cpp | 4 +-- .../xmlextras/soap/public/nsISOAPEncoding.idl | 2 -- .../soap/src/nsDefaultSOAPEncoder.cpp | 2 +- .../xmlextras/soap/src/nsSOAPEncoding.cpp | 25 ++++++++----------- .../xmlextras/soap/src/nsSOAPEncoding.h | 2 +- .../xmlextras/soap/src/nsSOAPMessage.cpp | 4 +-- 10 files changed, 30 insertions(+), 40 deletions(-) diff --git a/mozilla/extensions/webservices/public/nsISOAPEncoding.idl b/mozilla/extensions/webservices/public/nsISOAPEncoding.idl index 10e3083e54f..9add26820f4 100644 --- a/mozilla/extensions/webservices/public/nsISOAPEncoding.idl +++ b/mozilla/extensions/webservices/public/nsISOAPEncoding.idl @@ -177,8 +177,6 @@ interface nsISOAPEncoding : nsISupports { { /* 06fb035c-1dd2-11b2-bc30-f6d8e314d6b9 */ \ 0x06fb035c, 0x1dd2, 0x11b2, \ {0xbc, 0x30, 0xf6, 0xd8, 0xe3, 0x14, 0xd6, 0xb9} } -#define NS_SOAPENCODING_CONTRACTID \ -"@mozilla.org/xmlextras/soap/encoding;1" #define NS_SOAPENCODING_CONTRACTID_PREFIX \ "@mozilla.org/xmlextras/soap/encoding;1?uri=" #define NS_DEFAULTSOAPENCODER_CONTRACTID \ diff --git a/mozilla/extensions/webservices/soap/src/nsDefaultSOAPEncoder.cpp b/mozilla/extensions/webservices/soap/src/nsDefaultSOAPEncoder.cpp index 1ea7cd767c2..a243f703c9c 100644 --- a/mozilla/extensions/webservices/soap/src/nsDefaultSOAPEncoder.cpp +++ b/mozilla/extensions/webservices/soap/src/nsDefaultSOAPEncoder.cpp @@ -152,7 +152,7 @@ DECLARE_ENCODER(UnsignedByte) SetDecoder(kSchemaDatatypesNamespaceURI, k##name##SchemaType, handler); \ } -nsDefaultSOAPEncoder::nsDefaultSOAPEncoder(): nsSOAPEncoding(nsSOAPUtils::kSOAPEncodingURI, nsnull) +nsDefaultSOAPEncoder::nsDefaultSOAPEncoder(): nsSOAPEncoding(nsSOAPUtils::kSOAPEncodingURI, nsnull, nsnull) { { nsDefaultEncoder *handler = new nsDefaultEncoder(); diff --git a/mozilla/extensions/webservices/soap/src/nsSOAPEncoding.cpp b/mozilla/extensions/webservices/soap/src/nsSOAPEncoding.cpp index d10b5e11b23..aac1a5f00ca 100644 --- a/mozilla/extensions/webservices/soap/src/nsSOAPEncoding.cpp +++ b/mozilla/extensions/webservices/soap/src/nsSOAPEncoding.cpp @@ -63,8 +63,13 @@ nsresult nsSOAPEncodingRegistry::GetStyle(const nsAString& aStyleURI, PRBool aCr *aEncoding = (nsISOAPEncoding*)mEncodings->Get(&styleKey); if (!*aEncoding) { - if (aCreateIf) { - *aEncoding = new nsSOAPEncoding(aStyleURI, this); + nsCOMPtr defaultEncoding; + nsCAutoString encodingContractid; + encodingContractid.Assign(NS_SOAPENCODING_CONTRACTID_PREFIX); + encodingContractid.Append(NS_ConvertUCS2toUTF8(aStyleURI)); + defaultEncoding = do_GetService(encodingContractid.get()); + if (defaultEncoding || aCreateIf) { + *aEncoding = new nsSOAPEncoding(aStyleURI, this, defaultEncoding); mEncodings->Put(&styleKey, *aEncoding); } } @@ -165,14 +170,11 @@ nsSOAPEncoding::nsSOAPEncoding(): mEncoders(new nsSupportsHashtable), /* member initializers and constructor code */ mStyleURI.Assign(nsSOAPUtils::kSOAPEncodingURI); - nsCAutoString encodingContractid; - encodingContractid.Assign(NS_SOAPENCODING_CONTRACTID_PREFIX); - encodingContractid.Append(NS_ConvertUCS2toUTF8(mStyleURI)); - mDefaultEncoding = do_CreateInstance(encodingContractid.get()); + mDefaultEncoding = do_GetService(NS_DEFAULTSOAPENCODER_CONTRACTID); mRegistry = new nsSOAPEncodingRegistry(this); } -nsSOAPEncoding::nsSOAPEncoding(const nsAString& aStyleURI, nsSOAPEncodingRegistry* aRegistry) +nsSOAPEncoding::nsSOAPEncoding(const nsAString& aStyleURI, nsSOAPEncodingRegistry* aRegistry, nsISOAPEncoding* aDefaultEncoding) : mEncoders(new nsSupportsHashtable), mDecoders(new nsSupportsHashtable) { NS_INIT_ISUPPORTS(); @@ -180,13 +182,8 @@ nsSOAPEncoding::nsSOAPEncoding(const nsAString& aStyleURI, nsSOAPEncodingRegistr /* member initializers and constructor code */ mStyleURI.Assign(aStyleURI); - if (aRegistry) { - nsCAutoString encodingContractid; - encodingContractid.Assign(NS_SOAPENCODING_CONTRACTID_PREFIX); - encodingContractid.Append(NS_ConvertUCS2toUTF8(mStyleURI)); - mDefaultEncoding = do_CreateInstance(encodingContractid.get()); - mRegistry = aRegistry; - } + mRegistry = aRegistry; + mDefaultEncoding = aDefaultEncoding; } nsSOAPEncoding::~nsSOAPEncoding() diff --git a/mozilla/extensions/webservices/soap/src/nsSOAPEncoding.h b/mozilla/extensions/webservices/soap/src/nsSOAPEncoding.h index 6ecdbee5733..1a5eb50dc4b 100644 --- a/mozilla/extensions/webservices/soap/src/nsSOAPEncoding.h +++ b/mozilla/extensions/webservices/soap/src/nsSOAPEncoding.h @@ -61,7 +61,7 @@ public: NS_DECL_NSISECURITYCHECKEDCOMPONENT nsSOAPEncoding(); - nsSOAPEncoding(const nsAString& aStyleURI, nsSOAPEncodingRegistry * aRegistry); + nsSOAPEncoding(const nsAString& aStyleURI, nsSOAPEncodingRegistry * aRegistry, nsISOAPEncoding* aDefaultEncoding); virtual ~nsSOAPEncoding(); /* additional members */ diff --git a/mozilla/extensions/webservices/soap/src/nsSOAPMessage.cpp b/mozilla/extensions/webservices/soap/src/nsSOAPMessage.cpp index d7b9f1c810f..2bed53c6777 100644 --- a/mozilla/extensions/webservices/soap/src/nsSOAPMessage.cpp +++ b/mozilla/extensions/webservices/soap/src/nsSOAPMessage.cpp @@ -27,7 +27,7 @@ #include "nsSOAPMessage.h" #include "nsSOAPParameter.h" #include "nsSOAPHeaderBlock.h" -#include "nsISOAPEncoding.h" +#include "nsSOAPEncoding.h" #include "nsIDOMDocument.h" #include "nsIDOMParser.h" #include "nsIDOMElement.h" @@ -419,7 +419,7 @@ NS_IMETHODIMP nsSOAPMessage::GetEncoding(nsISOAPEncoding* * aEncoding) NS_ENSURE_ARG_POINTER(aEncoding); if (!mEncoding) { nsresult rv; - mEncoding = do_CreateInstance(NS_SOAPENCODING_CONTRACTID, &rv); + mEncoding = new nsSOAPEncoding(); if (NS_FAILED(rv)) return rv; } diff --git a/mozilla/extensions/xmlextras/soap/public/nsISOAPEncoding.idl b/mozilla/extensions/xmlextras/soap/public/nsISOAPEncoding.idl index 10e3083e54f..9add26820f4 100644 --- a/mozilla/extensions/xmlextras/soap/public/nsISOAPEncoding.idl +++ b/mozilla/extensions/xmlextras/soap/public/nsISOAPEncoding.idl @@ -177,8 +177,6 @@ interface nsISOAPEncoding : nsISupports { { /* 06fb035c-1dd2-11b2-bc30-f6d8e314d6b9 */ \ 0x06fb035c, 0x1dd2, 0x11b2, \ {0xbc, 0x30, 0xf6, 0xd8, 0xe3, 0x14, 0xd6, 0xb9} } -#define NS_SOAPENCODING_CONTRACTID \ -"@mozilla.org/xmlextras/soap/encoding;1" #define NS_SOAPENCODING_CONTRACTID_PREFIX \ "@mozilla.org/xmlextras/soap/encoding;1?uri=" #define NS_DEFAULTSOAPENCODER_CONTRACTID \ diff --git a/mozilla/extensions/xmlextras/soap/src/nsDefaultSOAPEncoder.cpp b/mozilla/extensions/xmlextras/soap/src/nsDefaultSOAPEncoder.cpp index 1ea7cd767c2..a243f703c9c 100644 --- a/mozilla/extensions/xmlextras/soap/src/nsDefaultSOAPEncoder.cpp +++ b/mozilla/extensions/xmlextras/soap/src/nsDefaultSOAPEncoder.cpp @@ -152,7 +152,7 @@ DECLARE_ENCODER(UnsignedByte) SetDecoder(kSchemaDatatypesNamespaceURI, k##name##SchemaType, handler); \ } -nsDefaultSOAPEncoder::nsDefaultSOAPEncoder(): nsSOAPEncoding(nsSOAPUtils::kSOAPEncodingURI, nsnull) +nsDefaultSOAPEncoder::nsDefaultSOAPEncoder(): nsSOAPEncoding(nsSOAPUtils::kSOAPEncodingURI, nsnull, nsnull) { { nsDefaultEncoder *handler = new nsDefaultEncoder(); diff --git a/mozilla/extensions/xmlextras/soap/src/nsSOAPEncoding.cpp b/mozilla/extensions/xmlextras/soap/src/nsSOAPEncoding.cpp index d10b5e11b23..aac1a5f00ca 100644 --- a/mozilla/extensions/xmlextras/soap/src/nsSOAPEncoding.cpp +++ b/mozilla/extensions/xmlextras/soap/src/nsSOAPEncoding.cpp @@ -63,8 +63,13 @@ nsresult nsSOAPEncodingRegistry::GetStyle(const nsAString& aStyleURI, PRBool aCr *aEncoding = (nsISOAPEncoding*)mEncodings->Get(&styleKey); if (!*aEncoding) { - if (aCreateIf) { - *aEncoding = new nsSOAPEncoding(aStyleURI, this); + nsCOMPtr defaultEncoding; + nsCAutoString encodingContractid; + encodingContractid.Assign(NS_SOAPENCODING_CONTRACTID_PREFIX); + encodingContractid.Append(NS_ConvertUCS2toUTF8(aStyleURI)); + defaultEncoding = do_GetService(encodingContractid.get()); + if (defaultEncoding || aCreateIf) { + *aEncoding = new nsSOAPEncoding(aStyleURI, this, defaultEncoding); mEncodings->Put(&styleKey, *aEncoding); } } @@ -165,14 +170,11 @@ nsSOAPEncoding::nsSOAPEncoding(): mEncoders(new nsSupportsHashtable), /* member initializers and constructor code */ mStyleURI.Assign(nsSOAPUtils::kSOAPEncodingURI); - nsCAutoString encodingContractid; - encodingContractid.Assign(NS_SOAPENCODING_CONTRACTID_PREFIX); - encodingContractid.Append(NS_ConvertUCS2toUTF8(mStyleURI)); - mDefaultEncoding = do_CreateInstance(encodingContractid.get()); + mDefaultEncoding = do_GetService(NS_DEFAULTSOAPENCODER_CONTRACTID); mRegistry = new nsSOAPEncodingRegistry(this); } -nsSOAPEncoding::nsSOAPEncoding(const nsAString& aStyleURI, nsSOAPEncodingRegistry* aRegistry) +nsSOAPEncoding::nsSOAPEncoding(const nsAString& aStyleURI, nsSOAPEncodingRegistry* aRegistry, nsISOAPEncoding* aDefaultEncoding) : mEncoders(new nsSupportsHashtable), mDecoders(new nsSupportsHashtable) { NS_INIT_ISUPPORTS(); @@ -180,13 +182,8 @@ nsSOAPEncoding::nsSOAPEncoding(const nsAString& aStyleURI, nsSOAPEncodingRegistr /* member initializers and constructor code */ mStyleURI.Assign(aStyleURI); - if (aRegistry) { - nsCAutoString encodingContractid; - encodingContractid.Assign(NS_SOAPENCODING_CONTRACTID_PREFIX); - encodingContractid.Append(NS_ConvertUCS2toUTF8(mStyleURI)); - mDefaultEncoding = do_CreateInstance(encodingContractid.get()); - mRegistry = aRegistry; - } + mRegistry = aRegistry; + mDefaultEncoding = aDefaultEncoding; } nsSOAPEncoding::~nsSOAPEncoding() diff --git a/mozilla/extensions/xmlextras/soap/src/nsSOAPEncoding.h b/mozilla/extensions/xmlextras/soap/src/nsSOAPEncoding.h index 6ecdbee5733..1a5eb50dc4b 100644 --- a/mozilla/extensions/xmlextras/soap/src/nsSOAPEncoding.h +++ b/mozilla/extensions/xmlextras/soap/src/nsSOAPEncoding.h @@ -61,7 +61,7 @@ public: NS_DECL_NSISECURITYCHECKEDCOMPONENT nsSOAPEncoding(); - nsSOAPEncoding(const nsAString& aStyleURI, nsSOAPEncodingRegistry * aRegistry); + nsSOAPEncoding(const nsAString& aStyleURI, nsSOAPEncodingRegistry * aRegistry, nsISOAPEncoding* aDefaultEncoding); virtual ~nsSOAPEncoding(); /* additional members */ diff --git a/mozilla/extensions/xmlextras/soap/src/nsSOAPMessage.cpp b/mozilla/extensions/xmlextras/soap/src/nsSOAPMessage.cpp index d7b9f1c810f..2bed53c6777 100644 --- a/mozilla/extensions/xmlextras/soap/src/nsSOAPMessage.cpp +++ b/mozilla/extensions/xmlextras/soap/src/nsSOAPMessage.cpp @@ -27,7 +27,7 @@ #include "nsSOAPMessage.h" #include "nsSOAPParameter.h" #include "nsSOAPHeaderBlock.h" -#include "nsISOAPEncoding.h" +#include "nsSOAPEncoding.h" #include "nsIDOMDocument.h" #include "nsIDOMParser.h" #include "nsIDOMElement.h" @@ -419,7 +419,7 @@ NS_IMETHODIMP nsSOAPMessage::GetEncoding(nsISOAPEncoding* * aEncoding) NS_ENSURE_ARG_POINTER(aEncoding); if (!mEncoding) { nsresult rv; - mEncoding = do_CreateInstance(NS_SOAPENCODING_CONTRACTID, &rv); + mEncoding = new nsSOAPEncoding(); if (NS_FAILED(rv)) return rv; }