From af528987ef52fca5ceaa2b4be24dbef3303e7252 Mon Sep 17 00:00:00 2001 From: "harishd%netscape.com" Date: Fri, 18 Apr 2003 00:11:34 +0000 Subject: [PATCH] Fabricate a unique name for anonymous schema types. b=199555, r=rayw@netscape.com, sr=jst@netscape.com git-svn-id: svn://10.0.0.236/trunk@141347 18797224-902f-48f8-a5cc-f745e15eee43 --- .../webservices/proxy/src/wspinfoservice.cpp | 21 +++++++++++++++---- .../soap/src/nsDefaultSOAPEncoder.cpp | 4 +++- .../xmlextras/proxy/src/wspinfoservice.cpp | 21 +++++++++++++++---- .../soap/src/nsDefaultSOAPEncoder.cpp | 4 +++- 4 files changed, 40 insertions(+), 10 deletions(-) diff --git a/mozilla/extensions/webservices/proxy/src/wspinfoservice.cpp b/mozilla/extensions/webservices/proxy/src/wspinfoservice.cpp index 3b2b5ae59f4..529f39c1ee2 100644 --- a/mozilla/extensions/webservices/proxy/src/wspinfoservice.cpp +++ b/mozilla/extensions/webservices/proxy/src/wspinfoservice.cpp @@ -443,15 +443,27 @@ FindOrConstructInterface(nsIInterfaceInfoSuperManager* iism, nsAutoString ns; nsCOMPtr newInfo; nsID tempID; + PRBool haveUniqueID = PR_FALSE; rv = aComplexType->GetName(name); if (NS_FAILED(rv)) { return rv; } - rv = aComplexType->GetTargetNamespace(ns); - if (NS_FAILED(rv)) { - return rv; + if (name.IsEmpty()) { + // Fabricate a unique name for anonymous type. + // Bug 199555 + ::NewUniqueID(&tempID); + nsXPIDLCString idStr; + idStr += tempID.ToString(); + name.AssignWithConversion(idStr); + haveUniqueID = PR_TRUE; + } + else { + rv = aComplexType->GetTargetNamespace(ns); + if (NS_FAILED(rv)) { + return rv; + } } BuildInterfaceName(qualifier, name, ns, qualifiedName); @@ -465,7 +477,8 @@ FindOrConstructInterface(nsIInterfaceInfoSuperManager* iism, // Need to create the interface. - ::NewUniqueID(&tempID); + if (!haveUniqueID) + ::NewUniqueID(&tempID); rv = aSet->CreateAndAppendInterface(qualifiedName.get(), tempID, iidx.Get(IIDX::IDX_nsISupports), XPT_ID_SCRIPTABLE, diff --git a/mozilla/extensions/webservices/soap/src/nsDefaultSOAPEncoder.cpp b/mozilla/extensions/webservices/soap/src/nsDefaultSOAPEncoder.cpp index e1348ee8e4e..34f5dfd0e3a 100644 --- a/mozilla/extensions/webservices/soap/src/nsDefaultSOAPEncoder.cpp +++ b/mozilla/extensions/webservices/soap/src/nsDefaultSOAPEncoder.cpp @@ -492,7 +492,9 @@ EncodeSimpleValue(nsISOAPEncoding * aEncoding, rc = aSchemaType->GetTargetNamespace(typeNS); if (NS_FAILED(rc)) return rc; - needType = !(typeName.Equals(kAnyTypeSchemaType) && typeNS.Equals(nsSOAPUtils::kXSURI)); + needType = (!typeName.IsEmpty() && + !(typeName.Equals(kAnyTypeSchemaType) && + typeNS.Equals(nsSOAPUtils::kXSURI))); } nsAutoString name; // First choose the appropriate name and namespace for the element. nsAutoString ns; diff --git a/mozilla/extensions/xmlextras/proxy/src/wspinfoservice.cpp b/mozilla/extensions/xmlextras/proxy/src/wspinfoservice.cpp index 3b2b5ae59f4..529f39c1ee2 100644 --- a/mozilla/extensions/xmlextras/proxy/src/wspinfoservice.cpp +++ b/mozilla/extensions/xmlextras/proxy/src/wspinfoservice.cpp @@ -443,15 +443,27 @@ FindOrConstructInterface(nsIInterfaceInfoSuperManager* iism, nsAutoString ns; nsCOMPtr newInfo; nsID tempID; + PRBool haveUniqueID = PR_FALSE; rv = aComplexType->GetName(name); if (NS_FAILED(rv)) { return rv; } - rv = aComplexType->GetTargetNamespace(ns); - if (NS_FAILED(rv)) { - return rv; + if (name.IsEmpty()) { + // Fabricate a unique name for anonymous type. + // Bug 199555 + ::NewUniqueID(&tempID); + nsXPIDLCString idStr; + idStr += tempID.ToString(); + name.AssignWithConversion(idStr); + haveUniqueID = PR_TRUE; + } + else { + rv = aComplexType->GetTargetNamespace(ns); + if (NS_FAILED(rv)) { + return rv; + } } BuildInterfaceName(qualifier, name, ns, qualifiedName); @@ -465,7 +477,8 @@ FindOrConstructInterface(nsIInterfaceInfoSuperManager* iism, // Need to create the interface. - ::NewUniqueID(&tempID); + if (!haveUniqueID) + ::NewUniqueID(&tempID); rv = aSet->CreateAndAppendInterface(qualifiedName.get(), tempID, iidx.Get(IIDX::IDX_nsISupports), XPT_ID_SCRIPTABLE, diff --git a/mozilla/extensions/xmlextras/soap/src/nsDefaultSOAPEncoder.cpp b/mozilla/extensions/xmlextras/soap/src/nsDefaultSOAPEncoder.cpp index e1348ee8e4e..34f5dfd0e3a 100644 --- a/mozilla/extensions/xmlextras/soap/src/nsDefaultSOAPEncoder.cpp +++ b/mozilla/extensions/xmlextras/soap/src/nsDefaultSOAPEncoder.cpp @@ -492,7 +492,9 @@ EncodeSimpleValue(nsISOAPEncoding * aEncoding, rc = aSchemaType->GetTargetNamespace(typeNS); if (NS_FAILED(rc)) return rc; - needType = !(typeName.Equals(kAnyTypeSchemaType) && typeNS.Equals(nsSOAPUtils::kXSURI)); + needType = (!typeName.IsEmpty() && + !(typeName.Equals(kAnyTypeSchemaType) && + typeNS.Equals(nsSOAPUtils::kXSURI))); } nsAutoString name; // First choose the appropriate name and namespace for the element. nsAutoString ns;