Fix sonar warnings
[yangtools.git] / yang / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / schema / transform / base / serializer / NodeSerializerDispatcher.java
index c686c31cba4871577c415937262c62b00c5046fd..2aa989a7146166824ec536d4a42f4c76f940c04d 100644 (file)
@@ -19,9 +19,11 @@ import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MixinNode;
+import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode;
 import org.opendaylight.yangtools.yang.data.impl.schema.transform.FromNormalizedNodeSerializerFactory;
 import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
+import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
@@ -45,7 +47,7 @@ public interface NodeSerializerDispatcher<E> {
      * requires serializers to be provided. The same instance of serializer can
      * be provided in case it is immutable.
      */
-    public static abstract class BaseNodeSerializerDispatcher<E> implements NodeSerializerDispatcher<E> {
+    abstract class BaseNodeSerializerDispatcher<E> implements NodeSerializerDispatcher<E> {
         private final FromNormalizedNodeSerializerFactory<E> factory;
 
         protected BaseNodeSerializerDispatcher(final FromNormalizedNodeSerializerFactory<E> factory) {
@@ -53,8 +55,8 @@ public interface NodeSerializerDispatcher<E> {
         }
 
         @Override
-        public final Iterable<E> dispatchChildElement(Object childSchema,
-                DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
+        public final Iterable<E> dispatchChildElement(final Object childSchema,
+                final DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
             if (dataContainerChild instanceof ContainerNode) {
                 return onContainerNode(childSchema, dataContainerChild);
             } else if (dataContainerChild instanceof LeafNode<?>) {
@@ -65,7 +67,9 @@ public interface NodeSerializerDispatcher<E> {
                 if (dataContainerChild instanceof LeafSetNode<?>) {
                     return onLeafListNode(childSchema, dataContainerChild);
                 } else if (dataContainerChild instanceof MapNode) {
-                    return onListNode(childSchema, dataContainerChild);
+                    return onMapNode(childSchema, dataContainerChild);
+                } else if (dataContainerChild instanceof  UnkeyedListNode) {
+                    return onUnkeyedListNode(childSchema, dataContainerChild);
                 } else if (dataContainerChild instanceof ChoiceNode) {
                     return onChoiceNode(childSchema, dataContainerChild);
                 } else if (dataContainerChild instanceof AugmentationNode) {
@@ -75,37 +79,42 @@ public interface NodeSerializerDispatcher<E> {
             throw new IllegalArgumentException("Unable to serialize " + childSchema);
         }
 
-        private Iterable<E> onAugmentationSchema(Object childSchema,
-                DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
+        private Iterable<E> onAugmentationSchema(final Object childSchema,
+                final DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
             checkSchemaCompatibility(childSchema, AugmentationSchema.class, dataContainerChild);
             return factory.getAugmentationNodeSerializer().serialize((AugmentationSchema) childSchema,
                     (AugmentationNode) dataContainerChild);
         }
 
-        private Iterable<E> onChoiceNode(Object childSchema,
-                DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
-            checkSchemaCompatibility(childSchema, org.opendaylight.yangtools.yang.model.api.ChoiceNode.class,
+        private Iterable<E> onChoiceNode(final Object childSchema,
+                final DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
+            checkSchemaCompatibility(childSchema, ChoiceSchemaNode.class,
                     dataContainerChild);
             return factory.getChoiceNodeSerializer()
-                    .serialize((org.opendaylight.yangtools.yang.model.api.ChoiceNode) childSchema,
-                            (ChoiceNode) dataContainerChild);
+                    .serialize((ChoiceSchemaNode) childSchema, (ChoiceNode) dataContainerChild);
         }
 
-        private Iterable<E> onListNode(Object childSchema,
-                DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
+        private Iterable<E> onMapNode(final Object childSchema,
+                final DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
             checkSchemaCompatibility(childSchema, ListSchemaNode.class, dataContainerChild);
             return factory.getMapNodeSerializer().serialize((ListSchemaNode) childSchema, (MapNode) dataContainerChild);
         }
 
-        private Iterable<E> onLeafListNode(Object childSchema,
-                DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
+        private Iterable<E> onUnkeyedListNode(final Object childSchema,
+                final DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
+            checkSchemaCompatibility(childSchema, ListSchemaNode.class, dataContainerChild);
+            return factory.getUnkeyedListNodeSerializer().serialize((ListSchemaNode) childSchema, (UnkeyedListNode) dataContainerChild);
+        }
+
+        private Iterable<E> onLeafListNode(final Object childSchema,
+                final DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
             checkSchemaCompatibility(childSchema, LeafListSchemaNode.class, dataContainerChild);
             return factory.getLeafSetNodeSerializer().serialize((LeafListSchemaNode) childSchema,
                     (LeafSetNode<?>) dataContainerChild);
         }
 
-        private Iterable<E> onLeafNode(Object childSchema,
-                DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
+        private Iterable<E> onLeafNode(final Object childSchema,
+                final DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
             checkSchemaCompatibility(childSchema, LeafSchemaNode.class, dataContainerChild);
             Iterable<E> elements = factory.getLeafNodeSerializer().serialize((LeafSchemaNode) childSchema,
                     (LeafNode<?>) dataContainerChild);
@@ -113,8 +122,8 @@ public interface NodeSerializerDispatcher<E> {
             return elements;
         }
 
-        private Iterable<E> onAnyXmlNode(Object childSchema,
-                DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
+        private Iterable<E> onAnyXmlNode(final Object childSchema,
+                final DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
             checkSchemaCompatibility(childSchema, AnyXmlSchemaNode.class, dataContainerChild);
             Iterable<E> elements = factory.getAnyXmlNodeSerializer().serialize((AnyXmlSchemaNode) childSchema,
                     (AnyXmlNode) dataContainerChild);
@@ -122,16 +131,16 @@ public interface NodeSerializerDispatcher<E> {
             return elements;
         }
 
-        private static void checkOnlyOneSerializedElement(Iterable<?> elements,
-                DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
+        private static void checkOnlyOneSerializedElement(final Iterable<?> elements,
+                final DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
             final int size = Iterables.size(elements);
             Preconditions.checkArgument(size == 1,
                     "Unexpected count of elements for entry serialized from: %s, should be 1, was: %s",
                     dataContainerChild, size);
         }
 
-        private Iterable<E> onContainerNode(Object childSchema,
-                DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
+        private Iterable<E> onContainerNode(final Object childSchema,
+                final DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
             checkSchemaCompatibility(childSchema, ContainerSchemaNode.class, dataContainerChild);
 
             Iterable<E> elements = factory.getContainerNodeSerializer().serialize((ContainerSchemaNode) childSchema,
@@ -140,8 +149,8 @@ public interface NodeSerializerDispatcher<E> {
             return elements;
         }
 
-        private static void checkSchemaCompatibility(Object childSchema, Class<?> containerSchemaNodeClass,
-                DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
+        private static void checkSchemaCompatibility(final Object childSchema, final Class<?> containerSchemaNodeClass,
+                final DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataContainerChild) {
             Preconditions.checkArgument(containerSchemaNodeClass.isAssignableFrom(childSchema.getClass()),
                     "Incompatible schema: %s with node: %s, expected: %s", childSchema, dataContainerChild,
                     containerSchemaNodeClass);