diff --git a/nmcp/src/main/kotlin/nmcp/internal/task/metadata.kt b/nmcp/src/main/kotlin/nmcp/internal/task/metadata.kt
index 06d6809..c635168 100644
--- a/nmcp/src/main/kotlin/nmcp/internal/task/metadata.kt
+++ b/nmcp/src/main/kotlin/nmcp/internal/task/metadata.kt
@@ -7,6 +7,9 @@ import nl.adaptivity.xmlutil.serialization.XmlChildrenName
import nl.adaptivity.xmlutil.serialization.XmlElement
import nl.adaptivity.xmlutil.serialization.XmlSerialName
+/**
+ * See https://maven.apache.org/xsd/repository-metadata-1.1.0.xsd
+ */
@Serializable
@XmlSerialName("metadata")
internal data class VersionMetadata(
@@ -55,6 +58,7 @@ internal data class VersionMetadata(
@Serializable
@XmlSerialName("metadata")
internal data class ArtifactMetadata(
+ val modelVersion: String = "1.1.0",
@XmlElement
val groupId: String,
@XmlElement
diff --git a/nmcp/src/test/kotlin/MetadataTest.kt b/nmcp/src/test/kotlin/MetadataTest.kt
index 4182bf5..a0bd9d6 100644
--- a/nmcp/src/test/kotlin/MetadataTest.kt
+++ b/nmcp/src/test/kotlin/MetadataTest.kt
@@ -1,3 +1,4 @@
+import java.io.File
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertNull
@@ -8,27 +9,14 @@ import nmcp.transport.encodeToXml
import nmcp.internal.task.xml
class MetadataTest {
+
@Test
- fun artifactMetadataIsDecodedSuccessfully() {
- // language=xml
- val xmlData = """
-
-
- com.apollographql.apollo
- apollo-api-jvm
-
- 5.0.0-SNAPSHOT
-
-
- 4.1.2-SNAPSHOT
- 5.0.0-SNAPSHOT
-
- 20250618175334
-
-
- """.trimIndent()
+ fun apolloArtifactMetadataIsDecodedSuccessfully() {
+ val xmlData = testData("apollo-artifact-metadata.xml")
xml.decodeFromString(xmlData).apply {
+ // The metadata doesn't have modelVersion but it is initialized to the default
+ assertEquals("1.1.0", modelVersion)
assertEquals("com.apollographql.apollo", groupId)
assertEquals("apollo-api-jvm", artifactId)
versioning.apply {
@@ -55,7 +43,7 @@ class MetadataTest {
// language=xml
val xmlData = """
-
+
com.apollographql.apollo
apollo-api-jvm
@@ -89,52 +77,8 @@ class MetadataTest {
}
@Test
- fun versionMetadataIsDecodedSuccessfully() {
- // language=xml
- val metadata = """
-
-
- com.apollographql.apollo
- apollo-api-jvm
-
- 20250618175232
-
- 20250618.175232
- 62
-
-
-
- jar
- 5.0.0-20250618.175232-62
- 20250618175232
-
-
- module
- 5.0.0-20250618.175232-62
- 20250618175232
-
-
- pom
- 5.0.0-20250618.175232-62
- 20250618175232
-
-
- javadoc
- jar
- 5.0.0-20250618.175232-62
- 20250618175232
-
-
- sources
- jar
- 5.0.0-20250618.175232-62
- 20250618175232
-
-
-
- 5.0.0-SNAPSHOT
-
- """.trimIndent()
+ fun apolloVersionMetadataIsDecodedSuccessfully() {
+ val metadata = testData("apollo-version-metadata.xml")
xml.decodeFromString(metadata).apply {
assertEquals("com.apollographql.apollo", groupId)
@@ -252,4 +196,23 @@ class MetadataTest {
val data = xml.decodeFromString(xmlData)
assertNull(data.versioning.release)
}
+
+ @Test
+ fun sealedObjectInstanceArtifactMetadataIsDecodedSuccessfully() {
+ testData("sealed-object-instances-artifact-metadata.xml").let {
+ xml.decodeFromString(it)
+ }
+ }
+
+ @Test
+ fun sealedObjectInstanceVersionMetadataIsDecodedSuccessfully() {
+ testData("sealed-object-instances-version-metadata.xml").let {
+ xml.decodeFromString(it)
+ }
+ }
+}
+
+
+private fun testData(name: String): String {
+ return File("test-data").resolve(name).readText()
}
diff --git a/nmcp/test-data/apollo-artifact-metadata.xml b/nmcp/test-data/apollo-artifact-metadata.xml
new file mode 100644
index 0000000..b9ebd43
--- /dev/null
+++ b/nmcp/test-data/apollo-artifact-metadata.xml
@@ -0,0 +1,14 @@
+
+
+ com.apollographql.apollo
+ apollo-api-jvm
+
+ 5.0.0-SNAPSHOT
+
+
+ 4.1.2-SNAPSHOT
+ 5.0.0-SNAPSHOT
+
+ 20250618175334
+
+
diff --git a/nmcp/test-data/apollo-version-metadata.xml b/nmcp/test-data/apollo-version-metadata.xml
new file mode 100644
index 0000000..e3e9109
--- /dev/null
+++ b/nmcp/test-data/apollo-version-metadata.xml
@@ -0,0 +1,42 @@
+
+
+ com.apollographql.apollo
+ apollo-api-jvm
+
+ 20250618175232
+
+ 20250618.175232
+ 62
+
+
+
+ jar
+ 5.0.0-20250618.175232-62
+ 20250618175232
+
+
+ module
+ 5.0.0-20250618.175232-62
+ 20250618175232
+
+
+ pom
+ 5.0.0-20250618.175232-62
+ 20250618175232
+
+
+ javadoc
+ jar
+ 5.0.0-20250618.175232-62
+ 20250618175232
+
+
+ sources
+ jar
+ 5.0.0-20250618.175232-62
+ 20250618175232
+
+
+
+ 5.0.0-SNAPSHOT
+
diff --git a/nmcp/test-data/sealed-object-instances-artifact-metadata.xml b/nmcp/test-data/sealed-object-instances-artifact-metadata.xml
new file mode 100644
index 0000000..b52f378
--- /dev/null
+++ b/nmcp/test-data/sealed-object-instances-artifact-metadata.xml
@@ -0,0 +1,13 @@
+
+
+ fr.smarquis.sealed
+ sealed-object-instances
+
+ 1.11.0-SNAPSHOT
+
+ 1.10.0-SNAPSHOT
+ 1.11.0-SNAPSHOT
+
+ 20250601220426
+
+
\ No newline at end of file
diff --git a/nmcp/test-data/sealed-object-instances-version-metadata.xml b/nmcp/test-data/sealed-object-instances-version-metadata.xml
new file mode 100644
index 0000000..a1f4547
--- /dev/null
+++ b/nmcp/test-data/sealed-object-instances-version-metadata.xml
@@ -0,0 +1,81 @@
+
+
+ fr.smarquis.sealed
+ sealed-object-instances
+
+ 20250706084833
+
+ 20250706.084833
+ 4
+
+
+
+ module
+ 1.11.0-20250706.084833-1
+ 20250706084833
+
+
+ html-docs
+ jar.asc
+ 1.11.0-20250706.084833-1
+ 20250706084833
+
+
+ javadoc
+ jar.asc
+ 1.11.0-20250706.084833-1
+ 20250706084833
+
+
+ pom.asc
+ 1.11.0-20250706.084833-1
+ 20250706084833
+
+
+ sources
+ jar
+ 1.11.0-20250706.084833-1
+ 20250706084833
+
+
+ html-docs
+ jar
+ 1.11.0-20250706.084833-1
+ 20250706084833
+
+
+ javadoc
+ jar
+ 1.11.0-20250706.084833-1
+ 20250706084833
+
+
+ pom
+ 1.11.0-20250706.084833-1
+ 20250706084833
+
+
+ sources
+ jar.asc
+ 1.11.0-20250706.084833-1
+ 20250706084833
+
+
+ jar.asc
+ 1.11.0-20250706.084833-1
+ 20250706084833
+
+
+ module.asc
+ 1.11.0-20250706.084833-1
+ 20250706084833
+
+
+ jar
+ 1.11.0-20250706.084833-1
+ 20250706084833
+
+
+
+ 1.11.0-SNAPSHOT
+
\ No newline at end of file