Merge "Tests for TreeNodeUtils"
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / builder / util / AbstractDocumentedDataNodeContainerBuilder.java
index 1c5022368a9e065a1cbea68c0aec2c4e1bd4f320..6877538607c62f64a4c7db3005b3729aaab4a96a 100644 (file)
@@ -6,8 +6,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.builder.util;
 
-import java.net.URI;
-import java.util.Date;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
@@ -16,6 +14,7 @@ import java.util.TreeSet;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.DocumentedNode;
 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
@@ -34,7 +33,7 @@ import org.opendaylight.yangtools.yang.parser.util.YangParseException;
 public abstract class AbstractDocumentedDataNodeContainerBuilder extends AbstractDocumentedNodeBuilder implements DataNodeContainerBuilder {
     protected final QName qname;
 
-    protected final Map<QName, DataSchemaNode> childNodes = new TreeMap<>();
+    private final Map<QName, DataSchemaNode> childNodes = new TreeMap<>();
     private final Set<DataSchemaNodeBuilder> addedChildNodes = new HashSet<>();
 
     private final Set<GroupingDefinition> groupings = new TreeSet<>(Comparators.SCHEMA_NODE_COMP);
@@ -51,24 +50,27 @@ public abstract class AbstractDocumentedDataNodeContainerBuilder extends Abstrac
         this.qname = qname;
     }
 
-    public AbstractDocumentedDataNodeContainerBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path, final DataNodeContainer base) {
+    protected AbstractDocumentedDataNodeContainerBuilder(final String moduleName, final int line, final QName qname, final SchemaPath path, final DataNodeContainer base) {
         super(moduleName, line);
         this.qname = qname;
 
-        URI ns = qname.getNamespace();
-        Date rev = qname.getRevision();
-        String pref = qname.getPrefix();
-
         // We do copy of child nodes with namespace change
         // FIXME: Copy should be part of builder API so impl we prevent
         // cyclic dependencies and each builder carries its own semantic for copy.
-        addedChildNodes.addAll(BuilderUtils.wrapChildNodes(moduleName, line, base.getChildNodes(), path, ns, rev, pref));
-        addedGroupings.addAll(BuilderUtils.wrapGroupings(moduleName, line, base.getGroupings(), path, ns, rev, pref));
-        addedTypedefs.addAll(BuilderUtils.wrapTypedefs(moduleName, line, base, path, ns, rev, pref));
+        addedChildNodes.addAll(BuilderUtils.wrapChildNodes(moduleName, line, base.getChildNodes(), path, qname));
+        addedGroupings.addAll(BuilderUtils.wrapGroupings(moduleName, line, base.getGroupings(), path, qname));
+        addedTypedefs.addAll(BuilderUtils.wrapTypedefs(moduleName, line, base, path, qname));
         // FIXME: unkownSchemaNodes should be available in DataNodeContainer
-//        addedUnknownNodes.addAll(BuilderUtils.wrapUnknownNodes(moduleName, line, base.getUnknownSchemaNodes(), path, ns,
-//                rev, pref));
+        // addedUnknownNodes.addAll(BuilderUtils.wrapUnknownNodes(moduleName,
+        // line, base.getUnknownSchemaNodes(), path, qname));
         usesNodes.addAll(base.getUses());
+
+        if (base instanceof DocumentedNode) {
+            DocumentedNode node = (DocumentedNode) base;
+            setDescription(node.getDescription());
+            setReference(node.getReference());
+            setStatus(node.getStatus());
+        }
     }
 
     @Override