package org.opendaylight.restconf.nb.rfc8040.streams.listeners;
-import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import static org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
-import static org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import static org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
-import static org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-import com.google.common.collect.Lists;
-import java.net.URI;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Optional;
+import java.util.Set;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.opendaylight.mdsal.dom.api.DOMNotification;
import org.opendaylight.restconf.nb.rfc8040.TestUtils;
import org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.NotificationOutputTypeGrouping;
-import org.opendaylight.yangtools.util.SingletonSet;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.QNameModule;
import org.opendaylight.yangtools.yang.common.Revision;
+import org.opendaylight.yangtools.yang.common.XMLNamespace;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode;
import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
-import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
+import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
+import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
import org.xmlunit.assertj.XmlAssert;
@RunWith(MockitoJUnitRunner.StrictStubs.class)
public class XmlNotificationListenerTest {
- private static final QNameModule MODULE = QNameModule.create(URI.create("notifi:mod"), Revision.of("2016-11-23"));
+ private static final QNameModule MODULE =
+ QNameModule.create(XMLNamespace.of("notifi:mod"), Revision.of("2016-11-23"));
private static EffectiveModelContext SCHEMA_CONTEXT;
final LeafNode<String> leaf = mockLeaf(QName.create(MODULE, "lf"));
final MapEntryNode entry = mockMapEntry(QName.create(MODULE, "lst"), leaf);
- final MapNode list = mockList(QName.create(MODULE, "lst"), entry);
- final ContainerNode cont = mockCont(QName.create(MODULE, "cont"), list);
- final ContainerNode notifiBody = mockCont(schemaPathNotifi.lastNodeIdentifier(), cont);
+ final ContainerNode notifiBody = mockCont(schemaPathNotifi.lastNodeIdentifier(), Builders.mapBuilder()
+ .withNodeIdentifier(NodeIdentifier.create(QName.create(MODULE, "lst")))
+ .withChild(entry)
+ .build());
when(notificationData.getType()).thenReturn(schemaPathNotifi);
when(notificationData.getBody()).thenReturn(notifiBody);
final String control = "<notification xmlns=\"urn:ietf:params:xml:ns:netconf:notification:1.0\">"
+ "<eventTime>2020-06-29T14:23:46.086855+02:00</eventTime><notifi-list xmlns=\"notifi:mod\">"
- + "<notifi-list><lf><lf>value</lf></lf></notifi-list></notifi-list></notification>";
+ + "<lst><lf>value</lf></lst></notifi-list></notification>";
assertXmlMatches(result, control);
}
assertXmlMatches(result, control);
}
- private static void assertXmlMatches(String result, String control) {
+ private static void assertXmlMatches(final String result, final String control) {
XmlAssert.assertThat(result).and(control)
// text values have localName null but we want to compare those, ignore only nodes that have localName
// with eventTime value
private static AugmentationNode mockAugm(final LeafNode<String> leaf) {
final AugmentationNode augm = mock(AugmentationNode.class);
- final AugmentationIdentifier augmId = new AugmentationIdentifier(SingletonSet.of(leaf.getNodeType()));
+ final AugmentationIdentifier augmId = new AugmentationIdentifier(Set.of(leaf.getIdentifier().getNodeType()));
when(augm.getIdentifier()).thenReturn(augmId);
- final Collection<DataContainerChild<? extends PathArgument, ?>> childs = new ArrayList<>();
+ final Collection<DataContainerChild> childs = new ArrayList<>();
childs.add(leaf);
- when(augm.getValue()).thenReturn(childs);
+ when(augm.body()).thenReturn(childs);
return augm;
}
private static MapEntryNode mockMapEntry(final QName entryQName, final LeafNode<String> leaf) {
- final MapEntryNode entry = mock(MapEntryNode.class);
- final NodeIdentifierWithPredicates nodeId = NodeIdentifierWithPredicates.of(leaf.getNodeType(),
- leaf.getNodeType(), "value");
- when(entry.getIdentifier()).thenReturn(nodeId);
- when(entry.getChild(any())).thenReturn(Optional.of(leaf));
-
- final Collection<DataContainerChild<? extends PathArgument, ?>> childs = new ArrayList<>();
- childs.add(leaf);
-
- when(entry.getValue()).thenReturn(childs);
- return entry;
+ return Builders.mapEntryBuilder()
+ .withNodeIdentifier(NodeIdentifierWithPredicates.of(entryQName, leaf.getIdentifier().getNodeType(),
+ leaf.body()))
+ .withChild(leaf)
+ .build();
}
- private static MapNode mockList(final QName listQName, final MapEntryNode... entries) {
- final MapNode list = mock(MapNode.class);
- when(list.getIdentifier()).thenReturn(NodeIdentifier.create(listQName));
- when(list.getValue()).thenReturn(Lists.newArrayList(entries));
- return list;
- }
-
- private static ContainerNode mockCont(final QName contQName,
- final DataContainerChild<? extends PathArgument, ?> child) {
- final ContainerNode cont = mock(ContainerNode.class);
- when(cont.getIdentifier()).thenReturn(NodeIdentifier.create(contQName));
-
- final Collection<DataContainerChild<? extends PathArgument, ?>> childs = new ArrayList<>();
- childs.add(child);
- when(cont.getValue()).thenReturn(childs);
- return cont;
+ private static ContainerNode mockCont(final QName contQName, final DataContainerChild child) {
+ return Builders.containerBuilder()
+ .withNodeIdentifier(NodeIdentifier.create(contQName))
+ .withChild(child)
+ .build();
}
private static LeafNode<String> mockLeaf(final QName leafQName) {
- final LeafNode<String> child = mock(LeafNode.class);
- when(child.getNodeType()).thenReturn(leafQName);
- when(child.getIdentifier()).thenReturn(NodeIdentifier.create(leafQName));
- when(child.getValue()).thenReturn("value");
- return child;
+ return ImmutableNodes.leafNode(leafQName, "value");
}
private static String prepareXmlResult(final DOMNotification notificationData, final Absolute schemaPathNotifi)