From 656b54e6d4c94875e3fae522d722e4f89fa388ad Mon Sep 17 00:00:00 2001 From: Stefan Oltmann Date: Wed, 13 Aug 2025 14:38:00 +0200 Subject: [PATCH 1/3] Bugfix for empty RDF tag + version bump --- .editorconfig | 2 +- .gitignore | 2 +- README.md | 2 +- build.gradle.kts | 8 +++++-- gradle/libs.versions.toml | 2 +- .../kotlin/com/ashampoo/xmp/XMPVersionInfo.kt | 2 +- .../com/ashampoo/xmp/internal/DomParser.kt | 24 +++++++++++++++++-- .../kotlin/com/ashampoo/xmp/RewriteXmpTest.kt | 2 +- .../resources/com/ashampoo/xmp/README | 3 +++ .../xmp/sample_100_formatted_canonical.xmp | 2 +- .../xmp/sample_100_formatted_compact.xmp | 2 +- .../xmp/sample_101_formatted_canonical.xmp | 2 +- .../xmp/sample_101_formatted_compact.xmp | 2 +- .../xmp/sample_102_formatted_canonical.xmp | 2 +- .../xmp/sample_102_formatted_compact.xmp | 2 +- .../xmp/sample_103_formatted_canonical.xmp | 2 +- .../xmp/sample_103_formatted_compact.xmp | 2 +- .../xmp/sample_104_formatted_canonical.xmp | 2 +- .../xmp/sample_104_formatted_compact.xmp | 2 +- .../xmp/sample_105_formatted_canonical.xmp | 2 +- .../xmp/sample_105_formatted_compact.xmp | 2 +- .../xmp/sample_106_formatted_canonical.xmp | 2 +- .../xmp/sample_106_formatted_compact.xmp | 2 +- .../xmp/sample_107_formatted_canonical.xmp | 2 +- .../xmp/sample_107_formatted_compact.xmp | 2 +- .../xmp/sample_108_formatted_canonical.xmp | 2 +- .../xmp/sample_108_formatted_compact.xmp | 2 +- .../xmp/sample_109_formatted_canonical.xmp | 2 +- .../xmp/sample_109_formatted_compact.xmp | 2 +- .../xmp/sample_10_formatted_canonical.xmp | 2 +- .../xmp/sample_10_formatted_compact.xmp | 2 +- .../resources/com/ashampoo/xmp/sample_110.xmp | 6 +++++ .../xmp/sample_110_canonical_to_compact.xmp | 7 ++++++ .../xmp/sample_110_compact_to_canonical.xmp | 7 ++++++ .../xmp/sample_110_formatted_canonical.xmp | 7 ++++++ .../xmp/sample_110_formatted_compact.xmp | 7 ++++++ .../xmp/sample_110_roundtrip_canonical.xmp | 7 ++++++ .../xmp/sample_110_roundtrip_compact.xmp | 7 ++++++ .../xmp/sample_11_formatted_canonical.xmp | 2 +- .../xmp/sample_11_formatted_compact.xmp | 2 +- .../xmp/sample_12_formatted_canonical.xmp | 2 +- .../xmp/sample_12_formatted_compact.xmp | 2 +- .../xmp/sample_13_formatted_canonical.xmp | 2 +- .../xmp/sample_13_formatted_compact.xmp | 2 +- .../xmp/sample_14_formatted_canonical.xmp | 2 +- .../xmp/sample_14_formatted_compact.xmp | 2 +- .../xmp/sample_15_formatted_canonical.xmp | 2 +- .../xmp/sample_15_formatted_compact.xmp | 2 +- .../xmp/sample_16_formatted_canonical.xmp | 2 +- .../xmp/sample_16_formatted_compact.xmp | 2 +- .../xmp/sample_17_formatted_canonical.xmp | 2 +- .../xmp/sample_17_formatted_compact.xmp | 2 +- .../xmp/sample_18_formatted_canonical.xmp | 2 +- .../xmp/sample_18_formatted_compact.xmp | 2 +- .../xmp/sample_19_formatted_canonical.xmp | 2 +- .../xmp/sample_19_formatted_compact.xmp | 2 +- .../xmp/sample_1_formatted_canonical.xmp | 2 +- .../xmp/sample_1_formatted_compact.xmp | 2 +- .../xmp/sample_20_formatted_canonical.xmp | 2 +- .../xmp/sample_20_formatted_compact.xmp | 2 +- .../xmp/sample_21_formatted_canonical.xmp | 2 +- .../xmp/sample_21_formatted_compact.xmp | 2 +- .../xmp/sample_22_formatted_canonical.xmp | 2 +- .../xmp/sample_22_formatted_compact.xmp | 2 +- .../xmp/sample_23_formatted_canonical.xmp | 2 +- .../xmp/sample_23_formatted_compact.xmp | 2 +- .../xmp/sample_24_formatted_canonical.xmp | 2 +- .../xmp/sample_24_formatted_compact.xmp | 2 +- .../xmp/sample_25_formatted_canonical.xmp | 2 +- .../xmp/sample_25_formatted_compact.xmp | 2 +- .../xmp/sample_26_formatted_canonical.xmp | 2 +- .../xmp/sample_26_formatted_compact.xmp | 2 +- .../xmp/sample_27_formatted_canonical.xmp | 2 +- .../xmp/sample_27_formatted_compact.xmp | 2 +- .../xmp/sample_28_formatted_canonical.xmp | 2 +- .../xmp/sample_28_formatted_compact.xmp | 2 +- .../xmp/sample_29_formatted_canonical.xmp | 2 +- .../xmp/sample_29_formatted_compact.xmp | 2 +- .../xmp/sample_2_formatted_canonical.xmp | 2 +- .../xmp/sample_2_formatted_compact.xmp | 2 +- .../xmp/sample_30_formatted_canonical.xmp | 2 +- .../xmp/sample_30_formatted_compact.xmp | 2 +- .../xmp/sample_31_formatted_canonical.xmp | 2 +- .../xmp/sample_31_formatted_compact.xmp | 2 +- .../xmp/sample_32_formatted_canonical.xmp | 2 +- .../xmp/sample_32_formatted_compact.xmp | 2 +- .../xmp/sample_33_formatted_canonical.xmp | 2 +- .../xmp/sample_33_formatted_compact.xmp | 2 +- .../xmp/sample_34_formatted_canonical.xmp | 2 +- .../xmp/sample_34_formatted_compact.xmp | 2 +- .../xmp/sample_35_formatted_canonical.xmp | 2 +- .../xmp/sample_35_formatted_compact.xmp | 2 +- .../xmp/sample_36_formatted_canonical.xmp | 2 +- .../xmp/sample_36_formatted_compact.xmp | 2 +- .../xmp/sample_37_formatted_canonical.xmp | 2 +- .../xmp/sample_37_formatted_compact.xmp | 2 +- .../xmp/sample_38_formatted_canonical.xmp | 2 +- .../xmp/sample_38_formatted_compact.xmp | 2 +- .../xmp/sample_39_formatted_canonical.xmp | 2 +- .../xmp/sample_39_formatted_compact.xmp | 2 +- .../xmp/sample_3_formatted_canonical.xmp | 2 +- .../xmp/sample_3_formatted_compact.xmp | 2 +- .../xmp/sample_40_formatted_canonical.xmp | 2 +- .../xmp/sample_40_formatted_compact.xmp | 2 +- .../xmp/sample_41_formatted_canonical.xmp | 2 +- .../xmp/sample_41_formatted_compact.xmp | 2 +- .../xmp/sample_42_formatted_canonical.xmp | 2 +- .../xmp/sample_42_formatted_compact.xmp | 2 +- .../xmp/sample_43_formatted_canonical.xmp | 2 +- .../xmp/sample_43_formatted_compact.xmp | 2 +- .../xmp/sample_44_formatted_canonical.xmp | 2 +- .../xmp/sample_44_formatted_compact.xmp | 2 +- .../xmp/sample_45_formatted_canonical.xmp | 2 +- .../xmp/sample_45_formatted_compact.xmp | 2 +- .../xmp/sample_46_formatted_canonical.xmp | 2 +- .../xmp/sample_46_formatted_compact.xmp | 2 +- .../xmp/sample_47_formatted_canonical.xmp | 2 +- .../xmp/sample_47_formatted_compact.xmp | 2 +- .../xmp/sample_48_formatted_canonical.xmp | 2 +- .../xmp/sample_48_formatted_compact.xmp | 2 +- .../xmp/sample_49_formatted_canonical.xmp | 2 +- .../xmp/sample_49_formatted_compact.xmp | 2 +- .../xmp/sample_4_formatted_canonical.xmp | 2 +- .../xmp/sample_4_formatted_compact.xmp | 2 +- .../xmp/sample_50_formatted_canonical.xmp | 2 +- .../xmp/sample_50_formatted_compact.xmp | 2 +- .../xmp/sample_51_formatted_canonical.xmp | 2 +- .../xmp/sample_51_formatted_compact.xmp | 2 +- .../xmp/sample_52_formatted_canonical.xmp | 2 +- .../xmp/sample_52_formatted_compact.xmp | 2 +- .../xmp/sample_53_formatted_canonical.xmp | 2 +- .../xmp/sample_53_formatted_compact.xmp | 2 +- .../xmp/sample_54_formatted_canonical.xmp | 2 +- .../xmp/sample_54_formatted_compact.xmp | 2 +- .../xmp/sample_55_formatted_canonical.xmp | 2 +- .../xmp/sample_55_formatted_compact.xmp | 2 +- .../xmp/sample_56_formatted_canonical.xmp | 2 +- .../xmp/sample_56_formatted_compact.xmp | 2 +- .../xmp/sample_57_formatted_canonical.xmp | 2 +- .../xmp/sample_57_formatted_compact.xmp | 2 +- .../xmp/sample_58_formatted_canonical.xmp | 2 +- .../xmp/sample_58_formatted_compact.xmp | 2 +- .../xmp/sample_59_formatted_canonical.xmp | 2 +- .../xmp/sample_59_formatted_compact.xmp | 2 +- .../xmp/sample_5_formatted_canonical.xmp | 2 +- .../xmp/sample_5_formatted_compact.xmp | 2 +- .../xmp/sample_60_formatted_canonical.xmp | 2 +- .../xmp/sample_60_formatted_compact.xmp | 2 +- .../xmp/sample_61_formatted_canonical.xmp | 2 +- .../xmp/sample_61_formatted_compact.xmp | 2 +- .../xmp/sample_62_formatted_canonical.xmp | 2 +- .../xmp/sample_62_formatted_compact.xmp | 2 +- .../xmp/sample_63_formatted_canonical.xmp | 2 +- .../xmp/sample_63_formatted_compact.xmp | 2 +- .../xmp/sample_64_formatted_canonical.xmp | 2 +- .../xmp/sample_64_formatted_compact.xmp | 2 +- .../xmp/sample_65_formatted_canonical.xmp | 2 +- .../xmp/sample_65_formatted_compact.xmp | 2 +- .../xmp/sample_66_formatted_canonical.xmp | 2 +- .../xmp/sample_66_formatted_compact.xmp | 2 +- .../xmp/sample_67_formatted_canonical.xmp | 2 +- .../xmp/sample_67_formatted_compact.xmp | 2 +- .../xmp/sample_68_formatted_canonical.xmp | 2 +- .../xmp/sample_68_formatted_compact.xmp | 2 +- .../xmp/sample_69_formatted_canonical.xmp | 2 +- .../xmp/sample_69_formatted_compact.xmp | 2 +- .../xmp/sample_6_formatted_canonical.xmp | 2 +- .../xmp/sample_6_formatted_compact.xmp | 2 +- .../xmp/sample_70_formatted_canonical.xmp | 2 +- .../xmp/sample_70_formatted_compact.xmp | 2 +- .../xmp/sample_71_formatted_canonical.xmp | 2 +- .../xmp/sample_71_formatted_compact.xmp | 2 +- .../xmp/sample_72_formatted_canonical.xmp | 2 +- .../xmp/sample_72_formatted_compact.xmp | 2 +- .../xmp/sample_73_formatted_canonical.xmp | 2 +- .../xmp/sample_73_formatted_compact.xmp | 2 +- .../xmp/sample_74_formatted_canonical.xmp | 2 +- .../xmp/sample_74_formatted_compact.xmp | 2 +- .../xmp/sample_75_formatted_canonical.xmp | 2 +- .../xmp/sample_75_formatted_compact.xmp | 2 +- .../xmp/sample_76_formatted_canonical.xmp | 2 +- .../xmp/sample_76_formatted_compact.xmp | 2 +- .../xmp/sample_77_formatted_canonical.xmp | 2 +- .../xmp/sample_77_formatted_compact.xmp | 2 +- .../xmp/sample_78_formatted_canonical.xmp | 2 +- .../xmp/sample_78_formatted_compact.xmp | 2 +- .../xmp/sample_79_formatted_canonical.xmp | 2 +- .../xmp/sample_79_formatted_compact.xmp | 2 +- .../xmp/sample_7_formatted_canonical.xmp | 2 +- .../xmp/sample_7_formatted_compact.xmp | 2 +- .../xmp/sample_80_formatted_canonical.xmp | 2 +- .../xmp/sample_80_formatted_compact.xmp | 2 +- .../xmp/sample_81_formatted_canonical.xmp | 2 +- .../xmp/sample_81_formatted_compact.xmp | 2 +- .../xmp/sample_82_formatted_canonical.xmp | 2 +- .../xmp/sample_82_formatted_compact.xmp | 2 +- .../xmp/sample_83_formatted_canonical.xmp | 2 +- .../xmp/sample_83_formatted_compact.xmp | 2 +- .../xmp/sample_84_formatted_canonical.xmp | 2 +- .../xmp/sample_84_formatted_compact.xmp | 2 +- .../xmp/sample_85_formatted_canonical.xmp | 2 +- .../xmp/sample_85_formatted_compact.xmp | 2 +- .../xmp/sample_86_formatted_canonical.xmp | 2 +- .../xmp/sample_86_formatted_compact.xmp | 2 +- .../xmp/sample_87_formatted_canonical.xmp | 2 +- .../xmp/sample_87_formatted_compact.xmp | 2 +- .../xmp/sample_88_formatted_canonical.xmp | 2 +- .../xmp/sample_88_formatted_compact.xmp | 2 +- .../xmp/sample_89_formatted_canonical.xmp | 2 +- .../xmp/sample_89_formatted_compact.xmp | 2 +- .../xmp/sample_8_formatted_canonical.xmp | 2 +- .../xmp/sample_8_formatted_compact.xmp | 2 +- .../xmp/sample_90_formatted_canonical.xmp | 2 +- .../xmp/sample_90_formatted_compact.xmp | 2 +- .../xmp/sample_91_formatted_canonical.xmp | 2 +- .../xmp/sample_91_formatted_compact.xmp | 2 +- .../xmp/sample_92_formatted_canonical.xmp | 2 +- .../xmp/sample_92_formatted_compact.xmp | 2 +- .../xmp/sample_93_formatted_canonical.xmp | 2 +- .../xmp/sample_93_formatted_compact.xmp | 2 +- .../xmp/sample_94_formatted_canonical.xmp | 2 +- .../xmp/sample_94_formatted_compact.xmp | 2 +- .../xmp/sample_95_formatted_canonical.xmp | 2 +- .../xmp/sample_95_formatted_compact.xmp | 2 +- .../xmp/sample_96_formatted_canonical.xmp | 2 +- .../xmp/sample_96_formatted_compact.xmp | 2 +- .../xmp/sample_97_formatted_canonical.xmp | 2 +- .../xmp/sample_97_formatted_compact.xmp | 2 +- .../xmp/sample_98_formatted_canonical.xmp | 2 +- .../xmp/sample_98_formatted_compact.xmp | 2 +- .../xmp/sample_99_formatted_canonical.xmp | 2 +- .../xmp/sample_99_formatted_compact.xmp | 2 +- .../xmp/sample_9_formatted_canonical.xmp | 2 +- .../xmp/sample_9_formatted_compact.xmp | 2 +- 234 files changed, 303 insertions(+), 228 deletions(-) create mode 100644 src/commonTest/resources/com/ashampoo/xmp/sample_110.xmp create mode 100644 src/commonTest/resources/com/ashampoo/xmp/sample_110_canonical_to_compact.xmp create mode 100644 src/commonTest/resources/com/ashampoo/xmp/sample_110_compact_to_canonical.xmp create mode 100644 src/commonTest/resources/com/ashampoo/xmp/sample_110_formatted_canonical.xmp create mode 100644 src/commonTest/resources/com/ashampoo/xmp/sample_110_formatted_compact.xmp create mode 100644 src/commonTest/resources/com/ashampoo/xmp/sample_110_roundtrip_canonical.xmp create mode 100644 src/commonTest/resources/com/ashampoo/xmp/sample_110_roundtrip_compact.xmp diff --git a/.editorconfig b/.editorconfig index a798a08..d950a5e 100644 --- a/.editorconfig +++ b/.editorconfig @@ -13,5 +13,5 @@ trim_trailing_whitespace = true [{*.yml,*.json,gradlew}] indent_size = 2 -[{*.yml,*.md,*.txt}] +[{*.yml,*.md,*.txt,*.kts}] max_line_length = off diff --git a/.gitignore b/.gitignore index 9d4419f..53ad9dd 100644 --- a/.gitignore +++ b/.gitignore @@ -21,7 +21,7 @@ /.idea/uiDesigner.xml /.idea/vcs.xml /.idea/workspace.xml -/.idea/xmpcore.iml +/.idea/*.iml /.kotlin/ /build/ /local.properties diff --git a/README.md b/README.md index 7592d33..dbe50ba 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ It's part of [Ashampoo Photo Organizer](https://ashampoo.com/photo-organizer). ## Installation ``` -implementation("com.ashampoo:xmpcore:1.6.0") +implementation("com.ashampoo:xmpcore:1.6.1") ``` ## How to use diff --git a/build.gradle.kts b/build.gradle.kts index b834ccc..22eb0df 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -311,8 +311,12 @@ mavenPublishing { developers { developer { - name = "Software Rangers GmbH" - url = "https://software-rangers.com/" + name = "Stefan Oltmann" + url = "https://stefan-oltmann.de/" + organization = "Software Rangers GmbH" + organizationUrl = "https://software-rangers.com/" + roles = listOf("maintainer", "developer") + properties = mapOf("github" to "StefanOltmann") } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d8a0ce0..a3da164 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -17,7 +17,7 @@ maven-publish = "0.34.0" resources = "0.10.1" # Libraries -xmlutil = "0.91.1" +xmlutil = "0.91.2" kotlinx-io = "0.8.0" [libraries] diff --git a/src/commonMain/kotlin/com/ashampoo/xmp/XMPVersionInfo.kt b/src/commonMain/kotlin/com/ashampoo/xmp/XMPVersionInfo.kt index 514cd11..14b60a9 100644 --- a/src/commonMain/kotlin/com/ashampoo/xmp/XMPVersionInfo.kt +++ b/src/commonMain/kotlin/com/ashampoo/xmp/XMPVersionInfo.kt @@ -9,7 +9,7 @@ public object XMPVersionInfo { public const val MAJOR: Int = 1 public const val MINOR: Int = 6 - public const val PATCH: Int = 0 + public const val PATCH: Int = 1 public const val VERSION_MESSAGE: String = "Ashampoo XMP Core $MAJOR.$MINOR.$PATCH" diff --git a/src/commonMain/kotlin/com/ashampoo/xmp/internal/DomParser.kt b/src/commonMain/kotlin/com/ashampoo/xmp/internal/DomParser.kt index d18033f..37ad4de 100644 --- a/src/commonMain/kotlin/com/ashampoo/xmp/internal/DomParser.kt +++ b/src/commonMain/kotlin/com/ashampoo/xmp/internal/DomParser.kt @@ -12,6 +12,9 @@ internal object DomParser { private const val RDF_RDF_END = "" + private const val SINGLE_SELF_CLOSING_RDF_TAG = + """""" + @OptIn(XmlUtilInternal::class, ExperimentalXmlUtilApi::class) fun parseDocumentFromString(input: String): Document { @@ -39,20 +42,37 @@ internal object DomParser { if (rdfStartPos == -1) throw XMPException("String ' the document may contain a single self-closing RDF tag. + */ + if (input.contains(SINGLE_SELF_CLOSING_RDF_TAG)) + return parseDocumentFromStringInternal(SINGLE_SELF_CLOSING_RDF_TAG) + throw XMPException("String '' was not found in XMP.", XMPErrorConst.BADXMP) + } val trimmedInput = input.substring( rdfStartPos until rdfEndPos + RDF_RDF_END.length ) + return parseDocumentFromStringInternal(trimmedInput) + } + + @OptIn(ExperimentalXmlUtilApi::class) + private fun parseDocumentFromStringInternal(input: String): Document { + + if (input.isBlank()) + throw XMPException("XMP is empty.", XMPErrorConst.BADXMP) + try { val document = xmlStreaming.genericDomImplementation.createDocument() val writer = xmlStreaming.newWriter(document) - val reader = xmlStreaming.newReader(trimmedInput) + val reader = xmlStreaming.newReader(input) do { val event = reader.next() diff --git a/src/commonTest/kotlin/com/ashampoo/xmp/RewriteXmpTest.kt b/src/commonTest/kotlin/com/ashampoo/xmp/RewriteXmpTest.kt index fec78ba..c8865cf 100644 --- a/src/commonTest/kotlin/com/ashampoo/xmp/RewriteXmpTest.kt +++ b/src/commonTest/kotlin/com/ashampoo/xmp/RewriteXmpTest.kt @@ -230,7 +230,7 @@ class RewriteXmpTest { * triggers XMPNormalizer.tweakOldXMP() */ - const val TEST_PHOTO_COUNT = 109 + const val TEST_PHOTO_COUNT = 110 private const val RESOURCE_PATH: String = "src/commonTest/resources/com/ashampoo/xmp" } diff --git a/src/commonTest/resources/com/ashampoo/xmp/README b/src/commonTest/resources/com/ashampoo/xmp/README index 0dab985..6561904 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/README +++ b/src/commonTest/resources/com/ashampoo/xmp/README @@ -35,3 +35,6 @@ Triggers XMPNormalizer.tweakOldXMP() # sample_101.xml to sample_109.xmp Collection of problematic files from QA + +# sample_110.xml +File that has a RDF with self-closing tag diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_100_formatted_canonical.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_100_formatted_canonical.xmp index 1119b79..163510b 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_100_formatted_canonical.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_100_formatted_canonical.xmp @@ -1,5 +1,5 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_110_canonical_to_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_110_canonical_to_compact.xmp new file mode 100644 index 0000000..1af3d77 --- /dev/null +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_110_canonical_to_compact.xmp @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_110_compact_to_canonical.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_110_compact_to_canonical.xmp new file mode 100644 index 0000000..1af3d77 --- /dev/null +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_110_compact_to_canonical.xmp @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_110_formatted_canonical.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_110_formatted_canonical.xmp new file mode 100644 index 0000000..1af3d77 --- /dev/null +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_110_formatted_canonical.xmp @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_110_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_110_formatted_compact.xmp new file mode 100644 index 0000000..1af3d77 --- /dev/null +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_110_formatted_compact.xmp @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_110_roundtrip_canonical.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_110_roundtrip_canonical.xmp new file mode 100644 index 0000000..1af3d77 --- /dev/null +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_110_roundtrip_canonical.xmp @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_110_roundtrip_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_110_roundtrip_compact.xmp new file mode 100644 index 0000000..1af3d77 --- /dev/null +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_110_roundtrip_compact.xmp @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_11_formatted_canonical.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_11_formatted_canonical.xmp index 3cb4739..4cec581 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_11_formatted_canonical.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_11_formatted_canonical.xmp @@ -1,5 +1,5 @@ - + - + - + - + - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_13_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_13_formatted_compact.xmp index 181bbd0..554e0b3 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_13_formatted_compact.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_13_formatted_compact.xmp @@ -1,5 +1,5 @@ - + - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_14_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_14_formatted_compact.xmp index 8c758af..25c3884 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_14_formatted_compact.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_14_formatted_compact.xmp @@ -1,5 +1,5 @@ - + - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_15_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_15_formatted_compact.xmp index 57a1cf1..f3db2bc 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_15_formatted_compact.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_15_formatted_compact.xmp @@ -1,5 +1,5 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_31_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_31_formatted_compact.xmp index 8c758af..25c3884 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_31_formatted_compact.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_31_formatted_compact.xmp @@ -1,5 +1,5 @@ - + - + - + - + - + - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_34_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_34_formatted_compact.xmp index 8c758af..25c3884 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_34_formatted_compact.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_34_formatted_compact.xmp @@ -1,5 +1,5 @@ - + - + - + - + - + - + - + - + - + - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_39_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_39_formatted_compact.xmp index 181bbd0..554e0b3 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_39_formatted_compact.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_39_formatted_compact.xmp @@ -1,5 +1,5 @@ - + - + - + - + - + - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_41_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_41_formatted_compact.xmp index 181bbd0..554e0b3 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_41_formatted_compact.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_41_formatted_compact.xmp @@ -1,5 +1,5 @@ - + - + - + - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_43_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_43_formatted_compact.xmp index cdfb58f..cee52a0 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_43_formatted_compact.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_43_formatted_compact.xmp @@ -1,5 +1,5 @@ - + - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_44_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_44_formatted_compact.xmp index 51c36ba..be73539 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_44_formatted_compact.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_44_formatted_compact.xmp @@ -1,5 +1,5 @@ - + - + - + - + - + - + - + - + - + - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_49_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_49_formatted_compact.xmp index 8c758af..25c3884 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_49_formatted_compact.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_49_formatted_compact.xmp @@ -1,5 +1,5 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + Date: Wed, 13 Aug 2025 14:57:39 +0200 Subject: [PATCH 2/3] Updated test data --- .../com/ashampoo/xmp/sample_110_formatted_canonical.xmp | 2 +- .../resources/com/ashampoo/xmp/sample_110_formatted_compact.xmp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_110_formatted_canonical.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_110_formatted_canonical.xmp index 1af3d77..b3be1ea 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_110_formatted_canonical.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_110_formatted_canonical.xmp @@ -1,5 +1,5 @@ - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_110_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_110_formatted_compact.xmp index 1af3d77..b3be1ea 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_110_formatted_compact.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_110_formatted_compact.xmp @@ -1,5 +1,5 @@ - + From fe6d6810e3ff3153ad354183ffc284542af33a66 Mon Sep 17 00:00:00 2001 From: Stefan Oltmann Date: Wed, 13 Aug 2025 15:01:01 +0200 Subject: [PATCH 3/3] Maven Central badge shows outdated version. --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index dbe50ba..d5ae5ac 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,6 @@ ![JS](https://img.shields.io/badge/-JS-gray.svg?style=flat) ![WASM](https://img.shields.io/badge/-WASM-gray.svg?style=flat) ![WASI](https://img.shields.io/badge/-WASI-gray.svg?style=flat) -[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.ashampoo/xmpcore/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.ashampoo/xmpcore) This library is a port of Adobe's XMP SDK to Kotlin Multiplatform by Ashampoo.