From: erickson Date: Thu, 5 Jul 2007 16:00:42 +0000 (+0000) Subject: fixed bug where no-text-data resulted in incorrect array index when parsing hinted... X-Git-Tag: osrf_rel_2_0_1~932 X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=c7451adcf597574ceca146b8e440270ae4c6f77f;p=OpenSRF.git fixed bug where no-text-data resulted in incorrect array index when parsing hinted objects git-svn-id: svn://svn.open-ils.org/OpenSRF/trunk@998 9efc2488-bf62-4759-914b-345cdb29e865 --- diff --git a/src/python/osrf/gateway.py b/src/python/osrf/gateway.py index c9f9392..190afce 100644 --- a/src/python/osrf/gateway.py +++ b/src/python/osrf/gateway.py @@ -77,6 +77,9 @@ class XMLGatewayParser(handler.ContentHandler): self.keyStack = [] self.posStack = [] # for tracking array-based hinted object indices + # true if we are parsing an element that may have character data + self.charsPending = 0 + def getResult(self): return self.result @@ -87,13 +90,20 @@ class XMLGatewayParser(handler.ContentHandler): return None def startElement(self, name, attrs): - - # XXX add support for serializable objects! + + if self.charsPending: + # we just read a 'string' or 'number' element that resulted + # in no text data. Appaned a None object + self.appendChild(None) if name == 'null': self.appendChild(None) return + if name == 'string' or name == 'number': + self.charsPending = True + return + if name == 'element': # this is an object item wrapper self.keyStack.append(self.__getAttr(attrs, 'key')) return @@ -157,6 +167,7 @@ class XMLGatewayParser(handler.ContentHandler): self.objStack.pop() def characters(self, chars): + self.charsPending = False self.appendChild(urllib.unquote_plus(chars))