Skip to content

Commit b9e5955

Browse files
committed
Replace @XmlNamespaceDeclSpec with @XmlNamespaceDeclSpecs
1 parent 0a1536d commit b9e5955

File tree

7 files changed

+62
-5
lines changed

7 files changed

+62
-5
lines changed

Changelog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ Features:
66
- Improve translation of serial names to xml names in the
77
default policy (strip out text after '`<`', '`[`' and '`(`')
88

9+
Changes:
10+
- Replace `@XmlNamespaceDeclSpec` with `@XmlNamespaceDeclSpecs` that
11+
accepts an array argument
12+
913
Fixes:
1014
- Fix the issue that the for JavaScript overloads cannot be different
1115
only in external parameter type. This breaks compiling with a

schemaTests/src/commonMain/kotlin/org/w3/xml/xmschematestsuite/override/CompactOverride.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@ import kotlinx.serialization.descriptors.SerialDescriptor
2828
import kotlinx.serialization.encoding.Decoder
2929
import kotlinx.serialization.encoding.Encoder
3030
import nl.adaptivity.xmlutil.serialization.XmlDefault
31-
import nl.adaptivity.xmlutil.serialization.XmlNamespaceDeclSpec
31+
import nl.adaptivity.xmlutil.serialization.XmlNamespaceDeclSpecs
3232
import nl.adaptivity.xmlutil.serialization.XmlSerialName
3333
import org.w3.xml.xmschematestsuite.TSExpected
3434

