Skip to content

Commit 4f47761

Browse files
committed
Update pages for 0.91.1
2 parents 5b32ada + 7922203 commit 4f47761

File tree

45 files changed

+1195
-531
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+1195
-531
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ build
99
.idea/dataSources.ids
1010
.idea/dataSources.local.xml
1111
.idea/dataSources
12+
.idea/runConfigurations/_template_*
1213
*/*.iml
1314
*.iml
1415
.idea/gradle.xml

.idea/runConfigurations/JacksonMainKt.xml

Lines changed: 15 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Changelog.md

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,30 @@
1+
# 0.91.1
2+
*(May 15, 2025)
3+
4+
Features:
5+
- Add an annotation `@XmlMapEntryName` to force map entries not to be
6+
collapsed, also specifying the name of the entry.
7+
- Improve translation of serial names to xml names in the
8+
default policy (strip out text after '`<`', '`[`' and '`(`')
9+
10+
Changes:
11+
- Replace `@XmlNamespaceDeclSpec` with `@XmlNamespaceDeclSpecs` that
12+
accepts an array argument
13+
- Synchronize annotation and readme docs #279 (thanks to Jack Boswell
14+
(boswelja))
15+
16+
Fixes:
17+
- Fix deserialization of value classes that wrap a string when inside
18+
an `@XmlValue` property (#280).
19+
- Fix the issue that the for JavaScript overloads cannot be different
20+
only in external parameter type. This breaks compiling with a
21+
js2025 target. Discussed in #83.
22+
- Inspired by #274, fix the decoding of non-collapsed map entries
23+
where the `XmlSerialName` annotation is not present.
24+
- Further fixes on inline serialization with more cases.
25+
126
# 0.91.0
2-
*(April 1, 2025)<br />*
27+
*(April 1, 2025)
328
Features:
429
- Add `XmlKeyName` as annotation to set the name of the key used in
530
maps. This just adds the capability to the default policy. Supports
@@ -18,7 +43,7 @@ Fixes:
1843
thus resulting in invalid cache keys.
1944

2045
# 0.91.0-RC1
21-
*(March 4, 2025)<br />*
46+
2247
Features:
2348
- Add a core-io and serialization-io modules that support using kotlinx.io
2449
- Add inline function shortcuts for encodeToString/decodeFromString with
@@ -92,7 +117,6 @@ Fixes:
92117
string.
93118

94119
# 0.90.3
95-
*(November 7, 2024)<br />*
96120
Changes:
97121
- In pedantic mode check that xml/xmlns are not used as names (they
98122
are always invalid). Note that namespaces can be specified using
@@ -108,13 +132,11 @@ Fixes:
108132
multithreading issues when reusing the format (recommended for speed)
109133

110134
# 0.90.2 Mooor Rocketpower!
111-
*(October 15, 2024)<br />*
112135
Changes:
113136
- Update to Kotlin 2.0.21 / Kotlinx.serialization 1.7.3
114137
- Add support for Android native targets (@whyoleg in #242)
115138

116139
# 0.90.2-beta1 Rocketpower!
117-
*(July 22, 2024)<br />*
118140
Changes:
119141
- Update to Kotlin 2.0.20 / kotlinx.serialization 1.7.2
120142
- Extensive optimization of decoding (serialization), parsing
@@ -159,11 +181,10 @@ Fixes:
159181
- Fix infinite recursion issue with xmlStreaming.newWriter / newReader
160182

161183
# 0.90.1 Fix Android
162-
*(June 16, 2024)<br />*
163184
- Fix android plugin dependency.
164185

165186
# 0.90.0 2.0 will go
166-
*(June 13, 2024)<br />*
187+
*(June 13, 2024)
167188
Changes:
168189
- The core module no longer automatically includes Android/Jvm "native"
169190
parsers by default, but uses the platform independent implementation.
@@ -175,18 +196,15 @@ Changes:
175196
be removed at 1.0 release.
176197

177198
# 0.90.0-RC3
178-
*(June 11, 2024)<br />*
179199
- Fix issues with dependencies in new layout (#209) - XMPCore now
180200
builds/resolves.
181201

182202
# 0.90.0-RC2
183-
*(June 7, 2024)<br />*
184203
Fixes:
185204
- Fix multithreading initialization on JVM targets, serviceLoaders are
186205
not thread-safe (#211).
187206

188207
# 0.90.0-RC1 – Supporting 2.0
189-
*(May 24, 2024)<br />*
190208
Changes:
191209
- Build with Kotlin 2.0.0
192210
- The core module has been changed to use default implementations for
@@ -232,7 +250,7 @@ Fixes:
232250
attributes.
233251

234252
# 0.86.3
235-
*(December 14, 2023)<br />*
253+
*(December 14, 2023)
236254
Changes:
237255
- The `XmlStreaming` object in core is replaced by an interface `IXmlStreaming`
238256
with an accessor function `xmlStreaming` that provides an appropriate

README.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -85,19 +85,19 @@ package. The `JVM` and `Android` packages provide the native
8585
implementations and depend on (publishing) the `jvmCommon` package.
8686
#### multiplatform (will default to multiplatform implementation for JVM/Android)
8787
```
88-
implementation("io.github.pdvrieze.xmlutil:core:0.91.0")
88+
implementation("io.github.pdvrieze.xmlutil:core:0.91.1")
8989
```
9090
#### **Optional** JVM – uses the stax API _not available_ on Android
9191
```
92-
implementation("io.github.pdvrieze.xmlutil:core-jdk:0.91.0")
92+
implementation("io.github.pdvrieze.xmlutil:core-jdk:0.91.1")
9393
```
9494
#### **Optional** Android – Uses the android streaming library
9595
```
96-
implementation("io.github.pdvrieze.xmlutil:core-android:0.91.0")
96+
implementation("io.github.pdvrieze.xmlutil:core-android:0.91.1")
9797
```
9898
#### JS – Wraps DOM
9999
```
100-
implementation("io.github.pdvrieze.xmlutil:core-js:0.91.0")
100+
implementation("io.github.pdvrieze.xmlutil:core-js:0.91.1")
101101
```
102102

103103
#### Native
@@ -108,24 +108,24 @@ that mirrors the Java API)
108108
### Serialization
109109
#### multiplatform
110110
```
111-
implementation("io.github.pdvrieze.xmlutil:serialization:0.91.0")
111+
implementation("io.github.pdvrieze.xmlutil:serialization:0.91.1")
112112
```
113113
#### JVM
114114
```
115-
implementation("io.github.pdvrieze.xmlutil:serialization-jvm:0.91.0")
115+
implementation("io.github.pdvrieze.xmlutil:serialization-jvm:0.91.1")
116116
```
117117
#### -Android- (Deprecated - this is dependency only - it has no code)
118118
** Deprecated **
119119
```
120-
implementation("io.github.pdvrieze.xmlutil:serialization-android:0.91.0")
120+
implementation("io.github.pdvrieze.xmlutil:serialization-android:0.91.1")
121121
```
122122

123123
This version is merely a dependency to the main module that no longer has the android
124124
specific artefact as this is not supported by kotlin (and has resolution issues).
125125

126126
#### js
127127
```
128-
implementation("io.github.pdvrieze.xmlutil:serialization-js:0.91.0")
128+
implementation("io.github.pdvrieze.xmlutil:serialization-js:0.91.1")
129129
```
130130

131131
### -Ktor- (Deprecated)

benchmark/src/jvmTest/kotlin/nl/adaptivity/xmlutil/benchmark/test/SerializationTest.kt

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,14 @@
2020

2121
package nl.adaptivity.xmlutil.benchmark.test
2222

23+
import io.github.pdvrieze.formats.xmlschema.datatypes.serialization.XSSchema
2324
import kotlinx.benchmark.*
24-
import nl.adaptivity.xmlutil.*
25-
import nl.adaptivity.xmlutil.benchmark.Deserialization
25+
import kotlinx.serialization.decodeFromString
26+
import kotlinx.serialization.encodeToString
2627
import nl.adaptivity.xmlutil.benchmark.Serialization
27-
import nl.adaptivity.xmlutil.benchmark.util.*
28-
import nl.adaptivity.xmlutil.serialization.structure.*
28+
import nl.adaptivity.xmlutil.benchmark.util.DummyBlackHole
29+
import nl.adaptivity.xmlutil.benchmark.util.measure
30+
import nl.adaptivity.xmlutil.serialization.XML
2931
import java.util.concurrent.TimeUnit
3032
import kotlin.test.BeforeTest
3133
import kotlin.test.Test
@@ -47,4 +49,16 @@ open class SerializationTest : Serialization() {
4749
measure("serialize to StringWriter",20) { testSerializeGenericSpeedImpl(DummyBlackHole) }
4850
}
4951

52+
@Test
53+
fun testAttributePositionRegression() {
54+
val schemaName = "/xsts/ibmData/valid/S3_12/s3_12v03.xsd"
55+
val xml = XML { recommended_0_90_2() }
56+
val schemaText: String = javaClass.getResourceAsStream(schemaName).readAllBytes().let { String(it) }
57+
val schema = xml.decodeFromString<XSSchema>(schemaText)
58+
59+
60+
val serialized = xml.encodeToString(schema)
61+
// assertXmlEquals(schemaText, serialized)
62+
}
63+
5064
}

build.gradle.kts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@
1919
*/
2020

