import java.util.Map;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.model.api.DocumentedNode.WithStatus;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Descendant;
/**
* Contains the methods for getting data and checking properties of the YANG <code>uses</code> substatement.
*
* @return Map, where key is schema path of refined node and value is refined node
*/
- // FIXME: 5.0.0: this should probably be SchemaPath.RelativeSchemaPath (which needs to be exposed)
- @NonNull Map<SchemaPath, SchemaNode> getRefines();
+ @NonNull Map<Descendant, SchemaNode> getRefines();
}
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.GroupingEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.GroupingStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Descendant;
import org.opendaylight.yangtools.yang.model.api.stmt.UsesEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.UsesStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.WhenEffectiveStatement;
implements UsesEffectiveStatement, UsesNode {
private final @NonNull SchemaPath groupingPath;
private final boolean addedByUses;
- private final @NonNull ImmutableMap<SchemaPath, SchemaNode> refines;
+ private final @NonNull ImmutableMap<Descendant, SchemaNode> refines;
private final @NonNull ImmutableSet<AugmentationSchemaNode> augmentations;
private final @Nullable RevisionAwareXPath whenCondition;
// initSubstatementCollections
final Set<AugmentationSchemaNode> augmentationsInit = new LinkedHashSet<>();
- final Map<SchemaPath, SchemaNode> refinesInit = new HashMap<>();
+ final Map<Descendant, SchemaNode> refinesInit = new HashMap<>();
for (final EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements()) {
if (effectiveStatement instanceof AugmentationSchemaNode) {
final AugmentationSchemaNode augmentationSchema = (AugmentationSchemaNode) effectiveStatement;
}
if (effectiveStatement instanceof RefineEffectiveStatementImpl) {
final RefineEffectiveStatementImpl refineStmt = (RefineEffectiveStatementImpl) effectiveStatement;
- final SchemaNodeIdentifier identifier = refineStmt.argument();
- refinesInit.put(identifier.asSchemaPath(), refineStmt.getRefineTargetNode());
+ refinesInit.put(refineStmt.argument(), refineStmt.getRefineTargetNode());
}
}
this.augmentations = ImmutableSet.copyOf(augmentationsInit);
}
@Override
- public Map<SchemaPath, SchemaNode> getRefines() {
+ public Map<Descendant, SchemaNode> getRefines() {
return refines;
}
*/
package org.opendaylight.yangtools.yang.stmt;
-import static org.hamcrest.CoreMatchers.anyOf;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.sourceForResource;
+import com.google.common.collect.ImmutableList;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import org.opendaylight.yangtools.yang.model.api.Module;
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.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.UsesNode;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Descendant;
import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.RFC7950Reactors;
import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource;
assertNotNull(result);
final Module testModule = result.findModules("foo").iterator().next();
- assertNotNull(testModule);
final Collection<? extends UsesNode> usesNodes = testModule.getUses();
assertEquals(1, usesNodes.size());
assertEquals("target", usesNode.getGroupingPath().getLastComponent().getLocalName());
assertEquals(1, usesNode.getAugmentations().size());
- ContainerSchemaNode container = (ContainerSchemaNode) testModule.getDataChildByName(
- QName.create(testModule.getQNameModule(), "peer"));
+ QName peer = QName.create(testModule.getQNameModule(), "peer");
+ ContainerSchemaNode container = (ContainerSchemaNode) testModule.getDataChildByName(peer);
assertNotNull(container);
- container = (ContainerSchemaNode) container.getDataChildByName(QName.create(testModule.getQNameModule(),
- "destination"));
+ container = (ContainerSchemaNode) container.getDataChildByName(QName.create(peer, "destination"));
assertEquals(1, container.getUses().size());
usesNode = container.getUses().iterator().next();
assertEquals("target", usesNode.getGroupingPath().getLastComponent().getLocalName());
- final Map<SchemaPath, SchemaNode> refines = usesNode.getRefines();
+ final Map<Descendant, SchemaNode> refines = usesNode.getRefines();
assertEquals(4, refines.size());
- final Iterator<SchemaPath> refinesKeysIterator = refines.keySet().iterator();
- SchemaPath path = refinesKeysIterator.next();
- assertThat(path.getLastComponent().getLocalName(), anyOf(is("port"), is("address"), is("addresses"), is("id")));
- path = refinesKeysIterator.next();
- assertThat(path.getLastComponent().getLocalName(), anyOf(is("port"), is("address"), is("addresses"), is("id")));
- path = refinesKeysIterator.next();
- assertThat(path.getLastComponent().getLocalName(), anyOf(is("port"), is("address"), is("addresses"), is("id")));
- path = refinesKeysIterator.next();
- assertThat(path.getLastComponent().getLocalName(), anyOf(is("port"), is("address"), is("addresses"), is("id")));
+ assertEquals(ImmutableList.of(
+ Descendant.of(QName.create(peer, "port")),
+ Descendant.of(QName.create(peer, "address")),
+ Descendant.of(QName.create(peer, "addresses")),
+ Descendant.of(QName.create(peer, "addresses"), QName.create(peer, "id"))),
+ new ArrayList<>(refines.keySet()));
}
}
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.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Descendant;
import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException;
import org.opendaylight.yangtools.yang.model.util.SchemaNodeUtils;
import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
final Collection<? extends UsesNode> usesNodes = destination.getUses();
assertEquals(1, usesNodes.size());
final UsesNode usesNode = usesNodes.iterator().next();
- final Map<SchemaPath, SchemaNode> refines = usesNode.getRefines();
+ final Map<Descendant, SchemaNode> refines = usesNode.getRefines();
assertEquals(4, refines.size());
LeafSchemaNode refineLeaf = null;
ContainerSchemaNode refineContainer = null;
ListSchemaNode refineList = null;
LeafSchemaNode refineInnerLeaf = null;
- for (final Map.Entry<SchemaPath, SchemaNode> entry : refines.entrySet()) {
+ for (final Map.Entry<Descendant, SchemaNode> entry : refines.entrySet()) {
final SchemaNode value = entry.getValue();
if ("address".equals(value.getQName().getLocalName())) {
refineLeaf = (LeafSchemaNode) destination.getDataChildByName(value.getQName());
}
assertNotNull(refineList);
- for (final Map.Entry<SchemaPath, SchemaNode> entry : refines.entrySet()) {
+ for (final Map.Entry<Descendant, SchemaNode> entry : refines.entrySet()) {
final SchemaNode value = entry.getValue();
if ("id".equals(value.getQName().getLocalName())) {
refineInnerLeaf = (LeafSchemaNode) refineList.getDataChildByName(value.getQName());
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.UsesNode;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Descendant;
import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition;
import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.RFC7950Reactors;
assertEquals(expectedPath, usesNode.getGroupingPath());
// test refine
- final Map<SchemaPath, SchemaNode> refines = usesNode.getRefines();
+ final Map<Descendant, SchemaNode> refines = usesNode.getRefines();
assertEquals(3, refines.size());
LeafSchemaNode refineLeaf = null;
ContainerSchemaNode refineContainer = null;
ListSchemaNode refineList = null;
- for (final Map.Entry<SchemaPath, SchemaNode> entry : refines.entrySet()) {
+ for (final Map.Entry<Descendant, SchemaNode> entry : refines.entrySet()) {
final SchemaNode value = entry.getValue();
if (value instanceof LeafSchemaNode) {
refineLeaf = (LeafSchemaNode) value;