X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fdom%2Fbroker%2Futil%2FYangSchemaUtils.java;h=7aa67a111648a85aafe531401ff058d798a04eba;hp=238ad100e42afca7b4bd75c35b10b35f7ea65880;hb=20a32e6459fd1e27e7669bf1ebc7742b96787b94;hpb=919145b1bf7d68e436efa9b22c174965005a174a diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/util/YangSchemaUtils.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/util/YangSchemaUtils.java index 238ad100e4..7aa67a1116 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/util/YangSchemaUtils.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/util/YangSchemaUtils.java @@ -10,26 +10,28 @@ package org.opendaylight.controller.sal.dom.broker.util; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkState; -import com.google.common.base.Function; -import com.google.common.collect.FluentIterable; - +import com.google.common.collect.Lists; +import java.util.Collection; import java.util.Iterator; import java.util.List; +import java.util.Optional; import java.util.Set; - import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.ActionDefinition; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; -import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition; 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.GroupingDefinition; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; +import org.opendaylight.yangtools.yang.model.api.MustDefinition; +import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; +import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; @@ -38,45 +40,32 @@ import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.UsesNode; public final class YangSchemaUtils { - - private static final Function QNAME_FROM_PATH_ARGUMENT = new Function(){ - - @Override - public QName apply(final PathArgument input) { - if(input == null) { - return null; - } - return input.getNodeType(); - } - }; - private YangSchemaUtils() { throw new UnsupportedOperationException("Utility class."); } - public static DataSchemaNode getSchemaNode(final SchemaContext schema,final YangInstanceIdentifier path) { - checkArgument(schema != null,"YANG Schema must not be null."); - checkArgument(path != null,"Path must not be null."); - return getSchemaNode(schema, FluentIterable.from(path.getPathArguments()).transform(QNAME_FROM_PATH_ARGUMENT)); + public static DataSchemaNode getSchemaNode(final SchemaContext schema, final YangInstanceIdentifier path) { + checkArgument(schema != null, "YANG Schema must not be null."); + checkArgument(path != null, "Path must not be null."); + return getSchemaNode(schema, Lists.transform(path.getPathArguments(), PathArgument::getNodeType)); } - public static DataSchemaNode getSchemaNode(final SchemaContext schema,final Iterable path) { - checkArgument(schema != null,"YANG Schema must not be null."); - checkArgument(path != null,"Path must not be null."); - if(!path.iterator().hasNext()){ + public static DataSchemaNode getSchemaNode(final SchemaContext schema, final Iterable path) { + checkArgument(schema != null, "YANG Schema must not be null."); + checkArgument(path != null, "Path must not be null."); + if (!path.iterator().hasNext()) { return toRootDataNode(schema); } QName firstNode = path.iterator().next(); - DataNodeContainer previous = schema.findModuleByNamespaceAndRevision(firstNode.getNamespace(), - firstNode.getRevision()); + DataNodeContainer previous = schema.findModule(firstNode.getModule()).orElse(null); Iterator iterator = path.iterator(); while (iterator.hasNext()) { - checkArgument(previous!= null, "Supplied path does not resolve into valid schema node."); + checkArgument(previous != null, "Supplied path does not resolve into valid schema node."); QName arg = iterator.next(); DataSchemaNode currentNode = previous.getDataChildByName(arg); - if (currentNode == null && previous instanceof DataNodeContainer) { + if (currentNode == null) { currentNode = searchInChoices(previous, arg); } if (currentNode instanceof DataNodeContainer) { @@ -85,9 +74,10 @@ public final class YangSchemaUtils { checkArgument(!iterator.hasNext(), "Path nests inside leaf node, which is not allowed."); return currentNode; } - checkState(currentNode != null, "Current node should not be null for %s",path); + checkState(currentNode != null, "Current node should not be null for %s", path); } - checkState(previous instanceof DataSchemaNode, "Schema node for %s should be instance of DataSchemaNode. Found %s",path,previous); + checkState(previous instanceof DataSchemaNode, + "Schema node for %s should be instance of DataSchemaNode. Found %s", path, previous); return (DataSchemaNode) previous; } @@ -105,8 +95,7 @@ public final class YangSchemaUtils { } private static DataSchemaNode searchInCases(final ChoiceSchemaNode choiceNode, final QName arg) { - Set cases = choiceNode.getCases(); - for (ChoiceCaseNode caseNode : cases) { + for (CaseSchemaNode caseNode : choiceNode.getCases().values()) { DataSchemaNode node = caseNode.getDataChildByName(arg); if (node != null) { return node; @@ -121,7 +110,7 @@ public final class YangSchemaUtils { private static final class NetconfDataRootNode implements ContainerSchemaNode { - public NetconfDataRootNode(final SchemaContext schema) { + NetconfDataRootNode(final SchemaContext schema) { // TODO Auto-generated constructor stub } @@ -144,13 +133,7 @@ public final class YangSchemaUtils { } @Override - public DataSchemaNode getDataChildByName(final QName name) { - // TODO Auto-generated method stub - return null; - } - - @Override - public DataSchemaNode getDataChildByName(final String name) { + public Optional findDataChildByName(final QName name) { // TODO Auto-generated method stub return null; } @@ -162,7 +145,7 @@ public final class YangSchemaUtils { } @Override - public Set getAvailableAugmentations() { + public Set getAvailableAugmentations() { // TODO Auto-generated method stub return null; } @@ -186,53 +169,68 @@ public final class YangSchemaUtils { } @Override - public ConstraintDefinition getConstraints() { + public QName getQName() { // TODO Auto-generated method stub return null; } @Override - public QName getQName() { + public SchemaPath getPath() { // TODO Auto-generated method stub return null; } @Override - public SchemaPath getPath() { + public Optional getDescription() { + return Optional.empty(); + } + + @Override + public Optional getReference() { + return Optional.empty(); + } + + @Override + public Status getStatus() { // TODO Auto-generated method stub return null; } @Override - public String getDescription() { + public List getUnknownSchemaNodes() { // TODO Auto-generated method stub return null; } @Override - public String getReference() { + public boolean isPresenceContainer() { // TODO Auto-generated method stub - return null; + return false; } @Override - public Status getStatus() { + public Set getNotifications() { // TODO Auto-generated method stub return null; } @Override - public List getUnknownSchemaNodes() { + public Set getActions() { // TODO Auto-generated method stub return null; } @Override - public boolean isPresenceContainer() { + public Optional getWhenCondition() { // TODO Auto-generated method stub - return false; + return null; } + @Override + public Collection getMustConstraints() { + // TODO Auto-generated method stub + return null; + } } }