Skip to content
This repository was archived by the owner on Jan 15, 2025. It is now read-only.

Commit bb130df

Browse files
committed
Update ScalaXB to generate default labels for XML elements
See eed3si9n/scalaxb#467 for details.
1 parent 7e666fa commit bb130df

9 files changed

+741
-85
lines changed

3.3/scalaxb.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ trait CanReadXML[A] {
6262
}
6363

6464
trait CanWriteXML[A] {
65+
def defaultElementLabel: Option[String] = None
6566
def writes(obj: A, namespace: Option[String], elementLabel: Option[String],
6667
scope: NamespaceBinding, typeAttribute: Boolean): NodeSeq
6768
}
@@ -733,7 +734,7 @@ trait CanWriteChildNodes[A] extends CanWriteXML[A] {
733734
def writes(obj: A, namespace: Option[String], elementLabel: Option[String],
734735
scope: scala.xml.NamespaceBinding, typeAttribute: Boolean): scala.xml.NodeSeq = {
735736
val elem = scala.xml.Elem(Helper.getPrefix(namespace, scope).orNull,
736-
elementLabel getOrElse { sys.error("missing element label.") },
737+
elementLabel orElse defaultElementLabel getOrElse { sys.error("missing element label.") },
737738
writesAttribute(obj, scope),
738739
scope, true,
739740
writesChildNodes(obj, scope): _*)

3.3/xmlprotocol.scala

Lines changed: 183 additions & 20 deletions
Large diffs are not rendered by default.

3.4/scalaxb.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ trait CanReadXML[A] {
6262
}
6363

6464
trait CanWriteXML[A] {
65+
def defaultElementLabel: Option[String] = None
6566
def writes(obj: A, namespace: Option[String], elementLabel: Option[String],
6667
scope: NamespaceBinding, typeAttribute: Boolean): NodeSeq
6768
}
@@ -733,7 +734,7 @@ trait CanWriteChildNodes[A] extends CanWriteXML[A] {
733734
def writes(obj: A, namespace: Option[String], elementLabel: Option[String],
734735
scope: scala.xml.NamespaceBinding, typeAttribute: Boolean): scala.xml.NodeSeq = {
735736
val elem = scala.xml.Elem(Helper.getPrefix(namespace, scope).orNull,
736-
elementLabel getOrElse { sys.error("missing element label.") },
737+
elementLabel orElse defaultElementLabel getOrElse { sys.error("missing element label.") },
737738
writesAttribute(obj, scope),
738739
scope, true,
739740
writesChildNodes(obj, scope): _*)

3.4/xmlprotocol.scala

Lines changed: 183 additions & 20 deletions
Large diffs are not rendered by default.

3.5/scalaxb.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ trait CanReadXML[A] {
6262
}
6363

6464
trait CanWriteXML[A] {
65+
def defaultElementLabel: Option[String] = None
6566
def writes(obj: A, namespace: Option[String], elementLabel: Option[String],
6667
scope: NamespaceBinding, typeAttribute: Boolean): NodeSeq
6768
}
@@ -733,7 +734,7 @@ trait CanWriteChildNodes[A] extends CanWriteXML[A] {
733734
def writes(obj: A, namespace: Option[String], elementLabel: Option[String],
734735
scope: scala.xml.NamespaceBinding, typeAttribute: Boolean): scala.xml.NodeSeq = {
735736
val elem = scala.xml.Elem(Helper.getPrefix(namespace, scope).orNull,
736-
elementLabel getOrElse { sys.error("missing element label.") },
737+
elementLabel orElse defaultElementLabel getOrElse { sys.error("missing element label.") },
737738
writesAttribute(obj, scope),
738739
scope, true,
739740
writesChildNodes(obj, scope): _*)

3.5/xmlprotocol.scala

Lines changed: 183 additions & 20 deletions
Large diffs are not rendered by default.

3.6/scalaxb.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ trait CanReadXML[A] {
6262
}
6363

6464
trait CanWriteXML[A] {
65+
def defaultElementLabel: Option[String] = None
6566
def writes(obj: A, namespace: Option[String], elementLabel: Option[String],
6667
scope: NamespaceBinding, typeAttribute: Boolean): NodeSeq
6768
}
@@ -733,7 +734,7 @@ trait CanWriteChildNodes[A] extends CanWriteXML[A] {
733734
def writes(obj: A, namespace: Option[String], elementLabel: Option[String],
734735
scope: scala.xml.NamespaceBinding, typeAttribute: Boolean): scala.xml.NodeSeq = {
735736
val elem = scala.xml.Elem(Helper.getPrefix(namespace, scope).orNull,
736-
elementLabel getOrElse { sys.error("missing element label.") },
737+
elementLabel orElse defaultElementLabel getOrElse { sys.error("missing element label.") },
737738
writesAttribute(obj, scope),
738739
scope, true,
739740
writesChildNodes(obj, scope): _*)

3.6/xmlprotocol.scala

Lines changed: 183 additions & 20 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ The schemas used to generate the classes in this project are available in the [s
4646
## Generated Sources
4747

4848
The source files were generated using an
49-
[unreleased version of ScalaXB](https://github.com/eed3si9n/scalaxb/archive/5d0eea5a6c4d713976c9b86cc2cb691d0f83e137.zip)
49+
[unreleased version of ScalaXB](https://github.com/eed3si9n/scalaxb/archive/a54acf3d30f081dba5c12e7217556199952b7c2d.zip)
5050
that was built from source. Hopefully, it will be released in the main repository soon.
5151

5252
The following command was used to generate the files for each version:

0 commit comments

Comments
 (0)