Skip ArrayList instantiation during deserialization
[mdsal.git] / code-generator / binding-data-codec / src / main / java / org / opendaylight / yangtools / binding / data / codec / impl / CaseNodeCodecContext.java
index 0f6400156a373d5b3d0ee8846119c92444d9beb9..86d8098fc2b769cc7e3ecd583cf9625733b09c71 100644 (file)
@@ -7,24 +7,16 @@
  */
 package org.opendaylight.yangtools.binding.data.codec.impl;
 
+import com.google.common.base.Preconditions;
 import java.util.List;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
+import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
 
-class CaseNodeCodecContext extends DataObjectCodecContext<ChoiceCaseNode> {
-
-    private final YangInstanceIdentifier.PathArgument yangIdentifier;
-
-    CaseNodeCodecContext(final Class<?> cls, final ChoiceCaseNode nodeSchema,
-            final CodecContextFactory runtimeContext) {
-        super(cls, nodeSchema.getQName().getModule(), nodeSchema, runtimeContext);
-        this.yangIdentifier = (new YangInstanceIdentifier.NodeIdentifier(nodeSchema.getQName()));
-    }
-
-    @Override
-    protected YangInstanceIdentifier.PathArgument getDomPathArgument() {
-        return yangIdentifier;
+final class CaseNodeCodecContext extends DataObjectCodecContext<ChoiceCaseNode> {
+    public CaseNodeCodecContext(final DataContainerCodecPrototype<ChoiceCaseNode> prototype) {
+        super(prototype);
     }
 
     @Override
@@ -33,4 +25,9 @@ class CaseNodeCodecContext extends DataObjectCodecContext<ChoiceCaseNode> {
         // NOOP
     }
 
+    @Override
+    protected Object dataFromNormalizedNode(final NormalizedNode<?, ?> normalizedNode) {
+        Preconditions.checkState(normalizedNode instanceof ChoiceNode);
+        return createBindingProxy((ChoiceNode) normalizedNode);
+    }
 }
\ No newline at end of file