import static java.util.Objects.requireNonNull;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode;
/**
* This is not really a codec context, but rather a holder of input and output codec contexts.
*/
final class ActionCodecContext {
- private final DataContainerCodecContext<?, ContainerSchemaNode> input;
- private final DataContainerCodecContext<?, ContainerSchemaNode> output;
+ private final DataContainerCodecContext<?, InputSchemaNode> input;
+ private final DataContainerCodecContext<?, OutputSchemaNode> output;
- ActionCodecContext(final DataContainerCodecContext<?, ContainerSchemaNode> input,
- final DataContainerCodecContext<?, ContainerSchemaNode> output) {
+ ActionCodecContext(final DataContainerCodecContext<?, InputSchemaNode> input,
+ final DataContainerCodecContext<?, OutputSchemaNode> output) {
this.input = requireNonNull(input);
this.output = requireNonNull(output);
}
- DataContainerCodecContext<?, ContainerSchemaNode> input() {
+ DataContainerCodecContext<?, InputSchemaNode> input() {
return input;
}
- DataContainerCodecContext<?, ContainerSchemaNode> output() {
+ DataContainerCodecContext<?, OutputSchemaNode> output() {
return output;
}
}
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
-final class ContainerNodeCodecContext<D extends DataObject> extends DataObjectCodecContext<D, ContainerSchemaNode>
+final class ContainerNodeCodecContext<D extends DataObject> extends DataObjectCodecContext<D, ContainerLike>
implements RpcInputCodec<D> {
- ContainerNodeCodecContext(final DataContainerCodecPrototype<ContainerSchemaNode> prototype) {
+ ContainerNodeCodecContext(final DataContainerCodecPrototype<ContainerLike> prototype) {
super(prototype);
}
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.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;
// This method must allow concurrent loading, i.e. nothing in it may have effects outside of the loaded object
private @NonNull DataContainerCodecContext<?, T> createInstance() {
// FIXME: make protected abstract
- if (schema instanceof ContainerSchemaNode) {
+ if (schema instanceof ContainerLike) {
return new ContainerNodeCodecContext(this);
} else if (schema instanceof ListSchemaNode) {
return Identifiable.class.isAssignableFrom(getBindingClass())
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.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;
final WithStatus schema = typeAndSchema.getValue();
final StackManipulation startEvent;
- if (schema instanceof ContainerSchemaNode || schema instanceof NotificationDefinition) {
+ if (schema instanceof ContainerLike || schema instanceof NotificationDefinition) {
startEvent = classUnknownSizeMethod(START_CONTAINER_NODE, type);
} else if (schema instanceof ListSchemaNode) {
startEvent = ((ListSchemaNode) schema).getKeyDefinition().isEmpty() ? START_UNKEYED_LIST_ITEM
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
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.Module;
new CacheLoader<Absolute, RpcInputCodec<?>>() {
@Override
public RpcInputCodec<?> load(final Absolute key) {
- final ContainerSchemaNode schema = SchemaContextUtil.getRpcDataSchema(getSchema(), key.asSchemaPath());
+ final ContainerLike schema = SchemaContextUtil.getRpcDataSchema(getSchema(), key.asSchemaPath());
@SuppressWarnings("unchecked")
final Class<? extends DataContainer> cls = (Class<? extends DataContainer>)
factory().getRuntimeContext().getClassForSchema(schema);
* FIXME: Rework this to have more precise logic regarding Binding Specification.
*/
if (key.getSimpleName().equals(BindingMapping.getClassName(potentialQName) + className)) {
- final ContainerSchemaNode schema = SchemaNodeUtils.getRpcDataSchema(potential, qname);
+ final ContainerLike schema = SchemaNodeUtils.getRpcDataSchema(potential, qname);
checkArgument(schema != null, "Schema for %s does not define input / output.", potential.getQName());
return (ContainerNodeCodecContext<?>) DataContainerCodecPrototype.from(key, schema, factory()).get();
}
import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.nodes.LazyLeafOperations;
public class CachingCodecTest extends AbstractBindingCodecTest {
final DataContainerChild<?, ?> second = ((DataContainerNode<?>) secondCont).getChild(LEAF_ARG).get();
assertTrue(second instanceof LeafNode);
- if (LazyLeafOperations.isEnabled()) {
- // The leaf nodes are transient, but the values should be the same
- assertEquals(first, second);
- assertSame(first.getValue(), second.getValue());
- } else {
- assertSame(first, second);
- }
+ // The leaf nodes are transient, but the values should be the same
+ assertEquals(first, second);
+ assertSame(first.getValue(), second.getValue());
}
}
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.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.EffectiveModelContext;
import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
+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.ModuleImport;
import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
import org.opendaylight.yangtools.yang.model.api.NotificationNodeContainer;
+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.SchemaPath;
}
private GeneratedType actionContainer(final ModuleContext context, final Type baseInterface,
- final ContainerSchemaNode schema, final boolean inGrouping) {
+ final ContainerLike schema, final boolean inGrouping) {
final GeneratedTypeBuilder genType = processDataSchemaNode(context, baseInterface, schema, inGrouping);
resolveDataSchemaNodes(context, genType, genType, schema.getChildNodes(), inGrouping);
return genType.build();
}
private Type createRpcContainer(final ModuleContext context, final String rpcName, final RpcDefinition rpc,
- final ContainerSchemaNode schema, final Type type) {
+ final ContainerLike schema, final Type type) {
processUsesAugments(schema, context, false);
final GeneratedTypeBuilder outType = addRawInterfaceDefinition(context,
JavaTypeName.create(context.modulePackageName(), rpcName + BindingMapping.getClassName(schema.getQName())),
final ActionDefinition action = (ActionDefinition) result;
final QName resultNode = node.bindTo(result.getQName().getModule());
- final ContainerSchemaNode input = action.getInput();
- final ContainerSchemaNode output = action.getOutput();
+ final InputSchemaNode input = action.getInput();
+ final OutputSchemaNode output = action.getOutput();
if (resultNode.equals(input.getQName())) {
result = input;
} else if (resultNode.equals(output.getQName())) {
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
-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.DocumentedNode.WithStatus;
import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
genTOs.add(builder);
}
- @NonNull GeneratedType addAliasType(final ModuleContext sourceContext, final ContainerSchemaNode source,
- final ContainerSchemaNode alias) {
+ @NonNull GeneratedType addAliasType(final ModuleContext sourceContext, final ContainerLike source,
+ final ContainerLike alias) {
final GeneratedTypeBuilder builder = sourceContext.getChildNode(source.getPath());
checkState(builder != null, "Could not find builder for %s", source);
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import org.junit.Before;
import org.junit.Test;
import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
@Before
public void setUp() throws Exception {
- final ContainerSchemaNode containerSchemaNode = mock(ContainerSchemaNode.class);
+ final InputSchemaNode containerSchemaNode = mock(InputSchemaNode.class);
doReturn(containerSchemaNode).when(RPC_DEFINITION).getInput();
doReturn(ImmutableSet.of(DATA_SCHEMA_NODE)).when(containerSchemaNode).getChildNodes();
assertEquals(Q_NAME, rpcRoutingStrategy.getLeaf());
}
- @Test(expected = UnsupportedOperationException.class)
+ @Test
public void getLeafTest() throws Exception {
- rpcRoutingStrategy.getLeaf();
+ assertThrows(UnsupportedOperationException.class, () -> rpcRoutingStrategy.getLeaf());
}
- @Test(expected = UnsupportedOperationException.class)
- public void getContextTest() throws Exception {
- rpcRoutingStrategy.getContext();
+ @Test
+ public void getContextTest() {
+ assertThrows(UnsupportedOperationException.class, () -> rpcRoutingStrategy.getContext());
}
}
\ No newline at end of file