From c6c3b44b0c4e019b9e65a88300c89f7e617ad56c Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Mon, 11 Jan 2010 17:16:56 +0000 Subject: Fix and test case for #2364, which regressed wi... Fix and test case for #2364, which regressed with the fix to #2721. --- test/files/run/bug2364.check | 1 + test/files/run/bug2364.scala | 57 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 test/files/run/bug2364.check create mode 100644 test/files/run/bug2364.scala (limited to 'test/files/run') diff --git a/test/files/run/bug2364.check b/test/files/run/bug2364.check new file mode 100644 index 0000000000..219305e43a --- /dev/null +++ b/test/files/run/bug2364.check @@ -0,0 +1 @@ + diff --git a/test/files/run/bug2364.scala b/test/files/run/bug2364.scala new file mode 100644 index 0000000000..0d1600c048 --- /dev/null +++ b/test/files/run/bug2364.scala @@ -0,0 +1,57 @@ +import java.io.ByteArrayInputStream +import java.io.ByteArrayOutputStream +import com.sun.xml.internal.fastinfoset._ +import com.sun.xml.internal.fastinfoset.sax._ +import scala.xml.parsing.NoBindingFactoryAdapter +import scala.xml._ + +object Test { + def main(args: Array[String]) { + val node = + val bytes = new ByteArrayOutputStream + val serializer = new SAXDocumentSerializer() + + serializer.setOutputStream(bytes) + serializer.startDocument() + serialize(node, serializer) + serializer.endDocument() + println(parse(new ByteArrayInputStream(bytes.toByteArray))) + } + def serialize(node: Node, serializer: SAXDocumentSerializer) { + node match { + case _ : ProcInstr | _ : Comment | _ : EntityRef => + case x : Atom[_] => + val chars = x.text.toCharArray + serializer.characters(chars, 0, chars.length) + case _ : Elem => + serializer.startElement("", node.label.toLowerCase, node.label.toLowerCase, attributes(node.attributes)) + for (m <- node.child) serialize(m, serializer) + serializer.endElement("", node.label.toLowerCase, node.label.toLowerCase) + } + } + def parse(str: ByteArrayInputStream) = { + val parser = new SAXDocumentParser + val fac = new NoBindingFactoryAdapter + + parser.setContentHandler(fac) + try { + parser.parse(str) + } catch { + case x: Exception => + x.printStackTrace + } + fac.rootElem + } + def attributes(d: MetaData) = { + val attrs = new AttributesHolder + + if (d != null) { + for (attr <- d) { + val sb = new StringBuilder() + Utility.sequenceToXML(attr.value, TopScope, sb, true) + attrs.addAttribute(new QualifiedName("", "", attr.key.toLowerCase), sb.toString) + } + } + attrs + } +} -- cgit v1.2.3