Remove ValueTypeCodec 09/100609/2
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 14 Apr 2022 11:15:20 +0000 (13:15 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 14 Apr 2022 11:19:14 +0000 (13:19 +0200)
CompositeValueCodec is null-hostile, hence it can directly subclass
AbstractIllegalArgumentCodec. This leaves UnionTypeCodec as the only
ValueTypeCodec -- hence we can remove the indirection, making the type
hierachy crisper.

JIRA: MDSAL-704
Change-Id: I7661263f5dd7684cebcff7af82d76a1fe0d9b1eb
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CompositeValueCodec.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/UnionTypeCodec.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ValueTypeCodec.java [deleted file]

index 0007f8158b41bbc9b334c5064660077478715c05..ee780257fb9afe769a6765c6363c6407aa6930d4 100644 (file)
@@ -9,9 +9,10 @@ package org.opendaylight.mdsal.binding.dom.codec.impl;
 
 import static java.util.Objects.requireNonNull;
 
+import org.opendaylight.yangtools.concepts.AbstractIllegalArgumentCodec;
 import org.opendaylight.yangtools.concepts.IllegalArgumentCodec;
 
-final class CompositeValueCodec extends ValueTypeCodec {
+final class CompositeValueCodec extends AbstractIllegalArgumentCodec<Object, Object> {
     private final EncapsulatedValueCodec typeObjectCodec;
     @SuppressWarnings("rawtypes")
     // FIXME: specialize for the two possibilities
@@ -29,13 +30,14 @@ final class CompositeValueCodec extends ValueTypeCodec {
 
     @SuppressWarnings("unchecked")
     @Override
-    public Object deserialize(final Object input) {
+    protected Object deserializeImpl(final Object input) {
+        // FIXME: throws NPE on unrepresentable InstanceIdentifierCodec
         return typeObjectCodec.deserialize(valueCodec.deserialize(input));
     }
 
     @SuppressWarnings("unchecked")
     @Override
-    public Object serialize(final Object input) {
+    protected Object serializeImpl(final Object input) {
         return valueCodec.serialize(typeObjectCodec.serialize(input));
     }
 }
index 7b94e9bb46cdbfb2d03cdd72de1217e70575366a..fab4cc3fd6ba7f15cc1ebba5adad332da0b5b550 100644 (file)
@@ -24,7 +24,7 @@ import org.opendaylight.yangtools.concepts.IllegalArgumentCodec;
 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
 
-final class UnionTypeCodec extends ValueTypeCodec {
+final class UnionTypeCodec implements IllegalArgumentCodec<Object, Object> {
     private final ImmutableSet<UnionValueOptionContext> typeCodecs;
     private final Class<?> unionClass;
 
diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ValueTypeCodec.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ValueTypeCodec.java
deleted file mode 100644 (file)
index 45343e5..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.mdsal.binding.dom.codec.impl;
-
-import org.opendaylight.yangtools.concepts.IllegalArgumentCodec;
-
-/**
- * Value codec, which serializes / deserializes values from DOM simple values.
- */
-// FIXME: IllegalArgumentCodec is perhaps not appropriate here due to null behavior
-abstract class ValueTypeCodec implements IllegalArgumentCodec<Object, Object> {
-
-}