From 4a93c6a7f52e3663254914a55055c330295ff1e7 Mon Sep 17 00:00:00 2001 From: "e.e d3si9n" Date: Tue, 25 Oct 2011 23:37:37 -0400 Subject: [PATCH] fixed xs:any ##local. fixes #101 --- .../scala/scalaxb/compiler/xsd/Parsers.scala | 11 ++++++----- .../src/test/resources/GeneralUsage.scala | 16 +++++++++------- integration/src/test/resources/general.xsd | 1 + 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/cli/src/main/scala/scalaxb/compiler/xsd/Parsers.scala b/cli/src/main/scala/scalaxb/compiler/xsd/Parsers.scala index 9bb058680..8f64f6b2e 100644 --- a/cli/src/main/scala/scalaxb/compiler/xsd/Parsers.scala +++ b/cli/src/main/scala/scalaxb/compiler/xsd/Parsers.scala @@ -48,11 +48,12 @@ trait Parsers extends Args with Params { case Nil => "_ => true" case "##any" :: Nil => "_ => true" case "##other" :: Nil => "_.namespace != %s" format (quoteNamespace(schema.targetNamespace)) - case _ => (namespaceConstraint.map { - case "##targetNamespace" => quoteNamespace(schema.targetNamespace) - case "##local" => "None" - case x => "Some(%s)".format(x) - }).mkString("List(", ", ", ").contains(_)") + case _ => + """x => %s contains x.namespace""" format (namespaceConstraint.map { + case "##targetNamespace" => quoteNamespace(schema.targetNamespace) + case "##local" => "None" + case x => "Some(%s)".format(x) + }).mkString("List(", ", ", ")") }) buildParserString(if (mixed) "((" + parser + " ^^ (" + converter + ")) ~ " + newline + diff --git a/integration/src/test/resources/GeneralUsage.scala b/integration/src/test/resources/GeneralUsage.scala index c216a73f7..cfdd16225 100644 --- a/integration/src/test/resources/GeneralUsage.scala +++ b/integration/src/test/resources/GeneralUsage.scala @@ -262,26 +262,28 @@ object GeneralUsage { */ def testAny { println("testAny") - val subject = - JohnDoe + JohnDoe 1 - - JohnDoe + + + JohnDoe 1 1 11 - JohnDoe - JohnDoe - + JohnDoe + JohnDoe + val obj = fromXML[AnyTest](subject) def check(obj: Any) = obj match { case AnyTest( Person("John", "Doe"), DataRecord(O, Some("foo"), 1), // Single + DataRecord(None, Some("local"), _), // Local DataRecord(NS, Some("person2"), None), Some(Person("John", "Doe")), Some(DataRecord(O, Some("foo"), 1)), // optional diff --git a/integration/src/test/resources/general.xsd b/integration/src/test/resources/general.xsd index 8d308a6b3..069499cc8 100644 --- a/integration/src/test/resources/general.xsd +++ b/integration/src/test/resources/general.xsd @@ -156,6 +156,7 @@ +