2121
import org.gradle.plugins.ide.idea.model.IdeaLanguageLevel
22-
import org.jetbrains.dokka.gradle.DokkaMultiModuleTask
23-
import org.jetbrains.dokka.gradle.DokkaTask
22+
import org.jetbrains.dokka.gradle.tasks.DokkaGenerateTask
2423
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
2524
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
2625
import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask
@@ -75,9 +74,10 @@ afterEvaluate {
7574

7675
tasks.register<Copy>("pages") {
7776
group="documentation"
78-
dependsOn(tasks.named("dokkaHtmlMultiModule"))
77+
val dokkaTasks = tasks.named<DokkaGenerateTask>("dokkaGeneratePublicationHtml")
78+
dependsOn(dokkaTasks)
7979
into(projectDir.resolve("pages"))
80-
from(tasks.named<DokkaMultiModuleTask>("dokkaHtmlMultiModule").flatMap { it.outputDirectory })
80+
from(dokkaTasks.flatMap { it.outputDirectory })
8181
// Needed as pages may have content already
8282
duplicatesStrategy = DuplicatesStrategy.INCLUDE
8383
}
@@ -113,7 +113,3 @@ dependencies {
113113
dokka(projects.serialization)
114114
dokka(projects.serialutil)
115115
}
116-
117-
tasks.dokkaHtml {
118-
val x: DokkaTask? = this
119-
}

core/android/src/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# Module coreAndroid
1+
# Module core-android
22
Module providing Android specific parsing implementations. As the
33
generic implementations are based on the Android implementations, this
4-
module is deprecated except for those cases that require:
4+
module is **deprecated** except for those cases that require:
55
- compatibility
66
- integration with the native pull parser implementation (reading only)
77

core/base/api/core.api

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1059,6 +1059,12 @@ public final class nl/adaptivity/xmlutil/dom/NodeListKt {
10591059
public static final fun iterator (Lorg/w3c/dom/NodeList;)Ljava/util/Iterator;
10601060
}
10611061

1062+
public final class nl/adaptivity/xmlutil/dom/Node_jvmCommonKt {
1063+
public static final fun appendChild (Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;
1064+
public static final fun removeChild (Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;
1065+
public static final fun replaceChild (Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;
1066+
}
1067+
10621068
public abstract interface class nl/adaptivity/xmlutil/dom2/Attr : nl/adaptivity/xmlutil/dom2/Node {
10631069
public abstract fun getLocalName ()Ljava/lang/String;
10641070
public abstract fun getName ()Ljava/lang/String;

core/base/api/core.klib.api

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -283,11 +283,8 @@ abstract interface nl.adaptivity.xmlutil.dom/Node { // nl.adaptivity.xmlutil.dom
283283
abstract val previousSibling // nl.adaptivity.xmlutil.dom/Node.previousSibling|{}previousSibling[0]
284284
abstract fun <get-previousSibling>(): nl.adaptivity.xmlutil.dom/Node? // nl.adaptivity.xmlutil.dom/Node.previousSibling.<get-previousSibling>|<get-previousSibling>(){}[0]
285285

286-
abstract fun appendChild(nl.adaptivity.xmlutil.dom/Node): nl.adaptivity.xmlutil.dom/Node // nl.adaptivity.xmlutil.dom/Node.appendChild|appendChild(nl.adaptivity.xmlutil.dom.Node){}[0]
287286
abstract fun lookupNamespaceURI(kotlin/String): kotlin/String? // nl.adaptivity.xmlutil.dom/Node.lookupNamespaceURI|lookupNamespaceURI(kotlin.String){}[0]
288287
abstract fun lookupPrefix(kotlin/String): kotlin/String? // nl.adaptivity.xmlutil.dom/Node.lookupPrefix|lookupPrefix(kotlin.String){}[0]
289-
abstract fun removeChild(nl.adaptivity.xmlutil.dom/Node): nl.adaptivity.xmlutil.dom/Node // nl.adaptivity.xmlutil.dom/Node.removeChild|removeChild(nl.adaptivity.xmlutil.dom.Node){}[0]
290-
abstract fun replaceChild(nl.adaptivity.xmlutil.dom/Node, nl.adaptivity.xmlutil.dom/Node): nl.adaptivity.xmlutil.dom/Node // nl.adaptivity.xmlutil.dom/Node.replaceChild|replaceChild(nl.adaptivity.xmlutil.dom.Node;nl.adaptivity.xmlutil.dom.Node){}[0]
291288

292289
// Targets: [linuxX64, wasmJs, wasmWasi]
293290
abstract val textContent // nl.adaptivity.xmlutil.dom/Node.textContent|{}textContent[0]
@@ -297,6 +294,15 @@ abstract interface nl.adaptivity.xmlutil.dom/Node { // nl.adaptivity.xmlutil.dom
297294
open val parentElement // nl.adaptivity.xmlutil.dom/Node.parentElement|{}parentElement[0]
298295
open fun <get-parentElement>(): nl.adaptivity.xmlutil.dom/Element? // nl.adaptivity.xmlutil.dom/Node.parentElement.<get-parentElement>|<get-parentElement>(){}[0]
299296

297+
// Targets: [linuxX64, wasmJs, wasmWasi]
298+
abstract fun appendChild(nl.adaptivity.xmlutil.dom/Node): nl.adaptivity.xmlutil.dom/Node // nl.adaptivity.xmlutil.dom/Node.appendChild|appendChild(nl.adaptivity.xmlutil.dom.Node){}[0]
299+
300+
// Targets: [linuxX64, wasmJs, wasmWasi]
301+
abstract fun removeChild(nl.adaptivity.xmlutil.dom/Node): nl.adaptivity.xmlutil.dom/Node // nl.adaptivity.xmlutil.dom/Node.removeChild|removeChild(nl.adaptivity.xmlutil.dom.Node){}[0]
302+
303+
// Targets: [linuxX64, wasmJs, wasmWasi]
304+
abstract fun replaceChild(nl.adaptivity.xmlutil.dom/Node, nl.adaptivity.xmlutil.dom/Node): nl.adaptivity.xmlutil.dom/Node // nl.adaptivity.xmlutil.dom/Node.replaceChild|replaceChild(nl.adaptivity.xmlutil.dom.Node;nl.adaptivity.xmlutil.dom.Node){}[0]
305+
300306
// Targets: [linuxX64, wasmJs, wasmWasi]
301307
final object Companion { // nl.adaptivity.xmlutil.dom/Node.Companion|null[0]
302308
final const val ATTRIBUTE_NODE // nl.adaptivity.xmlutil.dom/Node.Companion.ATTRIBUTE_NODE|{}ATTRIBUTE_NODE[0]
@@ -1771,6 +1777,8 @@ final fun (nl.adaptivity.xmlutil.dom/NamedNodeMap).nl.adaptivity.xmlutil.dom/get
17711777
final fun (nl.adaptivity.xmlutil.dom/NamedNodeMap).nl.adaptivity.xmlutil.dom/iterator(): kotlin.collections/Iterator<nl.adaptivity.xmlutil.dom/Attr> // nl.adaptivity.xmlutil.dom/iterator|iterator@nl.adaptivity.xmlutil.dom.NamedNodeMap(){}[0]
17721778
final fun (nl.adaptivity.xmlutil.dom/NamedNodeMap).nl.adaptivity.xmlutil.util/iterator(): kotlin.collections/Iterator<nl.adaptivity.xmlutil.dom/Node> // nl.adaptivity.xmlutil.util/iterator|iterator@nl.adaptivity.xmlutil.dom.NamedNodeMap(){}[0]
17731779
final fun (nl.adaptivity.xmlutil.dom/Node).nl.adaptivity.xmlutil.dom/getParentElement(): nl.adaptivity.xmlutil.dom/Element? // nl.adaptivity.xmlutil.dom/getParentElement|getParentElement@nl.adaptivity.xmlutil.dom.Node(){}[0]
1780+
final fun (nl.adaptivity.xmlutil.dom/Node).nl.adaptivity.xmlutil.dom/removeChild(nl.adaptivity.xmlutil.dom/Node): nl.adaptivity.xmlutil.dom/Node // nl.adaptivity.xmlutil.dom/removeChild|removeChild@nl.adaptivity.xmlutil.dom.Node(nl.adaptivity.xmlutil.dom.Node){}[0]
1781+
final fun (nl.adaptivity.xmlutil.dom/Node).nl.adaptivity.xmlutil.dom/replaceChild(nl.adaptivity.xmlutil.dom/Node, nl.adaptivity.xmlutil.dom/Node): nl.adaptivity.xmlutil.dom/Node // nl.adaptivity.xmlutil.dom/replaceChild|replaceChild@nl.adaptivity.xmlutil.dom.Node(nl.adaptivity.xmlutil.dom.Node;nl.adaptivity.xmlutil.dom.Node){}[0]
17741782
final fun (nl.adaptivity.xmlutil.dom/NodeList).nl.adaptivity.xmlutil.dom/get(kotlin/Int): nl.adaptivity.xmlutil.dom/Node? // nl.adaptivity.xmlutil.dom/get|get@nl.adaptivity.xmlutil.dom.NodeList(kotlin.Int){}[0]
17751783
final fun (nl.adaptivity.xmlutil.dom/NodeList).nl.adaptivity.xmlutil.dom/iterator(): kotlin.collections/Iterator<nl.adaptivity.xmlutil.dom/Node> // nl.adaptivity.xmlutil.dom/iterator|iterator@nl.adaptivity.xmlutil.dom.NodeList(){}[0]
17761784
final fun (nl.adaptivity.xmlutil.dom/NodeList).nl.adaptivity.xmlutil.util/iterator(): kotlin.collections/Iterator<nl.adaptivity.xmlutil.dom/Node> // nl.adaptivity.xmlutil.util/iterator|iterator@nl.adaptivity.xmlutil.dom.NodeList(){}[0]
@@ -1875,6 +1883,12 @@ final class nl.adaptivity.xmlutil.dom/DOMException : kotlin/Exception { // nl.ad
18751883
constructor <init>(kotlin/Throwable?) // nl.adaptivity.xmlutil.dom/DOMException.<init>|<init>(kotlin.Throwable?){}[0]
18761884
}
18771885

1886+
// Targets: [linuxX64, wasmJs, wasmWasi]
1887+
final inline fun (nl.adaptivity.xmlutil.dom/Node).nl.adaptivity.xmlutil.dom/appendChild(nl.adaptivity.xmlutil.dom/Node): nl.adaptivity.xmlutil.dom/Node // nl.adaptivity.xmlutil.dom/appendChild|appendChild@nl.adaptivity.xmlutil.dom.Node(nl.adaptivity.xmlutil.dom.Node){}[0]
1888+
1889+
// Targets: [js]
1890+
final fun (nl.adaptivity.xmlutil.dom/Node).nl.adaptivity.xmlutil.dom/appendChild(nl.adaptivity.xmlutil.dom/Node): nl.adaptivity.xmlutil.dom/Node // nl.adaptivity.xmlutil.dom/appendChild|appendChild@nl.adaptivity.xmlutil.dom.Node(nl.adaptivity.xmlutil.dom.Node){}[0]
1891+
18781892
// Targets: [js]
18791893
final fun (nl.adaptivity.xmlutil/IXmlStreaming).nl.adaptivity.xmlutil/newReader(org.w3c.dom/Node): nl.adaptivity.xmlutil/DomReader // nl.adaptivity.xmlutil/newReader|newReader@nl.adaptivity.xmlutil.IXmlStreaming(org.w3c.dom.Node){}[0]
18801894

core/base/src/commonDomMain/kotlin/nl/adaptivity/xmlutil/dom/Node.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,11 @@ public actual interface Node {
5656

5757
public actual fun lookupNamespaceURI(prefix: String): String?
5858

59-
public actual fun appendChild(node: Node): Node
59+
public fun appendChild(node: Node): Node
6060

61-
public actual fun replaceChild(oldChild: Node, newChild: Node): Node
61+
public fun replaceChild(oldChild: Node, newChild: Node): Node
6262

63-
public actual fun removeChild(node: Node): Node
63+
public fun removeChild(node: Node): Node
6464

6565
public companion object {
6666
// NodeType
@@ -134,6 +134,10 @@ public actual interface Node {
134134

135135
}
136136

137+
public actual inline fun Node.appendChild(node: Node): Node = appendChild(node)
138+
public actual fun Node.replaceChild(oldChild: Node, newChild: Node): Node = replaceChild(oldChild, newChild)
139+
public actual fun Node.removeChild(node: Node): Node = removeChild(node)
140+
137141
public actual inline fun Node.getNodeType(): Short = nodeType
138142

139143
public actual inline fun Node.getNodeName(): String = nodeName

0 commit comments

Comments
 (0)