import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaNode;
-import org.opendaylight.yangtools.yang.model.util.SchemaNodeUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
throw new UnsupportedOperationException("Utility class should not be instantiated");
}
- // FIXME: THis method does not search in case augmentations.
+ // FIXME: This method does not search in case augmentations.
public static Optional<DataNodeContainer> findDataNodeContainer(final SchemaContext ctx,
final InstanceIdentifier<?> path) {
Iterator<PathArgument> pathArguments = path.getPathArguments().iterator();
if (potential != null) {
return Optional.of(potential);
}
- } else if (child instanceof DataNodeContainer && child.getQName().equals(targetQName)) {
- return Optional.of((DataNodeContainer) child);
- } else if (child instanceof DataNodeContainer //
- && child.isAddedByUses() //
- && child.getQName().getLocalName().equals(targetQName.getLocalName())) {
- return Optional.of((DataNodeContainer) child);
+ } else if (child instanceof DataNodeContainer) {
+ final QName qname = child.getQName();
+ if (qname.equals(targetQName)
+ || child.isAddedByUses() && qname.getLocalName().equals(targetQName.getLocalName())) {
+ return Optional.of((DataNodeContainer) child);
+ }
}
}
return Optional.empty();
}
-
- public static Optional<CaseSchemaNode> findInstantiatedCase(final ChoiceSchemaNode instantiatedChoice,
- final CaseSchemaNode originalDefinition) {
- CaseSchemaNode potential = instantiatedChoice.getCaseNodeByName(originalDefinition.getQName());
- if (originalDefinition.equals(potential)) {
- return Optional.of(potential);
- }
- if (potential != null) {
- SchemaNode potentialRoot = SchemaNodeUtils.getRootOriginalIfPossible(potential);
- if (originalDefinition.equals(potentialRoot)) {
- return Optional.of(potential);
- }
- }
-
- // We try to find case by name, then lookup its root definition
- // and compare it with original definition
- // This solves case, if choice was inside grouping
- // which was used in different module and thus namespaces are
- // different, but local names are still same.
- //
- // Still we need to check equality of definition, because local name is not
- // sufficient to uniquelly determine equality of cases
- //
- for (CaseSchemaNode caze : instantiatedChoice.findCaseNodes(originalDefinition.getQName().getLocalName())) {
- if (originalDefinition.equals(SchemaNodeUtils.getRootOriginalIfPossible(caze))) {
- return Optional.of(caze);
- }
- }
- return Optional.empty();
- }
-
}