Changed groupId in poms from org.opendaylight.yang to org.opendaylight.yangtools.
Added more tests.
Signed-off-by: Martin Vitez <mvitez@cisco.com>
<modelVersion>4.0.0</modelVersion>
<artifactId>yangtools</artifactId>
- <groupId>org.opendaylight.yang</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<version>0.5.4-SNAPSHOT</version>
<packaging>pom</packaging>
<dependencyManagement>
<dependencies>
<dependency>
- <groupId>org.opendaylight.yang</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.yang</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-data-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.yang</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-data-util</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.yang</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-model-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.yang</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-model-util</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.yang</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-binding</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.yang</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-parser-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.yang</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-parser-impl
</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.yang</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.yang</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin-spi</artifactId>
<version>${project.version}</version>
</dependency>
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
\r
<parent>\r
- <groupId>org.opendaylight.yang</groupId>\r
+ <groupId>org.opendaylight.yangtools</groupId>\r
<artifactId>yangtools</artifactId>\r
<version>0.5.4-SNAPSHOT</version>\r
</parent>\r
+++ /dev/null
-package org.opendaylight.controller.yang.binding;
-
-public interface Augmentable<T> {
-
- <E extends Augmentation<T>> E getAugmentation(Class<E> augmentationType);
-}
+++ /dev/null
-package org.opendaylight.controller.yang.binding;
-
-public interface Augmentation<T> {
-
-}
+++ /dev/null
-package org.opendaylight.controller.yang.binding;
-
-public interface DataObject {
-
-}
+++ /dev/null
-package org.opendaylight.controller.yang.binding;
-
-/**
- * Created with IntelliJ IDEA.
- * User: lsedlak
- * Date: 27.6.2013
- * Time: 11:44
- * To change this template use File | Settings | File Templates.
- */
-public class InstanceIdentifier <T extends DataObject> {
-
-}
--- /dev/null
+/*
+ * 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.binding;
+
+public interface Augmentable<T> {
+
+ <E extends Augmentation<T>> E getAugmentation(Class<E> augmentationType);
+}
--- /dev/null
+/*
+ * 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.binding;
+
+public interface Augmentation<T> {
+
+}
* 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.controller.yang.binding;
+package org.opendaylight.yangtools.yang.binding;
public abstract class BaseIdentity {
-
+
protected BaseIdentity() {
}
--- /dev/null
+/*
+ * 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.binding;
+
+public interface DataObject {
+
+}
* 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.binding;\r
+package org.opendaylight.yangtools.yang.binding;\r
\r
-/**\r
- * \r
- * \r
- */\r
public interface DataRoot {\r
\r
}\r
--- /dev/null
+/*
+ * 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.binding;
+
+/**
+ * Created with IntelliJ IDEA.
+ * User: lsedlak
+ * Date: 27.6.2013
+ * Time: 11:44
+ * To change this template use File | Settings | File Templates.
+ */
+public class InstanceIdentifier <T extends DataObject> {
+
+}
* 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.binding;\r
+package org.opendaylight.yangtools.yang.binding;\r
\r
/**\r
* Marker interface for YANG-defined notifications\r
- * \r
- * \r
+ *\r
+ *\r
*/\r
public interface Notification extends DataObject {\r
\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.binding;\r
+package org.opendaylight.yangtools.yang.binding;\r
\r
/**\r
* Marker interface for generated notification listener interfaces\r
- * \r
- * \r
- * \r
+ *\r
+ *\r
+ *\r
*/\r
public interface NotificationListener {\r
\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.binding;\r
+package org.opendaylight.yangtools.yang.binding;\r
\r
/**\r
* Marker interface for tagging generated YANG Modules\r
- * \r
+ *\r
*/\r
public interface RpcService {\r
\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.binding;
\ No newline at end of file
+package org.opendaylight.yangtools.yang.binding;
\ No newline at end of file
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
\r
<parent>\r
- <groupId>org.opendaylight.yang</groupId>\r
+ <groupId>org.opendaylight.yangtools</groupId>\r
<artifactId>yangtools</artifactId>\r
<version>0.5.4-SNAPSHOT</version>\r
</parent>\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.common;\r
+package org.opendaylight.yangtools.yang.common;\r
\r
import java.net.URI;\r
import java.net.URISyntaxException;\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.common;\r
+package org.opendaylight.yangtools.yang.common;\r
\r
//import org.opendaylight.controller.yang.model.api.RevisionAwareXPath;\r
\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.common;\r
+package org.opendaylight.yangtools.yang.common;\r
\r
import java.util.Collection;\r
\r
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
\r
<parent>\r
- <groupId>org.opendaylight.yang</groupId>\r
+ <groupId>org.opendaylight.yangtools</groupId>\r
<artifactId>yangtools</artifactId>\r
<version>0.5.4-SNAPSHOT</version>\r
</parent>\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.api;\r
+package org.opendaylight.yangtools.yang.data.api;\r
\r
import java.util.List;\r
\r
-import org.opendaylight.controller.yang.common.QName;\r
+import org.opendaylight.yangtools.yang.common.QName;\r
\r
/**\r
* Composite node represents a branch in the data tree, which could contain\r
* is element which does not text data directly (CDATA or PCDATA), only other\r
* nodes. The composite node is the manifestation of the following data schema\r
* constructs in the YANG:\r
- * \r
+ *\r
* <ul>\r
* <li><b>container</b> - the composite node represents the YANG container and\r
* could contain all children schema nodes of that container</li>\r
* item.</li>\r
* <li><b>anyxml</b></li>\r
* </ul>\r
- * \r
- * \r
+ *\r
+ *\r
*/\r
public interface CompositeNode extends Node<List<Node<?>>>, NodeModification {\r
\r
SimpleNode<?> getFirstSimpleByName(QName leaf);\r
\r
/**\r
- * @return cast self to mutable, if possible \r
+ * @return cast self to mutable, if possible\r
*/\r
MutableCompositeNode asMutable();\r
}\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.api;\r
+package org.opendaylight.yangtools.yang.data.api;\r
\r
public enum ModifyAction {\r
MERGE, REPLACE, CREATE, DELETE, REMOVE\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.api;\r
+package org.opendaylight.yangtools.yang.data.api;\r
\r
import java.util.List;\r
\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.api;\r
+package org.opendaylight.yangtools.yang.data.api;\r
\r
\r
/**\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.api;\r
+package org.opendaylight.yangtools.yang.data.api;\r
\r
\r
/**\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.api;\r
+package org.opendaylight.yangtools.yang.data.api;\r
\r
-import org.opendaylight.controller.yang.common.QName;\r
+import org.opendaylight.yangtools.yang.common.QName;\r
\r
/**\r
* Base representation of node in the data tree, defines basic parameters of\r
* node such as a QName.\r
- * \r
- * \r
+ *\r
+ *\r
* @param <T>\r
*/\r
public interface Node<T> {\r
\r
/**\r
* Returns the name of the Node\r
- * \r
+ *\r
* @return qName of node\r
*/\r
QName getNodeType();\r
\r
/**\r
* Returns parent node\r
- * \r
+ *\r
* @return parent node\r
*/\r
CompositeNode getParent();\r
/**\r
* Returns the value that holds current node, if no value is defined method\r
* can return <code>null</code>\r
- * \r
+ *\r
* @return Returns the value that holds current node.\r
*/\r
T getValue();\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.api;\r
+package org.opendaylight.yangtools.yang.data.api;\r
\r
/**\r
* @author michal.rehak\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.api;\r
+package org.opendaylight.yangtools.yang.data.api;\r
\r
\r
/**\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.api;\r
+package org.opendaylight.yangtools.yang.data.api;\r
\r
/**\r
* Simple node represents a leaf in the data tree, which does not contain any\r
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
\r
<parent>\r
- <groupId>org.opendaylight.yang</groupId>\r
+ <groupId>org.opendaylight.yangtools</groupId>\r
<artifactId>yangtools</artifactId>\r
<version>0.5.4-SNAPSHOT</version>\r
</parent>\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
+package org.opendaylight.yangtools.yang.data.impl;\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.Node;\r
-import org.opendaylight.controller.yang.data.api.NodeModification;\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.Node;\r
+import org.opendaylight.yangtools.yang.data.api.NodeModification;\r
\r
/**\r
* @author michal.rehak\r
* @param <T>\r
* type of node value\r
- * \r
+ *\r
*/\r
public abstract class AbstractNodeTO<T> implements Node<T>, NodeModification {\r
\r
private CompositeNode parent;\r
private T value;\r
private ModifyAction modifyAction;\r
- \r
+\r
/**\r
* @param qname\r
* @param parent\r
this.parent = parent;\r
this.value = value;\r
}\r
- \r
+\r
/**\r
* @param qname\r
* @param parent\r
* @param value\r
- * @param modifyAction \r
+ * @param modifyAction\r
*/\r
public AbstractNodeTO(QName qname, CompositeNode parent, T value, ModifyAction modifyAction) {\r
this.qName = qname;\r
public CompositeNode getParent() {\r
return parent;\r
}\r
- \r
+\r
/**\r
* @param parent the parent to set\r
*/\r
public void setParent(CompositeNode parent) {\r
this.parent = parent;\r
}\r
- \r
+\r
/**\r
* @param value the value to set\r
*/\r
protected void setModificationAction(ModifyAction modifyAction) {\r
this.modifyAction = modifyAction;\r
}\r
- \r
+\r
@Override\r
public String toString() {\r
StringBuffer out = new StringBuffer();\r
- out.append(String.format("Node[%s], qName[%s], modify[%s]", \r
+ out.append(String.format("Node[%s], qName[%s], modify[%s]",\r
getClass().getSimpleName(), getQName().getLocalName(),\r
getModificationAction() == null ? "n/a" : getModificationAction()));\r
return out.toString();\r
return false;\r
} else if (other.parent == null) {\r
return false;\r
- } \r
+ }\r
if (qName == null) {\r
if (other.qName != null)\r
return false;\r
return true;\r
}\r
/* */\r
- \r
+\r
}\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
+package org.opendaylight.yangtools.yang.data.impl;\r
\r
import java.util.List;\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.Node;\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.Node;\r
\r
/**\r
* @author michal.rehak\r
- * \r
+ *\r
*/\r
public class CompositeNodeModificationTOImpl extends CompositeNodeTOImpl {\r
\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
+package org.opendaylight.yangtools.yang.data.impl;\r
\r
import java.util.ArrayList;\r
import java.util.List;\r
import java.util.Map;\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.Node;\r
-import org.opendaylight.controller.yang.data.api.SimpleNode;\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
\r
/**\r
* @author michal.rehak\r
- * \r
+ *\r
*/\r
public class CompositeNodeTOImpl extends AbstractNodeTO<List<Node<?>>>\r
implements CompositeNode {\r
* @param qname\r
* @param parent use null to create top composite node (without parent)\r
* @param value\r
- * @param modifyAction \r
+ * @param modifyAction\r
*/\r
public CompositeNodeTOImpl(QName qname, CompositeNode parent,\r
List<Node<?>> value, ModifyAction modifyAction) {\r
super(qname, parent, value, modifyAction);\r
init();\r
}\r
- \r
+\r
\r
/**\r
* @return the nodeMap\r
protected Map<QName, List<Node<?>>> getNodeMap() {\r
return nodeMap;\r
}\r
- \r
+\r
@Override\r
public List<Node<?>> getChildren() {\r
return getValue();\r
public List<CompositeNode> getCompositesByName(String children) {\r
return getCompositesByName(new QName(getNodeType(), children));\r
}\r
- \r
+\r
@Override\r
public List<SimpleNode<?>> getSimpleNodesByName(String children) {\r
return getSimpleNodesByName(new QName(getNodeType(), children));\r
nodeMap = NodeUtils.buildNodeMap(getValue());\r
}\r
}\r
- \r
+\r
@Override\r
public MutableCompositeNode asMutable() {\r
throw new IllegalAccessError("cast to mutable is not supported - "+getClass().getSimpleName());\r
}\r
- \r
+\r
@Override\r
public String toString() {\r
- return super.toString() + ", children.size = " \r
+ return super.toString() + ", children.size = "\r
+ (getChildren() != null ? getChildren().size() : "n/a");\r
}\r
- \r
- \r
+\r
+\r
\r
}\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
+package org.opendaylight.yangtools.yang.data.impl;\r
\r
import java.util.ArrayList;\r
import java.util.HashMap;\r
import java.util.Set;\r
import java.util.Stack;\r
\r
-import org.opendaylight.controller.yang.data.api.CompositeNode;\r
-import org.opendaylight.controller.yang.data.api.MutableCompositeNode;\r
-import org.opendaylight.controller.yang.data.api.MutableNode;\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
+import org.opendaylight.yangtools.yang.data.api.CompositeNode;\r
+import org.opendaylight.yangtools.yang.data.api.MutableCompositeNode;\r
+import org.opendaylight.yangtools.yang.data.api.MutableNode;\r
+import org.opendaylight.yangtools.yang.data.api.MutableSimpleNode;\r
+import org.opendaylight.yangtools.yang.data.api.Node;\r
+import org.opendaylight.yangtools.yang.data.api.NodeModification;\r
+import org.opendaylight.yangtools.yang.data.api.SimpleNode;\r
\r
/**\r
* @author michal.rehak\r
*\r
*/\r
public class LazyNodeToNodeMap {\r
- \r
+\r
private Map<Node<?>, Node<?>> node2node = new HashMap<>();\r
private CompositeNode originalRoot;\r
private MutableCompositeNode mutableRoot;\r
- \r
+\r
/**\r
* @param originalNode\r
* @return mutable twin\r
addPathMembers(originalNode);\r
mutableNode = node2node.get(originalNode);\r
}\r
- \r
+\r
return mutableNode;\r
}\r
- \r
+\r
/**\r
* @param originalNode\r
*/\r
private void addPathMembers(Node<?> originalNode) {\r
- Stack<Node<?>> jobQueue = new Stack<>(); \r
+ Stack<Node<?>> jobQueue = new Stack<>();\r
jobQueue.push(originalNode);\r
while (!jobQueue.isEmpty()) {\r
Node<?> node2add = jobQueue.pop();\r
}\r
fixChildrenRefOnly = true;\r
}\r
- \r
+\r
CompositeNode nextParent = node2add.getParent();\r
MutableNode<?> mutableEquivalent = null;\r
- \r
+\r
if (node2add instanceof SimpleNode<?>) {\r
SimpleNode<?> node2addSimple = (SimpleNode<?>) node2add;\r
MutableSimpleNode<?> nodeMutant = NodeFactory.createMutableSimpleNode(\r
- node2add.getNodeType(), null, node2addSimple.getValue(), \r
+ node2add.getNodeType(), null, node2addSimple.getValue(),\r
node2addSimple.getModificationAction(), node2addSimple);\r
mutableEquivalent = nodeMutant;\r
} else if (node2add instanceof CompositeNode) {\r
nodeMutant = (MutableCompositeNode) node2node.get(node2add);\r
} else {\r
CompositeNode node2addComposite = (CompositeNode) node2add;\r
- nodeMutant = NodeFactory.createMutableCompositeNode(node2add.getNodeType(), \r
- null, null, \r
+ nodeMutant = NodeFactory.createMutableCompositeNode(node2add.getNodeType(),\r
+ null, null,\r
((NodeModification) node2add).getModificationAction(), node2addComposite);\r
}\r
- \r
+\r
mutableEquivalent = nodeMutant;\r
\r
// tidy up children\r
MutableNode<?> mutableChild = (MutableNode<?>) node2node.get(originalChildNode);\r
fixChildrenRef(nodeMutant, mutableChild);\r
}\r
- \r
+\r
if (nodeMutant.getChildren() != null && !nodeMutant.getChildren().isEmpty()) {\r
nodeMutant.init();\r
}\r
}\r
}\r
}\r
- \r
+\r
// feed jobQueue\r
node2node.put(node2add, mutableEquivalent);\r
if (nextParent != null) {\r
jobQueue.push(nextParent);\r
- } \r
+ }\r
}\r
}\r
\r
public MutableCompositeNode getMutableRoot() {\r
return mutableRoot;\r
}\r
- \r
+\r
/**\r
- * @return set of original nodes, registered in map as keys \r
+ * @return set of original nodes, registered in map as keys\r
*/\r
public Set<Node<?>> getKeyNodes() {\r
return node2node.keySet();\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
+package org.opendaylight.yangtools.yang.data.impl;\r
\r
import java.util.List;\r
import java.util.Map;\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.Node;\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
\r
/**\r
* @author michal.rehak\r
- * \r
+ *\r
*/\r
public class MutableCompositeNodeTOImpl extends CompositeNodeTOImpl\r
implements MutableCompositeNode {\r
List<Node<?>> value, ModifyAction modifyAction) {\r
super(qname, parent, value, modifyAction);\r
}\r
- \r
+\r
/**\r
* update nodeMap\r
*/\r
public void setValue(List<Node<?>> value) {\r
super.setValue(value);\r
}\r
- \r
+\r
@Override\r
public void setModifyAction(ModifyAction action) {\r
super.setModificationAction(action);\r
}\r
- \r
+\r
@Override\r
protected Map<QName, List<Node<?>>> getNodeMap() {\r
return nodeMap;\r
}\r
- \r
+\r
@Override\r
public MutableCompositeNode asMutable() {\r
return this;\r
}\r
- \r
+\r
@Override\r
public CompositeNode getOriginal() {\r
return original;\r
}\r
- \r
+\r
/**\r
* @param original the original to set\r
*/\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
+package org.opendaylight.yangtools.yang.data.impl;\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.MutableSimpleNode;\r
-import org.opendaylight.controller.yang.data.api.SimpleNode;\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.MutableSimpleNode;\r
+import org.opendaylight.yangtools.yang.data.api.SimpleNode;\r
\r
/**\r
* @author michal.rehak\r
* @param <T> type of simple node value\r
- * \r
+ *\r
*/\r
-public class MutableSimpleNodeTOImpl<T> extends SimpleNodeTOImpl<T> \r
+public class MutableSimpleNodeTOImpl<T> extends SimpleNodeTOImpl<T>\r
implements MutableSimpleNode<T> {\r
\r
private SimpleNode<T> original;\r
public void setValue(T value) {\r
super.setValue(value);\r
}\r
- \r
+\r
@Override\r
public void setModifyAction(ModifyAction action) {\r
super.setModificationAction(action);\r
}\r
- \r
+\r
@Override\r
public MutableSimpleNode<T> asMutable() {\r
return this;\r
}\r
- \r
+\r
@Override\r
public SimpleNode<T> getOriginal() {\r
return original;\r
}\r
- \r
+\r
/**\r
* @param original the original to set\r
*/\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
+package org.opendaylight.yangtools.yang.data.impl;\r
\r
import java.util.AbstractMap.SimpleEntry;\r
import java.util.ArrayList;\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
+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.MutableSimpleNode;\r
+import org.opendaylight.yangtools.yang.data.api.Node;\r
+import org.opendaylight.yangtools.yang.data.api.NodeModification;\r
+import org.opendaylight.yangtools.yang.data.api.SimpleNode;\r
\r
/**\r
* @author michal.rehak\r
- * \r
+ *\r
*/\r
public abstract class NodeFactory {\r
\r
CompositeNode parent, T value) {\r
return createImmutableSimpleNode(qName, parent, value, null);\r
}\r
- \r
+\r
/**\r
* @param qName\r
* @param parent\r
* @param value\r
- * @param modifyAction \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
+ MutableSimpleNodeTOImpl<T> simpleNodeTOImpl =\r
new MutableSimpleNodeTOImpl<T>(qName, parent, (T) value, modifyAction);\r
simpleNodeTOImpl.setOriginal(original);\r
return simpleNodeTOImpl;\r
}\r
- \r
+\r
/**\r
* @param qName\r
* @param parent\r
CompositeNode parent, List<Node<?>> value) {\r
return createImmutableCompositeNode(qName, parent, value, null);\r
}\r
- \r
+\r
/**\r
* @param qName\r
* @param parent\r
- * @param valueArg \r
- * @param modifyAction \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
if (value == null) {\r
value = new ArrayList<>();\r
}\r
- MutableCompositeNodeTOImpl compositeNodeTOImpl = \r
+ MutableCompositeNodeTOImpl compositeNodeTOImpl =\r
new MutableCompositeNodeTOImpl(qName, parent, value, modifyAction);\r
compositeNodeTOImpl.setOriginal(original);\r
return compositeNodeTOImpl;\r
}\r
- \r
- \r
+\r
+\r
/**\r
* @param qName\r
* @param parent\r
*/\r
public static <T> SimpleNode<T> createImmutableSimpleNode(QName qName,\r
CompositeNode parent, T value, ModifyAction modifyAction) {\r
- SimpleNodeTOImpl<T> simpleNodeModTOImpl = \r
+ SimpleNodeTOImpl<T> simpleNodeModTOImpl =\r
new SimpleNodeTOImpl<T>(qName, parent, value, modifyAction);\r
return simpleNodeModTOImpl;\r
}\r
* @param qName\r
* @param parent\r
* @param value\r
- * @param modifyAction \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
+ 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
+ * @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
/**\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
+ * @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.getNodeType(), node.getParent(), node.getValue(),\r
node.getModificationAction(), null);\r
return twinNode;\r
}\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
+ * @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
node.getNodeType(), node.getParent(), Arrays.asList(children), node.getModificationAction());\r
return twinNode;\r
}\r
- \r
+\r
/**\r
* @param node\r
- * @return copy of given node, parent and children are the same, but parent and 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) {\r
return copyNode(node, node.getChildren().toArray(new Node<?>[0]));\r
}\r
- \r
+\r
/**\r
* @param node root of original tree\r
- * @param originalToCopyArg (optional) empty map, where binding between original and copy \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
+ public static MutableCompositeNode copyDeepAsMutable(CompositeNode node,\r
Map<Node<?>, Node<?>> originalToCopyArg) {\r
- \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
+ 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
for (Node<?> child : originalNode.getChildren()) {\r
Node<?> mutableAscendant = null;\r
if (child instanceof CompositeNode) {\r
- MutableCompositeNode newMutable = \r
- createMutableCompositeNode(child.getNodeType(), mutableNode, null, \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
+ 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
\r
return mutableRoot;\r
}\r
- \r
+\r
/**\r
* @param node root of original tree\r
- * @param originalToCopyArg (optional) empty map, where binding between original and copy \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
+ public static CompositeNode copyDeepAsImmutable(CompositeNode node,\r
Map<Node<?>, Node<?>> originalToCopyArg) {\r
Stack<CompositeNode> jobQueue = new Stack<>();\r
jobQueue.push(node);\r
- \r
+\r
Map<Node<?>, Node<?>> originalToCopy = originalToCopyArg;\r
if (originalToCopy == null) {\r
originalToCopy = new HashMap<>();\r
}\r
- \r
+\r
while (!jobQueue.isEmpty()) {\r
CompositeNode jobNode = jobQueue.peek();\r
- if (!originalToCopy.isEmpty() \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
+ CompositeNode nodeCopy = createImmutableCompositeNode(jobNode.getNodeType(), null,\r
newChildren, jobNode.getModificationAction());\r
NodeUtils.fixChildrenRelation(nodeCopy);\r
originalToCopy.put(jobNode, nodeCopy);\r
for (Node<?> child : jobNode.getChildren()) {\r
if (child instanceof SimpleNode<?>) {\r
originalToCopy.put(child, createImmutableSimpleNode(\r
- child.getNodeType(), null, child.getValue(), \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
}\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
+package org.opendaylight.yangtools.yang.data.impl;\r
\r
import java.util.HashSet;\r
import java.util.List;\r
import java.util.Map;\r
import java.util.Set;\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.MutableNode;\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.NodeModificationBuilder;\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.MutableNode;\r
+import org.opendaylight.yangtools.yang.data.api.MutableSimpleNode;\r
+import org.opendaylight.yangtools.yang.data.api.Node;\r
+import org.opendaylight.yangtools.yang.data.api.NodeModificationBuilder;\r
import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;\r
import org.opendaylight.yangtools.yang.model.api.SchemaContext;\r
\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
+package org.opendaylight.yangtools.yang.data.impl;\r
\r
import java.util.AbstractMap.SimpleEntry;\r
import java.util.ArrayList;\r
import javax.xml.xpath.XPathExpressionException;\r
import javax.xml.xpath.XPathFactory;\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.Node;\r
-import org.opendaylight.controller.yang.data.api.NodeModification;\r
-import org.opendaylight.controller.yang.data.api.SimpleNode;\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.Node;\r
+import org.opendaylight.yangtools.yang.data.api.NodeModification;\r
+import org.opendaylight.yangtools.yang.data.api.SimpleNode;\r
import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;\r
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;\r
import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;\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
+package org.opendaylight.yangtools.yang.data.impl;\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.yangtools.yang.common.QName;\r
+import org.opendaylight.yangtools.yang.data.api.CompositeNode;\r
+import org.opendaylight.yangtools.yang.data.api.ModifyAction;\r
\r
/**\r
* @author michal.rehak\r
* @param <T> type of node value\r
- * \r
+ *\r
*/\r
public class SimpleNodeModificationTOImpl<T> extends SimpleNodeTOImpl<T> {\r
\r
* @param qname\r
* @param parent\r
* @param value\r
- * @param modifyAction \r
+ * @param modifyAction\r
*/\r
public SimpleNodeModificationTOImpl(QName qname, CompositeNode parent,\r
T value, ModifyAction modifyAction) {\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
+package org.opendaylight.yangtools.yang.data.impl;\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.MutableSimpleNode;\r
-import org.opendaylight.controller.yang.data.api.SimpleNode;\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.MutableSimpleNode;\r
+import org.opendaylight.yangtools.yang.data.api.SimpleNode;\r
\r
/**\r
* @author michal.rehak\r
* @param <T> type of simple node value\r
- * \r
+ *\r
*/\r
public class SimpleNodeTOImpl<T> extends AbstractNodeTO<T> implements\r
SimpleNode<T> {\r
public SimpleNodeTOImpl(QName qname, CompositeNode parent, T value) {\r
super(qname, parent, value);\r
}\r
- \r
+\r
/**\r
* @param qname\r
* @param parent\r
* @param value\r
- * @param modifyAction \r
+ * @param modifyAction\r
*/\r
public SimpleNodeTOImpl(QName qname, CompositeNode parent, T value, ModifyAction modifyAction) {\r
super(qname, parent, value, modifyAction);\r
}\r
\r
- \r
+\r
@Override\r
public MutableSimpleNode<T> asMutable() {\r
throw new IllegalAccessError("cast to mutable is not supported - "+getClass().getSimpleName());\r
}\r
- \r
+\r
@Override\r
public String toString() {\r
return super.toString() + ", value = "+getValue();\r
* 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.controller.yang.data.impl;
+package org.opendaylight.yangtools.yang.data.impl;
import org.custommonkey.xmlunit.Difference;
import org.custommonkey.xmlunit.DifferenceConstants;
* 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
+package org.opendaylight.yangtools.yang.data.impl;\r
\r
import java.net.URI;\r
import java.util.Date;\r
import org.junit.Assert;\r
import org.junit.Before;\r
import org.junit.Test;\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.MutableCompositeNode;\r
-import org.opendaylight.controller.yang.data.api.Node;\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.MutableCompositeNode;\r
+import org.opendaylight.yangtools.yang.data.api.Node;\r
+import org.opendaylight.yangtools.yang.data.impl.LazyNodeToNodeMap;\r
\r
/**\r
* @author michal.rehak\r
*\r
*/\r
public class LazyNodeToNodeMapTest {\r
- \r
+\r
private LazyNodeToNodeMap lazyN2N;\r
private CompositeNode tree;\r
\r
/**\r
* prepare test values\r
- * @throws Exception \r
+ * @throws Exception\r
*/\r
@Before\r
public void setUp() throws Exception {\r
lazyN2N = new LazyNodeToNodeMap();\r
- \r
+\r
QName qName = new QName(\r
- new URI("urn:ietf:params:xml:ns:netconf:base:1.0"), \r
+ new URI("urn:ietf:params:xml:ns:netconf:base:1.0"),\r
new Date(42), "yang-data-impl-mutableTest");\r
- \r
+\r
tree = NodeHelper.buildTestConfigTree(qName);\r
}\r
\r
@Test\r
public void testGetMutableEquivalent() {\r
MutableCompositeNode mutableTree = (MutableCompositeNode) lazyN2N.getMutableEquivalent(tree);\r
- \r
+\r
Assert.assertNull(mutableTree.getParent());\r
Assert.assertEquals(tree.getNodeType(), mutableTree.getNodeType());\r
Assert.assertEquals(1, lazyN2N.getKeyNodes().size());\r
- \r
+\r
Node<?> subNode = tree.getCompositesByName("topologies").iterator().next();\r
Node<?> subMutant = lazyN2N.getMutableEquivalent(subNode);\r
- \r
+\r
Assert.assertNotNull(subMutant.getParent());\r
Assert.assertEquals(subNode.getNodeType(), subMutant.getNodeType());\r
Assert.assertEquals(2, lazyN2N.getKeyNodes().size());\r
- \r
+\r
Assert.assertEquals(mutableTree, subMutant.getParent());\r
Assert.assertEquals(mutableTree.getChildren().size(), 1);\r
Assert.assertEquals(mutableTree.getChildren().iterator().next(), subMutant);\r
public void testGetMutableRoot() {\r
Node<?> subNode = tree.getCompositesByName("topologies").iterator().next();\r
Node<?> subMutant = lazyN2N.getMutableEquivalent(subNode);\r
- \r
+\r
Assert.assertNotNull(subMutant.getParent());\r
Assert.assertEquals(subMutant.getParent(), lazyN2N.getMutableRoot());\r
}\r
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-package org.opendaylight.controller.yang.data.impl;
+package org.opendaylight.yangtools.yang.data.impl;
/**
* Provides memory consumption and elapsed time between 2 points
* 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
+package org.opendaylight.yangtools.yang.data.impl;\r
\r
import groovy.util.BuilderSupport;\r
\r
import java.util.Map;\r
import java.util.Map.Entry;\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.Node;\r
-import org.opendaylight.controller.yang.data.api.SimpleNode;\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
*/\r
public class MyNodeBuilder extends BuilderSupport {\r
- \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
+\r
private CompositeNode rootNode;\r
\r
/**\r
QName qName = null;\r
try {\r
qName = new QName(\r
- new URI("urn:opendaylight:controller:network"), \r
+ new URI("urn:opendaylight:controller:network"),\r
new Date(42), "yang-data-impl-groovyTest_", null);\r
} catch (URISyntaxException e) {\r
LOG.error(e.getMessage(), e);\r
NodeUtils.fixParentRelation(newNode);\r
return newNode;\r
}\r
- \r
+\r
/**\r
* @param attributes\r
- * @return \r
+ * @return\r
*/\r
private ModifyAction processAttributes(@SuppressWarnings("rawtypes") Map attributes) {\r
LOG.debug("attributes:" + attributes);\r
ModifyAction modAction = null;\r
- \r
+\r
@SuppressWarnings("unchecked")\r
Map<String, String> attributesSane = attributes;\r
for (Entry<String, String> attr : attributesSane.entrySet()) {\r
case "modifyAction":\r
modAction = ModifyAction.valueOf(attr.getValue());\r
break;\r
- \r
+\r
default:\r
throw new IllegalArgumentException("Attribute not supported: "+attr.getKey());\r
}\r
if (getCurrent() != null) {\r
if (getCurrent() instanceof CompositeNode) {\r
return (CompositeNode) getCurrent();\r
- \r
+\r
} else {\r
throw new IllegalAccessError("current node is not of type CompositeNode, but: "\r
+getCurrent().getClass().getSimpleName());\r
}\r
}\r
- \r
+\r
return null;\r
}\r
- \r
+\r
@Override\r
protected Object postNodeCompletion(Object parent, Object node) {\r
Node<?> nodeRevisited = (Node<?>) node;\r
nodeRevisited.getParent().getChildren().remove(mutant);\r
}\r
}\r
- \r
- \r
+\r
+\r
return nodeRevisited;\r
}\r
- \r
+\r
/**\r
* @return tree root\r
*/\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
+package org.opendaylight.yangtools.yang.data.impl;\r
\r
import java.net.URI;\r
import java.util.ArrayList;\r
import org.junit.Assert;\r
import org.junit.Before;\r
import org.junit.Test;\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.Node;\r
-import org.opendaylight.controller.yang.data.api.NodeModification;\r
-import org.opendaylight.controller.yang.data.api.SimpleNode;\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.NodeModification;\r
+import org.opendaylight.yangtools.yang.data.api.SimpleNode;\r
import org.w3c.dom.Document;\r
\r
/**\r
* @author michal.rehak\r
- * \r
+ *\r
*/\r
public class NodeFactoryTest {\r
- \r
+\r
private QName qName;\r
private CompositeNode network;\r
\r
public void setUp() throws Exception {\r
ns = "urn:ietf:params:xml:ns:netconf:base:1.0";\r
qName = new QName(\r
- new URI(ns), \r
+ new URI(ns),\r
new Date(42), null);\r
network = NodeHelper.buildTestConfigTree(qName);\r
networkShadow = NodeUtils.buildShadowDomTree(network);\r
/**\r
* Test method for methods creating immutable nodes in\r
* {@link org.opendaylight.controller.yang.data.impl.NodeFactory}.\r
- * @throws Exception \r
+ * @throws Exception\r
*/\r
@Test\r
public void testImmutableNodes() throws Exception {\r
Assert.assertEquals(2, network.getChildren().size());\r
- CompositeNode tpList = NodeUtils.findNodeByXpath(networkShadow, \r
+ CompositeNode tpList = NodeUtils.findNodeByXpath(networkShadow,\r
NodeHelper.AddNamespaceToPattern(\r
"//{0}node[{0}node-id/text()='nodeId_19']/{0}termination-points", ns));\r
- \r
- \r
+\r
+\r
Assert.assertEquals(2, tpList.getCompositesByName("termination-point").size());\r
}\r
\r
* Test method for methods creating immutable and mutable nodes:\r
* {@link NodeFactory#createMutableCompositeNode(QName, CompositeNode, List, ModifyAction, CompositeNode)},\r
* {@link NodeFactory#createMutableSimpleNode(QName, CompositeNode, Object, ModifyAction, SimpleNode)}\r
- * @throws Exception \r
+ * @throws Exception\r
*/\r
@Test\r
public void testMutableNodes() throws Exception {\r
// </interface>\r
// </top>\r
// </config>\r
- \r
- \r
- List<Node<?>> value = new ArrayList<Node<?>>(); \r
+\r
+\r
+ List<Node<?>> value = new ArrayList<Node<?>>();\r
value.add(NodeFactory.createImmutableSimpleNode(new QName(qName, "name"), null, "Ethernet0/0"));\r
value.add(NodeFactory.createImmutableSimpleNode(new QName(qName, "mtu"), null, 1500));\r
- \r
+\r
MutableCompositeNode ifNode = NodeFactory.createMutableCompositeNode(\r
new QName(qName, "interface"), null, value, ModifyAction.DELETE, null);\r
ifNode.init();\r
NodeHelper.assignParentToChildren(ifNode);\r
- \r
- value = new ArrayList<Node<?>>(); \r
+\r
+ value = new ArrayList<Node<?>>();\r
value.add(NodeFactory.createImmutableSimpleNode(new QName(qName, "name"), null, "Ethernet1/0"));\r
value.add(NodeFactory.createMutableSimpleNode(new QName(qName, "mtu"), null, 1501, ModifyAction.REMOVE, null));\r
- \r
+\r
CompositeNode ifNode2 = NodeFactory.createImmutableCompositeNode(new QName(qName, "interface"), null, value);\r
NodeHelper.assignParentToChildren(ifNode2);\r
\r
- value = new ArrayList<Node<?>>(); \r
+ value = new ArrayList<Node<?>>();\r
value.add(ifNode);\r
value.add(ifNode2);\r
- \r
+\r
CompositeNode topNode = NodeFactory.createImmutableCompositeNode(new QName(qName, "top"), null, value);\r
NodeHelper.assignParentToChildren(topNode);\r
- value = new ArrayList<Node<?>>(); \r
+ value = new ArrayList<Node<?>>();\r
value.add(topNode);\r
- \r
+\r
CompositeNode root = NodeFactory.createImmutableCompositeNode(new QName(qName, "config"), null, value);\r
Document shadowConfig = NodeUtils.buildShadowDomTree(root);\r
NodeHelper.compareXmlTree(shadowConfig, "./mutableNodesConfig.xml", getClass());\r
- \r
+\r
Assert.assertEquals(1, root.getChildren().size());\r
Assert.assertEquals(1, ifNode.getSimpleNodesByName("name").size());\r
Assert.assertEquals(1, ifNode.getSimpleNodesByName("mtu").size());\r
\r
/**\r
* test of {@link NodeFactory#copyDeepAsMutable(CompositeNode, Map)}\r
- * @throws Exception \r
+ * @throws Exception\r
*/\r
@Test\r
public void testCopyDeepAsMutable() throws Exception {\r
CompositeNode mutableNetwork = NodeFactory.copyDeepAsMutable(network, mutableToOrig);\r
\r
Document mutableNetworkShadow = NodeUtils.buildShadowDomTree(mutableNetwork);\r
- \r
+\r
NodeHelper.compareXmlTree(mutableNetworkShadow, "./config02-shadow.xml", getClass());\r
- \r
+\r
CompositeNode immutableNetwork = NodeFactory.copyDeepAsImmutable(mutableNetwork, null);\r
Assert.assertEquals(network, immutableNetwork);\r
}\r
- \r
- \r
+\r
+\r
/**\r
* test of {@link NodeFactory#copyDeepAsImmutable(CompositeNode, Map)}\r
- * @throws Exception \r
+ * @throws Exception\r
*/\r
@Test\r
public void testCopyDeepAsImmutable() throws Exception {\r
Map<Node<?>, Node<?>> mutableToOrig = new HashMap<>();\r
CompositeNode immutableNetwork = NodeFactory.copyDeepAsImmutable(network, mutableToOrig);\r
- \r
+\r
Document mutableNetworkShadow = NodeUtils.buildShadowDomTree(immutableNetwork);\r
NodeHelper.compareXmlTree(mutableNetworkShadow, "./config02-shadow.xml", getClass());\r
- \r
+\r
Assert.assertEquals(network, immutableNetwork);\r
}\r
\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
+package org.opendaylight.yangtools.yang.data.impl;\r
\r
import groovy.lang.Binding;\r
import groovy.lang.GroovyShell;\r
\r
import org.custommonkey.xmlunit.Diff;\r
import org.junit.Assert;\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.Node;\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.Node;\r
import org.opendaylight.yangtools.yang.model.api.Module;\r
import org.opendaylight.yangtools.yang.model.api.SchemaContext;\r
import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;\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
+package org.opendaylight.yangtools.yang.data.impl;\r
\r
import java.net.URI;\r
import java.util.Date;\r
\r
import org.junit.Before;\r
import org.junit.Test;\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.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.SimpleNode;\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.MutableCompositeNode;\r
+import org.opendaylight.yangtools.yang.data.api.MutableSimpleNode;\r
+import org.opendaylight.yangtools.yang.data.api.Node;\r
+import org.opendaylight.yangtools.yang.data.api.SimpleNode;\r
import org.opendaylight.yangtools.yang.model.api.SchemaContext;\r
import org.slf4j.Logger;\r
import org.slf4j.LoggerFactory;\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
+package org.opendaylight.yangtools.yang.data.impl;\r
\r
import java.io.IOException;\r
import java.net.URI;\r
import org.junit.Assert;\r
import org.junit.Before;\r
import org.junit.Test;\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.Node;\r
-import org.opendaylight.controller.yang.data.api.SimpleNode;\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.Node;\r
+import org.opendaylight.yangtools.yang.data.api.SimpleNode;\r
import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;\r
import org.opendaylight.yangtools.yang.model.api.SchemaContext;\r
import org.slf4j.Logger;\r
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
import groovy.xml.MarkupBuilder
-import org.opendaylight.controller.yang.data.impl.MyNodeBuilder
+import org.opendaylight.yangtools.yang.data.impl.MyNodeBuilder
/**
* wrapper class - applies hardcoded builder on given data closure
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
\r
<parent>\r
- <groupId>org.opendaylight.yang</groupId>\r
+ <groupId>org.opendaylight.yangtools</groupId>\r
<artifactId>yangtools</artifactId>\r
<version>0.5.4-SNAPSHOT</version>\r
</parent>\r
* 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.controller.yang.data.util;
+package org.opendaylight.yangtools.yang.data.util;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
-import org.opendaylight.controller.yang.common.QName;
-import org.opendaylight.controller.yang.data.api.CompositeNode;
-import org.opendaylight.controller.yang.data.api.Node;
-import org.opendaylight.controller.yang.data.api.SimpleNode;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.data.api.CompositeNode;
+import org.opendaylight.yangtools.yang.data.api.Node;
+import org.opendaylight.yangtools.yang.data.api.SimpleNode;
public abstract class AbstractContainerNode extends AbstractNode<List<Node<?>>>
implements CompositeNode {
* 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.controller.yang.data.util;
+package org.opendaylight.yangtools.yang.data.util;
-import org.opendaylight.controller.yang.common.QName;
-import org.opendaylight.controller.yang.data.api.CompositeNode;
-import org.opendaylight.controller.yang.data.api.ModifyAction;
-import org.opendaylight.controller.yang.data.api.Node;
+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.Node;
public abstract class AbstractNode<T> implements Node<T> {
public CompositeNode getParent() {
return parent;
}
-
+
/* (non-Javadoc)
*/
/**
* 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.controller.yang.data.util;
+package org.opendaylight.yangtools.yang.data.util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.opendaylight.controller.yang.common.QName;
-import org.opendaylight.controller.yang.data.api.CompositeNode;
-import org.opendaylight.controller.yang.data.api.ModifyAction;
-import org.opendaylight.controller.yang.data.api.MutableCompositeNode;
-import org.opendaylight.controller.yang.data.api.MutableSimpleNode;
-import org.opendaylight.controller.yang.data.api.Node;
-import org.opendaylight.controller.yang.data.api.SimpleNode;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.data.api.CompositeNode;
+import org.opendaylight.yangtools.yang.data.api.MutableCompositeNode;
+import org.opendaylight.yangtools.yang.data.api.MutableSimpleNode;
+import org.opendaylight.yangtools.yang.data.api.Node;
+import org.opendaylight.yangtools.yang.data.api.SimpleNode;
public class Nodes {
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
- <groupId>org.opendaylight.yang</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yangtools</artifactId>
<version>0.5.4-SNAPSHOT</version>
</parent>
<build>
<plugins>
<plugin>
- <groupId>org.opendaylight.yang</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin</artifactId>
<version>0.5.4-SNAPSHOT</version>
<executions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
- org.opendaylight.yang
+ org.opendaylight.yangtools
</groupId>
<artifactId>
yang-maven-plugin
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
- <groupId>org.opendaylight.yang</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yangtools</artifactId>
<version>0.5.4-SNAPSHOT</version>
</parent>
* 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.controller.yang2sources.plugin.it;
+package org.opendaylight.yangtools.yang2sources.plugin.it;
import static org.junit.Assert.*;
import static org.junit.matchers.JUnitMatchers.containsString;
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<version>0.5.4-SNAPSHOT</version>
<artifactId>test</artifactId>
<dependencies>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin-spi</artifactId>
<version>0.5.4-SNAPSHOT</version>
</dependency>
<build>
<plugins>
<plugin>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin</artifactId>
<version>0.5.4-SNAPSHOT</version>
<executions>
<codeGenerators>
<generator>
<codeGeneratorClass>
- org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
+ org.opendaylight.yangtools.yang2sources.spi.CodeGeneratorTestImpl
</codeGeneratorClass>
<additionalConfiguration>
<nm1>abcd=a.b.c.d</nm1>
</generator>
<generator>
<codeGeneratorClass>
- org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
+ org.opendaylight.yangtools.yang2sources.spi.CodeGeneratorTestImpl
</codeGeneratorClass>
<additionalConfiguration>
<c1>config</c1>
<dependencies>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin-spi</artifactId>
<version>0.5.4-SNAPSHOT</version>
<type>test-jar</type>
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<version>0.5.4-SNAPSHOT</version>
<artifactId>test</artifactId>
<dependencies>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin-spi</artifactId>
<version>0.5.4-SNAPSHOT</version>
</dependency>
<build>
<plugins>
<plugin>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin</artifactId>
<version>0.5.4-SNAPSHOT</version>
<executions>
<codeGenerators>
<generator>
<codeGeneratorClass>
- org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
+ org.opendaylight.yangtools.yang2sources.spi.CodeGeneratorTestImpl
</codeGeneratorClass>
</generator>
</codeGenerators>
<dependencies>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin-spi</artifactId>
<version>0.5.4-SNAPSHOT</version>
<type>test-jar</type>
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>generator-test1</artifactId>
<version>0.5.4-SNAPSHOT</version>
<build>
<plugins>
<plugin>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin</artifactId>
<version>0.5.4-SNAPSHOT</version>
<executions>
<codeGenerators>
<generator>
<codeGeneratorClass>
- org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
+ org.opendaylight.yangtools.yang2sources.spi.CodeGeneratorTestImpl
</codeGeneratorClass>
</generator>
</codeGenerators>
<dependencies>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin-spi</artifactId>
<version>0.5.4-SNAPSHOT</version>
<type>test-jar</type>
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<version>0.5.4-SNAPSHOT</version>
<artifactId>generator-test2</artifactId>
<dependencies>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>generator-test1</artifactId>
<version>0.5.4-SNAPSHOT</version>
<scope>system</scope>
<build>
<plugins>
<plugin>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin</artifactId>
<version>0.5.4-SNAPSHOT</version>
<executions>
<codeGenerators>
<generator>
<codeGeneratorClass>
- org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
+ org.opendaylight.yangtools.yang2sources.spi.CodeGeneratorTestImpl
</codeGeneratorClass>
<outputBaseDir>
outDir/
<dependencies>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin-spi</artifactId>
<version>0.5.4-SNAPSHOT</version>
<type>test-jar</type>
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>binding-generator</artifactId>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<version>0.5.4-SNAPSHOT</version>
</parent>
<artifactId>test</artifactId>
<build>
<plugins>
<plugin>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin</artifactId>
<version>0.5.4-SNAPSHOT</version>
<executions>
<codeGenerators>
<generator>
<codeGeneratorClass>
- org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
+ org.opendaylight.yangtools.yang2sources.spi.CodeGeneratorTestImpl
</codeGeneratorClass>
<outputBaseDir>
outDir/
<dependencies>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin-spi</artifactId>
<version>0.5.4-SNAPSHOT</version>
<type>test-jar</type>
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<version>0.5.4-SNAPSHOT</version>
<artifactId>generator-test2</artifactId>
<build>
<plugins>
<plugin>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin</artifactId>
<version>0.5.4-SNAPSHOT</version>
<executions>
<codeGenerators>
<generator>
<codeGeneratorClass>
- org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
+ org.opendaylight.yangtools.yang2sources.spi.CodeGeneratorTestImpl
</codeGeneratorClass>
<outputBaseDir>
outDir/
<resourceProviders>
<provider>
<resourceProviderClass>
- org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl
+ org.opendaylight.yangtools.yang2sources.spi.ResourceProviderTestImpl
</resourceProviderClass>
<outputBaseDir>
outDir/
<dependencies>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin-spi</artifactId>
<version>0.5.4-SNAPSHOT</version>
<type>test-jar</type>
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<version>0.5.4-SNAPSHOT</version>
<artifactId>test</artifactId>
<build>
<plugins>
<plugin>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin</artifactId>
<version>0.5.4-SNAPSHOT</version>
<executions>
<resourceProviders>
<provider>
<resourceProviderClass>
- org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl
+ org.opendaylight.yangtools.yang2sources.spi.ResourceProviderTestImpl
</resourceProviderClass>
<outputBaseDir>
outDir/
</executions>
<dependencies>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin-spi</artifactId>
<version>0.5.4-SNAPSHOT</version>
<type>test-jar</type>
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<version>0.5.4-SNAPSHOT</version>
<artifactId>test</artifactId>
<build>
<plugins>
<plugin>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin</artifactId>
<version>0.5.4-SNAPSHOT</version>
<executions>
<codeGenerators>
<generator>
<codeGeneratorClass>
- org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
+ org.opendaylight.yangtools.yang2sources.spi.CodeGeneratorTestImpl
</codeGeneratorClass>
</generator>
</codeGenerators>
<dependencies>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin-spi</artifactId>
<version>0.5.4-SNAPSHOT</version>
<type>test-jar</type>
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<version>0.5.4-SNAPSHOT</version>
<artifactId>test</artifactId>
<build>
<plugins>
<plugin>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin</artifactId>
<version>0.5.4-SNAPSHOT</version>
<executions>
<codeGenerators>
<generator>
<codeGeneratorClass>
- org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
+ org.opendaylight.yangtools.yang2sources.spi.CodeGeneratorTestImpl
</codeGeneratorClass>
<outputBaseDir>
/outDir/
<dependencies>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin-spi</artifactId>
<version>0.5.4-SNAPSHOT</version>
<type>test-jar</type>
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<version>0.5.4-SNAPSHOT</version>
<artifactId>test</artifactId>
<build>
<plugins>
<plugin>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin</artifactId>
<version>0.5.4-SNAPSHOT</version>
<executions>
<codeGenerators>
<generator>
<codeGeneratorClass>
- org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
+ org.opendaylight.yangtools.yang2sources.spi.CodeGeneratorTestImpl
</codeGeneratorClass>
<outputBaseDir>
/outDir/
<dependencies>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin-spi</artifactId>
<version>0.5.4-SNAPSHOT</version>
<type>test-jar</type>
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<version>0.5.4-SNAPSHOT</version>
<artifactId>test</artifactId>
<build>
<plugins>
<plugin>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin</artifactId>
<version>0.5.4-SNAPSHOT</version>
<executions>
<codeGenerators>
<generator>
<codeGeneratorClass>
- org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
+ org.opendaylight.yangtools.yang2sources.spi.CodeGeneratorTestImpl
</codeGeneratorClass>
<outputBaseDir>
/outDir/
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
- <groupId>org.opendaylight.yang</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yangtools</artifactId>
<version>0.5.4-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
- <groupId>org.opendaylight.yang</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-model-api</artifactId>
</dependency>
* 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.controller.yang2sources.spi;
+package org.opendaylight.yangtools.yang2sources.spi;
import java.io.File;
import java.io.IOException;
* 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.controller.yang2sources.spi;
+package org.opendaylight.yangtools.yang2sources.spi;
import java.io.File;
import java.util.Collection;
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
- <groupId>org.opendaylight.yang</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yangtools</artifactId>
<version>0.5.4-SNAPSHOT</version>
</parent>
* 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.controller.yang2sources.plugin;
+package org.opendaylight.yangtools.yang2sources.plugin;
import java.io.File;
import java.util.Map;
* 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.controller.yang2sources.plugin;
+package org.opendaylight.yangtools.yang2sources.plugin;
import java.io.Closeable;
import java.io.File;
* 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.controller.yang2sources.plugin;
+package org.opendaylight.yangtools.yang2sources.plugin;
import java.io.File;
import java.util.Arrays;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;
import org.apache.maven.project.MavenProject;
-import org.opendaylight.controller.yang2sources.plugin.ConfigArg.CodeGeneratorArg;
-import org.opendaylight.controller.yang2sources.spi.CodeGenerator;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang2sources.plugin.ConfigArg.CodeGeneratorArg;
import com.google.common.annotations.VisibleForTesting;
* 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.controller.yang2sources.plugin;
+package org.opendaylight.yangtools.yang2sources.plugin;
import java.io.Closeable;
import java.io.File;
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.util.FileUtils;
-import org.opendaylight.controller.yang2sources.plugin.ConfigArg.CodeGeneratorArg;
-import org.opendaylight.controller.yang2sources.plugin.Util.ContextHolder;
-import org.opendaylight.controller.yang2sources.plugin.Util.YangsInZipsResult;
-import org.opendaylight.controller.yang2sources.spi.CodeGenerator;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
+import org.opendaylight.yangtools.yang2sources.plugin.ConfigArg.CodeGeneratorArg;
+import org.opendaylight.yangtools.yang2sources.plugin.Util.ContextHolder;
+import org.opendaylight.yangtools.yang2sources.plugin.Util.YangsInZipsResult;
+import org.opendaylight.yangtools.yang2sources.spi.CodeGenerator;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.Maps;
* 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.controller.yang2sources.plugin;
+package org.opendaylight.yangtools.yang2sources.plugin;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.*;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
-import org.opendaylight.controller.yang2sources.plugin.ConfigArg.CodeGeneratorArg;
-import org.opendaylight.controller.yang2sources.plugin.YangToSourcesProcessor.YangProvider;
-import org.opendaylight.controller.yang2sources.spi.CodeGenerator;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang2sources.plugin.ConfigArg.CodeGeneratorArg;
+import org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.YangProvider;
+import org.opendaylight.yangtools.yang2sources.spi.CodeGenerator;
import com.google.common.collect.Lists;
* 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.controller.yang2sources.plugin;
+package org.opendaylight.yangtools.yang2sources.plugin;
import static org.junit.Assert.*;
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
\r
<parent>\r
- <groupId>org.opendaylight.yang</groupId>\r
+ <groupId>org.opendaylight.yangtools</groupId>\r
<artifactId>yangtools</artifactId>\r
<version>0.5.4-SNAPSHOT</version>\r
</parent>\r
*/
package org.opendaylight.yangtools.yang.model.api;
-import org.opendaylight.controller.yang.common.QName;
-
import java.util.Set;
+import org.opendaylight.yangtools.yang.common.QName;
+
/**
* The ChoiceNode defines a set of alternatives. It consists of a number of
* branches defined as ChoiceCaseNode objects.
\r
import java.util.Set;\r
\r
-import org.opendaylight.controller.yang.common.QName;\r
+import org.opendaylight.yangtools.yang.common.QName;\r
\r
/**\r
* Node which can contains other nodes.\r
\r
import java.util.List;\r
\r
-import org.opendaylight.controller.yang.common.QName;\r
+import org.opendaylight.yangtools.yang.common.QName;\r
\r
/**\r
* Interface describing YANG 'list' statement.\r
\r
import java.util.List;\r
\r
-import org.opendaylight.controller.yang.common.QName;\r
+import org.opendaylight.yangtools.yang.common.QName;\r
\r
/**\r
* SchemaNode represents a node in schema tree.\r
import java.util.Collections;\r
import java.util.List;\r
\r
-import org.opendaylight.controller.yang.common.QName;\r
+import org.opendaylight.yangtools.yang.common.QName;\r
\r
public class SchemaPath {\r
\r
*/
package org.opendaylight.yangtools.yang.model.api;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
public interface UnknownSchemaNode extends SchemaNode {
*/
package org.opendaylight.yangtools.yang.model.api.type;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
public interface IdentityTypeDefinition extends
*/\r
package org.opendaylight.yangtools.yang.model.api.type;\r
\r
-import org.opendaylight.controller.yang.common.QName;\r
+import org.opendaylight.yangtools.yang.common.QName;\r
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;\r
\r
public interface IdentityrefTypeDefinition extends\r
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
\r
<parent>\r
- <groupId>org.opendaylight.yang</groupId>\r
+ <groupId>org.opendaylight.yangtools</groupId>\r
<artifactId>yangtools</artifactId>\r
<version>0.5.4-SNAPSHOT</version>\r
</parent>\r
+++ /dev/null
-/*
- * 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.controller.yang.model.util;
-
-import java.net.URI;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Queue;
-import java.util.Set;
-
-import org.opendaylight.controller.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.*;
-
-public final class SchemaContextUtil {
-
- private SchemaContextUtil() {
- }
-
- public static DataSchemaNode findDataSchemaNode(final SchemaContext context, final SchemaPath schemaPath) {
- if (schemaPath != null) {
- final Module module = resolveModuleFromSchemaPath(context, schemaPath);
- final Queue<QName> prefixedPath = new LinkedList<>(schemaPath.getPath());
-
- if ((module != null) && (prefixedPath != null)) {
- return findSchemaNodeForGivenPath(context, module, prefixedPath);
- }
- }
- return null;
- }
-
- public static DataSchemaNode findDataSchemaNode(final SchemaContext context, final Module module,
- final RevisionAwareXPath nonCondXPath) {
- if (nonCondXPath != null) {
- final String strXPath = nonCondXPath.toString();
-
- if (strXPath != null) {
- if (strXPath.matches(".*//[.* | .*//].*")) {
- // TODO: function to escape conditions in path
- }
- if (nonCondXPath.isAbsolute()) {
- final Queue<QName> qnamedPath = xpathToQNamePath(context, module, strXPath);
- if (qnamedPath != null) {
- final DataSchemaNode dataNode = findSchemaNodeForGivenPath(context, module, qnamedPath);
- return dataNode;
- }
- }
- }
- }
- return null;
- }
-
- public static DataSchemaNode findDataSchemaNodeForRelativeXPath(final SchemaContext context, final Module module,
- final SchemaNode actualSchemaNode, final RevisionAwareXPath relativeXPath) {
- if ((actualSchemaNode != null) && (relativeXPath != null) && !relativeXPath.isAbsolute()) {
-
- final SchemaPath actualNodePath = actualSchemaNode.getPath();
- if (actualNodePath != null) {
- final Queue<QName> qnamePath = resolveRelativeXPath(context, module, relativeXPath, actualNodePath);
-
- if (qnamePath != null) {
- final DataSchemaNode dataNode = findSchemaNodeForGivenPath(context, module, qnamePath);
- return dataNode;
- }
- }
- }
-
- return null;
- }
-
- private static Module resolveModuleFromSchemaPath(final SchemaContext context, final SchemaPath schemaPath) {
- if ((schemaPath != null) && (schemaPath.getPath() != null)) {
- final List<QName> path = schemaPath.getPath();
- if (!path.isEmpty()) {
- final QName qname = path.get(path.size() - 1);
-
- if ((qname != null) && (qname.getNamespace() != null)) {
- return context.findModuleByNamespace(qname.getNamespace());
- }
- }
- }
- return null;
- }
-
- public static Module findParentModuleForTypeDefinition(final SchemaContext context, final TypeDefinition<?> type) {
- final SchemaPath schemaPath = type.getPath();
- if ((schemaPath != null) && (schemaPath.getPath() != null)) {
- if (type instanceof ExtendedType) {
- List<QName> path = schemaPath.getPath();
- final QName qname = path.get(path.size() - 1);
-
- if ((qname != null) && (qname.getNamespace() != null)) {
- return context.findModuleByNamespace(qname.getNamespace());
- }
- } else {
- List<QName> path = schemaPath.getPath();
- final QName qname = path.get(path.size() - 2);
-
- if ((qname != null) && (qname.getNamespace() != null)) {
- return context.findModuleByNamespace(qname.getNamespace());
- }
- }
-
- }
- return null;
- }
-
- public static Module findParentModule(final SchemaContext context, final SchemaNode schemaNode) {
- if (context == null) {
- throw new IllegalArgumentException("Schema Context reference cannot be NULL!");
- }
- if (schemaNode == null) {
- throw new IllegalArgumentException("Schema Node cannot be NULL!");
- }
-
- final SchemaPath schemaPath = schemaNode.getPath();
- if (schemaPath == null) {
- throw new IllegalStateException("Schema Path for Schema Node is not "
- + "set properly (Schema Path is NULL)");
- }
- final List<QName> qnamedPath = schemaPath.getPath();
- if (qnamedPath == null || qnamedPath.isEmpty()) {
- throw new IllegalStateException("Schema Path contains invalid state of path parts."
- + "The Schema Path MUST contain at least ONE QName which defines namespace and Local name"
- + "of path.");
- }
- final QName qname = qnamedPath.get(qnamedPath.size() - 1);
- return context.findModuleByNamespace(qname.getNamespace());
- }
-
- private static DataSchemaNode findSchemaNodeForGivenPath(final SchemaContext context, final Module module,
- final Queue<QName> qnamedPath) {
- if ((module != null) && (module.getNamespace() != null) && (qnamedPath != null)) {
- DataNodeContainer nextNode = module;
- final URI moduleNamespace = module.getNamespace();
-
- QName childNodeQName;
- DataSchemaNode schemaNode = null;
- while ((nextNode != null) && !qnamedPath.isEmpty()) {
- childNodeQName = qnamedPath.peek();
- if (childNodeQName != null) {
- final URI childNodeNamespace = childNodeQName.getNamespace();
-
- schemaNode = nextNode.getDataChildByName(childNodeQName);
- if (schemaNode != null) {
- if (schemaNode instanceof ContainerSchemaNode) {
- nextNode = (ContainerSchemaNode) schemaNode;
- } else if (schemaNode instanceof ListSchemaNode) {
- nextNode = (ListSchemaNode) schemaNode;
- } else if (schemaNode instanceof ChoiceNode) {
- final ChoiceNode choice = (ChoiceNode) schemaNode;
- qnamedPath.poll();
- if (!qnamedPath.isEmpty()) {
- childNodeQName = qnamedPath.peek();
- nextNode = choice.getCaseNodeByName(childNodeQName);
- schemaNode = (DataSchemaNode)nextNode;
- }
- } else {
- nextNode = null;
- }
- } else if (!childNodeNamespace.equals(moduleNamespace)) {
- final Module nextModule = context.findModuleByNamespace(childNodeNamespace);
- schemaNode = findSchemaNodeForGivenPath(context, nextModule, qnamedPath);
- return schemaNode;
- }
- qnamedPath.poll();
- }
- }
- return schemaNode;
- }
- return null;
- }
-
- private static Queue<QName> xpathToQNamePath(final SchemaContext context, final Module parentModule,
- final String xpath) {
- final Queue<QName> path = new LinkedList<>();
- if (xpath != null) {
- final String[] prefixedPath = xpath.split("/");
-
- for (int i = 0; i < prefixedPath.length; ++i) {
- if (!prefixedPath[i].isEmpty()) {
- path.add(stringPathPartToQName(context, parentModule, prefixedPath[i]));
- }
- }
- }
- return path;
- }
-
- private static QName stringPathPartToQName(final SchemaContext context, final Module parentModule,
- final String prefixedPathPart) {
- if (parentModule != null && prefixedPathPart != null) {
- if (prefixedPathPart.contains(":")) {
- final String[] prefixedName = prefixedPathPart.split(":");
- final Module module = resolveModuleForPrefix(context, parentModule, prefixedName[0]);
- if (module != null) {
- return new QName(module.getNamespace(), module.getRevision(), prefixedName[1]);
- }
- } else {
- return new QName(parentModule.getNamespace(), parentModule.getRevision(), prefixedPathPart);
- }
- }
- return null;
- }
-
- private static Module resolveModuleForPrefix(final SchemaContext context, final Module module, final String prefix) {
- if ((module != null) && (prefix != null)) {
- if (prefix.equals(module.getPrefix())) {
- return module;
- }
-
- final Set<ModuleImport> imports = module.getImports();
-
- for (final ModuleImport mi : imports) {
- if (prefix.equals(mi.getPrefix())) {
- return context.findModuleByName(mi.getModuleName(), mi.getRevision());
- }
- }
- }
- return null;
- }
-
- private static Queue<QName> resolveRelativeXPath(final SchemaContext context, final Module module,
- final RevisionAwareXPath relativeXPath, final SchemaPath leafrefSchemaPath) {
- final Queue<QName> absolutePath = new LinkedList<>();
-
- if ((module != null) && (relativeXPath != null) && !relativeXPath.isAbsolute() && (leafrefSchemaPath != null)) {
- final String strXPath = relativeXPath.toString();
- if (strXPath != null) {
- final String[] xpaths = strXPath.split("/");
-
- if (xpaths != null) {
- int colCount = 0;
- while (xpaths[colCount].contains("..")) {
- ++colCount;
- }
- final List<QName> path = leafrefSchemaPath.getPath();
- if (path != null) {
- int lenght = path.size() - colCount - 1;
- for (int i = 0; i < lenght; ++i) {
- absolutePath.add(path.get(i));
- }
- for (int i = colCount; i < xpaths.length; ++i) {
- absolutePath.add(stringPathPartToQName(context, module, xpaths[i]));
- }
- }
- }
- }
- }
- return absolutePath;
- }
-}
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
/**
*
*/
-package org.opendaylight.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
* 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.model.util;\r
+package org.opendaylight.yangtools.yang.model.util;\r
\r
import java.net.URI;\r
import java.util.ArrayList;\r
import java.util.Date;\r
import java.util.List;\r
\r
-import org.opendaylight.controller.yang.common.QName;\r
+import org.opendaylight.yangtools.yang.common.QName;\r
import org.opendaylight.yangtools.yang.model.api.SchemaPath;\r
\r
public final class BaseTypes {\r
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
import java.util.ArrayList;
import java.util.Iterator;
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
import java.net.URI;
import java.util.Collections;
import java.util.Date;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
* 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.model.util;\r
+package org.opendaylight.yangtools.yang.model.util;\r
\r
import java.util.Collections;\r
import java.util.List;\r
\r
-import org.opendaylight.controller.yang.common.QName;\r
+import org.opendaylight.yangtools.yang.common.QName;\r
import org.opendaylight.yangtools.yang.model.api.SchemaPath;\r
import org.opendaylight.yangtools.yang.model.api.Status;\r
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;\r
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition;
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition;
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition;
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition;
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
--- /dev/null
+/*
+ * 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.model.util;
+
+import java.net.URI;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Queue;
+import java.util.Set;
+
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.ChoiceNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
+import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.ModuleImport;
+import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.SchemaNode;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
+
+/**
+ * The Schema Context Util contains support methods for searching through Schema Context modules for specified schema
+ * nodes via Schema Path or Revision Aware XPath. The Schema Context Util is designed as mixin,
+ * so it is not instantiable.
+ *
+ * @author Lukas Sedlak <lsedlak@cisco.com>
+ */
+public final class SchemaContextUtil {
+
+ private SchemaContextUtil() {
+ }
+
+ /**
+ * Method attempts to find DataSchemaNode in Schema Context via specified Schema Path. The returned
+ * DataSchemaNode from method will be the node at the end of the SchemaPath. If the DataSchemaNode is not present
+ * in the Schema Context the method will return <code>null</code>.
+ * <br>
+ * In case that Schema Context or Schema Path are not specified correctly (i.e. contains <code>null</code>
+ * values) the method will return IllegalArgumentException.
+ *
+ * @throws IllegalArgumentException
+ *
+ * @param context
+ * Schema Context
+ * @param schemaPath
+ * Schema Path to search for
+ * @return DataSchemaNode from the end of the Schema Path or
+ * <code>null</code> if the Node is not present.
+ */
+ public static DataSchemaNode findDataSchemaNode(final SchemaContext context, final SchemaPath schemaPath) {
+ if (context == null) {
+ throw new IllegalArgumentException("Schema Context reference cannot be NULL!");
+ }
+ if (schemaPath == null) {
+ throw new IllegalArgumentException("Schema Path reference cannot be NULL");
+ }
+
+ final Module module = resolveModuleFromSchemaPath(context, schemaPath);
+ final Queue<QName> prefixedPath = new LinkedList<>(schemaPath.getPath());
+
+ if ((module != null) && (prefixedPath != null)) {
+ return findSchemaNodeForGivenPath(context, module, prefixedPath);
+ }
+ return null;
+ }
+
+ /**
+ * Method attempts to find DataSchemaNode inside of provided Schema Context and Yang Module accordingly to
+ * Non-conditional Revision Aware XPath. The specified Module MUST be present in Schema Context otherwise the
+ * operation would fail and return <code>null</code>.
+ * <br>
+ * The Revision Aware XPath MUST be specified WITHOUT the conditional statement (i.e. without [cond]) in path,
+ * because in this state the Schema Context is completely unaware of data state and will be not able to properly
+ * resolve XPath. If the XPath contains condition the method will return IllegalArgumentException.
+ * <br>
+ * In case that Schema Context or Module or Revision Aware XPath contains <code>null</code> references the method
+ * will throw IllegalArgumentException
+ * <br>
+ * If the Revision Aware XPath is correct and desired Data Schema Node is present in Yang module or in depending
+ * module in Schema Context the method will return specified Data Schema Node, otherwise the operation will fail
+ * and method will return <code>null</code>.
+ *
+ * @throws IllegalArgumentException
+ *
+ * @param context Schema Context
+ * @param module Yang Module
+ * @param nonCondXPath Non Conditional Revision Aware XPath
+ * @return Returns Data Schema Node for specified Schema Context for given Non-conditional Revision Aware XPath,
+ * or <code>null</code> if the DataSchemaNode is not present in Schema Context.
+ */
+ public static DataSchemaNode findDataSchemaNode(final SchemaContext context, final Module module,
+ final RevisionAwareXPath nonCondXPath) {
+ if (context == null) {
+ throw new IllegalArgumentException("Schema Context reference cannot be NULL!");
+ }
+ if (module == null) {
+ throw new IllegalArgumentException("Module reference cannot be NULL!");
+ }
+ if (nonCondXPath == null) {
+ throw new IllegalArgumentException("Non Conditional Revision Aware XPath cannot be NULL!");
+ }
+
+ final String strXPath = nonCondXPath.toString();
+ if (strXPath != null) {
+ if (strXPath.contains("[")) {
+ throw new IllegalArgumentException("Revision Aware XPath cannot contains condition!");
+ }
+ if (nonCondXPath.isAbsolute()) {
+ final Queue<QName> qnamedPath = xpathToQNamePath(context, module, strXPath);
+ if (qnamedPath != null) {
+ final DataSchemaNode dataNode = findSchemaNodeForGivenPath(context, module, qnamedPath);
+ return dataNode;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Method attempts to find DataSchemaNode inside of provided Schema Context and Yang Module accordingly to
+ * Non-conditional relative Revision Aware XPath. The specified Module MUST be present in Schema Context otherwise
+ * the operation would fail and return <code>null</code>.
+ * <br>
+ * The relative Revision Aware XPath MUST be specified WITHOUT the conditional statement (i.e. without [cond]) in
+ * path, because in this state the Schema Context is completely unaware of data state and will be not able to
+ * properly resolve XPath. If the XPath contains condition the method will return IllegalArgumentException.
+ * <br>
+ * The Actual Schema Node MUST be specified correctly because from this Schema Node will search starts. If the
+ * Actual Schema Node is not correct the operation will simply fail, because it will be unable to find desired
+ * DataSchemaNode.
+ * <br>
+ * In case that Schema Context or Module or Actual Schema Node or relative Revision Aware XPath contains
+ * <code>null</code> references the method will throw IllegalArgumentException
+ * <br>
+ * If the Revision Aware XPath doesn't have flag <code>isAbsolute == false</code> the method will
+ * throw IllegalArgumentException.
+ * <br>
+ * If the relative Revision Aware XPath is correct and desired Data Schema Node is present in Yang module or in
+ * depending module in Schema Context the method will return specified Data Schema Node,
+ * otherwise the operation will fail
+ * and method will return <code>null</code>.
+ *
+ * @throws IllegalArgumentException
+ *
+ * @param context Schema Context
+ * @param module Yang Module
+ * @param actualSchemaNode Actual Schema Node
+ * @param relativeXPath Relative Non Conditional Revision Aware XPath
+ * @return DataSchemaNode if is present in specified Schema Context for given relative Revision Aware XPath,
+ * otherwise will return <code>null</code>.
+ */
+ public static DataSchemaNode findDataSchemaNodeForRelativeXPath(final SchemaContext context, final Module module,
+ final SchemaNode actualSchemaNode, final RevisionAwareXPath relativeXPath) {
+ if (context == null) {
+ throw new IllegalArgumentException("Schema Context reference cannot be NULL!");
+ }
+ if (module == null) {
+ throw new IllegalArgumentException("Module reference cannot be NULL!");
+ }
+ if (actualSchemaNode == null) {
+ throw new IllegalArgumentException("Actual Schema Node reference cannot be NULL!");
+ }
+ if (relativeXPath == null) {
+ throw new IllegalArgumentException("Non Conditional Revision Aware XPath cannot be NULL!");
+ }
+ if (relativeXPath.isAbsolute()) {
+ throw new IllegalArgumentException("Revision Aware XPath MUST be relative i.e. MUST contains ../, "
+ + "for non relative Revision Aware XPath use findDataSchemaNode method!");
+ }
+
+ final SchemaPath actualNodePath = actualSchemaNode.getPath();
+ if (actualNodePath != null) {
+ final Queue<QName> qnamePath = resolveRelativeXPath(context, module, relativeXPath, actualNodePath);
+
+ if (qnamePath != null) {
+ final DataSchemaNode dataNode = findSchemaNodeForGivenPath(context, module, qnamePath);
+ return dataNode;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Retrieve information from Schema Path and returns the module reference to which Schema Node belongs. The
+ * search for correct Module is based on namespace within the last item in Schema Path. If schema context
+ * contains module with namespace specified in last item of Schema Path, then operation will returns Module
+ * reference, otherwise returns <code>null</code>
+ * <br>
+ * If Schema Context or Schema Node contains <code>null</code> references the method will throw IllegalArgumentException
+ *
+ * @throws IllegalArgumentException
+ *
+ * @param context Schema Context
+ * @param schemaPath Schema Path
+ * @return Module reference for given Schema Path if module is present in Schema Context,
+ * otherwise returns <code>null</code>
+ */
+ private static Module resolveModuleFromSchemaPath(final SchemaContext context, final SchemaPath schemaPath) {
+ if (context == null) {
+ throw new IllegalArgumentException("Schema Context reference cannot be NULL!");
+ }
+ if (schemaPath == null) {
+ throw new IllegalArgumentException("Schema Path reference cannot be NULL");
+ }
+
+ final List<QName> path = schemaPath.getPath();
+ if (!path.isEmpty()) {
+ final QName qname = path.get(path.size() - 1);
+
+ if ((qname != null) && (qname.getNamespace() != null)) {
+ return context.findModuleByNamespace(qname.getNamespace());
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Returns the Yang Module from specified Schema Context in which the TypeDefinition is declared. If the
+ * TypeDefinition si not present in Schema Context then the method will return <code>null</code>
+ *
+ * If Schema Context or TypeDefinition contains <code>null</code> references the method will throw IllegalArgumentException
+ *
+ * @throws IllegalArgumentException
+ *
+ * @param context Schema Context
+ * @param type Type Definition
+ * @return Yang Module in which the TypeDefinition is declared, if is not present, returns <code>null</code>.
+ */
+ public static Module findParentModuleForTypeDefinition(final SchemaContext context, final TypeDefinition<?> type) {
+ final SchemaPath schemaPath = type.getPath();
+ if (schemaPath == null) {
+ throw new IllegalArgumentException("Schema Path reference cannot be NULL");
+ }
+ final List<QName> qnamedPath = schemaPath.getPath();
+ if (qnamedPath == null || qnamedPath.isEmpty()) {
+ throw new IllegalStateException("Schema Path contains invalid state of path parts."
+ + "The Schema Path MUST contain at least ONE QName which defines namespace and Local name"
+ + "of path.");
+ }
+
+ if (type instanceof ExtendedType) {
+ final QName qname = qnamedPath.get(qnamedPath.size() - 1);
+ if ((qname != null) && (qname.getNamespace() != null)) {
+ return context.findModuleByNamespace(qname.getNamespace());
+ }
+ } else {
+ final QName qname = qnamedPath.get(qnamedPath.size() - 2);
+ if ((qname != null) && (qname.getNamespace() != null)) {
+ return context.findModuleByNamespace(qname.getNamespace());
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns parent Yang Module for specified Schema Context in which Schema Node is declared. If the Schema Node
+ * is not present in Schema Context the operation will return <code>null</code>.
+ * <br>
+ * If Schema Context or Schema Node contains <code>null</code> references the method will throw IllegalArgumentException
+ *
+ * @throws IllegalArgumentException
+ *
+ * @param context Schema Context
+ * @param schemaNode Schema Node
+ * @return Yang Module for specified Schema Context and Schema Node, if Schema Node is NOT present,
+ * the method will returns <code>null</code>
+ */
+ public static Module findParentModule(final SchemaContext context, final SchemaNode schemaNode) {
+ if (context == null) {
+ throw new IllegalArgumentException("Schema Context reference cannot be NULL!");
+ }
+ if (schemaNode == null) {
+ throw new IllegalArgumentException("Schema Node cannot be NULL!");
+ }
+
+ final SchemaPath schemaPath = schemaNode.getPath();
+ if (schemaPath == null) {
+ throw new IllegalStateException("Schema Path for Schema Node is not "
+ + "set properly (Schema Path is NULL)");
+ }
+ final List<QName> qnamedPath = schemaPath.getPath();
+ if (qnamedPath == null || qnamedPath.isEmpty()) {
+ throw new IllegalStateException("Schema Path contains invalid state of path parts."
+ + "The Schema Path MUST contain at least ONE QName which defines namespace and Local name"
+ + "of path.");
+ }
+ final QName qname = qnamedPath.get(qnamedPath.size() - 1);
+ return context.findModuleByNamespace(qname.getNamespace());
+ }
+
+ /**
+ * Method will attempt to find DataSchemaNode from specified Module and Queue of QNames through the Schema
+ * Context. The QNamed path could be defined across multiple modules in Schema Context so the method is called
+ * recursively. If the QNamed path contains QNames that are not part of any Module or Schema Context Path the
+ * operation will fail and returns <code>null</code>
+ * <br>
+ * If Schema Context, Module or Queue of QNames refers to <code>null</code> values,
+ * the method will throws IllegalArgumentException
+ *
+ * @throws IllegalArgumentException
+ *
+ * @param context Schema Context
+ * @param module Yang Module
+ * @param qnamedPath Queue of QNames
+ * @return DataSchemaNode if is present in Module(s) for specified Schema Context and given QNamed Path,
+ * otherwise will return <code>null</code>.
+ */
+ private static DataSchemaNode findSchemaNodeForGivenPath(final SchemaContext context, final Module module,
+ final Queue<QName> qnamedPath) {
+ if (context == null) {
+ throw new IllegalArgumentException("Schema Context reference cannot be NULL!");
+ }
+ if (module == null) {
+ throw new IllegalArgumentException("Module reference cannot be NULL!");
+ }
+ if (module.getNamespace() == null) {
+ throw new IllegalArgumentException("Namespace for Module cannot contains NULL reference!");
+ }
+ if (qnamedPath == null || qnamedPath.isEmpty()) {
+ throw new IllegalStateException("Schema Path contains invalid state of path parts."
+ + "The Schema Path MUST contain at least ONE QName which defines namespace and Local name"
+ + "of path.");
+ }
+
+ DataNodeContainer nextNode = module;
+ final URI moduleNamespace = module.getNamespace();
+
+ QName childNodeQName;
+ DataSchemaNode schemaNode = null;
+ while ((nextNode != null) && !qnamedPath.isEmpty()) {
+ childNodeQName = qnamedPath.peek();
+ if (childNodeQName != null) {
+ final URI childNodeNamespace = childNodeQName.getNamespace();
+
+ schemaNode = nextNode.getDataChildByName(childNodeQName);
+ if (schemaNode != null) {
+ if (schemaNode instanceof ContainerSchemaNode) {
+ nextNode = (ContainerSchemaNode) schemaNode;
+ } else if (schemaNode instanceof ListSchemaNode) {
+ nextNode = (ListSchemaNode) schemaNode;
+ } else if (schemaNode instanceof ChoiceNode) {
+ final ChoiceNode choice = (ChoiceNode) schemaNode;
+ qnamedPath.poll();
+ if (!qnamedPath.isEmpty()) {
+ childNodeQName = qnamedPath.peek();
+ nextNode = choice.getCaseNodeByName(childNodeQName);
+ schemaNode = (DataSchemaNode) nextNode;
+ }
+ } else {
+ nextNode = null;
+ }
+ } else if (!childNodeNamespace.equals(moduleNamespace)) {
+ final Module nextModule = context.findModuleByNamespace(childNodeNamespace);
+ schemaNode = findSchemaNodeForGivenPath(context, nextModule, qnamedPath);
+ return schemaNode;
+ }
+ qnamedPath.poll();
+ }
+ }
+ return schemaNode;
+ }
+
+ /**
+ * Transforms string representation of XPath to Queue of QNames. The XPath is split by "/" and for each part of
+ * XPath is assigned correct module in Schema Path.
+ * <br>
+ * If Schema Context, Parent Module or XPath string contains <code>null</code> values,
+ * the method will throws IllegalArgumentException
+ *
+ * @throws IllegalArgumentException
+ *
+ * @param context Schema Context
+ * @param parentModule Parent Module
+ * @param xpath XPath String
+ * @return
+ */
+ private static Queue<QName> xpathToQNamePath(final SchemaContext context, final Module parentModule,
+ final String xpath) {
+ if (context == null) {
+ throw new IllegalArgumentException("Schema Context reference cannot be NULL!");
+ }
+ if (parentModule == null) {
+ throw new IllegalArgumentException("Parent Module reference cannot be NULL!");
+ }
+ if (xpath == null) {
+ throw new IllegalArgumentException("XPath string reference cannot be NULL!");
+ }
+
+ final Queue<QName> path = new LinkedList<>();
+ final String[] prefixedPath = xpath.split("/");
+ for (int i = 0; i < prefixedPath.length; ++i) {
+ if (!prefixedPath[i].isEmpty()) {
+ path.add(stringPathPartToQName(context, parentModule, prefixedPath[i]));
+ }
+ }
+ return path;
+ }
+
+ /**
+ * Transforms part of Prefixed Path as java String to QName.
+ * <br>
+ * If the string contains module prefix separated by ":" (i.e. mod:container) this module is provided from from
+ * Parent Module list of imports. If the Prefixed module is present in Schema Context the QName can be
+ * constructed.
+ * <br>
+ * If the Prefixed Path Part does not contains prefix the Parent's Module namespace is taken for construction of
+ * QName.
+ * <br>
+ * If Schema Context, Parent Module or Prefixed Path Part refers to <code>null</code> the method will throw
+ * IllegalArgumentException
+ *
+ * @throws IllegalArgumentException
+ *
+ * @param context Schema Context
+ * @param parentModule Parent Module
+ * @param prefixedPathPart Prefixed Path Part string
+ * @return QName from prefixed Path Part String.
+ */
+ private static QName stringPathPartToQName(final SchemaContext context, final Module parentModule,
+ final String prefixedPathPart) {
+ if (context == null) {
+ throw new IllegalArgumentException("Schema Context reference cannot be NULL!");
+ }
+ if (parentModule == null) {
+ throw new IllegalArgumentException("Parent Module reference cannot be NULL!");
+ }
+ if (prefixedPathPart == null) {
+ throw new IllegalArgumentException("Prefixed Path Part cannot be NULL!");
+ }
+
+ if (prefixedPathPart.contains(":")) {
+ final String[] prefixedName = prefixedPathPart.split(":");
+ final Module module = resolveModuleForPrefix(context, parentModule, prefixedName[0]);
+ if (module != null) {
+ return new QName(module.getNamespace(), module.getRevision(), prefixedName[1]);
+ }
+ } else {
+ return new QName(parentModule.getNamespace(), parentModule.getRevision(), prefixedPathPart);
+ }
+ return null;
+ }
+
+ /**
+ * Method will attempt to resolve and provide Module reference for specified module prefix. Each Yang module
+ * could contains multiple imports which MUST be associated with corresponding module prefix. The method simply
+ * looks into module imports and returns the module that is bounded with specified prefix. If the prefix is not
+ * present in module or the prefixed module is not present in specified Schema Context,
+ * the method will return <code>null</code>.
+ * <br>
+ * If String prefix is the same as prefix of the specified Module the reference to this module is returned.
+ * <br>
+ * If Schema Context, Module or Prefix are referring to <code>null</code> the method will return
+ * IllegalArgumentException
+ *
+ * @throws IllegalArgumentException
+ *
+ * @param context Schema Context
+ * @param module Yang Module
+ * @param prefix Module Prefix
+ * @return Module for given prefix in specified Schema Context if is present, otherwise returns <code>null</code>
+ */
+ private static Module resolveModuleForPrefix(final SchemaContext context, final Module module, final String prefix) {
+ if (context == null) {
+ throw new IllegalArgumentException("Schema Context reference cannot be NULL!");
+ }
+ if (module == null) {
+ throw new IllegalArgumentException("Module reference cannot be NULL!");
+ }
+ if (prefix == null) {
+ throw new IllegalArgumentException("Prefix string cannot be NULL!");
+ }
+
+ if (prefix.equals(module.getPrefix())) {
+ return module;
+ }
+
+ final Set<ModuleImport> imports = module.getImports();
+ for (final ModuleImport mi : imports) {
+ if (prefix.equals(mi.getPrefix())) {
+ return context.findModuleByName(mi.getModuleName(), mi.getRevision());
+ }
+ }
+ return null;
+ }
+
+ /**
+ * @throws IllegalArgumentException
+ *
+ * @param context Schema Context
+ * @param module Yang Module
+ * @param relativeXPath Non conditional Revision Aware Relative XPath
+ * @param leafrefSchemaPath Schema Path for Leafref
+ * @return
+ */
+ private static Queue<QName> resolveRelativeXPath(final SchemaContext context, final Module module,
+ final RevisionAwareXPath relativeXPath, final SchemaPath leafrefSchemaPath) {
+ final Queue<QName> absolutePath = new LinkedList<>();
+ if (context == null) {
+ throw new IllegalArgumentException("Schema Context reference cannot be NULL!");
+ }
+ if (module == null) {
+ throw new IllegalArgumentException("Module reference cannot be NULL!");
+ }
+ if (relativeXPath == null) {
+ throw new IllegalArgumentException("Non Conditional Revision Aware XPath cannot be NULL!");
+ }
+ if (relativeXPath.isAbsolute()) {
+ throw new IllegalArgumentException("Revision Aware XPath MUST be relative i.e. MUST contains ../, "
+ + "for non relative Revision Aware XPath use findDataSchemaNode method!");
+ }
+ if (leafrefSchemaPath == null) {
+ throw new IllegalArgumentException("Schema Path reference for Leafref cannot be NULL!");
+ }
+
+ final String strXPath = relativeXPath.toString();
+ if (strXPath != null) {
+ final String[] xpaths = strXPath.split("/");
+ if (xpaths != null) {
+ int colCount = 0;
+ while (xpaths[colCount].contains("..")) {
+ ++colCount;
+ }
+ final List<QName> path = leafrefSchemaPath.getPath();
+ if (path != null) {
+ int lenght = path.size() - colCount - 1;
+ for (int i = 0; i < lenght; ++i) {
+ absolutePath.add(path.get(i));
+ }
+ for (int i = colCount; i < xpaths.length; ++i) {
+ absolutePath.add(stringPathPartToQName(context, module, xpaths[i]));
+ }
+ }
+ }
+ }
+ return absolutePath;
+ }
+}
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition;
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition;
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
import java.math.BigInteger;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition;
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition;
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
* 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.controller.yang.model.util;
+package org.opendaylight.yangtools.yang.model.util;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
* 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.model.util;\r
+package org.opendaylight.yangtools.yang.model.util;\r
\r
import java.net.URI;\r
import java.util.ArrayList;\r
import java.util.List;\r
import java.util.Set;\r
\r
-import org.opendaylight.controller.yang.common.QName;\r
+import org.opendaylight.yangtools.yang.common.QName;\r
import org.opendaylight.yangtools.yang.model.api.SchemaPath;\r
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;\r
\r
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
- <groupId>org.opendaylight.yang</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yangtools</artifactId>
<version>0.5.4-SNAPSHOT</version>
</parent>
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
\r
<parent>\r
- <groupId>org.opendaylight.yang</groupId>\r
+ <groupId>org.opendaylight.yangtools</groupId>\r
<artifactId>yangtools</artifactId>\r
<version>0.5.4-SNAPSHOT</version>\r
</parent>\r
import java.util.HashSet;
import java.util.Set;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
import org.opendaylight.yangtools.yang.parser.util.YangParseException;
\r
import java.util.List;\r
\r
-import org.opendaylight.controller.yang.common.QName;\r
+import org.opendaylight.yangtools.yang.common.QName;\r
import org.opendaylight.yangtools.yang.model.api.SchemaPath;\r
import org.opendaylight.yangtools.yang.model.api.Status;\r
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;\r
*/
package org.opendaylight.yangtools.yang.parser.builder.api;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
/**
import java.util.Set;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
*/\r
package org.opendaylight.yangtools.yang.parser.builder.api;\r
\r
-import org.opendaylight.controller.yang.common.QName;\r
+import org.opendaylight.yangtools.yang.common.QName;\r
import org.opendaylight.yangtools.yang.model.api.SchemaNode;\r
import org.opendaylight.yangtools.yang.model.api.SchemaPath;\r
import org.opendaylight.yangtools.yang.model.api.Status;\r
*/
package org.opendaylight.yangtools.yang.parser.builder.api;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import java.util.TreeMap;
import java.util.TreeSet;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.UsesNode;
-import org.opendaylight.controller.yang.model.util.RevisionAwareXPathImpl;
+import org.opendaylight.yangtools.yang.model.util.RevisionAwareXPathImpl;
import org.opendaylight.yangtools.yang.parser.builder.api.AbstractDataNodeContainerBuilder;
import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationSchemaBuilder;
import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder;
import java.util.Set;
import java.util.TreeSet;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
import org.opendaylight.yangtools.yang.model.api.ChoiceNode;
import java.util.Set;
import java.util.TreeMap;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
-import org.opendaylight.controller.yang.model.util.RevisionAwareXPathImpl;
+import org.opendaylight.yangtools.yang.model.util.RevisionAwareXPathImpl;
import org.opendaylight.yangtools.yang.parser.builder.api.AbstractBuilder;
import org.opendaylight.yangtools.yang.parser.util.YangParseException;
import java.util.TreeMap;
import java.util.TreeSet;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.FeatureDefinition;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import java.util.TreeMap;
import java.util.TreeSet;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
-import org.opendaylight.controller.yang.model.util.IdentityrefType;
+import org.opendaylight.yangtools.yang.model.util.IdentityrefType;
import org.opendaylight.yangtools.yang.parser.builder.api.AbstractTypeAwareBuilder;
import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder;
import org.opendaylight.yangtools.yang.parser.util.YangParseException;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import java.util.TreeMap;
import java.util.TreeSet;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import java.util.TreeMap;
import java.util.TreeSet;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Deviation;
import java.util.TreeMap;
import java.util.TreeSet;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
import java.util.Set;
import java.util.TreeSet;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
-import org.opendaylight.controller.yang.model.util.ExtendedType;
-import org.opendaylight.controller.yang.model.util.UnknownType;
+import org.opendaylight.yangtools.yang.model.util.ExtendedType;
+import org.opendaylight.yangtools.yang.model.util.UnknownType;
import org.opendaylight.yangtools.yang.parser.builder.api.AbstractTypeAwareBuilder;
import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder;
import org.opendaylight.yangtools.yang.parser.util.Comparators;
import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
-import org.opendaylight.controller.yang.model.util.UnionType;
+import org.opendaylight.yangtools.yang.model.util.UnionType;
import org.opendaylight.yangtools.yang.parser.builder.api.AbstractTypeAwareBuilder;
import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder;
import org.opendaylight.yangtools.yang.parser.util.YangParseException;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.antlr.v4.runtime.tree.ParseTreeWalker;
import org.opendaylight.controller.antlrv4.code.gen.YangLexer;
import org.opendaylight.controller.antlrv4.code.gen.YangParser;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ChoiceNode;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.UsesNode;
-import org.opendaylight.controller.yang.model.util.ExtendedType;
-import org.opendaylight.controller.yang.model.util.IdentityrefType;
-import org.opendaylight.controller.yang.model.util.UnknownType;
import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;
+import org.opendaylight.yangtools.yang.model.util.ExtendedType;
+import org.opendaylight.yangtools.yang.model.util.IdentityrefType;
+import org.opendaylight.yangtools.yang.model.util.UnknownType;
import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationSchemaBuilder;
import org.opendaylight.yangtools.yang.parser.builder.api.Builder;
import org.opendaylight.yangtools.yang.parser.builder.api.DataNodeContainerBuilder;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.Units_stmtContext;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.When_stmtContext;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.Yang_version_stmtContext;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
-import org.opendaylight.controller.yang.model.util.YangTypesConverter;
+import org.opendaylight.yangtools.yang.model.util.YangTypesConverter;
import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationSchemaBuilder;
import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder;
import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder;
import java.util.Collections;
import java.util.List;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import java.util.Comparator;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
public class Comparators {
import org.opendaylight.controller.antlrv4.code.gen.YangParser.When_stmtContext;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.Yin_element_argContext;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.Yin_element_stmtContext;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition;
-import org.opendaylight.controller.yang.model.util.BaseConstraints;
-import org.opendaylight.controller.yang.model.util.BaseTypes;
-import org.opendaylight.controller.yang.model.util.BinaryType;
-import org.opendaylight.controller.yang.model.util.BitsType;
-import org.opendaylight.controller.yang.model.util.Decimal64;
-import org.opendaylight.controller.yang.model.util.EnumerationType;
-import org.opendaylight.controller.yang.model.util.ExtendedType;
-import org.opendaylight.controller.yang.model.util.InstanceIdentifier;
-import org.opendaylight.controller.yang.model.util.Int16;
-import org.opendaylight.controller.yang.model.util.Int32;
-import org.opendaylight.controller.yang.model.util.Int64;
-import org.opendaylight.controller.yang.model.util.Int8;
-import org.opendaylight.controller.yang.model.util.Leafref;
-import org.opendaylight.controller.yang.model.util.RevisionAwareXPathImpl;
-import org.opendaylight.controller.yang.model.util.StringType;
-import org.opendaylight.controller.yang.model.util.Uint16;
-import org.opendaylight.controller.yang.model.util.Uint32;
-import org.opendaylight.controller.yang.model.util.Uint64;
-import org.opendaylight.controller.yang.model.util.Uint8;
-import org.opendaylight.controller.yang.model.util.UnknownType;
+import org.opendaylight.yangtools.yang.model.util.BaseConstraints;
+import org.opendaylight.yangtools.yang.model.util.BaseTypes;
+import org.opendaylight.yangtools.yang.model.util.BinaryType;
+import org.opendaylight.yangtools.yang.model.util.BitsType;
+import org.opendaylight.yangtools.yang.model.util.Decimal64;
+import org.opendaylight.yangtools.yang.model.util.EnumerationType;
+import org.opendaylight.yangtools.yang.model.util.ExtendedType;
+import org.opendaylight.yangtools.yang.model.util.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.model.util.Int16;
+import org.opendaylight.yangtools.yang.model.util.Int32;
+import org.opendaylight.yangtools.yang.model.util.Int64;
+import org.opendaylight.yangtools.yang.model.util.Int8;
+import org.opendaylight.yangtools.yang.model.util.Leafref;
+import org.opendaylight.yangtools.yang.model.util.RevisionAwareXPathImpl;
+import org.opendaylight.yangtools.yang.model.util.StringType;
+import org.opendaylight.yangtools.yang.model.util.Uint16;
+import org.opendaylight.yangtools.yang.model.util.Uint32;
+import org.opendaylight.yangtools.yang.model.util.Uint64;
+import org.opendaylight.yangtools.yang.model.util.Uint8;
+import org.opendaylight.yangtools.yang.model.util.UnknownType;
import org.opendaylight.yangtools.yang.parser.builder.api.Builder;
import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder;
import org.opendaylight.yangtools.yang.parser.builder.api.SchemaNodeBuilder;
constraints.addMustDefinition(must);
} else if (childNode instanceof Mandatory_stmtContext) {
for (int j = 0; j < childNode.getChildCount(); j++) {
- ParseTree mandatoryTree = ctx.getChild(j);
+ ParseTree mandatoryTree = childNode.getChild(j);
if (mandatoryTree instanceof Mandatory_argContext) {
Boolean mandatory = Boolean.valueOf(stringFromNode(mandatoryTree));
constraints.setMandatory(mandatory);
import java.util.Set;
import java.util.TreeMap;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ChoiceNode;
import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition;
-import org.opendaylight.controller.yang.model.util.BinaryType;
-import org.opendaylight.controller.yang.model.util.BitsType;
-import org.opendaylight.controller.yang.model.util.BooleanType;
-import org.opendaylight.controller.yang.model.util.Decimal64;
-import org.opendaylight.controller.yang.model.util.EmptyType;
-import org.opendaylight.controller.yang.model.util.EnumerationType;
-import org.opendaylight.controller.yang.model.util.ExtendedType;
-import org.opendaylight.controller.yang.model.util.IdentityrefType;
-import org.opendaylight.controller.yang.model.util.InstanceIdentifier;
-import org.opendaylight.controller.yang.model.util.Int16;
-import org.opendaylight.controller.yang.model.util.Int32;
-import org.opendaylight.controller.yang.model.util.Int64;
-import org.opendaylight.controller.yang.model.util.Int8;
-import org.opendaylight.controller.yang.model.util.Leafref;
-import org.opendaylight.controller.yang.model.util.StringType;
-import org.opendaylight.controller.yang.model.util.Uint16;
-import org.opendaylight.controller.yang.model.util.Uint32;
-import org.opendaylight.controller.yang.model.util.Uint64;
-import org.opendaylight.controller.yang.model.util.Uint8;
-import org.opendaylight.controller.yang.model.util.UnionType;
-import org.opendaylight.controller.yang.model.util.UnknownType;
+import org.opendaylight.yangtools.yang.model.util.BinaryType;
+import org.opendaylight.yangtools.yang.model.util.BitsType;
+import org.opendaylight.yangtools.yang.model.util.BooleanType;
+import org.opendaylight.yangtools.yang.model.util.Decimal64;
+import org.opendaylight.yangtools.yang.model.util.EmptyType;
+import org.opendaylight.yangtools.yang.model.util.EnumerationType;
+import org.opendaylight.yangtools.yang.model.util.ExtendedType;
+import org.opendaylight.yangtools.yang.model.util.IdentityrefType;
+import org.opendaylight.yangtools.yang.model.util.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.model.util.Int16;
+import org.opendaylight.yangtools.yang.model.util.Int32;
+import org.opendaylight.yangtools.yang.model.util.Int64;
+import org.opendaylight.yangtools.yang.model.util.Int8;
+import org.opendaylight.yangtools.yang.model.util.Leafref;
+import org.opendaylight.yangtools.yang.model.util.StringType;
+import org.opendaylight.yangtools.yang.model.util.Uint16;
+import org.opendaylight.yangtools.yang.model.util.Uint32;
+import org.opendaylight.yangtools.yang.model.util.Uint64;
+import org.opendaylight.yangtools.yang.model.util.Uint8;
+import org.opendaylight.yangtools.yang.model.util.UnionType;
+import org.opendaylight.yangtools.yang.model.util.UnknownType;
import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationSchemaBuilder;
import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationTargetBuilder;
import org.opendaylight.yangtools.yang.parser.builder.api.Builder;
import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
-import org.opendaylight.controller.yang.model.util.ExtendedType;
+import org.opendaylight.yangtools.yang.model.util.ExtendedType;
import org.opendaylight.yangtools.yang.parser.builder.api.Builder;
import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder;
import org.opendaylight.yangtools.yang.parser.builder.api.SchemaNodeBuilder;
import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
-import org.opendaylight.controller.yang.model.util.BaseConstraints;
+import org.opendaylight.yangtools.yang.model.util.BaseConstraints;
/**
* Holder object for holding YANG type constraints.
import org.junit.Before;
import org.junit.Test;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
import org.opendaylight.yangtools.yang.model.api.ChoiceNode;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
-import org.opendaylight.controller.yang.model.util.ExtendedType;
-import org.opendaylight.controller.yang.model.util.Leafref;
+import org.opendaylight.yangtools.yang.model.util.ExtendedType;
+import org.opendaylight.yangtools.yang.model.util.Leafref;
import com.google.common.collect.Lists;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.UsesNode;
-import org.opendaylight.controller.yang.model.util.ExtendedType;
+import org.opendaylight.yangtools.yang.model.util.ExtendedType;
public class GroupingTest {
private Set<Module> modules;
import java.util.List;
import java.util.Set;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.ModuleImport;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.junit.Before;
import org.junit.Test;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition;
-import org.opendaylight.controller.yang.model.util.BitsType;
-import org.opendaylight.controller.yang.model.util.EnumerationType;
-import org.opendaylight.controller.yang.model.util.ExtendedType;
-import org.opendaylight.controller.yang.model.util.IdentityrefType;
-import org.opendaylight.controller.yang.model.util.InstanceIdentifier;
-import org.opendaylight.controller.yang.model.util.UnionType;
+import org.opendaylight.yangtools.yang.model.util.BitsType;
+import org.opendaylight.yangtools.yang.model.util.EnumerationType;
+import org.opendaylight.yangtools.yang.model.util.ExtendedType;
+import org.opendaylight.yangtools.yang.model.util.IdentityrefType;
+import org.opendaylight.yangtools.yang.model.util.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.model.util.UnionType;
public class TypesResolutionTest {
private Set<Module> testedModules;
--- /dev/null
+/*
+ * 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.parser.impl;
+
+import static org.junit.Assert.*;
+
+import java.io.FileNotFoundException;
+import java.net.URI;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Set;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.MustDefinition;
+import org.opendaylight.yangtools.yang.model.api.Status;
+
+public class YangParserSimpleTest {
+
+ private final URI snNS = URI.create("urn:opendaylight:simple-nodes");
+ private Date snRev;
+
+ private final DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+ private Set<Module> modules;
+
+ @Before
+ public void init() throws FileNotFoundException, ParseException {
+ snRev = simpleDateFormat.parse("2013-07-30");
+ modules = TestUtils.loadModules(getClass().getResource("/simple-test").getPath());
+ }
+
+ @Test
+ public void testAnyXml() {
+ Module testModule = TestUtils.findModule(modules, "simple-nodes");
+ AnyXmlSchemaNode data = (AnyXmlSchemaNode) testModule.getDataChildByName("data");
+ assertNotNull("'anyxml data not found'", data);
+
+ // test SchemaNode args
+ QName qname = data.getQName();
+ assertEquals("data", qname.getLocalName());
+ assertEquals("sn", qname.getPrefix());
+ assertEquals(snNS, qname.getNamespace());
+ assertEquals(snRev, qname.getRevision());
+ assertEquals("anyxml desc", data.getDescription());
+ assertEquals("data ref", data.getReference());
+ assertEquals(Status.OBSOLETE, data.getStatus());
+ assertEquals(0, data.getUnknownSchemaNodes().size());
+ // test DataSchemaNode args
+ assertFalse(data.isAugmenting());
+ assertFalse(data.isConfiguration());
+ ConstraintDefinition constraints = data.getConstraints();
+ assertEquals("class != 'wheel'", constraints.getWhenCondition().toString());
+ Set<MustDefinition> mustConstraints = constraints.getMustConstraints();
+ assertEquals(2, constraints.getMustConstraints().size());
+
+ String must1 = "\"ifType != 'ethernet' or (ifType = 'ethernet' and ifMTU = 1500)\"";
+ String errMsg1 = "An ethernet MTU must be 1500";
+ String must2 = "\"ifType != 'atm' or (ifType = 'atm' and ifMTU <= 17966 and ifMTU >= 64)\"";
+ String errMsg2 = "An atm MTU must be 64 .. 17966";
+
+ boolean found1 = false;
+ boolean found2 = false;
+
+ for (MustDefinition must : mustConstraints) {
+ System.out.println(must);
+ if (must1.equals(must.toString())) {
+ found1 = true;
+ assertEquals(errMsg1, must.getErrorMessage());
+ } else if (must2.equals(must.toString())) {
+ found2 = true;
+ assertEquals(errMsg2, must.getErrorMessage());
+ assertEquals("anyxml data error-app-tag", must.getErrorAppTag());
+ assertEquals("an error occured in data", must.getDescription());
+ assertEquals("data must ref", must.getReference());
+ }
+ }
+ assertTrue(found1);
+ assertTrue(found2);
+
+ assertTrue(constraints.isMandatory());
+ assertNull(constraints.getMinElements());
+ assertNull(constraints.getMaxElements());
+ }
+
+}
import org.junit.Before;
import org.junit.Test;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint;
import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
-import org.opendaylight.controller.yang.model.util.Decimal64;
-import org.opendaylight.controller.yang.model.util.ExtendedType;
-import org.opendaylight.controller.yang.model.util.Int16;
-import org.opendaylight.controller.yang.model.util.Int32;
-import org.opendaylight.controller.yang.model.util.StringType;
-import org.opendaylight.controller.yang.model.util.Uint32;
-import org.opendaylight.controller.yang.model.util.UnionType;
+import org.opendaylight.yangtools.yang.model.util.Decimal64;
+import org.opendaylight.yangtools.yang.model.util.ExtendedType;
+import org.opendaylight.yangtools.yang.model.util.Int16;
+import org.opendaylight.yangtools.yang.model.util.Int32;
+import org.opendaylight.yangtools.yang.model.util.StringType;
+import org.opendaylight.yangtools.yang.model.util.Uint32;
+import org.opendaylight.yangtools.yang.model.util.UnionType;
public class YangParserTest {
import java.util.Set;
import org.junit.Test;
-import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ChoiceNode;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.UsesNode;
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
-import org.opendaylight.controller.yang.model.util.ExtendedType;
+import org.opendaylight.yangtools.yang.model.util.ExtendedType;
import com.google.common.collect.Lists;
--- /dev/null
+module simple-nodes {
+ yang-version 1;
+ namespace "urn:opendaylight:simple-nodes";
+ prefix "sn";
+
+ organization "opendaylight";
+
+ description
+ "test file containing yang data nodes";
+
+ revision "2013-07-30" {
+ description
+ "Initial revision.";
+ reference "will be defined";
+ }
+
+ // NOTE: simple comment
+
+ anyxml data {
+ config false;
+ description "anyxml desc";
+ if-feature has-name;
+ mandatory true;
+ must "ifType != 'ethernet' or " +
+ "(ifType = 'ethernet' and ifMTU = 1500)" {
+ error-message "An ethernet MTU must be 1500";
+ }
+ must "ifType != 'atm' or " +
+ "(ifType = 'atm' and ifMTU <= 17966 and ifMTU >= 64)" {
+ error-app-tag "anyxml data error-app-tag";
+ error-message "An atm MTU must be 64 .. 17966";
+ description "an error occured in data";
+ reference "data must ref";
+ }
+ reference "data ref";
+ status obsolete;
+ when "class != 'wheel'";
+ }
+
+}