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