Split out yang-data-tree-impl
[yangtools.git] / data / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / leafref / LeafRefUtils.java
diff --git a/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/leafref/LeafRefUtils.java b/data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/leafref/LeafRefUtils.java
deleted file mode 100644 (file)
index f17f766..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (c) 2015 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.leafref;
-
-import java.util.Deque;
-import java.util.Iterator;
-import java.util.LinkedList;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-
-public final class LeafRefUtils {
-    private LeafRefUtils() {
-        // Hidden on purpose
-    }
-
-    /**
-     * Create an absolute leafref path.
-     *
-     * @param leafRefPath leafRefPath
-     * @param contextNodeSchemaPath contextNodeSchemaPath
-     * @param module module
-     * @return LeafRefPath object
-     */
-    public static LeafRefPath createAbsoluteLeafRefPath(
-            final LeafRefPath leafRefPath, final SchemaPath contextNodeSchemaPath,
-            final Module module) {
-        if (leafRefPath.isAbsolute()) {
-            return leafRefPath;
-        }
-
-        final Deque<QNameWithPredicate> absoluteLeafRefTargetPathList = schemaPathToXPathQNames(
-                contextNodeSchemaPath, module);
-        final Iterator<QNameWithPredicate> leafRefTgtPathFromRootIterator = leafRefPath.getPathFromRoot().iterator();
-
-        while (leafRefTgtPathFromRootIterator.hasNext()) {
-            final QNameWithPredicate qname = leafRefTgtPathFromRootIterator.next();
-            if (qname.equals(QNameWithPredicate.UP_PARENT)) {
-                absoluteLeafRefTargetPathList.removeLast();
-            } else {
-                absoluteLeafRefTargetPathList.add(qname);
-            }
-        }
-
-        return LeafRefPath.create(absoluteLeafRefTargetPathList, true);
-    }
-
-    private static Deque<QNameWithPredicate> schemaPathToXPathQNames(final SchemaPath nodePath, final Module module) {
-        final Deque<QNameWithPredicate> xpath = new LinkedList<>();
-        final Iterator<QName> nodePathIterator = nodePath.getPathFromRoot().iterator();
-
-        DataNodeContainer currenDataNodeContainer = module;
-        while (nodePathIterator.hasNext()) {
-            final QName qname = nodePathIterator.next();
-            final DataSchemaNode child = currenDataNodeContainer.dataChildByName(qname);
-
-            if (child instanceof DataNodeContainer) {
-                if (!(child instanceof CaseSchemaNode)) {
-                    xpath.add(new SimpleQNameWithPredicate(qname));
-                }
-                currenDataNodeContainer = (DataNodeContainer) child;
-            } else if (child instanceof ChoiceSchemaNode) {
-                if (nodePathIterator.hasNext()) {
-                    currenDataNodeContainer = ((ChoiceSchemaNode) child).findCase(nodePathIterator.next()).orElse(null);
-                } else {
-                    break;
-                }
-            } else if (child instanceof LeafSchemaNode || child instanceof LeafListSchemaNode) {
-                xpath.add(new SimpleQNameWithPredicate(qname));
-                break;
-            } else if (child == null) {
-                throw new IllegalArgumentException("No child " + qname + " found in node container "
-                        + currenDataNodeContainer + " in module " + module.getName());
-            } else {
-                throw new IllegalStateException("Illegal schema node type in the path: " + child.getClass());
-            }
-        }
-
-        return xpath;
-    }
-
-    public static LeafRefPath schemaPathToLeafRefPath(final SchemaPath nodePath, final Module module) {
-        return LeafRefPath.create(schemaPathToXPathQNames(nodePath, module), true);
-    }
-}