From 6661365ec2950bc7a1beaa313ae5b79b1f328806 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 14 Apr 2022 13:15:20 +0200 Subject: [PATCH] Remove ValueTypeCodec 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 --- .../dom/codec/impl/CompositeValueCodec.java | 8 +++++--- .../binding/dom/codec/impl/UnionTypeCodec.java | 2 +- .../binding/dom/codec/impl/ValueTypeCodec.java | 18 ------------------ 3 files changed, 6 insertions(+), 22 deletions(-) delete mode 100644 binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ValueTypeCodec.java diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CompositeValueCodec.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CompositeValueCodec.java index 0007f8158b..ee780257fb 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CompositeValueCodec.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CompositeValueCodec.java @@ -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 { 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)); } } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/UnionTypeCodec.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/UnionTypeCodec.java index 7b94e9bb46..fab4cc3fd6 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/UnionTypeCodec.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/UnionTypeCodec.java @@ -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 { private final ImmutableSet 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 index 45343e560f..0000000000 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ValueTypeCodec.java +++ /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 { - -} -- 2.36.6