diff options
author | Paul Phillips <paulp@improving.org> | 2009-09-26 19:53:23 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2009-09-26 19:53:23 +0000 |
commit | 5ae38f0f2ab1823dd5e5fce6b43a54bc93f2fedc (patch) | |
tree | 975f856596cfdaf3b392d1fa79b61eb7b024933b | |
parent | 09b71d8beaaa9ce643f130165ec026d51fd0681d (diff) | |
download | scala-5ae38f0f2ab1823dd5e5fce6b43a54bc93f2fedc.tar.gz scala-5ae38f0f2ab1823dd5e5fce6b43a54bc93f2fedc.tar.bz2 scala-5ae38f0f2ab1823dd5e5fce6b43a54bc93f2fedc.zip |
For for an XML bug I accidentally introduced in...
For for an XML bug I accidentally introduced in recent changes.
-rw-r--r-- | src/library/scala/xml/Atom.scala | 2 | ||||
-rw-r--r-- | src/library/scala/xml/Text.scala | 10 | ||||
-rw-r--r-- | src/library/scala/xml/parsing/FactoryAdapter.scala | 7 |
3 files changed, 13 insertions, 6 deletions
diff --git a/src/library/scala/xml/Atom.scala b/src/library/scala/xml/Atom.scala index 44770bce1a..79dcd58bf1 100644 --- a/src/library/scala/xml/Atom.scala +++ b/src/library/scala/xml/Atom.scala @@ -20,7 +20,7 @@ package scala.xml @serializable class Atom[+A](val data: A) extends SpecialNode { - if (data.asInstanceOf[AnyRef] == null) + if (data == null) throw new IllegalArgumentException("cannot construct Atom(null)") final override def doCollectNamespaces = false diff --git a/src/library/scala/xml/Text.scala b/src/library/scala/xml/Text.scala index 34001bba70..97c8f120f9 100644 --- a/src/library/scala/xml/Text.scala +++ b/src/library/scala/xml/Text.scala @@ -12,8 +12,14 @@ package scala.xml object Text { - def apply(data: String) = new Text(data) - def unapply(other: Any) = other match { case x: Text => Some(x.data) ; case _ => None } + def apply(data: String) = + if (data != null) new Text(data) + else throw new IllegalArgumentException("tried to construct Text with null") + + def unapply(other: Any) = other match { + case x: Text => Some(x.data) + case _ => None + } } /** The class <code>Text</code> implements an XML node for text (PCDATA). diff --git a/src/library/scala/xml/parsing/FactoryAdapter.scala b/src/library/scala/xml/parsing/FactoryAdapter.scala index 31ace71145..c210fe49c4 100644 --- a/src/library/scala/xml/parsing/FactoryAdapter.scala +++ b/src/library/scala/xml/parsing/FactoryAdapter.scala @@ -135,14 +135,15 @@ abstract class FactoryAdapter extends DefaultHandler with factory.XMLLoader[Node var m: MetaData = Null var scpe: NamespaceBinding = TopScope - for (i <- (0 until attributes.getLength()).toList) { + for (i <- 0 until attributes.getLength()) { val qname = attributes getQName i - val value = (attributes getValue i) match { case "" => null ; case x => x } + val value = attributes getValue i val (pre, key) = splitName(qname) + def nullIfEmpty(s: String) = if (s == "") null else s if (pre == "xmlns" || (pre == null && qname == "xmlns")) { val arg = if (pre == null) null else key - scpe = new NamespaceBinding(arg, value, scpe) + scpe = new NamespaceBinding(arg, nullIfEmpty(value), scpe) } else m = Attribute(Option(pre), key, Text(value), m) |