Added this logic to avoid KeyError fault during Exception deserialization when

SoapAdapter is used at client side. This would happen when prefix doesn't exist
in nsMap.
This commit is contained in:
Tianhao He
2015-11-09 13:03:09 -08:00
parent 863168c0c4
commit b478073d11

View File

@@ -505,12 +505,7 @@ class ExpatDeserializerNSHandlers:
## Get current default ns ## Get current default ns
def GetCurrDefNS(self): def GetCurrDefNS(self):
namespaces = self.nsMap.get(None) return self._GetNamespaceFromPrefix()
if namespaces:
ns = namespaces[-1]
else:
ns = ""
return ns
## Get namespace and wsdl name from tag ## Get namespace and wsdl name from tag
def GetNSAndWsdlname(self, tag): def GetNSAndWsdlname(self, tag):
@@ -521,9 +516,17 @@ class ExpatDeserializerNSHandlers:
else: else:
prefix, name = None, tag prefix, name = None, tag
# Map prefix to ns # Map prefix to ns
ns = self.nsMap[prefix][-1] ns = self._GetNamespaceFromPrefix(prefix)
return ns, name return ns, name
def _GetNamespaceFromPrefix(self, prefix = None):
namespaces = self.nsMap.get(prefix)
if namespaces:
ns = namespaces[-1]
else:
ns = ""
return ns
## Handle namespace begin ## Handle namespace begin
def StartNamespaceDeclHandler(self, prefix, uri): def StartNamespaceDeclHandler(self, prefix, uri):
namespaces = self.nsMap.get(prefix) namespaces = self.nsMap.get(prefix)