BUG-994: do not use SchemaPath.getPath() 47/8447/2
authorMartin Vitez <mvitez@cisco.com>
Mon, 30 Jun 2014 06:57:35 +0000 (08:57 +0200)
committerMartin Vitez <mvitez@cisco.com>
Mon, 30 Jun 2014 07:38:25 +0000 (09:38 +0200)
Change-Id: If513126e831b6d1d8039fa2d3d1e298bd9fd411e
Signed-off-by: Martin Vitez <mvitez@cisco.com>
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/BuilderUtils.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserImpl.java

index 19daf45e8822afe39d6026c5f99ded4743cf7a92..167b62f665eb8ccf0481e79a4fa86d268890ddaf 100644 (file)
@@ -7,6 +7,12 @@
  */
 package org.opendaylight.yangtools.yang.parser.builder.impl;
 
+import com.google.common.base.Function;
+import com.google.common.base.Optional;
+import com.google.common.base.Preconditions;
+import com.google.common.base.Splitter;
+import com.google.common.collect.Collections2;
+import com.google.common.io.ByteSource;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileNotFoundException;
@@ -23,7 +29,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeMap;
-
 import org.apache.commons.io.IOUtils;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
@@ -59,13 +64,6 @@ import org.opendaylight.yangtools.yang.parser.util.YangParseException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Splitter;
-import com.google.common.collect.Collections2;
-import com.google.common.io.ByteSource;
-
 public final class BuilderUtils {
 
     private static final Logger LOG = LoggerFactory.getLogger(BuilderUtils.class);
@@ -800,9 +798,7 @@ public final class BuilderUtils {
         Set<TypeDefinitionBuilder> result = new HashSet<>();
         for (TypeDefinition<?> node : nodes) {
             QName qname = new QName(ns, rev, pref, node.getQName().getLocalName());
-            List<QName> path = new ArrayList<>(parentPath.getPath());
-            path.add(qname);
-            SchemaPath schemaPath = SchemaPath.create(path, parentPath.isAbsolute());
+            SchemaPath schemaPath = parentPath.createChild(qname);
             result.add(new TypeDefinitionBuilderImpl(moduleName, line, qname, schemaPath, ((ExtendedType) node)));
         }
         return result;
@@ -814,9 +810,7 @@ public final class BuilderUtils {
         List<UnknownSchemaNodeBuilderImpl> result = new ArrayList<>();
         for (UnknownSchemaNode node : nodes) {
             QName qname = new QName(ns, rev, pref, node.getQName().getLocalName());
-            List<QName> path = new ArrayList<>(parentPath.getPath());
-            path.add(qname);
-            SchemaPath schemaPath = SchemaPath.create(path, parentPath.isAbsolute());
+            SchemaPath schemaPath = parentPath.createChild(qname);
             result.add(new UnknownSchemaNodeBuilderImpl(moduleName, line, qname, schemaPath, node));
         }
         return result;
index 2f8dcf64fc4113e297a67100de615accacb7cd46..a33c76cab2023e3db05ea7b6a66ae7f28a1fbbcd 100644 (file)
@@ -25,6 +25,10 @@ import static org.opendaylight.yangtools.yang.parser.builder.impl.TypeUtils.reso
 import static org.opendaylight.yangtools.yang.parser.builder.impl.TypeUtils.resolveTypeUnionWithContext;
 import static org.opendaylight.yangtools.yang.parser.builder.impl.TypeUtils.resolveTypeWithContext;
 
+import com.google.common.base.Optional;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.HashBiMap;
+import com.google.common.io.ByteSource;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -41,7 +45,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeMap;
-
 import org.antlr.v4.runtime.ANTLRInputStream;
 import org.antlr.v4.runtime.CommonTokenStream;
 import org.antlr.v4.runtime.tree.ParseTree;
@@ -95,11 +98,6 @@ import org.opendaylight.yangtools.yang.parser.util.YangParseException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.HashBiMap;
-import com.google.common.io.ByteSource;
-
 public final class YangParserImpl implements YangContextParser {
     private static final Logger LOG = LoggerFactory.getLogger(YangParserImpl.class);
 
@@ -827,7 +825,6 @@ public final class YangParserImpl implements YangContextParser {
             final AugmentationSchemaBuilder augment, final SchemaContext context) {
         ModuleBuilder module = BuilderUtils.getParentModule(augment);
         SchemaPath oldSchemaPath = augment.getTargetPath();
-        List<QName> oldPath = oldSchemaPath.getPath();
         List<QName> newPath = new ArrayList<>();
 
         Builder parent = augment.getParent();
@@ -851,10 +848,11 @@ public final class YangParserImpl implements YangContextParser {
             }
 
             final QNameModule qm = QNameModule.create(ns, revision);
-            for (QName qn : oldSchemaPath.getPath()) {
+            for (QName qn : oldSchemaPath.getPathFromRoot()) {
                 newPath.add(QName.create(qm, prefix, qn.getLocalName()));
             }
         } else {
+            Iterable<QName> oldPath = oldSchemaPath.getPathFromRoot();
             for (QName qn : oldPath) {
                 URI ns = module.getNamespace();
                 Date rev = module.getRevision();