import org.opendaylight.yangtools.yang.data.impl.codec.SchemaTracker;
import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextProvider;
import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
if (parent == schema) {
endElement();
}
- } else if (schema instanceof ContainerSchemaNode || schema instanceof LeafSchemaNode
+ } else if (schema instanceof ContainerLike || schema instanceof LeafSchemaNode
|| schema instanceof AnydataSchemaNode || schema instanceof AnyxmlSchemaNode) {
endElement();
}
import org.opendaylight.yangtools.yang.data.util.YangModeledAnyXmlNodeDataWithSchema;
import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
if (reader.hasNext()) {
reader.nextTag();
final AbstractNodeDataWithSchema<?> nodeDataWithSchema;
- if (parentNode instanceof ContainerSchemaNode) {
- nodeDataWithSchema = new ContainerNodeDataWithSchema((ContainerSchemaNode) parentNode);
+ if (parentNode instanceof ContainerLike) {
+ nodeDataWithSchema = new ContainerNodeDataWithSchema((ContainerLike) parentNode);
} else if (parentNode instanceof ListSchemaNode) {
nodeDataWithSchema = new ListNodeDataWithSchema((ListSchemaNode) parentNode);
} else if (parentNode instanceof YangModeledAnyxmlSchemaNode) {
import org.opendaylight.yangtools.yang.model.api.AugmentationTarget;
import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DocumentedNode.WithStatus;
public SchemaNode startContainerNode(final NodeIdentifier name) {
LOG.debug("Enter container {}", name);
final SchemaNode schema = getSchema(name);
-
- boolean isAllowed = schema instanceof ContainerSchemaNode;
- isAllowed |= schema instanceof NotificationDefinition;
+ final boolean isAllowed = schema instanceof ContainerLike | schema instanceof NotificationDefinition;
checkArgument(isAllowed, "Node %s is not a container nor a notification", schema);
schemaStack.push(schema);
import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode;
import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
return ImmutableContainerNodeBuilder.create(node);
}
- public static DataContainerNodeBuilder<NodeIdentifier, ContainerNode> containerBuilder(
- final ContainerSchemaNode schema) {
+ public static DataContainerNodeBuilder<NodeIdentifier, ContainerNode> containerBuilder(final ContainerLike schema) {
return ImmutableContainerNodeSchemaAwareBuilder.create(schema);
}
- public static DataContainerNodeBuilder<NodeIdentifier, ContainerNode> containerBuilder(
- final ContainerSchemaNode schema, final ContainerNode node) {
+ public static DataContainerNodeBuilder<NodeIdentifier, ContainerNode> containerBuilder(final ContainerLike schema,
+ final ContainerNode node) {
return ImmutableContainerNodeSchemaAwareBuilder.create(schema, node);
}
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.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
}
static final class ContainerTransformation
- extends DataContainerNormalizationOperation<NodeIdentifier, ContainerSchemaNode> {
- ContainerTransformation(final ContainerSchemaNode schema) {
+ extends DataContainerNormalizationOperation<NodeIdentifier, ContainerLike> {
+ ContainerTransformation(final ContainerLike schema) {
super(NodeIdentifier.create(schema.getQName()), schema);
}
import org.opendaylight.yangtools.yang.model.api.AugmentationTarget;
import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
}
static InstanceIdToNodes<?> fromDataSchemaNode(final DataSchemaNode potential) {
- if (potential instanceof ContainerSchemaNode) {
- return new InstanceIdToCompositeNodes.ContainerTransformation((ContainerSchemaNode) potential);
+ if (potential instanceof ContainerLike) {
+ return new InstanceIdToCompositeNodes.ContainerTransformation((ContainerLike) potential);
} else if (potential instanceof ListSchemaNode) {
return fromListSchemaNode((ListSchemaNode) potential);
} else if (potential instanceof LeafSchemaNode) {
import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid.DataNodeContainerValidator;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
public final class ImmutableContainerNodeSchemaAwareBuilder extends ImmutableContainerNodeBuilder {
private final DataNodeContainerValidator validator;
- private ImmutableContainerNodeSchemaAwareBuilder(final ContainerSchemaNode schema) {
+ private ImmutableContainerNodeSchemaAwareBuilder(final ContainerLike schema) {
this.validator = new DataNodeContainerValidator(schema);
super.withNodeIdentifier(NodeIdentifier.create(schema.getQName()));
}
- private ImmutableContainerNodeSchemaAwareBuilder(final ContainerSchemaNode schema,
- final ImmutableContainerNode node) {
+ private ImmutableContainerNodeSchemaAwareBuilder(final ContainerLike schema, final ImmutableContainerNode node) {
super(node);
this.validator = new DataNodeContainerValidator(schema);
super.withNodeIdentifier(NodeIdentifier.create(schema.getQName()));
}
- public static @NonNull DataContainerNodeBuilder<NodeIdentifier, ContainerNode> create(
- final ContainerSchemaNode schema) {
+ public static @NonNull DataContainerNodeBuilder<NodeIdentifier, ContainerNode> create(final ContainerLike schema) {
return new ImmutableContainerNodeSchemaAwareBuilder(schema);
}
- public static @NonNull DataContainerNodeBuilder<NodeIdentifier, ContainerNode> create(
- final ContainerSchemaNode schema, final ContainerNode node) {
+ public static @NonNull DataContainerNodeBuilder<NodeIdentifier, ContainerNode> create(final ContainerLike schema,
+ final ContainerNode node) {
if (!(node instanceof ImmutableContainerNode)) {
throw new UnsupportedOperationException(String.format("Cannot initialize from class %s", node.getClass()));
}
import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.TreeNode;
import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.Version;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
/**
* with mandatory nodes, as it needs to tap into {@link SchemaAwareApplyOperation}'s operations, or subclassed
* for the purposes of {@link StructuralContainerModificationStrategy}'s automatic lifecycle.
*/
-class ContainerModificationStrategy extends DataNodeContainerModificationStrategy<ContainerSchemaNode> {
+class ContainerModificationStrategy extends DataNodeContainerModificationStrategy<ContainerLike> {
private static final class EnforcingMandatory extends ContainerModificationStrategy {
private final MandatoryLeafEnforcer enforcer;
new NormalizedNodeContainerSupport<>(ContainerNode.class, ImmutableContainerNodeBuilder::create,
ImmutableContainerNodeBuilder::create);
- ContainerModificationStrategy(final ContainerSchemaNode schemaNode, final DataTreeConfiguration treeConfig) {
+ ContainerModificationStrategy(final ContainerLike schemaNode, final DataTreeConfiguration treeConfig) {
super(SUPPORT, schemaNode, treeConfig);
}
import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.TreeNode;
import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode;
import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
}
private ModificationApplyOperation getOperation(final DataSchemaNode rootSchemaNode) {
- if (rootSchemaNode instanceof ContainerSchemaNode && maskMandatory) {
- return new ContainerModificationStrategy((ContainerSchemaNode) rootSchemaNode, treeConfig);
+ if (rootSchemaNode instanceof ContainerLike && maskMandatory) {
+ return new ContainerModificationStrategy((ContainerLike) rootSchemaNode, treeConfig);
}
if (rootSchemaNode instanceof ListSchemaNode) {
final PathArgument arg = treeConfig.getRootPath().getLastPathArgument();
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode;
import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
private static @NonNull NormalizedNode<?, ?> createRoot(final DataNodeContainer schemaNode,
final YangInstanceIdentifier path) {
if (path.isEmpty()) {
- checkArgument(schemaNode instanceof ContainerSchemaNode,
+ checkArgument(schemaNode instanceof ContainerLike,
"Conceptual tree root has to be a container, not %s", schemaNode);
return ROOT_CONTAINER;
}
import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
return new ValueNodeModificationStrategy<>(AnydataNode.class, (AnydataSchemaNode) schemaNode);
} else if (schemaNode instanceof AnyxmlSchemaNode) {
return new ValueNodeModificationStrategy<>(AnyxmlNode.class, (AnyxmlSchemaNode) schemaNode);
+ } else if (schemaNode instanceof SchemaContext) {
+ return new StructuralContainerModificationStrategy((SchemaContext) schemaNode, treeConfig);
} else {
throw new IllegalStateException("Unsupported schema " + schemaNode);
}
import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.TreeNode;
import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.Version;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
/**
* Structural containers are special in that they appear when implied by child nodes and disappear whenever they are
final class StructuralContainerModificationStrategy extends ContainerModificationStrategy {
private final ContainerNode emptyNode;
- StructuralContainerModificationStrategy(final ContainerSchemaNode schema, final DataTreeConfiguration treeConfig) {
+ StructuralContainerModificationStrategy(final ContainerLike schema, final DataTreeConfiguration treeConfig) {
super(schema, treeConfig);
this.emptyNode = ImmutableNodes.containerNode(schema.getQName());
}
import org.opendaylight.yangtools.yang.model.api.AugmentationTarget;
import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
newChild = new ListNodeDataWithSchema((ListSchemaNode) schema);
} else if (schema instanceof LeafListSchemaNode) {
newChild = new LeafListNodeDataWithSchema((LeafListSchemaNode) schema);
- } else if (schema instanceof ContainerSchemaNode) {
- newChild = new ContainerNodeDataWithSchema((ContainerSchemaNode) schema);
+ } else if (schema instanceof ContainerLike) {
+ newChild = new ContainerNodeDataWithSchema((ContainerLike) schema);
} else if (schema instanceof YangModeledAnyxmlSchemaNode) {
newChild = new YangModeledAnyXmlNodeDataWithSchema((YangModeledAnyxmlSchemaNode)schema);
} else {
package org.opendaylight.yangtools.yang.data.util;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
final class ContainerContextNode extends DataContainerContextNode<NodeIdentifier> {
-
- protected ContainerContextNode(final ContainerSchemaNode schema) {
+ protected ContainerContextNode(final ContainerLike schema) {
super(NodeIdentifier.create(schema.getQName()), schema, schema);
}
-
}
import java.io.IOException;
import org.opendaylight.yangtools.rfc7952.data.api.StreamWriterMetadataExtension;
import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
/**
* Utility class used for tracking parser state as needed by a StAX-like parser.
* <p>
* Represents a YANG container node.
*/
-public class ContainerNodeDataWithSchema extends AbstractMountPointDataWithSchema<ContainerSchemaNode> {
+public class ContainerNodeDataWithSchema extends AbstractMountPointDataWithSchema<ContainerLike> {
- public ContainerNodeDataWithSchema(final ContainerSchemaNode schema) {
+ public ContainerNodeDataWithSchema(final ContainerLike schema) {
super(schema);
}
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
+import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
+import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
}
@Beta
- public static ContainerSchemaNode forNotification(final NotificationDefinition notification) {
+ public static ContainerLike forNotification(final NotificationDefinition notification) {
return new NotificationContainerSchemaNode(notification);
}
@Beta
- public static ContainerSchemaNode forRPC(final RpcDefinition rpc) {
+ public static ContainerLike forRPC(final RpcDefinition rpc) {
return new RpcContainerSchemaNode(rpc);
}
- private abstract static class AbstractContainerSchemaNode implements ContainerSchemaNode {
-
+ private abstract static class AbstractContainerSchemaNode implements ContainerLike {
private final SchemaNode schemaNode;
private AbstractContainerSchemaNode(final SchemaNode schemaNode) {
this.schemaNode = schemaNode;
}
- @Override
- public boolean isPresenceContainer() {
- return false;
- }
-
@Override
public Collection<? extends UsesNode> getUses() {
return ImmutableSet.of();
@Override
public Collection<? extends DataSchemaNode> getChildNodes() {
- final ContainerSchemaNode input = rpcDefinition.getInput();
- final ContainerSchemaNode output = rpcDefinition.getOutput();
+ final InputSchemaNode input = rpcDefinition.getInput();
+ final OutputSchemaNode output = rpcDefinition.getOutput();
if (input == null && output == null) {
return ImmutableList.of();
} else if (input != null && output != null) {
import org.opendaylight.yangtools.yang.model.api.AugmentationTarget;
import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
}
public static @Nullable DataSchemaContextNode<?> fromDataSchemaNode(final DataSchemaNode potential) {
- if (potential instanceof ContainerSchemaNode) {
- return new ContainerContextNode((ContainerSchemaNode) potential);
+ if (potential instanceof ContainerLike) {
+ return new ContainerContextNode((ContainerLike) potential);
} else if (potential instanceof ListSchemaNode) {
return fromListSchemaNode((ListSchemaNode) potential);
} else if (potential instanceof LeafSchemaNode) {
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
+import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
import org.opendaylight.yangtools.yang.model.api.OperationDefinition;
+import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.UsesNode;
@Beta
-public class OperationAsContainer extends ForwardingObject implements ContainerSchemaNode, OperationDefinition {
+public class OperationAsContainer extends ForwardingObject implements ContainerLike, OperationDefinition {
private final @NonNull OperationDefinition delegate;
OperationAsContainer(final OperationDefinition parentNode) {
}
@Override
- public final ContainerSchemaNode getInput() {
+ public final InputSchemaNode getInput() {
return delegate.getInput();
}
@Override
- public final ContainerSchemaNode getOutput() {
+ public final OutputSchemaNode getOutput() {
return delegate.getOutput();
}
return ImmutableSet.of();
}
- @Override
- public final boolean isPresenceContainer() {
- return false;
- }
-
@Override
public final Collection<? extends DataSchemaNode> getChildNodes() {
final List<DataSchemaNode> ret = new ArrayList<>();
- final ContainerSchemaNode input = getInput();
- final ContainerSchemaNode output = getOutput();
+ final InputSchemaNode input = getInput();
if (input != null) {
ret.add(input);
}
+ final OutputSchemaNode output = getOutput();
if (output != null) {
ret.add(output);
}
--- /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.api;
+
+import com.google.common.annotations.Beta;
+
+/**
+ * Common interface for common container-like constructs.
+ */
+@Beta
+public interface ContainerLike extends DataNodeContainer,
+ AugmentationTarget, DataSchemaNode, NotificationNodeContainer, ActionNodeContainer, MustConstraintAware {
+
+}
*/
package org.opendaylight.yangtools.yang.model.api;
+import org.opendaylight.yangtools.yang.model.api.stmt.ContainerEffectiveStatement;
+
/**
- * The ContainerSchemaNode is used to define an interior data node in the schema
- * tree. There are two styles of containers, those that exist only for
- * organizing the hierarchy of data nodes, and those whose presence in the
+ * The ContainerSchemaNode is used to define an interior data node in the schema tree. There are two styles of
+ * containers, those that exist only for organizing the hierarchy of data nodes, and those whose presence in the
* configuration has an explicit meaning.
*/
-// FIXME: YANGTOOLS-1119: We need to specialize this interface for Container use and have others for Input/Output and
-// other misuses.
-public interface ContainerSchemaNode extends DataNodeContainer,
- AugmentationTarget, DataSchemaNode, NotificationNodeContainer, ActionNodeContainer, MustConstraintAware {
+public interface ContainerSchemaNode extends ContainerLike, EffectiveStatementEquivalent<ContainerEffectiveStatement> {
/**
* Returns true if this container is marked as presence.
*
* false otherwise
*/
boolean isPresenceContainer();
-
}
--- /dev/null
+/*
+ * Copyright (c) 2020 PANTHEON.tech, s.r.o. 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.api;
+
+import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.yang.model.api.stmt.InputEffectiveStatement;
+
+@Beta
+public interface InputSchemaNode extends ContainerLike, EffectiveStatementEquivalent<InputEffectiveStatement> {
+
+}
* @return Definition of input parameters for this operation.
* The substatements of input define nodes under the operation's input node.
*/
- ContainerSchemaNode getInput();
+ InputSchemaNode getInput();
/**
* Returns definition of output parameters for this operation.
* @return Definition of output parameters for this operation. The
* substatements of output define nodes under the operation's output node.
*/
- ContainerSchemaNode getOutput();
+ OutputSchemaNode getOutput();
}
--- /dev/null
+/*
+ * Copyright (c) 2020 PANTHEON.tech, s.r.o. 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.api;
+
+import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.yang.model.api.stmt.OutputEffectiveStatement;
+
+@Beta
+public interface OutputSchemaNode extends ContainerLike, EffectiveStatementEquivalent<OutputEffectiveStatement> {
+
+}
* Instances MUST be immutable and thus usage in multi threaded
* environment is safe.
*/
-// FIXME: 6.0.0: ContainerSchemaNode is far too broad. A combination of DataNodeContainer, NotificationNodeContainer
+// FIXME: 7.0.0: ContainerLike is far too broad. A combination of DataNodeContainer, NotificationNodeContainer
// and possibly DataSchemaNode would reflect SchemaContext traits better.
-// FIXME: 6.0.0: consider deprecating this class in favor of EffectiveModelContext
-public interface SchemaContext extends ContainerSchemaNode, Immutable {
+// FIXME: 7.0.0: consider deprecating this class in favor of EffectiveModelContext
+public interface SchemaContext extends ContainerLike, Immutable {
/**
* QName of NETCONF top-level data node.
*/
return Collections.emptySet();
}
- @Override
- @Deprecated
- default boolean isPresenceContainer() {
- return false;
- }
-
@Override
@Deprecated
default Collection<? extends AugmentationSchemaNode> getAvailableAugmentations() {
import org.opendaylight.yangtools.yang.model.api.ActionNodeContainer;
import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
* @return Notification schema or null, if notification is not present in schema context.
*/
@Beta
- public static @Nullable ContainerSchemaNode getRpcDataSchema(final @NonNull SchemaContext schema,
+ public static @Nullable ContainerLike getRpcDataSchema(final @NonNull SchemaContext schema,
final @NonNull SchemaPath path) {
requireNonNull(schema, "Schema context must not be null.");
requireNonNull(path, "Schema path must not be null.");
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
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.DerivableSchemaNode;
import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
+import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
+import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
* @param qname input or output QName with namespace same as RPC
* @return input or output schema. Returns null if RPC does not have input/output specified.
*/
- public static @Nullable ContainerSchemaNode getRpcDataSchema(final @NonNull RpcDefinition rpc,
+ public static @Nullable ContainerLike getRpcDataSchema(final @NonNull RpcDefinition rpc,
final @NonNull QName qname) {
requireNonNull(rpc, "Rpc Schema must not be null");
switch (requireNonNull(qname, "QName must not be null").getLocalName()) {
for (RpcDefinition rpcDefinition : module.getRpcs()) {
aggregator.addTypedefs(rpcDefinition.getTypeDefinitions());
- ContainerSchemaNode input = rpcDefinition.getInput();
+ InputSchemaNode input = rpcDefinition.getInput();
if (input != null) {
traverse(aggregator, input);
}
- ContainerSchemaNode output = rpcDefinition.getOutput();
+ OutputSchemaNode output = rpcDefinition.getOutput();
if (output != null) {
traverse(aggregator, output);
}
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
+import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
import org.opendaylight.yangtools.yang.model.api.OperationDefinition;
+import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
doReturn(notifications).when(mockedModule).getNotifications();
final RpcDefinition mockedRpc = mockOperationDefinition(mock(RpcDefinition.class));
- final ContainerSchemaNode mockedContainerInRpcInput = mockDataNodeContainer(ContainerSchemaNode.class);
+ final InputSchemaNode mockedContainerInRpcInput = mockDataNodeContainer(InputSchemaNode.class);
final ListSchemaNode mockedListInRpcInputContainer = mockCopyableNode(false,
mockDataNodeContainer(ListSchemaNode.class));
final Set<DataSchemaNode> rpcInputChildNodes = ImmutableSet.of(mockedListInRpcInputContainer);
private static <T extends OperationDefinition> T mockOperationDefinition(final T mock) {
doReturn(Collections.emptySet()).when(mock).getTypeDefinitions();
- doReturn(mockDataNodeContainer(ContainerSchemaNode.class)).when(mock).getOutput();
+ doReturn(mockDataNodeContainer(OutputSchemaNode.class)).when(mock).getOutput();
return mock;
}
}
*/
package org.opendaylight.yangtools.yang.parser.rfc7950.stmt;
-import static com.google.common.base.Verify.verify;
-
import com.google.common.annotations.Beta;
import com.google.common.base.MoreObjects;
import com.google.common.base.Strings;
import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
import org.opendaylight.yangtools.yang.model.api.AugmentationTarget;
import org.opendaylight.yangtools.yang.model.api.ConstraintMetaDefinition;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
import org.opendaylight.yangtools.yang.model.api.CopyableNode;
import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DocumentedNode;
import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
+import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.MandatoryAware;
import org.opendaylight.yangtools.yang.model.api.MustConstraintAware;
import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
import org.opendaylight.yangtools.yang.model.api.NotificationNodeContainer;
import org.opendaylight.yangtools.yang.model.api.OperationDefinition;
+import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
import org.opendaylight.yangtools.yang.model.api.Status;
* @param <D> Class representing declared version of this statement.
*/
public interface OperationContainerMixin<D extends DeclaredStatement<QName>>
- extends ContainerSchemaNode, DocumentedNodeMixin.WithStatus<QName, D>, DataNodeContainerMixin<QName, D>,
+ extends ContainerLike, DocumentedNodeMixin.WithStatus<QName, D>, DataNodeContainerMixin<QName, D>,
MustConstraintMixin<QName, D>, WhenConditionMixin<QName, D>, AugmentationTargetMixin<QName, D>,
SchemaNodeMixin<QName, D>, CopyableMixin<QName, D> {
@Override
return false;
}
- @Override
- default boolean isPresenceContainer() {
- // FIXME: this should not really be here
- return false;
- }
-
default String defaultToString() {
return MoreObjects.toStringHelper(this).add("path", getPath()).toString();
}
}
@Override
- default ContainerSchemaNode getInput() {
- return findAsContainer(this, InputEffectiveStatement.class);
+ default InputSchemaNode getInput() {
+ return findAsContainer(this, InputEffectiveStatement.class, InputSchemaNode.class);
}
@Override
- default ContainerSchemaNode getOutput() {
- return findAsContainer(this, OutputEffectiveStatement.class);
+ default OutputSchemaNode getOutput() {
+ return findAsContainer(this, OutputEffectiveStatement.class, OutputSchemaNode.class);
}
}
private EffectiveStatementMixins() {
}
- static ContainerSchemaNode findAsContainer(final EffectiveStatement<?, ?> stmt,
- final Class<? extends EffectiveStatement<QName, ?>> type) {
- final EffectiveStatement<?, ?> statement = stmt.findFirstEffectiveSubstatement(type).get();
- verify(statement instanceof ContainerSchemaNode, "Child statement %s is not a ContainerSchemaNode",
- statement);
- return (ContainerSchemaNode) statement;
+ static <T extends ContainerLike> T findAsContainer(final EffectiveStatement<?, ?> stmt,
+ final Class<? extends EffectiveStatement<QName, ?>> type, Class<T> target) {
+ return target.cast(stmt.findFirstEffectiveSubstatement(type).get());
}
static Collection<? extends TypeDefinition<?>> filterTypeDefinitions(final Mixin<?, ?> stmt) {
return findDataSchemaNode(name);
}
+ @Override
+ public ContainerEffectiveStatement asEffectiveStatement() {
+ return this;
+ }
+
@Override
public String toString() {
return "container " + getQName().getLocalName();
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.InputEffectiveStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
final class DeclaredInputEffectiveStatement extends WithSubstatements<QName, InputStatement, InputEffectiveStatement>
- implements InputEffectiveStatement, OperationContainerMixin<InputStatement> {
+ implements InputEffectiveStatement, InputSchemaNode, OperationContainerMixin<InputStatement> {
private final @NonNull SchemaPath path;
private final int flags;
return findDataSchemaNode(name);
}
+ @Override
+ public InputEffectiveStatement asEffectiveStatement() {
+ return this;
+ }
+
@Override
public String toString() {
return defaultToString();
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.InputEffectiveStatement;
final class UndeclaredInputEffectiveStatement
extends WithSubstatements<QName, InputStatement, InputEffectiveStatement>
- implements InputEffectiveStatement, OperationContainerMixin<InputStatement> {
+ implements InputEffectiveStatement, InputSchemaNode, OperationContainerMixin<InputStatement> {
private final @NonNull SchemaPath path;
private final int flags;
return findDataSchemaNode(name);
}
+ @Override
+ public InputEffectiveStatement asEffectiveStatement() {
+ return this;
+ }
+
@Override
public String toString() {
return defaultToString();
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.OutputEffectiveStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
final class DeclaredOutputEffectiveStatement extends WithSubstatements<QName, OutputStatement, OutputEffectiveStatement>
- implements OutputEffectiveStatement, OperationContainerMixin<OutputStatement> {
+ implements OutputEffectiveStatement, OutputSchemaNode, OperationContainerMixin<OutputStatement> {
private final @NonNull SchemaPath path;
private final int flags;
return findDataSchemaNode(name);
}
+ @Override
+ public OutputEffectiveStatement asEffectiveStatement() {
+ return this;
+ }
+
@Override
public String toString() {
return defaultToString();
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.OutputEffectiveStatement;
final class UndeclaredOutputEffectiveStatement
extends WithSubstatements<QName, OutputStatement, OutputEffectiveStatement>
- implements OutputEffectiveStatement, OperationContainerMixin<OutputStatement> {
+ implements OutputEffectiveStatement, OutputSchemaNode, OperationContainerMixin<OutputStatement> {
private final @NonNull SchemaPath path;
private final int flags;
return findDataSchemaNode(name);
}
+ @Override
+ public OutputEffectiveStatement asEffectiveStatement() {
+ return this;
+ }
+
@Override
public String toString() {
return defaultToString();
import java.util.Collection;
import org.junit.Test;
import org.opendaylight.yangtools.yang.common.Revision;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
+import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
assertEquals(1, rpcs.size());
final RpcDefinition myRpc = rpcs.iterator().next();
- final ContainerSchemaNode input = myRpc.getInput();
+ final InputSchemaNode input = myRpc.getInput();
assertNotNull(input);
mustConstraints = input.getMustConstraints();
assertEquals(2, mustConstraints.size());
- final ContainerSchemaNode output = myRpc.getOutput();
+ final OutputSchemaNode output = myRpc.getOutput();
assertNotNull(output);
mustConstraints = output.getMustConstraints();
assertEquals(2, mustConstraints.size());
* 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.stmt.rfc7950;
import static org.junit.Assert.assertEquals;
import org.opendaylight.yangtools.yang.common.Revision;
import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.meta.StatementSource;
final ActionDefinition actionInCont = actionCont.getActions().iterator().next();
- final ContainerSchemaNode input = actionInCont.getInput();
+ final InputSchemaNode input = actionInCont.getInput();
assertNotNull(input);
assertEquals(1, input.getChildNodes().size());
assertEquals(StatementSource.CONTEXT, ((EffectiveStatement<?, ?>) input).getStatementSource());
- final ContainerSchemaNode output = actionInCont.getOutput();
+ final OutputSchemaNode output = actionInCont.getOutput();
assertNotNull(output);
assertEquals(1, output.getChildNodes().size());
assertEquals(StatementSource.CONTEXT, ((EffectiveStatement<?, ?>) output).getStatementSource());
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.InputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Module;
final QName submitQName = QName.create(NS_BAR, revision, "submit");
assertEquals(submitQName, submit.getQName());
- final ContainerSchemaNode input = submit.getInput();
+ final InputSchemaNode input = submit.getInput();
final QName inputQName = QName.create(NS_BAR, revision, "input");
assertEquals(inputQName, input.getQName());
final ChoiceSchemaNode arguments = (ChoiceSchemaNode) input.getDataChildByName(QName.create(NS_BAR, revision,
import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
+import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
+import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition;
assertEquals("c2", myChoice.getDefaultCase().get().getQName().getLocalName());
final RpcDefinition myRpc = barModule.getRpcs().iterator().next();
- final ContainerSchemaNode input = myRpc.getInput();
+ final InputSchemaNode input = myRpc.getInput();
assertEquals(2, input.getMustConstraints().size());
- final ContainerSchemaNode output = myRpc.getOutput();
+ final OutputSchemaNode output = myRpc.getOutput();
assertEquals(2, output.getMustConstraints().size());
final NotificationDefinition myNotification = barModule.getNotifications().iterator().next();
assertFalse(schemaContext.isAugmenting());
assertFalse(schemaContext.isAddedByUses());
assertFalse(schemaContext.isConfiguration());
- assertFalse(schemaContext.isPresenceContainer());
assertFalse(schemaContext.getWhenCondition().isPresent());
assertEquals(0, schemaContext.getMustConstraints().size());
assertFalse(schemaContext.getDescription().isPresent());
import org.opendaylight.yangtools.yang.common.Revision;
import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
final RpcDefinition rpc = testModule.getRpcs().iterator().next();
assertEquals("get-config", rpc.getQName().getLocalName());
- final ContainerSchemaNode input = rpc.getInput();
+ final InputSchemaNode input = rpc.getInput();
assertNotNull(input);
assertEquals(2, input.getChildNodes().size());
QName.create(testModule.getQNameModule(), "filter"));
assertNotNull(anyXml);
- final ContainerSchemaNode output = rpc.getOutput();
+ final OutputSchemaNode output = rpc.getOutput();
assertNotNull(output);
assertEquals(1, output.getChildNodes().size());
final RpcDefinition barRpc = rpcs.iterator().next();
- final ContainerSchemaNode input = barRpc.getInput();
+ final InputSchemaNode input = barRpc.getInput();
assertNotNull(input);
assertEquals(2, input.getChildNodes().size());
assertEquals(StatementSource.CONTEXT, ((EffectiveStatement<?, ?>) input).getStatementSource());
- final ContainerSchemaNode output = barRpc.getOutput();
+ final OutputSchemaNode output = barRpc.getOutput();
assertNotNull(output);
assertEquals(2, output.getChildNodes().size());
assertEquals(StatementSource.CONTEXT, ((EffectiveStatement<?, ?>) output).getStatementSource());
import java.util.Collection;
import java.util.Optional;
import org.junit.Test;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
import org.opendaylight.yangtools.yang.stmt.TestUtils;
+ "<error-tag> is 'operation-failed', and <error-app-tag> is\n"
+ "'data-not-unique'."), rpc.getDescription());
- ContainerSchemaNode input = rpc.getInput();
+ InputSchemaNode input = rpc.getInput();
assertNotNull(input);
assertEquals(3, input.getChildNodes().size());
- ContainerSchemaNode output = rpc.getOutput();
+ OutputSchemaNode output = rpc.getOutput();
assertNotNull(output);
assertEquals(1, output.getChildNodes().size());
}