Bug 2857: Tied pre-existing implementation to BindingCodecTree.
[yangtools.git] / code-generator / binding-data-codec / src / main / java / org / opendaylight / yangtools / binding / data / codec / impl / LeafNodeCodecContext.java
index 45bbd9e9454efff8785f1bd8f8d4c24ed2b64a95..f74b109cd8731de731e991bfbf0ea5c05e3a09b1 100644 (file)
@@ -7,19 +7,26 @@
  */
 package org.opendaylight.yangtools.binding.data.codec.impl;
 
+import com.google.common.base.Optional;
+import com.google.common.collect.ImmutableCollection;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import org.opendaylight.yangtools.binding.data.codec.api.BindingCodecTreeNode;
+import org.opendaylight.yangtools.binding.data.codec.api.BindingNormalizedNodeCachingCodec;
 import org.opendaylight.yangtools.concepts.Codec;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
+import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 
-final class LeafNodeCodecContext extends NodeCodecContext implements NodeContextSupplier {
+final class LeafNodeCodecContext<D extends DataObject> extends NodeCodecContext<D> implements NodeContextSupplier {
 
     private final YangInstanceIdentifier.PathArgument yangIdentifier;
     private final Codec<Object, Object> valueCodec;
@@ -41,10 +48,69 @@ final class LeafNodeCodecContext extends NodeCodecContext implements NodeContext
     }
 
     @Override
-    protected Object dataFromNormalizedNode(final NormalizedNode<?, ?> normalizedNode) {
+    public D deserialize(final NormalizedNode<?, ?> normalizedNode) {
+        throw new UnsupportedOperationException("Leaf can not be deserialized to DataObject");
+    }
+
+    @Override
+    public NodeCodecContext<?> get() {
+        return this;
+    }
+
+    final Method getGetter() {
+        return getter;
+    }
+
+    @Override
+    public BindingCodecTreeNode<?> bindingPathArgumentChild(PathArgument arg,
+            List<YangInstanceIdentifier.PathArgument> builder) {
+        return null;
+    }
+
+    @Override
+    public BindingNormalizedNodeCachingCodec<D> createCachingCodec(
+            ImmutableCollection<Class<? extends DataObject>> cacheSpecifier) {
+        return null;
+    }
+
+    @Override
+    public Class<D> getBindingClass() {
+        return null;
+    }
+
+    @Override
+    public NormalizedNode<?, ?> serialize(D data) {
+        throw new UnsupportedOperationException("Separete serialization of leaf node is not supported.");
+    }
+
+    @Override
+    public void writeAsNormalizedNode(D data, NormalizedNodeStreamWriter writer) {
+        throw new UnsupportedOperationException("Separete serialization of leaf node is not supported.");
+    }
+
+    @Override
+    public <E extends DataObject> BindingCodecTreeNode<E> streamChild(Class<E> childClass) {
+        return null;
+    }
+
+    @Override
+    public <E extends DataObject> Optional<? extends BindingCodecTreeNode<E>> possibleStreamChild(
+            Class<E> childClass) {
+        return null;
+    }
+
+    @Override
+    public BindingCodecTreeNode<?> yangPathArgumentChild(
+            org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument child) {
+        return null;
+    }
+
+    @Override
+    protected Object deserializeObject(NormalizedNode<?, ?> normalizedNode) {
         if (normalizedNode instanceof LeafNode<?>) {
             return valueCodec.deserialize(normalizedNode.getValue());
         } else if(normalizedNode instanceof LeafSetNode<?>) {
+            @SuppressWarnings("unchecked")
             Collection<LeafSetEntryNode<Object>> domValues = ((LeafSetNode<Object>) normalizedNode).getValue();
             List<Object> result = new ArrayList<>(domValues.size());
             for (LeafSetEntryNode<Object> valueNode : domValues) {
@@ -55,13 +121,4 @@ final class LeafNodeCodecContext extends NodeCodecContext implements NodeContext
         return null;
     }
 
-    @Override
-    public NodeCodecContext get() {
-        return this;
-    }
-
-    final Method getGetter() {
-        return getter;
-    }
-
 }
\ No newline at end of file