diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 5aa8c016e..210dc10e2 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -12,8 +12,8 @@ pool: strategy: matrix: - jdk11: - jdk_version: "1.11" +# jdk11: +# jdk_version: "1.11" jdk17: jdk_version: "1.17" maxParallel: 2 diff --git a/xmlserializable/api/android/xmlserializable.api b/xmlserializable/api/android/xmlserializable.api index 2f897310e..9ea157afc 100644 --- a/xmlserializable/api/android/xmlserializable.api +++ b/xmlserializable/api/android/xmlserializable.api @@ -68,53 +68,6 @@ public final class nl/adaptivity/xmlutil/xmlserializable/SerializableFunctionsKt public static final fun writeChildren2 (Lnl/adaptivity/xmlutil/XmlWriter;Ljava/lang/Iterable;)V } -public final class nl/adaptivity/xmlutil/xmlserializable/SerializableList : nl/adaptivity/xmlutil/xmlserializable/BaseSerializableContainer, java/util/List, kotlin/jvm/internal/markers/KMappedMarker { - public fun (Ljavax/xml/namespace/QName;Ljava/util/List;)V - public synthetic fun add (ILjava/lang/Object;)V - public fun add (ILnl/adaptivity/xmlutil/xmlserializable/XmlSerializable;)V - public synthetic fun add (Ljava/lang/Object;)Z - public fun add (Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable;)Z - public fun addAll (ILjava/util/Collection;)Z - public fun addAll (Ljava/util/Collection;)Z - public synthetic fun addFirst (Ljava/lang/Object;)V - public fun addFirst (Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable;)V - public synthetic fun addLast (Ljava/lang/Object;)V - public fun addLast (Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable;)V - public fun clear ()V - public final fun contains (Ljava/lang/Object;)Z - public fun contains (Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable;)Z - public fun containsAll (Ljava/util/Collection;)Z - public synthetic fun get (I)Ljava/lang/Object; - public fun get (I)Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable; - public fun getChildren ()Ljava/lang/Iterable; - public fun getSize ()I - public final fun indexOf (Ljava/lang/Object;)I - public fun indexOf (Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable;)I - public fun isEmpty ()Z - public fun iterator ()Ljava/util/Iterator; - public final fun lastIndexOf (Ljava/lang/Object;)I - public fun lastIndexOf (Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable;)I - public fun listIterator ()Ljava/util/ListIterator; - public fun listIterator (I)Ljava/util/ListIterator; - public synthetic fun remove (I)Ljava/lang/Object; - public fun remove (I)Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable; - public fun remove (Ljava/lang/Object;)Z - public fun removeAll (Ljava/util/Collection;)Z - public synthetic fun removeFirst ()Ljava/lang/Object; - public fun removeFirst ()Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable; - public synthetic fun removeLast ()Ljava/lang/Object; - public fun removeLast ()Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable; - public fun replaceAll (Ljava/util/function/UnaryOperator;)V - public fun retainAll (Ljava/util/Collection;)Z - public synthetic fun set (ILjava/lang/Object;)Ljava/lang/Object; - public fun set (ILnl/adaptivity/xmlutil/xmlserializable/XmlSerializable;)Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable; - public final fun size ()I - public fun sort (Ljava/util/Comparator;)V - public fun subList (II)Ljava/util/List; - public fun toArray ()[Ljava/lang/Object; - public fun toArray ([Ljava/lang/Object;)[Ljava/lang/Object; -} - public abstract interface class nl/adaptivity/xmlutil/xmlserializable/SimpleXmlDeserializable : nl/adaptivity/xmlutil/xmlserializable/XmlDeserializable { public fun deserializeChild (Lnl/adaptivity/xmlutil/XmlReader;)Z public fun deserializeChildText (Ljava/lang/CharSequence;)Z diff --git a/xmlserializable/api/jvm/xmlserializable.api b/xmlserializable/api/jvm/xmlserializable.api index 2f897310e..9ea157afc 100644 --- a/xmlserializable/api/jvm/xmlserializable.api +++ b/xmlserializable/api/jvm/xmlserializable.api @@ -68,53 +68,6 @@ public final class nl/adaptivity/xmlutil/xmlserializable/SerializableFunctionsKt public static final fun writeChildren2 (Lnl/adaptivity/xmlutil/XmlWriter;Ljava/lang/Iterable;)V } -public final class nl/adaptivity/xmlutil/xmlserializable/SerializableList : nl/adaptivity/xmlutil/xmlserializable/BaseSerializableContainer, java/util/List, kotlin/jvm/internal/markers/KMappedMarker { - public fun (Ljavax/xml/namespace/QName;Ljava/util/List;)V - public synthetic fun add (ILjava/lang/Object;)V - public fun add (ILnl/adaptivity/xmlutil/xmlserializable/XmlSerializable;)V - public synthetic fun add (Ljava/lang/Object;)Z - public fun add (Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable;)Z - public fun addAll (ILjava/util/Collection;)Z - public fun addAll (Ljava/util/Collection;)Z - public synthetic fun addFirst (Ljava/lang/Object;)V - public fun addFirst (Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable;)V - public synthetic fun addLast (Ljava/lang/Object;)V - public fun addLast (Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable;)V - public fun clear ()V - public final fun contains (Ljava/lang/Object;)Z - public fun contains (Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable;)Z - public fun containsAll (Ljava/util/Collection;)Z - public synthetic fun get (I)Ljava/lang/Object; - public fun get (I)Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable; - public fun getChildren ()Ljava/lang/Iterable; - public fun getSize ()I - public final fun indexOf (Ljava/lang/Object;)I - public fun indexOf (Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable;)I - public fun isEmpty ()Z - public fun iterator ()Ljava/util/Iterator; - public final fun lastIndexOf (Ljava/lang/Object;)I - public fun lastIndexOf (Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable;)I - public fun listIterator ()Ljava/util/ListIterator; - public fun listIterator (I)Ljava/util/ListIterator; - public synthetic fun remove (I)Ljava/lang/Object; - public fun remove (I)Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable; - public fun remove (Ljava/lang/Object;)Z - public fun removeAll (Ljava/util/Collection;)Z - public synthetic fun removeFirst ()Ljava/lang/Object; - public fun removeFirst ()Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable; - public synthetic fun removeLast ()Ljava/lang/Object; - public fun removeLast ()Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable; - public fun replaceAll (Ljava/util/function/UnaryOperator;)V - public fun retainAll (Ljava/util/Collection;)Z - public synthetic fun set (ILjava/lang/Object;)Ljava/lang/Object; - public fun set (ILnl/adaptivity/xmlutil/xmlserializable/XmlSerializable;)Lnl/adaptivity/xmlutil/xmlserializable/XmlSerializable; - public final fun size ()I - public fun sort (Ljava/util/Comparator;)V - public fun subList (II)Ljava/util/List; - public fun toArray ()[Ljava/lang/Object; - public fun toArray ([Ljava/lang/Object;)[Ljava/lang/Object; -} - public abstract interface class nl/adaptivity/xmlutil/xmlserializable/SimpleXmlDeserializable : nl/adaptivity/xmlutil/xmlserializable/XmlDeserializable { public fun deserializeChild (Lnl/adaptivity/xmlutil/XmlReader;)Z public fun deserializeChildText (Ljava/lang/CharSequence;)Z diff --git a/xmlserializable/api/xmlserializable.klib.api b/xmlserializable/api/xmlserializable.klib.api new file mode 100644 index 000000000..53b3f4053 --- /dev/null +++ b/xmlserializable/api/xmlserializable.klib.api @@ -0,0 +1,54 @@ +// Klib ABI Dump +// Targets: [js] +// Rendering settings: +// - Signature version: 2 +// - Show manifest properties: true +// - Show declarations: true + +// Library unique name: +abstract interface <#A: kotlin/Any?> nl.adaptivity.xmlutil.xmlserializable/XmlDeserializerFactory : nl.adaptivity.xmlutil/XmlDeserializerFactory<#A> { // nl.adaptivity.xmlutil.xmlserializable/XmlDeserializerFactory|null[0] + abstract fun deserialize(nl.adaptivity.xmlutil/XmlReader): #A // nl.adaptivity.xmlutil.xmlserializable/XmlDeserializerFactory.deserialize|deserialize(nl.adaptivity.xmlutil.XmlReader){}[0] +} +abstract interface nl.adaptivity.xmlutil.xmlserializable.util/SerializationProvider : nl.adaptivity.xmlutil.util/SerializationProvider { // nl.adaptivity.xmlutil.xmlserializable.util/SerializationProvider|null[0] + abstract fun <#A1: kotlin/Any> deSerializer(kotlin.reflect/KClass<#A1>): nl.adaptivity.xmlutil.xmlserializable.util/SerializationProvider.XmlDeserializerFun? // nl.adaptivity.xmlutil.xmlserializable.util/SerializationProvider.deSerializer|deSerializer(kotlin.reflect.KClass<0:0>){0§}[0] + abstract fun <#A1: kotlin/Any> serializer(kotlin.reflect/KClass<#A1>): nl.adaptivity.xmlutil.xmlserializable.util/SerializationProvider.XmlSerializerFun<#A1>? // nl.adaptivity.xmlutil.xmlserializable.util/SerializationProvider.serializer|serializer(kotlin.reflect.KClass<0:0>){0§}[0] + abstract fun interface <#A1: in kotlin/Any> XmlSerializerFun : nl.adaptivity.xmlutil.util/SerializationProvider.XmlSerializerFun<#A1> { // nl.adaptivity.xmlutil.xmlserializable.util/SerializationProvider.XmlSerializerFun|null[0] + abstract fun invoke(nl.adaptivity.xmlutil/XmlWriter, #A1) // nl.adaptivity.xmlutil.xmlserializable.util/SerializationProvider.XmlSerializerFun.invoke|invoke(nl.adaptivity.xmlutil.XmlWriter;1:0){}[0] + } + abstract interface XmlDeserializerFun : nl.adaptivity.xmlutil.util/SerializationProvider.XmlDeserializerFun { // nl.adaptivity.xmlutil.xmlserializable.util/SerializationProvider.XmlDeserializerFun|null[0] + abstract fun <#A2: kotlin/Any> invoke(nl.adaptivity.xmlutil/XmlReader, kotlin.reflect/KClass<#A2>): #A2 // nl.adaptivity.xmlutil.xmlserializable.util/SerializationProvider.XmlDeserializerFun.invoke|invoke(nl.adaptivity.xmlutil.XmlReader;kotlin.reflect.KClass<0:0>){0§}[0] + } +} +abstract interface nl.adaptivity.xmlutil.xmlserializable/ExtXmlDeserializable : nl.adaptivity.xmlutil.xmlserializable/XmlDeserializable { // nl.adaptivity.xmlutil.xmlserializable/ExtXmlDeserializable|null[0] + abstract fun deserializeChildren(nl.adaptivity.xmlutil/XmlReader) // nl.adaptivity.xmlutil.xmlserializable/ExtXmlDeserializable.deserializeChildren|deserializeChildren(nl.adaptivity.xmlutil.XmlReader){}[0] +} +abstract interface nl.adaptivity.xmlutil.xmlserializable/SimpleXmlDeserializable : nl.adaptivity.xmlutil.xmlserializable/XmlDeserializable { // nl.adaptivity.xmlutil.xmlserializable/SimpleXmlDeserializable|null[0] + open fun deserializeChild(nl.adaptivity.xmlutil/XmlReader): kotlin/Boolean // nl.adaptivity.xmlutil.xmlserializable/SimpleXmlDeserializable.deserializeChild|deserializeChild(nl.adaptivity.xmlutil.XmlReader){}[0] + open fun deserializeChildText(kotlin/CharSequence): kotlin/Boolean // nl.adaptivity.xmlutil.xmlserializable/SimpleXmlDeserializable.deserializeChildText|deserializeChildText(kotlin.CharSequence){}[0] +} +abstract interface nl.adaptivity.xmlutil.xmlserializable/XmlDeserializable { // nl.adaptivity.xmlutil.xmlserializable/XmlDeserializable|null[0] + abstract val elementName // nl.adaptivity.xmlutil.xmlserializable/XmlDeserializable.elementName|{}elementName[0] + abstract fun (): nl.adaptivity.xmlutil/QName // nl.adaptivity.xmlutil.xmlserializable/XmlDeserializable.elementName.|(){}[0] + open fun deserializeAttribute(kotlin/String?, kotlin/String, kotlin/String): kotlin/Boolean // nl.adaptivity.xmlutil.xmlserializable/XmlDeserializable.deserializeAttribute|deserializeAttribute(kotlin.String?;kotlin.String;kotlin.String){}[0] + open fun onBeforeDeserializeChildren(nl.adaptivity.xmlutil/XmlReader) // nl.adaptivity.xmlutil.xmlserializable/XmlDeserializable.onBeforeDeserializeChildren|onBeforeDeserializeChildren(nl.adaptivity.xmlutil.XmlReader){}[0] +} +abstract interface nl.adaptivity.xmlutil.xmlserializable/XmlSerializable : nl.adaptivity.xmlutil/XmlSerializable { // nl.adaptivity.xmlutil.xmlserializable/XmlSerializable|null[0] + abstract fun serialize(nl.adaptivity.xmlutil/XmlWriter) // nl.adaptivity.xmlutil.xmlserializable/XmlSerializable.serialize|serialize(nl.adaptivity.xmlutil.XmlWriter){}[0] +} +final fun (nl.adaptivity.xmlutil/IXmlStreaming).nl.adaptivity.xmlutil.xmlserializable/toString(nl.adaptivity.xmlutil.xmlserializable/XmlSerializable): kotlin/String // nl.adaptivity.xmlutil.xmlserializable/toString|toString@nl.adaptivity.xmlutil.IXmlStreaming(nl.adaptivity.xmlutil.xmlserializable.XmlSerializable){}[0] +final fun (nl.adaptivity.xmlutil/XmlStreaming).nl.adaptivity.xmlutil.xmlserializable/toString(nl.adaptivity.xmlutil.xmlserializable/XmlSerializable): kotlin/String // nl.adaptivity.xmlutil.xmlserializable/toString|toString@nl.adaptivity.xmlutil.XmlStreaming(nl.adaptivity.xmlutil.xmlserializable.XmlSerializable){}[0] +final fun (nl.adaptivity.xmlutil/XmlStreaming).nl.adaptivity.xmlutil.xmlserializable/toString(nl.adaptivity.xmlutil/XmlSerializable): kotlin/String // nl.adaptivity.xmlutil.xmlserializable/toString|toString@nl.adaptivity.xmlutil.XmlStreaming(nl.adaptivity.xmlutil.XmlSerializable){}[0] +final fun (nl.adaptivity.xmlutil/XmlWriter).nl.adaptivity.xmlutil.xmlserializable/writeChild(nl.adaptivity.xmlutil.xmlserializable/XmlSerializable?) // nl.adaptivity.xmlutil.xmlserializable/writeChild|writeChild@nl.adaptivity.xmlutil.XmlWriter(nl.adaptivity.xmlutil.xmlserializable.XmlSerializable?){}[0] +final fun (nl.adaptivity.xmlutil/XmlWriter).nl.adaptivity.xmlutil.xmlserializable/writeChild(nl.adaptivity.xmlutil/XmlSerializable?) // nl.adaptivity.xmlutil.xmlserializable/writeChild|writeChild@nl.adaptivity.xmlutil.XmlWriter(nl.adaptivity.xmlutil.XmlSerializable?){}[0] +final fun (nl.adaptivity.xmlutil/XmlWriter).nl.adaptivity.xmlutil.xmlserializable/writeChildren(kotlin.collections/Iterable?) // nl.adaptivity.xmlutil.xmlserializable/writeChildren|writeChildren@nl.adaptivity.xmlutil.XmlWriter(kotlin.collections.Iterable?){}[0] +final fun (nl.adaptivity.xmlutil/XmlWriter).nl.adaptivity.xmlutil.xmlserializable/writeChildren(kotlin.collections/Iterable?) // nl.adaptivity.xmlutil.xmlserializable/writeChildren|writeChildren@nl.adaptivity.xmlutil.XmlWriter(kotlin.collections.Iterable?){}[0] +final fun <#A: nl.adaptivity.xmlutil.xmlserializable/XmlDeserializable> (#A).nl.adaptivity.xmlutil.xmlserializable/deserializeHelper(nl.adaptivity.xmlutil/XmlReader): #A // nl.adaptivity.xmlutil.xmlserializable/deserializeHelper|deserializeHelper@0:0(nl.adaptivity.xmlutil.XmlReader){0§}[0] +final fun <#A: nl.adaptivity.xmlutil.xmlserializable/XmlSerializable> (nl.adaptivity.xmlutil/XmlWriter).nl.adaptivity.xmlutil.xmlserializable/serializeAll(kotlin.collections/Iterable<#A>) // nl.adaptivity.xmlutil.xmlserializable/serializeAll|serializeAll@nl.adaptivity.xmlutil.XmlWriter(kotlin.collections.Iterable<0:0>){0§}[0] +final fun <#A: nl.adaptivity.xmlutil.xmlserializable/XmlSerializable> (nl.adaptivity.xmlutil/XmlWriter).nl.adaptivity.xmlutil.xmlserializable/serializeAll(kotlin.sequences/Sequence<#A>) // nl.adaptivity.xmlutil.xmlserializable/serializeAll|serializeAll@nl.adaptivity.xmlutil.XmlWriter(kotlin.sequences.Sequence<0:0>){0§}[0] +final fun nl.adaptivity.xmlutil.xmlserializable/CompactFragment(nl.adaptivity.xmlutil.xmlserializable/XmlSerializable): nl.adaptivity.xmlutil.util/CompactFragment // nl.adaptivity.xmlutil.xmlserializable/CompactFragment|CompactFragment(nl.adaptivity.xmlutil.xmlserializable.XmlSerializable){}[0] +final fun nl.adaptivity.xmlutil.xmlserializable/CompactFragment(nl.adaptivity.xmlutil/XmlSerializable): nl.adaptivity.xmlutil.util/CompactFragment // nl.adaptivity.xmlutil.xmlserializable/CompactFragment|CompactFragment(nl.adaptivity.xmlutil.XmlSerializable){}[0] +open annotation class nl.adaptivity.xmlutil.xmlserializable/XmlDeserializer : kotlin/Annotation { // nl.adaptivity.xmlutil.xmlserializable/XmlDeserializer|null[0] + constructor (kotlin.reflect/KClass>) // nl.adaptivity.xmlutil.xmlserializable/XmlDeserializer.|(kotlin.reflect.KClass>){}[0] + final val value // nl.adaptivity.xmlutil.xmlserializable/XmlDeserializer.value|{}value[0] + final fun (): kotlin.reflect/KClass> // nl.adaptivity.xmlutil.xmlserializable/XmlDeserializer.value.|(){}[0] +} diff --git a/xmlserializable/build.gradle.kts b/xmlserializable/build.gradle.kts index 8a492cc7d..ee268daea 100644 --- a/xmlserializable/build.gradle.kts +++ b/xmlserializable/build.gradle.kts @@ -56,6 +56,9 @@ kotlin { applyDefaultXmlUtilHierarchyTemplate() jvm { + compilerOptions { + freeCompilerArgs.add("-Xjvm-default=all") + } compilations.all { tasks.named("${target.name}Test") { testTask.dependsOn(this) @@ -69,6 +72,9 @@ kotlin { } } jvm("android") { + compilerOptions { + freeCompilerArgs.add("-Xjvm-default=all") + } compilations.all { tasks.named("${target.name}Test") { testTask.dependsOn(this) @@ -147,6 +153,13 @@ kotlin { } +apiValidation { + klib { + enabled = true + } + ignoredClasses.add("nl.adaptivity.xmlutil.xmlserializable.SerializableList") +} + doPublish() idea { diff --git a/xmlserializable/src/javaSharedMain/kotlin/nl/adaptivity/xmlutil/xmlserializable/collectionSerialization.kt b/xmlserializable/src/javaSharedMain/kotlin/nl/adaptivity/xmlutil/xmlserializable/collectionSerialization.kt index 6ba5c07d3..68ed53738 100644 --- a/xmlserializable/src/javaSharedMain/kotlin/nl/adaptivity/xmlutil/xmlserializable/collectionSerialization.kt +++ b/xmlserializable/src/javaSharedMain/kotlin/nl/adaptivity/xmlutil/xmlserializable/collectionSerialization.kt @@ -23,6 +23,9 @@ package nl.adaptivity.xmlutil.xmlserializable import nl.adaptivity.xmlutil.QName import nl.adaptivity.xmlutil.XmlWriter import nl.adaptivity.xmlutil.smartStartTag +import java.util.* +import java.util.function.Consumer +import java.util.stream.Stream /** * Created by pdvrieze on 27/04/16. @@ -47,18 +50,79 @@ public class SerializableContainer(name: QName, delegate: I public fun Iterable.asSerializable(name: QName): SerializableContainer = SerializableContainer(name, this) -public class SerializableCollection(name: QName, delegate: Collection) : - BaseSerializableContainer(name), Collection by delegate { +public class SerializableCollection(name: QName, private val delegate: Collection) : + BaseSerializableContainer(name), Collection { override val children: Iterable get() = this + + override val size: Int get() = delegate.size + + override fun contains(element: T): Boolean = delegate.contains(element) + + override fun containsAll(elements: Collection): Boolean { + return delegate.containsAll(elements) + } + + override fun isEmpty(): Boolean = delegate.isEmpty() + + override fun iterator(): Iterator { + return delegate.iterator() + } } @Suppress("unused") public fun Collection.asSerializable(name: QName): SerializableCollection = SerializableCollection(name, this) -public class SerializableList(name: QName, delegate: List) : BaseSerializableContainer(name), - List by delegate { +public class SerializableList(name: QName, private val delegate: List) : + BaseSerializableContainer(name), List { override val children: Iterable get() = this + + override val size: Int get() = delegate.size + + override fun contains(element: T): Boolean { + return delegate.contains(element) + } + + override fun containsAll(elements: Collection): Boolean { + return delegate.containsAll(elements) + } + + override fun get(index: Int): T = delegate.get(index) + + override fun indexOf(element: T): Int { + return delegate.indexOf(element) + } + + override fun isEmpty(): Boolean = delegate.isEmpty() + + override fun iterator(): MutableIterator = delegate.iterator() as MutableIterator + + override fun lastIndexOf(element: T): Int = delegate.lastIndexOf(element) + + override fun listIterator(): MutableListIterator = delegate.listIterator() as MutableListIterator + + override fun listIterator(index: Int): MutableListIterator = delegate.listIterator(index) as MutableListIterator + + override fun subList(fromIndex: Int, toIndex: Int): MutableList { + return delegate.subList(fromIndex, toIndex) as MutableList + } + + override fun forEach(action: Consumer?) { + // Explicit delegation allows the list to optimize this + delegate.forEach(action) + } + + override fun spliterator(): Spliterator { + return delegate.spliterator() + } + + override fun parallelStream(): Stream { + return delegate.parallelStream() + } + + override fun stream(): Stream { + return delegate.stream() + } } @Suppress("unused")