summaryrefslogtreecommitdiffstats
path: root/v3po/data-impl/src/main/java/io/fd/honeycomb/v3po/data/impl/DataTreeUtils.java
diff options
context:
space:
mode:
authorMaros Marsalek <mmarsale@cisco.com>2016-04-12 10:13:21 +0200
committerMaros Marsalek <mmarsale@cisco.com>2016-04-12 10:13:21 +0200
commit5970b9ec4f014869118026001e933c9847da2509 (patch)
tree7a0cee0bad7b36e0281194cc9852cbf13c8a7c5c /v3po/data-impl/src/main/java/io/fd/honeycomb/v3po/data/impl/DataTreeUtils.java
parente1743c8eccee7d5ea8ad2c247d2575e8fd219fe4 (diff)
HONEYCOMB-8: Move data layer from impl module into submodules
Change-Id: Ic75793f65cfcad7cc2c96e7a09093e0e1802e4e5 Signed-off-by: Marek Gradzki <mgradzki@cisco.com> Signed-off-by: Maros Marsalek <mmarsale@cisco.com>
Diffstat (limited to 'v3po/data-impl/src/main/java/io/fd/honeycomb/v3po/data/impl/DataTreeUtils.java')
-rw-r--r--v3po/data-impl/src/main/java/io/fd/honeycomb/v3po/data/impl/DataTreeUtils.java76
1 files changed, 76 insertions, 0 deletions
diff --git a/v3po/data-impl/src/main/java/io/fd/honeycomb/v3po/data/impl/DataTreeUtils.java b/v3po/data-impl/src/main/java/io/fd/honeycomb/v3po/data/impl/DataTreeUtils.java
new file mode 100644
index 000000000..83ed0f263
--- /dev/null
+++ b/v3po/data-impl/src/main/java/io/fd/honeycomb/v3po/data/impl/DataTreeUtils.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2016 Cisco and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.fd.honeycomb.v3po.data.impl;
+
+import com.google.common.base.Preconditions;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import javax.annotation.Nonnull;
+import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
+import org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Utility class for various operations on DataTree.
+ */
+final class DataTreeUtils {
+ private static final Logger LOG = LoggerFactory.getLogger(DataTreeUtils.class);
+
+ private DataTreeUtils() {
+ throw new UnsupportedOperationException("Can't instantiate util class");
+ }
+
+ /**
+ * Translates children of supplied YANG ContainerNode into Binding data.
+ *
+ * @param parent ContainerNode representing data
+ * @param serializer service for serialization between Java Binding Data representation and NormalizedNode
+ * representation.
+ * @return NormalizedNode representation of parent's node children
+ */
+ static Map<InstanceIdentifier<?>, DataObject> childrenFromNormalized(@Nonnull final DataContainerNode parent,
+ @Nonnull final BindingNormalizedNodeSerializer serializer) {
+
+ Preconditions.checkNotNull(parent, "parent node should not be null");
+ Preconditions.checkNotNull(serializer, "serializer should not be null");
+
+ final Map<InstanceIdentifier<?>, DataObject> map = new HashMap<>();
+
+ final Collection<DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?>> children =
+ parent.getValue();
+
+ for (final DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> child : children) {
+ final YangInstanceIdentifier.PathArgument pathArgument = child.getIdentifier();
+ final YangInstanceIdentifier identifier = YangInstanceIdentifier.create(pathArgument);
+ LOG.debug("VppConfigDataProxy.extractDataObject() child={}, pathArgument={}, identifier={}", child,
+ pathArgument, identifier);
+
+ final Map.Entry<InstanceIdentifier<?>, DataObject> entry = serializer.fromNormalizedNode(identifier, child);
+ if (entry != null) {
+ map.put(entry.getKey(), entry.getValue());
+ }
+ }
+
+ return map;
+ }
+}