Make IdentifiableItemCodec an IllegalArgumentCodec 63/83963/3
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 26 Aug 2019 08:43:25 +0000 (10:43 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 26 Aug 2019 09:18:14 +0000 (11:18 +0200)
The interface contract matches the expectations, hence we can
cleanly apply the pattern.

JIRA: YANGTOOLS-1017
Change-Id: I7b0efcfa0981646071c3715daa691559f923c285
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/IdentifiableItemCodec.java

index 6f44a8ca1f8465fd315eb27bb487accfb8e81546..9af7ffb12b46cb66552a84acc4cbac7eef65e984 100644 (file)
@@ -22,7 +22,7 @@ import java.util.Map;
 import java.util.Map.Entry;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.binding.spec.naming.BindingMapping;
-import org.opendaylight.yangtools.concepts.Codec;
+import org.opendaylight.yangtools.concepts.AbstractIllegalArgumentCodec;
 import org.opendaylight.yangtools.util.ImmutableOffsetMap;
 import org.opendaylight.yangtools.util.ImmutableOffsetMapTemplate;
 import org.opendaylight.yangtools.util.SharedSingletonMapTemplate;
@@ -36,7 +36,8 @@ import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
 /**
  * Codec support for extracting the {@link Identifiable#key()} method return from a MapEntryNode.
  */
-abstract class IdentifiableItemCodec implements Codec<NodeIdentifierWithPredicates, IdentifiableItem<?, ?>> {
+abstract class IdentifiableItemCodec
+        extends AbstractIllegalArgumentCodec<NodeIdentifierWithPredicates, IdentifiableItem<?, ?>> {
     private static final class SingleKey extends IdentifiableItemCodec {
         private static final MethodType CTOR_TYPE = MethodType.methodType(Identifier.class, Object.class);
 
@@ -147,14 +148,14 @@ abstract class IdentifiableItemCodec implements Codec<NodeIdentifierWithPredicat
     }
 
     @Override
-    @SuppressWarnings({ "rawtypes", "unchecked", "checkstyle:illegalCatch" })
-    public final IdentifiableItem<?, ?> deserialize(final NodeIdentifierWithPredicates input) {
+    @SuppressWarnings({ "rawtypes", "unchecked" })
+    protected final IdentifiableItem<?, ?> deserializeImpl(final NodeIdentifierWithPredicates input) {
         final Identifier<?> identifier = deserializeIdentifier(input);
         return IdentifiableItem.of((Class) identifiable, (Identifier) identifier);
     }
 
     @Override
-    public final NodeIdentifierWithPredicates serialize(final IdentifiableItem<?, ?> input) {
+    protected final NodeIdentifierWithPredicates serializeImpl(final IdentifiableItem<?, ?> input) {
         return serializeIdentifier(qname, input.getKey());
     }