You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2009/07/21 21:02:15 UTC
svn commit: r796477 - in /qpid/trunk/qpid: python/mllib/__init__.py
specs/amqp.0-10-qpid-errata.xml
Author: rhs
Date: Tue Jul 21 19:02:15 2009
New Revision: 796477
URL: http://svn.apache.org/viewvc?rev=796477&view=rev
Log:
workaround jython/python xml parser bug with unicode sources; added path support for mllib.xml_parse; uncommented dtd decl in spec file
Modified:
qpid/trunk/qpid/python/mllib/__init__.py
qpid/trunk/qpid/specs/amqp.0-10-qpid-errata.xml
Modified: qpid/trunk/qpid/python/mllib/__init__.py
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/python/mllib/__init__.py?rev=796477&r1=796476&r2=796477&view=diff
==============================================================================
--- qpid/trunk/qpid/python/mllib/__init__.py (original)
+++ qpid/trunk/qpid/python/mllib/__init__.py Tue Jul 21 19:02:15 2009
@@ -24,6 +24,8 @@
import os, dom, transforms, parsers, sys
import xml.sax, types
+from xml.sax.handler import ErrorHandler
+from xml.sax.xmlreader import InputSource
from cStringIO import StringIO
def transform(node, *args):
@@ -49,15 +51,33 @@
p.close()
return p.parser.tree
-def xml_parse(filename):
+class Resolver:
+
+ def __init__(self, path):
+ self.path = path
+
+ def resolveEntity(self, publicId, systemId):
+ for p in self.path:
+ fname = os.path.join(p, systemId)
+ if os.path.exists(fname):
+ source = InputSource(systemId)
+ source.setByteStream(open(fname))
+ return source
+ return InputSource(systemId)
+
+def xml_parse(filename, path=()):
if sys.version_info[0:2] == (2,3):
# XXX: this is for older versions of python
- source = "file://%s" % os.path.abspath(filename)
+ source = "file://%s" % os.path.abspath(filename)
else:
source = filename
- p = parsers.XMLParser()
- xml.sax.parse(source, p)
- return p.parser.tree
+ h = parsers.XMLParser()
+ p = xml.sax.make_parser()
+ p.setContentHandler(h)
+ p.setErrorHandler(ErrorHandler())
+ p.setEntityResolver(Resolver(path))
+ p.parse(source)
+ return h.parser.tree
def sexp(node):
s = transforms.Sexp()
Modified: qpid/trunk/qpid/specs/amqp.0-10-qpid-errata.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/specs/amqp.0-10-qpid-errata.xml?rev=796477&r1=796476&r2=796477&view=diff
==============================================================================
--- qpid/trunk/qpid/specs/amqp.0-10-qpid-errata.xml (original)
+++ qpid/trunk/qpid/specs/amqp.0-10-qpid-errata.xml Tue Jul 21 19:02:15 2009
@@ -121,7 +121,7 @@
-->
-<!--<!DOCTYPE amqp SYSTEM "amqp.0-10.dtd">-->
+<!DOCTYPE amqp SYSTEM "amqp.0-10.dtd">
<amqp xmlns="http://www.amqp.org/schema/amqp.xsd"
major="0" minor="10" port="5672">
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org