Increased version of binding-generator to 0.5.5-SNAPSHOT.
[controller.git] / opendaylight / sal / yang-prototype / yang / yang-data-impl / src / main / java / org / opendaylight / controller / yang / data / impl / NodeFactory.java
diff --git a/opendaylight/sal/yang-prototype/yang/yang-data-impl/src/main/java/org/opendaylight/controller/yang/data/impl/NodeFactory.java b/opendaylight/sal/yang-prototype/yang/yang-data-impl/src/main/java/org/opendaylight/controller/yang/data/impl/NodeFactory.java
deleted file mode 100644 (file)
index 8e6e774..0000000
+++ /dev/null
@@ -1,261 +0,0 @@
-/*\r
- * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.controller.yang.data.impl;\r
-\r
-import java.util.AbstractMap.SimpleEntry;\r
-import java.util.ArrayList;\r
-import java.util.Arrays;\r
-import java.util.HashMap;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.Stack;\r
-\r
-import org.opendaylight.controller.yang.common.QName;\r
-import org.opendaylight.controller.yang.data.api.CompositeNode;\r
-import org.opendaylight.controller.yang.data.api.ModifyAction;\r
-import org.opendaylight.controller.yang.data.api.MutableCompositeNode;\r
-import org.opendaylight.controller.yang.data.api.MutableSimpleNode;\r
-import org.opendaylight.controller.yang.data.api.Node;\r
-import org.opendaylight.controller.yang.data.api.NodeModification;\r
-import org.opendaylight.controller.yang.data.api.SimpleNode;\r
-\r
-/**\r
- * @author michal.rehak\r
- * \r
- */\r
-public abstract class NodeFactory {\r
-\r
-    /**\r
-     * @param qName\r
-     * @param parent\r
-     * @param value\r
-     * @return simple node modification, based on given qname, value and parent\r
-     */\r
-    public static <T> SimpleNode<T> createImmutableSimpleNode(QName qName,\r
-            CompositeNode parent, T value) {\r
-        return createImmutableSimpleNode(qName, parent, value, null);\r
-    }\r
-    \r
-    /**\r
-     * @param qName\r
-     * @param parent\r
-     * @param value\r
-     * @param modifyAction \r
-     * @param original originating node, if available\r
-     * @return simple node modification, based on given qname, value and parent\r
-     */\r
-    public static <T> MutableSimpleNode<T> createMutableSimpleNode(QName qName,\r
-            CompositeNode parent, Object value, ModifyAction modifyAction, SimpleNode<T> original) {\r
-        @SuppressWarnings("unchecked")\r
-        MutableSimpleNodeTOImpl<T> simpleNodeTOImpl = \r
-                new MutableSimpleNodeTOImpl<T>(qName, parent, (T) value, modifyAction);\r
-        simpleNodeTOImpl.setOriginal(original);\r
-        return simpleNodeTOImpl;\r
-    }\r
-    \r
-    /**\r
-     * @param qName\r
-     * @param parent\r
-     * @param value\r
-     * @return composite node modification, based on given qname, value (children), parent and modifyAction\r
-     */\r
-    public static CompositeNode createImmutableCompositeNode(QName qName,\r
-            CompositeNode parent, List<Node<?>> value) {\r
-        return createImmutableCompositeNode(qName, parent, value, null);\r
-    }\r
-    \r
-    /**\r
-     * @param qName\r
-     * @param parent\r
-     * @param valueArg \r
-     * @param modifyAction \r
-     * @param original originating node, if available\r
-     * @return composite node modification, based on given qName, value (children), parent and modifyAction\r
-     */\r
-    public static MutableCompositeNode createMutableCompositeNode(QName qName,\r
-            CompositeNode parent, List<Node<?>> valueArg, ModifyAction modifyAction, CompositeNode original) {\r
-        List<Node<?>> value = valueArg;\r
-        if (value == null) {\r
-            value = new ArrayList<>();\r
-        }\r
-        MutableCompositeNodeTOImpl compositeNodeTOImpl = \r
-                new MutableCompositeNodeTOImpl(qName, parent, value, modifyAction);\r
-        compositeNodeTOImpl.setOriginal(original);\r
-        return compositeNodeTOImpl;\r
-    }\r
-    \r
-    \r
-    /**\r
-     * @param qName\r
-     * @param parent\r
-     * @param value\r
-     * @param modifyAction\r
-     * @return simple node modification, based on given qname, value, parent and modifyAction\r
-     */\r
-    public static <T> SimpleNode<T> createImmutableSimpleNode(QName qName,\r
-            CompositeNode parent, T value, ModifyAction modifyAction) {\r
-        SimpleNodeTOImpl<T> simpleNodeModTOImpl = \r
-                new SimpleNodeTOImpl<T>(qName, parent, value, modifyAction);\r
-        return simpleNodeModTOImpl;\r
-    }\r
-\r
-    /**\r
-     * @param qName\r
-     * @param parent\r
-     * @param value\r
-     * @param modifyAction \r
-     * @return composite node modification, based on given qname, value (children), parent and modifyAction\r
-     */\r
-    public static CompositeNode createImmutableCompositeNode(QName qName,\r
-            CompositeNode parent, List<Node<?>> value, ModifyAction modifyAction) {\r
-        CompositeNodeTOImpl compositeNodeModTOImpl = \r
-                new CompositeNodeTOImpl(qName, parent, value, modifyAction);\r
-        return compositeNodeModTOImpl;\r
-    }\r
-\r
-    /**\r
-     * @param node\r
-     * @return copy of given node, parent and value are the same, but parent \r
-     * has no reference to this copy \r
-     */\r
-    public static <T> SimpleNode<T> copyNode(SimpleNode<T> node) {\r
-        SimpleNode<T> twinNode = createImmutableSimpleNode(\r
-                    node.getNodeType(), node.getParent(), node.getValue());\r
-        return twinNode;\r
-    }\r
-    \r
-    /**\r
-     * @param node\r
-     * @return copy of given node, parent and value are the same, but parent \r
-     * has no reference to this copy \r
-     */\r
-    public static <T> MutableSimpleNode<T> copyNodeAsMutable(SimpleNode<T> node) {\r
-        MutableSimpleNode<T> twinNode = createMutableSimpleNode(\r
-                    node.getNodeType(), node.getParent(), node.getValue(), \r
-                    node.getModificationAction(), null);\r
-        return twinNode;\r
-    }\r
-    \r
-    /**\r
-     * @param node\r
-     * @param children \r
-     * @return copy of given node, parent and children are the same, but parent and children \r
-     * have no reference to this copy\r
-     */\r
-    public static CompositeNode copyNode(CompositeNode node, Node<?>... children) {\r
-        CompositeNode twinNode = createImmutableCompositeNode(\r
-                node.getNodeType(), node.getParent(), Arrays.asList(children), node.getModificationAction());\r
-        return twinNode;\r
-    }\r
-    \r
-    /**\r
-     * @param node\r
-     * @return copy of given node, parent and children are the same, but parent and children \r
-     * have no reference to this copy\r
-     */\r
-    public static CompositeNode copyNode(CompositeNode node) {\r
-       return copyNode(node, node.getChildren().toArray(new Node<?>[0]));\r
-    }\r
-    \r
-    /**\r
-     * @param node root of original tree\r
-     * @param originalToCopyArg (optional) empty map, where binding between original and copy \r
-     * will be stored\r
-     * @return copy of given node and all subnodes recursively\r
-     */\r
-    public static MutableCompositeNode copyDeepAsMutable(CompositeNode node, \r
-            Map<Node<?>, Node<?>> originalToCopyArg) {\r
-        \r
-        Map<Node<?>, Node<?>> originalToCopy = originalToCopyArg;\r
-        if (originalToCopy == null) {\r
-            originalToCopy = new HashMap<>();\r
-        }\r
-\r
-        MutableCompositeNode mutableRoot = createMutableCompositeNode(node.getNodeType(), null, null, \r
-                node.getModificationAction(), null);\r
-        Stack<SimpleEntry<CompositeNode, MutableCompositeNode>> jobQueue = new Stack<>();\r
-        jobQueue.push(new SimpleEntry<CompositeNode, MutableCompositeNode>(node, mutableRoot));\r
-        originalToCopy.put(node, mutableRoot);\r
-\r
-        while (!jobQueue.isEmpty()) {\r
-            SimpleEntry<CompositeNode, MutableCompositeNode> job = jobQueue.pop();\r
-            CompositeNode originalNode = job.getKey();\r
-            MutableCompositeNode mutableNode = job.getValue();\r
-            mutableNode.setValue(new ArrayList<Node<?>>());\r
-\r
-            for (Node<?> child : originalNode.getChildren()) {\r
-                Node<?> mutableAscendant = null;\r
-                if (child instanceof CompositeNode) {\r
-                    MutableCompositeNode newMutable = \r
-                            createMutableCompositeNode(child.getNodeType(), mutableNode, null, \r
-                                    ((NodeModification) child).getModificationAction(), null);\r
-                    jobQueue.push(new SimpleEntry<CompositeNode, MutableCompositeNode>(\r
-                            (CompositeNode) child, newMutable));\r
-                    mutableAscendant = newMutable;\r
-                } else if (child instanceof SimpleNode<?>) {\r
-                    mutableAscendant = \r
-                            createMutableSimpleNode(child.getNodeType(), mutableNode, \r
-                                    child.getValue(), \r
-                                    ((NodeModification) child).getModificationAction(), null);\r
-                } else {\r
-                    throw new IllegalStateException("Node class deep copy not supported: "\r
-                            +child.getClass().getName());\r
-                }\r
-\r
-                mutableNode.getChildren().add(mutableAscendant);\r
-                originalToCopy.put(child, mutableAscendant);\r
-            }\r
-            mutableNode.init();\r
-        }\r
-\r
-        return mutableRoot;\r
-    }\r
-    \r
-    /**\r
-     * @param node root of original tree\r
-     * @param originalToCopyArg (optional) empty map, where binding between original and copy \r
-     * will be stored\r
-     * @return copy of given node and all subnodes recursively\r
-     */\r
-    public static CompositeNode copyDeepAsImmutable(CompositeNode node, \r
-            Map<Node<?>, Node<?>> originalToCopyArg) {\r
-        Stack<CompositeNode> jobQueue = new Stack<>();\r
-        jobQueue.push(node);\r
-        \r
-        Map<Node<?>, Node<?>> originalToCopy = originalToCopyArg;\r
-        if (originalToCopy == null) {\r
-            originalToCopy = new HashMap<>();\r
-        }\r
-        \r
-        while (!jobQueue.isEmpty()) {\r
-            CompositeNode jobNode = jobQueue.peek();\r
-            if (!originalToCopy.isEmpty() \r
-                    && originalToCopy.keySet().containsAll(jobNode.getChildren())) {\r
-                jobQueue.pop();\r
-                List<Node<?>> newChildren = NodeUtils.collectMapValues(jobNode.getChildren(), originalToCopy);\r
-                CompositeNode nodeCopy = createImmutableCompositeNode(jobNode.getNodeType(), null, \r
-                        newChildren, jobNode.getModificationAction());\r
-                NodeUtils.fixChildrenRelation(nodeCopy);\r
-                originalToCopy.put(jobNode, nodeCopy);\r
-            } else {\r
-                for (Node<?> child : jobNode.getChildren()) {\r
-                    if (child instanceof SimpleNode<?>) {\r
-                        originalToCopy.put(child, createImmutableSimpleNode(\r
-                                child.getNodeType(), null, child.getValue(), \r
-                                ((NodeModification) child).getModificationAction()));\r
-                    } else if (child instanceof CompositeNode) {\r
-                        jobQueue.push((CompositeNode) child);\r
-                    }\r
-                }\r
-            }\r
-        }\r
-       \r
-        return (CompositeNode) originalToCopy.get(node);\r
-    }\r
-    \r
-}\r