3535
@Serializable
3636
@XmlSerialName("overrides", namespace = "http://pdvrieze.github.io/xmlutil/testoverride", "")
37-
@XmlNamespaceDeclSpec("ts=http://www.w3.org/XML/2004/xml-schema-test-suite/")
37+
@XmlNamespaceDeclSpecs("ts=http://www.w3.org/XML/2004/xml-schema-test-suite/")
3838
class CompactOverride(
3939
@XmlSerialName("ignore", namespace = "http://pdvrieze.github.io/xmlutil/testoverride", "")
4040
val ignores: List<TestPath>,

serialization/api/serialization.api

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ public abstract class nl/adaptivity/xmlutil/serialization/AbstractXmlSerializer
88

99
public final class nl/adaptivity/xmlutil/serialization/AnnotationsKt {
1010
public static final fun getNamespaces (Lnl/adaptivity/xmlutil/serialization/XmlNamespaceDeclSpec;)Ljava/util/List;
11+
public static final fun getNamespaces (Lnl/adaptivity/xmlutil/serialization/XmlNamespaceDeclSpecs;)Ljava/util/List;
1112
}
1213

1314
public final class nl/adaptivity/xmlutil/serialization/CompactFragmentSerializer : nl/adaptivity/xmlutil/serialization/AbstractXmlSerializer {
@@ -612,6 +613,15 @@ public synthetic class nl/adaptivity/xmlutil/serialization/XmlNamespaceDeclSpec$
612613
public final synthetic fun value ()Ljava/lang/String;
613614
}
614615

616+
public abstract interface annotation class nl/adaptivity/xmlutil/serialization/XmlNamespaceDeclSpecs : java/lang/annotation/Annotation {
617+
public abstract fun value ()[Ljava/lang/String;
618+
}
619+
620+
public synthetic class nl/adaptivity/xmlutil/serialization/XmlNamespaceDeclSpecs$Impl : nl/adaptivity/xmlutil/serialization/XmlNamespaceDeclSpecs {
621+
public fun <init> ([Ljava/lang/String;)V
622+
public final synthetic fun value ()[Ljava/lang/String;
623+
}
624+
615625
public abstract interface annotation class nl/adaptivity/xmlutil/serialization/XmlOtherAttributes : java/lang/annotation/Annotation {
616626
}
617627

serialization/api/serialization.klib.api

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,13 @@ open annotation class nl.adaptivity.xmlutil.serialization/XmlNamespaceDeclSpec :
9696
final fun <get-value>(): kotlin/String // nl.adaptivity.xmlutil.serialization/XmlNamespaceDeclSpec.value.<get-value>|<get-value>(){}[0]
9797
}
9898

99+
open annotation class nl.adaptivity.xmlutil.serialization/XmlNamespaceDeclSpecs : kotlin/Annotation { // nl.adaptivity.xmlutil.serialization/XmlNamespaceDeclSpecs|null[0]
100+
constructor <init>(kotlin/Array<out kotlin/String>...) // nl.adaptivity.xmlutil.serialization/XmlNamespaceDeclSpecs.<init>|<init>(kotlin.Array<out|kotlin.String>...){}[0]
101+
102+
final val value // nl.adaptivity.xmlutil.serialization/XmlNamespaceDeclSpecs.value|{}value[0]
103+
final fun <get-value>(): kotlin/Array<out kotlin/String> // nl.adaptivity.xmlutil.serialization/XmlNamespaceDeclSpecs.value.<get-value>|<get-value>(){}[0]
104+
}
105+
99106
open annotation class nl.adaptivity.xmlutil.serialization/XmlOtherAttributes : kotlin/Annotation { // nl.adaptivity.xmlutil.serialization/XmlOtherAttributes|null[0]
100107
constructor <init>() // nl.adaptivity.xmlutil.serialization/XmlOtherAttributes.<init>|<init>(){}[0]
101108
}
@@ -1170,6 +1177,8 @@ final object nl.adaptivity.xmlutil.serialization/NodeSerializer : nl.adaptivity.
11701177
final fun serializeXML(kotlinx.serialization.encoding/Encoder, nl.adaptivity.xmlutil/XmlWriter, nl.adaptivity.xmlutil.dom/Node, kotlin/Boolean) // nl.adaptivity.xmlutil.serialization/NodeSerializer.serializeXML|serializeXML(kotlinx.serialization.encoding.Encoder;nl.adaptivity.xmlutil.XmlWriter;nl.adaptivity.xmlutil.dom.Node;kotlin.Boolean){}[0]
11711178
}
11721179

1180+
final val nl.adaptivity.xmlutil.serialization/namespaces // nl.adaptivity.xmlutil.serialization/namespaces|@nl.adaptivity.xmlutil.serialization.XmlNamespaceDeclSpecs{}namespaces[0]
1181+
final fun (nl.adaptivity.xmlutil.serialization/XmlNamespaceDeclSpecs).<get-namespaces>(): kotlin.collections/List<nl.adaptivity.xmlutil/Namespace> // nl.adaptivity.xmlutil.serialization/namespaces.<get-namespaces>|<get-namespaces>@nl.adaptivity.xmlutil.serialization.XmlNamespaceDeclSpecs(){}[0]
11731182
final val nl.adaptivity.xmlutil.serialization/namespaces // nl.adaptivity.xmlutil.serialization/namespaces|@nl.adaptivity.xmlutil.serialization.XmlNamespaceDeclSpec{}namespaces[0]
11741183
final fun (nl.adaptivity.xmlutil.serialization/XmlNamespaceDeclSpec).<get-namespaces>(): kotlin.collections/List<nl.adaptivity.xmlutil/Namespace> // nl.adaptivity.xmlutil.serialization/namespaces.<get-namespaces>|<get-namespaces>@nl.adaptivity.xmlutil.serialization.XmlNamespaceDeclSpec(){}[0]
11751184

serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/annotations.kt

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,32 @@ public annotation class XmlSerialName(
5555
@SerialInfo
5656
@Retention(AnnotationRetention.BINARY)
5757
@Target(AnnotationTarget.CLASS, AnnotationTarget.PROPERTY)
58+
@Deprecated("Use XmlNamespaceDeclSpecs instead that takes an array argument")
5859
public annotation class XmlNamespaceDeclSpec(
5960
val value: String,
6061
)
6162

63+
/**
64+
* Annotation allowing to specify namespaces specifications to be generated upon the element.
65+
* As multiple annotations are not supported by the plugin this uses a single string. Each
66+
* declaration is of the form (prefix)=(namespace). To specify the default namespace it is valid to
67+
* omit the equals sign.
68+
*
69+
* @property value The actual specification: `"prefix1=urn:namespace1;defaultNamespace"`
70+
*/
71+
@ExperimentalXmlUtilApi
72+
@SerialInfo
73+
@Retention(AnnotationRetention.BINARY)
74+
@Target(AnnotationTarget.CLASS, AnnotationTarget.PROPERTY)
75+
public annotation class XmlNamespaceDeclSpecs(
76+
vararg val value: String,
77+
)
78+
6279
/**
6380
* Accessor that reads the declared namespaces out of an [XmlNamespaceDeclSpec] instance.
6481
*/
6582
@ExperimentalXmlUtilApi
83+
@Deprecated("Use XmlNamespaceDeclSpecs instead of XmlNamespaceDeclSpec")
6684
public val XmlNamespaceDeclSpec.namespaces: List<Namespace>
6785
get() {
6886
return value.split(';').map { decl ->
@@ -73,6 +91,20 @@ public val XmlNamespaceDeclSpec.namespaces: List<Namespace>
7391
}
7492
}
7593

94+
/**
95+
* Accessor that reads the declared namespaces out of an [XmlNamespaceDeclSpecs] instance.
96+
*/
97+
@ExperimentalXmlUtilApi
98+
public val XmlNamespaceDeclSpecs.namespaces: List<Namespace>
99+
get() {
100+
return value.map { decl ->
101+
when (val eq = decl.indexOf('=')) {
102+
-1 -> XmlEvent.NamespaceImpl("", decl)
103+
else -> XmlEvent.NamespaceImpl(decl.substring(0, eq), decl.substring(eq + 1))
104+
}
105+
}
106+
}
107+
76108
/**
77109
* Indicate the valid polymorphic children for this element.
78110
*

serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlDescriptor.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1824,7 +1824,7 @@ public interface SafeParentInfo {
18241824
@ExperimentalXmlUtilApi
18251825
public val useAnnAfter: Array<out String>? get() = null
18261826

1827-
/** Value of the [XmlNamespaceDeclSpec] annotation */
1827+
/** Value of the [XmlNamespaceDeclSpecs] annotation */
18281828
@ExperimentalXmlUtilApi
18291829
public val useAnnNsDecls: List<Namespace>? get() = null
18301830

@@ -2168,6 +2168,7 @@ public class ParentInfo(
21682168
is XmlPolyChildren -> useAnnPolyChildren = an
21692169
is XmlIgnoreWhitespace -> useAnnIgnoreWhitespace = an.value
21702170
is XmlNamespaceDeclSpec -> useAnnNsDecls = an.namespaces
2171+
is XmlNamespaceDeclSpecs -> useAnnNsDecls = an.namespaces
21712172
is XmlChildrenName -> useAnnChildrenName = an
21722173
is XmlKeyName -> useAnnKeyName = an
21732174
is XmlMapEntryName -> useAnnMapEntryName = an

serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlTypeDescriptor.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ public class XmlTypeDescriptor internal constructor(
3636
public val serialDescriptor: SerialDescriptor,
3737
parentNamespace: Namespace?
3838
) {
39-
/** Value of the [XmlNamespaceDeclSpec] annotation */
39+
/** Value of the [XmlNamespaceDeclSpecs] annotation */
4040
@ExperimentalXmlUtilApi
4141
public var typeAnnNsDecls: List<Namespace>? = null
4242
private set
4343

44-
/** Value of the [XmlNamespaceDeclSpec] annotation */
44+
/** Value of the [XmlSerialName] annotation */
4545
@ExperimentalXmlUtilApi
4646
public var typeAnnXmlSerialName: XmlSerialName? = null
4747
private set
@@ -77,6 +77,7 @@ public class XmlTypeDescriptor internal constructor(
7777
@Suppress("DEPRECATION")
7878
when (a) {
7979
is XmlNamespaceDeclSpec -> typeAnnNsDecls = a.namespaces
80+
is XmlNamespaceDeclSpecs -> typeAnnNsDecls = a.namespaces
8081
is XmlSerialName -> typeAnnXmlSerialName = a
8182
is XmlCData -> typeAnnCData = a.value
8283
is XmlValue -> typeAnnIsXmlValue = a.value

0 commit comments

Comments
 (0)