Split up DataObjectCodecPrototype
[mdsal.git] / binding / mdsal-binding-dom-codec / src / main / java / org / opendaylight / mdsal / binding / dom / codec / impl / InstanceIdentifierCodec.java
index 2138c777bddab94602ac5e9e8a5698d0279f700a..b7f60447f3aa50f4bf007c4e96d823a01e7d0301 100644 (file)
@@ -15,7 +15,6 @@ import java.util.List;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingDataObjectCodecTreeNode;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingInstanceIdentifierCodec;
-import org.opendaylight.yangtools.concepts.IllegalArgumentCodec;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
@@ -23,7 +22,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgum
 
 final class InstanceIdentifierCodec implements BindingInstanceIdentifierCodec,
         //FIXME: this is not really an IllegalArgumentCodec, as it can legally return null from deserialize()
-        IllegalArgumentCodec<YangInstanceIdentifier, InstanceIdentifier<?>> {
+        ValueCodec<YangInstanceIdentifier, InstanceIdentifier<?>> {
     private final BindingCodecContext context;
 
     InstanceIdentifierCodec(final BindingCodecContext context) {
@@ -37,21 +36,20 @@ final class InstanceIdentifierCodec implements BindingInstanceIdentifierCodec,
         if (codec == null) {
             return null;
         }
-        if (codec instanceof ListNodeCodecContext && Iterables.getLast(builder) instanceof InstanceIdentifier.Item) {
+        if (codec instanceof ListCodecContext && Iterables.getLast(builder) instanceof InstanceIdentifier.Item) {
             // We ended up in list, but without key, which means it represent list as a whole,
             // which is not binding representable.
             return null;
         }
-        @SuppressWarnings("unchecked")
-        final InstanceIdentifier<T> ret = (InstanceIdentifier<T>) InstanceIdentifier.create(builder);
-        return ret;
+
+        return InstanceIdentifier.unsafeOf(builder);
     }
 
     @Override
     public @NonNull YangInstanceIdentifier fromBinding(@NonNull final InstanceIdentifier<?> bindingPath) {
         final List<PathArgument> domArgs = new ArrayList<>();
         context.getCodecContextNode(bindingPath, domArgs);
-        return YangInstanceIdentifier.create(domArgs);
+        return YangInstanceIdentifier.of(domArgs);
     }
 
     @Override