Disconnect IdentifiableItemCodec from IllegalArgumentCodec
[mdsal.git] / binding / mdsal-binding-dom-codec / src / main / java / org / opendaylight / mdsal / binding / dom / codec / impl / IdentifiableItemCodec.java
index f7ef432da873185892d7d356afd62fe11fc75d5d..0b89bff24fda6e2ea4e277388b5c999d72c8c9a2 100644 (file)
@@ -23,7 +23,6 @@ import java.util.Map.Entry;
 import java.util.Set;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.binding.spec.naming.BindingMapping;
-import org.opendaylight.yangtools.concepts.AbstractIllegalArgumentCodec;
 import org.opendaylight.yangtools.util.ImmutableOffsetMap;
 import org.opendaylight.yangtools.util.ImmutableOffsetMapTemplate;
 import org.opendaylight.yangtools.yang.binding.Identifiable;
@@ -39,8 +38,8 @@ import org.slf4j.LoggerFactory;
 /**
  * Codec support for extracting the {@link Identifiable#key()} method return from a MapEntryNode.
  */
-abstract class IdentifiableItemCodec
-        extends AbstractIllegalArgumentCodec<NodeIdentifierWithPredicates, IdentifiableItem<?, ?>> {
+// FIXME: sealed class when we have JDK17+
+abstract class IdentifiableItemCodec {
     private static final class SingleKey extends IdentifiableItemCodec {
         private static final MethodType CTOR_TYPE = MethodType.methodType(Identifier.class, Object.class);
 
@@ -150,20 +149,17 @@ abstract class IdentifiableItemCodec
         }
     }
 
-    @Override
     @SuppressWarnings({ "rawtypes", "unchecked" })
-    protected final IdentifiableItem<?, ?> deserializeImpl(final NodeIdentifierWithPredicates input) {
-        final Identifier<?> identifier = deserializeIdentifier(input);
-        return IdentifiableItem.of((Class) identifiable, (Identifier) identifier);
+    final @NonNull IdentifiableItem<?, ?> domToBinding(final NodeIdentifierWithPredicates input) {
+        return IdentifiableItem.of((Class) identifiable, (Identifier) deserializeIdentifier(requireNonNull(input)));
     }
 
-    @Override
-    protected final NodeIdentifierWithPredicates serializeImpl(final IdentifiableItem<?, ?> input) {
+    final @NonNull NodeIdentifierWithPredicates bindingToDom(final IdentifiableItem<?, ?> input) {
         return serializeIdentifier(qname, input.getKey());
     }
 
     @SuppressWarnings("checkstyle:illegalCatch")
-    final @NonNull Identifier<?> deserializeIdentifier(final NodeIdentifierWithPredicates input) {
+    final @NonNull Identifier<?> deserializeIdentifier(final @NonNull NodeIdentifierWithPredicates input) {
         try {
             return deserializeIdentifierImpl(input);
         } catch (Throwable e) {