Merge "Bug 1586: Fixed missing processing of single qouted strings."
[yangtools.git] / yang / yang-data-impl / src / test / java / org / opendaylight / yangtools / yang / data / impl / MyNodeBuilder.java
index 16f57cbbe60d45d346288401a9aeab84c6cb7e48..b0a4573f6aeedbcc214ca8f1e5fa2792288fbe3c 100644 (file)
-/*\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.yangtools.yang.data.impl;\r
-\r
-import groovy.util.BuilderSupport;\r
-\r
-import java.net.URI;\r
-import java.net.URISyntaxException;\r
-import java.util.Date;\r
-import java.util.Map;\r
-import java.util.Map.Entry;\r
-\r
-import org.opendaylight.yangtools.yang.common.QName;\r
-import org.opendaylight.yangtools.yang.data.api.CompositeNode;\r
-import org.opendaylight.yangtools.yang.data.api.ModifyAction;\r
-import org.opendaylight.yangtools.yang.data.api.MutableCompositeNode;\r
-import org.opendaylight.yangtools.yang.data.api.Node;\r
-import org.opendaylight.yangtools.yang.data.api.SimpleNode;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
-/**\r
- * @author michal.rehak\r
- *\r
- */\r
-public class MyNodeBuilder extends BuilderSupport {\r
-\r
-    private static final Logger LOG = LoggerFactory\r
-            .getLogger(MyNodeBuilder.class);\r
-\r
-    private URI qnNamespace;\r
-    private String qnPrefix;\r
-    private Date qnRevision;\r
-\r
-    private CompositeNode rootNode;\r
-\r
-       /**\r
-        * @param baseQName\r
-        */\r
-       private MyNodeBuilder(QName baseQName) {\r
-               qnNamespace = baseQName.getNamespace();\r
-               qnPrefix = baseQName.getPrefix();\r
-               qnRevision = baseQName.getRevision();\r
-    }\r
-\r
-       /**\r
-        * @return initialized singleton instance\r
-        */\r
-       public static MyNodeBuilder newInstance() {\r
-       QName qName = null;\r
-       try {\r
-                       qName = new QName(\r
-                       new URI("urn:opendaylight:controller:network"),\r
-                       new Date(42), "yang-data-impl-groovyTest_", "node");\r
-        } catch (URISyntaxException e) {\r
-               LOG.error(e.getMessage(), e);\r
-        }\r
-        return new MyNodeBuilder(qName);\r
-    }\r
-\r
-    @Override\r
-    protected void setParent(Object parent, Object child) {\r
-       // do nothing\r
-        if (child instanceof AbstractNodeTO<?>) {\r
-            ((AbstractNodeTO<?>) child).setParent((CompositeNode) parent);\r
-        } else {\r
-            LOG.error("PARENTING FAILED: "+parent + " -> " + child);\r
-        }\r
-    }\r
-\r
-    @Override\r
-    protected Object createNode(Object name) {\r
-        MutableCompositeNode newNode = NodeFactory.createMutableCompositeNode(\r
-                createQName(name), getCurrentNode(), null, null, null);\r
-        NodeUtils.fixParentRelation(newNode);\r
-        return newNode;\r
-    }\r
-\r
-    @Override\r
-    protected Object createNode(Object name, @SuppressWarnings("rawtypes") Map attributes) {\r
-        ModifyAction modifyAction = processAttributes(attributes);\r
-        MutableCompositeNode newNode = NodeFactory.createMutableCompositeNode(\r
-                createQName(name), getCurrentNode(), null, modifyAction, null);\r
-        NodeUtils.fixParentRelation(newNode);\r
-        return newNode;\r
-    }\r
-\r
-\r
-    @Override\r
-    protected Object createNode(Object name, @SuppressWarnings("rawtypes") Map attributes, Object value) {\r
-        ModifyAction modifyAction = processAttributes(attributes);\r
-        SimpleNode<Object> newNode = NodeFactory.createImmutableSimpleNode(\r
-                createQName(name), (CompositeNode) getCurrent(), value, modifyAction);\r
-        NodeUtils.fixParentRelation(newNode);\r
-        return newNode;\r
-    }\r
-\r
-    /**\r
-     * @param attributes\r
-     * @return\r
-     */\r
-    private ModifyAction processAttributes(@SuppressWarnings("rawtypes") Map attributes) {\r
-        LOG.debug("attributes:" + attributes);\r
-        ModifyAction modAction = null;\r
-\r
-        @SuppressWarnings("unchecked")\r
-        Map<String, String> attributesSane = attributes;\r
-        for (Entry<String, String> attr : attributesSane.entrySet()) {\r
-            switch (attr.getKey()) {\r
-            case "xmlns":\r
-                try {\r
-                    qnNamespace = new URI(attr.getValue());\r
-                } catch (URISyntaxException e) {\r
-                    LOG.error(e.getMessage(), e);\r
-                }\r
-                break;\r
-            case "modifyAction":\r
-                modAction = ModifyAction.valueOf(attr.getValue());\r
-                break;\r
-\r
-            default:\r
-                throw new IllegalArgumentException("Attribute not supported: "+attr.getKey());\r
-            }\r
-        }\r
-        return modAction;\r
-    }\r
-\r
-    @Override\r
-    protected Object createNode(Object name, Object value) {\r
-        SimpleNode<Object> newNode = NodeFactory.createImmutableSimpleNode(createQName(name), (CompositeNode) getCurrent(), value);\r
-        NodeUtils.fixParentRelation(newNode);\r
-        return newNode;\r
-    }\r
-\r
-    private QName createQName(Object localName) {\r
-       LOG.debug("qname for: "+localName);\r
-           return new QName(qnNamespace, qnRevision, qnPrefix, (String) localName);\r
-    }\r
-\r
-       protected CompositeNode getCurrentNode() {\r
-           if (getCurrent() != null) {\r
-               if (getCurrent() instanceof CompositeNode) {\r
-                   return (CompositeNode) getCurrent();\r
-\r
-               } else {\r
-                   throw new IllegalAccessError("current node is not of type CompositeNode, but: "\r
-                       +getCurrent().getClass().getSimpleName());\r
-               }\r
-           }\r
-\r
-           return null;\r
-    }\r
-\r
-       @Override\r
-       protected Object postNodeCompletion(Object parent, Object node) {\r
-           Node<?> nodeRevisited = (Node<?>) node;\r
-           LOG.debug("postNodeCompletion at: \n  "+ nodeRevisited+"\n  "+parent);\r
-           if (nodeRevisited instanceof MutableCompositeNode) {\r
-               MutableCompositeNode mutant = (MutableCompositeNode) nodeRevisited;\r
-               if (mutant.getValue().isEmpty()) {\r
-                   LOG.error("why is it having empty value? -- " + mutant);\r
-               }\r
-               nodeRevisited = NodeFactory.createImmutableCompositeNode(\r
-                       mutant.getNodeType(), mutant.getParent(), mutant.getValue(), mutant.getModificationAction());\r
-               NodeUtils.fixChildrenRelation((CompositeNode) nodeRevisited);\r
-\r
-               if (parent == null) {\r
-                   rootNode = (CompositeNode) nodeRevisited;\r
-               } else {\r
-                   NodeUtils.fixParentRelation(nodeRevisited);\r
-                   nodeRevisited.getParent().getChildren().remove(mutant);\r
-               }\r
-           }\r
-\r
-\r
-           return nodeRevisited;\r
-       }\r
-\r
-       /**\r
-        * @return tree root\r
-        */\r
-       public CompositeNode getRootNode() {\r
-        return rootNode;\r
-    }\r
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.data.impl;
+
+import groovy.util.BuilderSupport;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Date;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.data.api.CompositeNode;
+import org.opendaylight.yangtools.yang.data.api.ModifyAction;
+import org.opendaylight.yangtools.yang.data.api.MutableCompositeNode;
+import org.opendaylight.yangtools.yang.data.api.Node;
+import org.opendaylight.yangtools.yang.data.api.SimpleNode;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author michal.rehak
+ */
+@Deprecated
+public class MyNodeBuilder extends BuilderSupport {
+
+    private static final Logger LOG = LoggerFactory.getLogger(MyNodeBuilder.class);
+
+    private URI qnNamespace;
+    private final String qnPrefix;
+    private final Date qnRevision;
+
+    private CompositeNode rootNode;
+
+    /**
+     * @param baseQName
+     */
+    private MyNodeBuilder(final QName baseQName) {
+        qnNamespace = baseQName.getNamespace();
+        qnPrefix = baseQName.getPrefix();
+        qnRevision = baseQName.getRevision();
+    }
+
+    /**
+     * @return initialized singleton instance
+     */
+    public static MyNodeBuilder newInstance() {
+        QName qName = null;
+        try {
+            qName = new QName(
+                    new URI("urn:opendaylight:controller:network"),
+                    new Date(42), "yang-data-impl-groovyTest_", "node");
+        } catch (URISyntaxException e) {
+            LOG.error(e.getMessage(), e);
+        }
+        return new MyNodeBuilder(qName);
+    }
+
+    @Override
+    protected void setParent(final Object parent, final Object child) {
+        // do nothing
+        if (child instanceof AbstractNodeTO<?>) {
+            ((AbstractNodeTO<?>) child).setParent((CompositeNode) parent);
+        } else {
+            LOG.error("PARENTING FAILED: "+parent + " -> " + child);
+        }
+    }
+
+    @Override
+    protected Object createNode(final Object name) {
+        MutableCompositeNode newNode = NodeFactory.createMutableCompositeNode(
+                createQName(name), getCurrentNode(), null, null, null);
+        NodeUtils.fixParentRelation(newNode);
+        return newNode;
+    }
+
+    @Override
+    protected Object createNode(final Object name, @SuppressWarnings("rawtypes") final Map attributes) {
+        ModifyAction modifyAction = processAttributes(attributes);
+        MutableCompositeNode newNode = NodeFactory.createMutableCompositeNode(
+                createQName(name), getCurrentNode(), null, modifyAction, null);
+        NodeUtils.fixParentRelation(newNode);
+        return newNode;
+    }
+
+
+    @Override
+    protected Object createNode(final Object name, @SuppressWarnings("rawtypes") final Map attributes, final Object value) {
+        ModifyAction modifyAction = processAttributes(attributes);
+        SimpleNode<Object> newNode = NodeFactory.createImmutableSimpleNode(
+                createQName(name), (CompositeNode) getCurrent(), value, modifyAction);
+        NodeUtils.fixParentRelation(newNode);
+        return newNode;
+    }
+
+    /**
+     * @param attributes
+     * @return
+     */
+    private ModifyAction processAttributes(@SuppressWarnings("rawtypes") final Map attributes) {
+        LOG.debug("attributes:" + attributes);
+        ModifyAction modAction = null;
+
+        @SuppressWarnings("unchecked")
+        Map<String, String> attributesSane = attributes;
+        for (Entry<String, String> attr : attributesSane.entrySet()) {
+            switch (attr.getKey()) {
+            case "xmlns":
+                try {
+                    qnNamespace = new URI(attr.getValue());
+                } catch (URISyntaxException e) {
+                    LOG.error(e.getMessage(), e);
+                }
+                break;
+            case "modifyAction":
+                modAction = ModifyAction.valueOf(attr.getValue());
+                break;
+
+            default:
+                throw new IllegalArgumentException("Attribute not supported: "+attr.getKey());
+            }
+        }
+        return modAction;
+    }
+
+    @Override
+    protected Object createNode(final Object name, final Object value) {
+        SimpleNode<Object> newNode = NodeFactory.createImmutableSimpleNode(createQName(name), (CompositeNode) getCurrent(), value);
+        NodeUtils.fixParentRelation(newNode);
+        return newNode;
+    }
+
+    private QName createQName(final Object localName) {
+        LOG.debug("qname for: "+localName);
+        return new QName(qnNamespace, qnRevision, qnPrefix, (String) localName);
+    }
+
+    protected CompositeNode getCurrentNode() {
+        if (getCurrent() != null) {
+            if (getCurrent() instanceof CompositeNode) {
+                return (CompositeNode) getCurrent();
+
+            } else {
+                throw new IllegalAccessError("current node is not of type CompositeNode, but: "
+                        +getCurrent().getClass().getSimpleName());
+            }
+        }
+
+        return null;
+    }
+
+    @Override
+    protected Object postNodeCompletion(final Object parent, final Object node) {
+        Node<?> nodeRevisited = (Node<?>) node;
+        LOG.debug("postNodeCompletion at: \n  "+ nodeRevisited+"\n  "+parent);
+        if (nodeRevisited instanceof MutableCompositeNode) {
+            MutableCompositeNode mutant = (MutableCompositeNode) nodeRevisited;
+            if (mutant.getValue().isEmpty()) {
+                LOG.error("why is it having empty value? -- " + mutant);
+            }
+            nodeRevisited = NodeFactory.createImmutableCompositeNode(
+                    mutant.getNodeType(), mutant.getParent(), mutant.getValue(), mutant.getModificationAction());
+            NodeUtils.fixChildrenRelation((CompositeNode) nodeRevisited);
+
+            if (parent == null) {
+                rootNode = (CompositeNode) nodeRevisited;
+            } else {
+                NodeUtils.fixParentRelation(nodeRevisited);
+                nodeRevisited.getParent().getValue().remove(mutant);
+            }
+        }
+
+
+        return nodeRevisited;
+    }
+
+    /**
+     * @return tree root
+     */
+    public CompositeNode getRootNode() {
+        return rootNode;
+    }
 }
\ No newline at end of file