Force subclasses to implement deserializeKeyValue() 32/108032/4
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 28 Sep 2023 20:50:38 +0000 (22:50 +0200)
committerRobert Varga <nite@hq.sk>
Thu, 5 Oct 2023 12:53:57 +0000 (12:53 +0000)
Just passing values through is not appropriate -- everyone needs to
explicitly deal with values.

Change-Id: If019d9f1194dae0faa624d2ec08e09b043a4183d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
codec/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/InstanceIdentifierSerializer.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractStringInstanceIdentifierCodec.java

index f9113bf28fabcf71756fec4330fe6c7f86204eba..8a205648468c6d581cba194af8c1d5d8361ad172 100644 (file)
@@ -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");
+    }
 }
index d5a0672f6e877b7e5916ddee504fde7a47d3ba11..aff334bfb63f3eb7df5dc835f0c37ccdb6df641f 100644 (file)
@@ -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) {