summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/library/scala/xml/Atom.scala2
-rw-r--r--src/library/scala/xml/Text.scala10
-rw-r--r--src/library/scala/xml/parsing/FactoryAdapter.scala7
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)