Skip to content

Commit

Permalink
Tidy the API for XmlContextualDescriptor a bit.
Browse files Browse the repository at this point in the history
  • Loading branch information
pdvrieze committed May 24, 2024
1 parent 640097f commit 6191514
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 15 deletions.
11 changes: 9 additions & 2 deletions serialization/api/android/serialization.api
Original file line number Diff line number Diff line change
Expand Up @@ -763,6 +763,13 @@ public final class nl/adaptivity/xmlutil/serialization/structure/XmlCompositeDes
public fun isIdAttr ()Z
}

public final class nl/adaptivity/xmlutil/serialization/structure/XmlContextualDescriptor : nl/adaptivity/xmlutil/serialization/structure/XmlDescriptor {
public fun getDoInline ()Z
public fun getOutputKind ()Lnl/adaptivity/xmlutil/serialization/OutputKind;
public fun getPreserveSpace ()Z
public fun isIdAttr ()Z
}

public abstract class nl/adaptivity/xmlutil/serialization/structure/XmlDescriptor : nl/adaptivity/xmlutil/serialization/structure/SafeXmlDescriptor {
public synthetic fun <init> (Lnl/adaptivity/xmlutil/serialization/XmlSerializationPolicy;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public synthetic fun <init> (Lnl/adaptivity/xmlutil/serialization/XmlSerializationPolicy;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
Expand Down Expand Up @@ -806,8 +813,8 @@ public final class nl/adaptivity/xmlutil/serialization/structure/XmlListDescript
}

public abstract class nl/adaptivity/xmlutil/serialization/structure/XmlListLikeDescriptor : nl/adaptivity/xmlutil/serialization/structure/XmlDescriptor {
public synthetic fun <init> (Lnl/adaptivity/xmlutil/serialization/XmlConfig;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public synthetic fun <init> (Lnl/adaptivity/xmlutil/serialization/XmlConfig;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
public synthetic fun <init> (Lnl/adaptivity/xmlutil/serialization/XmlSerializationPolicy;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public synthetic fun <init> (Lnl/adaptivity/xmlutil/serialization/XmlSerializationPolicy;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun equals (Ljava/lang/Object;)Z
public final fun getDoInline ()Z
public final fun getPreserveSpace ()Z
Expand Down
11 changes: 9 additions & 2 deletions serialization/api/jvm/serialization.api
Original file line number Diff line number Diff line change
Expand Up @@ -763,6 +763,13 @@ public final class nl/adaptivity/xmlutil/serialization/structure/XmlCompositeDes
public fun isIdAttr ()Z
}

public final class nl/adaptivity/xmlutil/serialization/structure/XmlContextualDescriptor : nl/adaptivity/xmlutil/serialization/structure/XmlDescriptor {
public fun getDoInline ()Z
public fun getOutputKind ()Lnl/adaptivity/xmlutil/serialization/OutputKind;
public fun getPreserveSpace ()Z
public fun isIdAttr ()Z
}

public abstract class nl/adaptivity/xmlutil/serialization/structure/XmlDescriptor : nl/adaptivity/xmlutil/serialization/structure/SafeXmlDescriptor {
public synthetic fun <init> (Lnl/adaptivity/xmlutil/serialization/XmlSerializationPolicy;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public synthetic fun <init> (Lnl/adaptivity/xmlutil/serialization/XmlSerializationPolicy;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
Expand Down Expand Up @@ -806,8 +813,8 @@ public final class nl/adaptivity/xmlutil/serialization/structure/XmlListDescript
}

public abstract class nl/adaptivity/xmlutil/serialization/structure/XmlListLikeDescriptor : nl/adaptivity/xmlutil/serialization/structure/XmlDescriptor {
public synthetic fun <init> (Lnl/adaptivity/xmlutil/serialization/XmlConfig;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public synthetic fun <init> (Lnl/adaptivity/xmlutil/serialization/XmlConfig;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
public synthetic fun <init> (Lnl/adaptivity/xmlutil/serialization/XmlSerializationPolicy;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public synthetic fun <init> (Lnl/adaptivity/xmlutil/serialization/XmlSerializationPolicy;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;Lnl/adaptivity/xmlutil/serialization/structure/SafeParentInfo;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun equals (Ljava/lang/Object;)Z
public final fun getDoInline ()Z
public final fun getPreserveSpace ()Z
Expand Down
12 changes: 11 additions & 1 deletion serialization/api/serialization.klib.api
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,16 @@ final class nl.adaptivity.xmlutil.serialization.structure/XmlCompositeDescriptor
final val valueChild // nl.adaptivity.xmlutil.serialization.structure/XmlCompositeDescriptor.valueChild|{}valueChild[0]
final fun <get-valueChild>(): kotlin/Int // nl.adaptivity.xmlutil.serialization.structure/XmlCompositeDescriptor.valueChild.<get-valueChild>|<get-valueChild>(){}[0]
}
final class nl.adaptivity.xmlutil.serialization.structure/XmlContextualDescriptor : nl.adaptivity.xmlutil.serialization.structure/XmlDescriptor { // nl.adaptivity.xmlutil.serialization.structure/XmlContextualDescriptor|null[0]
final val doInline // nl.adaptivity.xmlutil.serialization.structure/XmlContextualDescriptor.doInline|{}doInline[0]
final fun <get-doInline>(): kotlin/Boolean // nl.adaptivity.xmlutil.serialization.structure/XmlContextualDescriptor.doInline.<get-doInline>|<get-doInline>(){}[0]
final val isIdAttr // nl.adaptivity.xmlutil.serialization.structure/XmlContextualDescriptor.isIdAttr|{}isIdAttr[0]
final fun <get-isIdAttr>(): kotlin/Boolean // nl.adaptivity.xmlutil.serialization.structure/XmlContextualDescriptor.isIdAttr.<get-isIdAttr>|<get-isIdAttr>(){}[0]
final val outputKind // nl.adaptivity.xmlutil.serialization.structure/XmlContextualDescriptor.outputKind|{}outputKind[0]
final fun <get-outputKind>(): nl.adaptivity.xmlutil.serialization/OutputKind // nl.adaptivity.xmlutil.serialization.structure/XmlContextualDescriptor.outputKind.<get-outputKind>|<get-outputKind>(){}[0]
final val preserveSpace // nl.adaptivity.xmlutil.serialization.structure/XmlContextualDescriptor.preserveSpace|{}preserveSpace[0]
final fun <get-preserveSpace>(): kotlin/Boolean // nl.adaptivity.xmlutil.serialization.structure/XmlContextualDescriptor.preserveSpace.<get-preserveSpace>|<get-preserveSpace>(){}[0]
}
final class nl.adaptivity.xmlutil.serialization.structure/XmlInlineDescriptor : nl.adaptivity.xmlutil.serialization.structure/XmlValueDescriptor { // nl.adaptivity.xmlutil.serialization.structure/XmlInlineDescriptor|null[0]
final fun equals(kotlin/Any?): kotlin/Boolean // nl.adaptivity.xmlutil.serialization.structure/XmlInlineDescriptor.equals|equals(kotlin.Any?){}[0]
final fun getElementDescriptor(kotlin/Int): nl.adaptivity.xmlutil.serialization.structure/XmlDescriptor // nl.adaptivity.xmlutil.serialization.structure/XmlInlineDescriptor.getElementDescriptor|getElementDescriptor(kotlin.Int){}[0]
Expand Down Expand Up @@ -841,7 +851,7 @@ sealed class nl.adaptivity.xmlutil.serialization.structure/XmlDescriptor : nl.ad
open fun <get-typeDescriptor>(): nl.adaptivity.xmlutil.serialization.structure/XmlTypeDescriptor // nl.adaptivity.xmlutil.serialization.structure/XmlDescriptor.typeDescriptor.<get-typeDescriptor>|<get-typeDescriptor>(){}[0]
}
sealed class nl.adaptivity.xmlutil.serialization.structure/XmlListLikeDescriptor : nl.adaptivity.xmlutil.serialization.structure/XmlDescriptor { // nl.adaptivity.xmlutil.serialization.structure/XmlListLikeDescriptor|null[0]
constructor <init>(nl.adaptivity.xmlutil.serialization/XmlConfig, nl.adaptivity.xmlutil.serialization.structure/SafeParentInfo, nl.adaptivity.xmlutil.serialization.structure/SafeParentInfo = ...) // nl.adaptivity.xmlutil.serialization.structure/XmlListLikeDescriptor.<init>|<init>(nl.adaptivity.xmlutil.serialization.XmlConfig;nl.adaptivity.xmlutil.serialization.structure.SafeParentInfo;nl.adaptivity.xmlutil.serialization.structure.SafeParentInfo){}[0]
constructor <init>(nl.adaptivity.xmlutil.serialization/XmlSerializationPolicy, nl.adaptivity.xmlutil.serialization.structure/SafeParentInfo, nl.adaptivity.xmlutil.serialization.structure/SafeParentInfo = ...) // nl.adaptivity.xmlutil.serialization.structure/XmlListLikeDescriptor.<init>|<init>(nl.adaptivity.xmlutil.serialization.XmlSerializationPolicy;nl.adaptivity.xmlutil.serialization.structure.SafeParentInfo;nl.adaptivity.xmlutil.serialization.structure.SafeParentInfo){}[0]
final val doInline // nl.adaptivity.xmlutil.serialization.structure/XmlListLikeDescriptor.doInline|{}doInline[0]
final fun <get-doInline>(): kotlin/Boolean // nl.adaptivity.xmlutil.serialization.structure/XmlListLikeDescriptor.doInline.<get-doInline>|<get-doInline>(){}[0]
final val preserveSpace // nl.adaptivity.xmlutil.serialization.structure/XmlListLikeDescriptor.preserveSpace|{}preserveSpace[0]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ internal open class XmlEncoderBase internal constructor(
) {
when {
xmlDescriptor is XmlContextualDescriptor -> {
val actualDescriptor = xmlDescriptor.resolve(serializer)
val actualDescriptor = xmlDescriptor.resolve(serializer, config, serializersModule)
val delegateEncoder = XmlEncoder(actualDescriptor, elementIndex, discriminatorName)
actualDescriptor.effectiveSerializationStrategy(serializer).serializeSafe(delegateEncoder, value)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ public sealed class XmlDescriptor(
)

SerialKind.CONTEXTUAL ->
return XmlContextualDescriptor(config, serializersModule, effectiveSerializerParent, effectiveTagParent, canBeAttribute)
return XmlContextualDescriptor(config, effectiveSerializerParent, effectiveTagParent, canBeAttribute)

else -> {} // fall through to other handler.
}
Expand Down Expand Up @@ -737,8 +737,7 @@ public class XmlAttributeMapDescriptor internal constructor(

public class XmlContextualDescriptor @ExperimentalXmlUtilApi
internal constructor(
private val config: XmlConfig,
private val serializersModule: SerializersModule,
config: XmlConfig,
serializerParent: SafeParentInfo,
tagParent: SafeParentInfo,
private val canBeAttribute: Boolean
Expand All @@ -756,7 +755,7 @@ internal constructor(
.append(")")
}

internal fun <T> resolve(serializer: SerializationStrategy<T>): XmlDescriptor {
internal fun <T> resolve(serializer: SerializationStrategy<T>, config: XmlConfig, serializersModule: SerializersModule): XmlDescriptor {
val overriddenParentInfo = DetachedParent(serializer.descriptor, useNameInfo, false)

return from(config, serializersModule, overriddenParentInfo, tagParent, canBeAttribute)
Expand Down Expand Up @@ -1135,14 +1134,14 @@ internal fun SerialDescriptor.getNameInfo(parentNamespace: Namespace?): Declared
}

public sealed class XmlListLikeDescriptor(
config: XmlConfig,
policy: XmlSerializationPolicy,
serializerParent: SafeParentInfo,
tagParent: SafeParentInfo = serializerParent
) : XmlDescriptor(config.policy, serializerParent, tagParent) {
) : XmlDescriptor(policy, serializerParent, tagParent) {

public open val isListEluded: Boolean = when {
tagParent is DetachedParent && tagParent.isDocumentRoot -> false
else -> config.policy.isListEluded(serializerParent, tagParent)
else -> policy.isListEluded(serializerParent, tagParent)
}

@ExperimentalSerializationApi
Expand Down Expand Up @@ -1180,7 +1179,7 @@ public class XmlMapDescriptor internal constructor(
serializersModule: SerializersModule,
serializerParent: SafeParentInfo,
tagParent: SafeParentInfo = serializerParent,
) : XmlListLikeDescriptor(config, serializerParent, tagParent) {
) : XmlListLikeDescriptor(config.policy, serializerParent, tagParent) {

override val outputKind: OutputKind get() = OutputKind.Element

Expand Down Expand Up @@ -1236,7 +1235,7 @@ public class XmlListDescriptor internal constructor(
serializersModule: SerializersModule,
serializerParent: SafeParentInfo,
tagParent: SafeParentInfo = serializerParent,
) : XmlListLikeDescriptor(config, serializerParent, tagParent) {
) : XmlListLikeDescriptor(config.policy, serializerParent, tagParent) {

override val outputKind: OutputKind

Expand Down

0 comments on commit 6191514

Please sign in to comment.