*/
package org.opendaylight.controller.sal.restconf.impl.nn.to.xml.test;
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
-import com.google.common.base.VerifyException;
+import com.google.common.base.Throwables;
import com.google.common.collect.Iterables;
import java.io.ByteArrayOutputStream;
+import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import javax.ws.rs.core.MediaType;
import org.junit.BeforeClass;
-import org.junit.Rule;
import org.junit.Test;
-import org.junit.rules.ExpectedException;
import org.mockito.Mockito;
import org.opendaylight.controller.sal.rest.impl.test.providers.AbstractBodyReaderTest;
+import org.opendaylight.netconf.sal.rest.impl.NormalizedNodeContext;
import org.opendaylight.netconf.sal.rest.impl.NormalizedNodeXmlBodyWriter;
import org.opendaylight.netconf.sal.restconf.impl.ControllerContext;
import org.opendaylight.restconf.common.context.InstanceIdentifierContext;
-import org.opendaylight.restconf.common.context.NormalizedNodeContext;
import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Uint32;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
+import org.opendaylight.yangtools.yang.data.api.schema.builder.DataContainerNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.codec.TypeDefinitionAwareCodec;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder;
+import org.opendaylight.yangtools.yang.data.impl.schema.SchemaAwareBuilders;
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.LeafSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
-import org.opendaylight.yangtools.yang.model.util.type.BaseTypes;
-import org.opendaylight.yangtools.yang.model.util.type.BitsTypeBuilder;
-import org.opendaylight.yangtools.yang.model.util.type.EnumerationTypeBuilder;
-import org.opendaylight.yangtools.yang.model.util.type.UnionTypeBuilder;
+import org.opendaylight.yangtools.yang.model.ri.type.BaseTypes;
+import org.opendaylight.yangtools.yang.model.ri.type.BitsTypeBuilder;
+import org.opendaylight.yangtools.yang.model.ri.type.EnumerationTypeBuilder;
+import org.opendaylight.yangtools.yang.model.ri.type.UnionTypeBuilder;
public class NnToXmlTest extends AbstractBodyReaderTest {
-
- @Rule
- public ExpectedException thrown = ExpectedException.none();
+ private static EffectiveModelContext schemaContext;
private final NormalizedNodeXmlBodyWriter xmlBodyWriter;
- private static SchemaContext schemaContext;
public NnToXmlTest() {
super(schemaContext, null);
- this.xmlBodyWriter = new NormalizedNodeXmlBodyWriter();
+ xmlBodyWriter = new NormalizedNodeXmlBodyWriter();
}
@BeforeClass
@Test
public void nnAsYangLeafrefWithPrefixToXMLTest() throws Exception {
- final NormalizedNodeContext normalizedNodeContext = prepareLeafrefData();
- nnToXml(normalizedNodeContext, "<lfBoolean>true</lfBoolean>", "<lfLfref>true</lfLfref>");
+ nnToXml(prepareLeafrefData(), "<lfBoolean>true</lfBoolean>", "<lfLfref>true</lfLfref>");
}
/**
public void nnAsYangLeafrefWithPrefixToXMLNegativeTest() throws Exception {
final NormalizedNodeContext normalizedNodeContext = prepareLeafrefNegativeData();
- thrown.expect(VerifyException.class);
- nnToXml(normalizedNodeContext, "<not-existing>value</not-existing>",
- "<lfLfrefNegative>value</lfLfrefnegative>");
+ final IOException ex = assertThrows(IOException.class, () -> nnToXml(normalizedNodeContext,
+ "<not-existing>value</not-existing>", "<lfLfrefNegative>value</lfLfrefnegative>"));
+ final Throwable rootCause = Throwables.getRootCause(ex);
+ assertThat(rootCause, instanceOf(IllegalArgumentException.class));
+ assertEquals("Data tree child (basic:module?revision=2013-12-02)not-existing not present in schema parent "
+ + "(basic:module?revision=2013-12-02)cont", rootCause.getMessage());
}
@Test
public void nnAsYangBitsToXmlTest() throws Exception {
final BitsTypeDefinition.Bit mockBit1 = Mockito.mock(BitsTypeDefinition.Bit.class);
Mockito.when(mockBit1.getName()).thenReturn("one");
- Mockito.when(mockBit1.getPosition()).thenReturn(1L);
+ Mockito.when(mockBit1.getPosition()).thenReturn(Uint32.ONE);
final BitsTypeDefinition.Bit mockBit2 = Mockito.mock(BitsTypeDefinition.Bit.class);
Mockito.when(mockBit2.getName()).thenReturn("two");
- Mockito.when(mockBit2.getPosition()).thenReturn(2L);
- final BitsTypeBuilder bitsTypeBuilder = BaseTypes.bitsTypeBuilder(Mockito.mock(SchemaPath.class));
+ Mockito.when(mockBit2.getPosition()).thenReturn(Uint32.TWO);
+ final BitsTypeBuilder bitsTypeBuilder = BaseTypes.bitsTypeBuilder(QName.create("foo", "foo"));
bitsTypeBuilder.addBit(mockBit1);
bitsTypeBuilder.addBit(mockBit2);
Mockito.when(mockEnum.getName()).thenReturn("enum2");
final EnumerationTypeBuilder enumerationTypeBuilder = BaseTypes
- .enumerationTypeBuilder(Mockito.mock(SchemaPath.class));
+ .enumerationTypeBuilder(QName.create("foo", "foo"));
enumerationTypeBuilder.addEnum(mockEnum);
final String elName = "lfEnumeration";
public void nnAsYangUnionToXmlTest() throws Exception {
final BitsTypeDefinition.Bit mockBit1 = Mockito.mock(BitsTypeDefinition.Bit.class);
Mockito.when(mockBit1.getName()).thenReturn("first");
- Mockito.when(mockBit1.getPosition()).thenReturn(1L);
+ Mockito.when(mockBit1.getPosition()).thenReturn(Uint32.ONE);
final BitsTypeDefinition.Bit mockBit2 = Mockito.mock(BitsTypeDefinition.Bit.class);
Mockito.when(mockBit2.getName()).thenReturn("second");
- Mockito.when(mockBit2.getPosition()).thenReturn(2L);
+ Mockito.when(mockBit2.getPosition()).thenReturn(Uint32.TWO);
- final BitsTypeBuilder bitsTypeBuilder = BaseTypes.bitsTypeBuilder(Mockito.mock(SchemaPath.class));
+ final BitsTypeBuilder bitsTypeBuilder = BaseTypes.bitsTypeBuilder(QName.create("foo", "foo"));
bitsTypeBuilder.addBit(mockBit1);
bitsTypeBuilder.addBit(mockBit2);
- final UnionTypeBuilder unionTypeBuilder = BaseTypes.unionTypeBuilder(Mockito.mock(SchemaPath.class));
+ final UnionTypeBuilder unionTypeBuilder = BaseTypes.unionTypeBuilder(QName.create("foo", "foo"));
unionTypeBuilder.addType(BaseTypes.int8Type());
unionTypeBuilder.addType(bitsTypeBuilder.build());
unionTypeBuilder.addType(BaseTypes.booleanType());
final DataSchemaNode contSchema = schemaContext.getDataChildByName(cont);
- final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> contData = Builders
+ final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> contData = SchemaAwareBuilders
.containerBuilder((ContainerSchemaNode) contSchema);
final List<DataSchemaNode> instanceLf = ControllerContext
.findInstanceDataChildrenByName((DataNodeContainer) contSchema, lf.getLocalName());
final DataSchemaNode schemaLf = Iterables.getFirst(instanceLf, null);
- contData.withChild(Builders.leafBuilder((LeafSchemaNode) schemaLf).withValue(object).build());
-
- final NormalizedNodeContext testNormalizedNodeContext = new NormalizedNodeContext(
- new InstanceIdentifierContext<>(null, contSchema, null, schemaContext), contData.build());
+ contData.withChild(SchemaAwareBuilders.leafBuilder((LeafSchemaNode) schemaLf).withValue(object).build());
- return testNormalizedNodeContext;
+ return new NormalizedNodeContext(InstanceIdentifierContext.ofDataSchemaNode(schemaContext, contSchema),
+ contData.build());
}
private void nnToXml(final NormalizedNodeContext normalizedNodeContext, final String... xmlRepresentation)
throws Exception {
final OutputStream output = new ByteArrayOutputStream();
- this.xmlBodyWriter.writeTo(normalizedNodeContext, null, null, null, this.mediaType, null, output);
+ xmlBodyWriter.writeTo(normalizedNodeContext, null, null, null, mediaType, null, output);
for (String element : xmlRepresentation) {
assertTrue(output.toString().contains(element));
final DataSchemaNode contSchema = schemaContext.getDataChildByName(cont);
- final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> contData = Builders
+ final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> contData = SchemaAwareBuilders
.containerBuilder((ContainerSchemaNode) contSchema);
List<DataSchemaNode> instanceLf = ControllerContext
.findInstanceDataChildrenByName((DataNodeContainer) contSchema, lfBoolean.getLocalName());
DataSchemaNode schemaLf = Iterables.getFirst(instanceLf, null);
- contData.withChild(Builders.leafBuilder((LeafSchemaNode) schemaLf).withValue(Boolean.TRUE).build());
+ contData.withChild(SchemaAwareBuilders.leafBuilder((LeafSchemaNode) schemaLf).withValue(Boolean.TRUE).build());
instanceLf = ControllerContext.findInstanceDataChildrenByName((DataNodeContainer) contSchema,
lfLfref.getLocalName());
schemaLf = Iterables.getFirst(instanceLf, null);
- contData.withChild(Builders.leafBuilder((LeafSchemaNode) schemaLf).withValue("true").build());
+ contData.withChild(SchemaAwareBuilders.leafBuilder((LeafSchemaNode) schemaLf).withValue("true").build());
final NormalizedNodeContext testNormalizedNodeContext = new NormalizedNodeContext(
- new InstanceIdentifierContext<>(null, contSchema, null, schemaContext), contData.build());
+ InstanceIdentifierContext.ofDataSchemaNode(schemaContext, contSchema), contData.build());
return testNormalizedNodeContext;
}
final QName lfLfref = QName.create("basic:module", "2013-12-02", "lfLfrefNegative");
final DataSchemaNode contSchema = schemaContext.getDataChildByName(cont);
- final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> contData = Builders
+ final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> contData = SchemaAwareBuilders
.containerBuilder((ContainerSchemaNode) contSchema);
final List<DataSchemaNode> instanceLf = ControllerContext.findInstanceDataChildrenByName((DataNodeContainer)
contSchema, lfLfref.getLocalName());
final DataSchemaNode schemaLf = Iterables.getFirst(instanceLf, null);
- contData.withChild(Builders.leafBuilder((LeafSchemaNode) schemaLf).withValue("value").build());
+ contData.withChild(SchemaAwareBuilders.leafBuilder((LeafSchemaNode) schemaLf).withValue("value").build());
return new NormalizedNodeContext(
- new InstanceIdentifierContext<>(null, contSchema, null, schemaContext), contData.build());
+ InstanceIdentifierContext.ofDataSchemaNode(schemaContext, contSchema), contData.build());
}
private static NormalizedNodeContext prepareIdrefData(final String prefix, final boolean valueAsQName) {
final DataSchemaNode contSchema = schemaContext.getDataChildByName(cont);
- final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> contData = Builders
+ final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> contData = SchemaAwareBuilders
.containerBuilder((ContainerSchemaNode) contSchema);
final DataSchemaNode cont1Schema = ((ContainerSchemaNode) contSchema).getDataChildByName(cont1);
- final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> cont1Data = Builders
+ final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> cont1Data = SchemaAwareBuilders
.containerBuilder((ContainerSchemaNode) cont1Schema);
Object value = null;
.findInstanceDataChildrenByName((DataNodeContainer) cont1Schema, lf11.getLocalName());
final DataSchemaNode schemaLf = Iterables.getFirst(instanceLf, null);
- cont1Data.withChild(Builders.leafBuilder((LeafSchemaNode) schemaLf).withValue(value).build());
+ cont1Data.withChild(SchemaAwareBuilders.leafBuilder((LeafSchemaNode) schemaLf).withValue(value).build());
contData.withChild(cont1Data.build());
final NormalizedNodeContext testNormalizedNodeContext = new NormalizedNodeContext(
- new InstanceIdentifierContext<>(null, contSchema, null, schemaContext), contData.build());
+ InstanceIdentifierContext.ofDataSchemaNode(schemaContext, contSchema), contData.build());
return testNormalizedNodeContext;
}