From f8d90a6660d9bfdff8cfcb227f663215ba5a1a29 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 28 Sep 2023 22:50:38 +0200 Subject: [PATCH] Force subclasses to implement deserializeKeyValue() Just passing values through is not appropriate -- everyone needs to explicitly deal with values. Change-Id: If019d9f1194dae0faa624d2ec08e09b043a4183d Signed-off-by: Robert Varga --- .../data/codec/xml/InstanceIdentifierSerializer.java | 9 +++++++++ .../data/util/AbstractStringInstanceIdentifierCodec.java | 6 ++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/InstanceIdentifierSerializer.java b/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/InstanceIdentifierSerializer.java index f9113bf28f..8a20564846 100644 --- a/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/InstanceIdentifierSerializer.java +++ b/codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/InstanceIdentifierSerializer.java @@ -13,7 +13,9 @@ import javax.xml.namespace.NamespaceContext; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.yang.common.XMLNamespace; import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree; +import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement; +import org.opendaylight.yangtools.yang.model.util.LeafrefResolver; final class InstanceIdentifierSerializer extends AbstractInstanceIdentifierCodec { private final NamespacePrefixes prefixes; @@ -38,4 +40,11 @@ final class InstanceIdentifierSerializer extends AbstractInstanceIdentifierCodec protected String prefixForNamespace(final XMLNamespace namespace) { return prefixes.encodePrefix(namespace); } + + @Override + protected Object deserializeKeyValue(final DataSchemaNode schemaNode, final LeafrefResolver resolver, + final String value) { + // This is deserialize() path, we do not support that in this class + throw new UnsupportedOperationException("Not implemented"); + } } diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractStringInstanceIdentifierCodec.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractStringInstanceIdentifierCodec.java index d5a0672f6e..aff334bfb6 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractStringInstanceIdentifierCodec.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractStringInstanceIdentifierCodec.java @@ -155,10 +155,8 @@ public abstract class AbstractStringInstanceIdentifierCodec extends AbstractName */ protected abstract @NonNull DataSchemaContextTree getDataContextTree(); - protected Object deserializeKeyValue(final DataSchemaNode schemaNode, final LeafrefResolver resolver, - final String value) { - return value; - } + protected abstract @NonNull Object deserializeKeyValue(@NonNull DataSchemaNode schemaNode, + @NonNull LeafrefResolver resolver, String value); @Override protected final YangInstanceIdentifier deserializeImpl(final String data) { -- 2.36.6