import org.opendaylight.yangtools.yang.common.QNameModule;
import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefContext;
import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefContextUtils;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
final DataSchemaNode targetNode = rootMod.findDataChildByName(q2).get();
final DataSchemaNode cont1Node = rootMod.findDataChildByName(q3).get();
final DataSchemaNode cont2Node = rootMod.findDataChildByName(q4).get();
- final DataSchemaNode name1Node = ((DataNodeContainer) ((DataNodeContainer) rootMod.getDataChildByName(q3))
- .getDataChildByName(q5)).getDataChildByName(q6);
+ final DataSchemaNode name1Node = rootMod.findDataChildByName(q3, q5, q6).get();
assertTrue(LeafRefContextUtils.isLeafRef(leafRefNode, rootLeafRefContext));
assertFalse(LeafRefContextUtils.isLeafRef(targetNode, rootLeafRefContext));
import org.opendaylight.yangtools.yang.common.QNameModule;
import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefContext;
import org.opendaylight.yangtools.yang.data.impl.leafref.LeafRefContextUtils;
-import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
final LeafRefContext odlContrProjNameCtx = rootLeafRefContext.getReferencingChildByName(q1)
.getReferencingChildByName(q2).getReferencingChildByName(q3);
- final DataSchemaNode odlContrProjNameNode = ((DataNodeContainer) ((DataNodeContainer) tstMod
- .getDataChildByName(q1)).getDataChildByName(q2)).getDataChildByName(q3);
+ final DataSchemaNode odlContrProjNameNode = tstMod.findDataChildByName(q1, q2, q3).get();
final LeafRefContext foundOdlContrProjNameCtx = LeafRefContextUtils.getLeafRefReferencingContext(
odlContrProjNameNode, rootLeafRefContext);
final LeafRefContext leafRefCtx = rootLeafRefContext.getReferencedChildByName(q1).getReferencedChildByName(q2)
.getReferencedChildByName(q3);
- final DataSchemaNode odlProjNameNode = ((DataNodeContainer) ((DataNodeContainer) tstMod.getDataChildByName(q1))
- .getDataChildByName(q2)).getDataChildByName(q3);
+ final DataSchemaNode odlProjNameNode = tstMod.findDataChildByName(q1, q2, q3).get();
LeafRefContext foundOdlProjNameCtx = LeafRefContextUtils.getLeafRefReferencingContext(odlProjNameNode,
rootLeafRefContext);
*/
Optional<DataSchemaNode> findDataChildByName(QName name);
+ /**
+ * Returns the child node corresponding to the specified name.
+ *
+ * <p>
+ * Note that the nodes searched are <strong>NOT</strong> {@code data nodes}, but rather {@link DataSchemaNode}s,
+ * hence {@link ChoiceSchemaNode} and {@link CaseSchemaNode} are returned instead of their matching children.
+ *
+ * @param first QName of first child
+ * @param others QNames of subsequent children
+ * @return child node of this DataNodeContainer if child with given name is present, empty otherwise
+ * @throws NullPointerException if any argument is null
+ */
+ default Optional<DataSchemaNode> findDataChildByName(QName first, QName... others) {
+ Optional<DataSchemaNode> optCurrent = findDataChildByName(first);
+ for (QName qname : others) {
+ if (optCurrent.isPresent()) {
+ final DataSchemaNode current = optCurrent.get();
+ if (current instanceof DataNodeContainer) {
+ optCurrent = ((DataNodeContainer) current).findDataChildByName(qname);
+ continue;
+ }
+ }
+
+ return Optional.empty();
+ }
+ return optCurrent;
+ }
+
/**
* Returns grouping nodes used ny this container.
*