import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
import org.opendaylight.yangtools.concepts.Registration;
-import org.opendaylight.yangtools.yang.binding.Identifier;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.IdentifiableItem;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument;
import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
* @return NodeId for the node
*/
@VisibleForTesting
- static NodeId getNodeId(final InstanceIdentifier.PathArgument pathArgument) {
- if (pathArgument instanceof InstanceIdentifier.IdentifiableItem<?, ?>) {
- final Identifier<?> key = ((InstanceIdentifier.IdentifiableItem<?, ?>) pathArgument).getKey();
- if (key instanceof NodeKey) {
- return ((NodeKey) key).getNodeId();
- }
+ static NodeId getNodeId(final PathArgument pathArgument) {
+ if (pathArgument instanceof IdentifiableItem<?, ?> ident && ident.getKey() instanceof NodeKey nodeKey) {
+ return nodeKey.getNodeId();
}
throw new IllegalStateException("Unable to create NodeId from: " + pathArgument);
}
@VisibleForTesting
static KeyedInstanceIdentifier<Topology, TopologyKey> createTopologyListPath(final String topologyId) {
- final InstanceIdentifier<NetworkTopology> networkTopology = InstanceIdentifier.create(NetworkTopology.class);
- return networkTopology.child(Topology.class, new TopologyKey(new TopologyId(topologyId)));
+ return InstanceIdentifier.create(NetworkTopology.class)
+ .child(Topology.class, new TopologyKey(new TopologyId(topologyId)));
}
}
import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractConcurrentDataBrokerTest;
import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
import org.opendaylight.mdsal.binding.runtime.spi.BindingRuntimeHelpers;
-import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.dom.api.DOMActionProviderService;
import org.opendaylight.mdsal.dom.api.DOMActionService;
resourceManager = new DefaultSchemaResourceManager(new DefaultYangParserFactory(), TEST_ROOT_DIRECTORY,
TEST_DEFAULT_SUBDIR);
- topModuleInfo = BindingReflections.getModuleInfo(Top.class);
+ topModuleInfo = BindingRuntimeHelpers.getYangModuleInfo(Top.class);
deviceSchemaContext = BindingRuntimeHelpers.createEffectiveModel(Top.class);
final var dataBrokerTest = new AbstractConcurrentDataBrokerTest(true) {
@Override
protected Set<YangModuleInfo> getModuleInfos() {
- return Set.of(BindingReflections.getModuleInfo(NetconfNode.class),
- BindingReflections.getModuleInfo(NetworkTopology.class),
- BindingReflections.getModuleInfo(Keystore.class),
- topModuleInfo);
+ return Set.of(
+ BindingRuntimeHelpers.getYangModuleInfo(NetconfNode.class),
+ BindingRuntimeHelpers.getYangModuleInfo(NetworkTopology.class),
+ BindingRuntimeHelpers.getYangModuleInfo(Keystore.class),
+ topModuleInfo);
}
};
import org.opendaylight.mdsal.binding.api.ReadTransaction;
import org.opendaylight.mdsal.binding.api.RpcProviderService;
import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractDataBrokerTest;
-import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
+import org.opendaylight.mdsal.binding.runtime.spi.BindingRuntimeHelpers;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.dom.api.DOMActionProviderService;
import org.opendaylight.mdsal.dom.api.DOMMountPointService;
AbstractDataBrokerTest dataBrokerTest = new AbstractDataBrokerTest() {
@Override
protected Set<YangModuleInfo> getModuleInfos() throws Exception {
- return Set.of(BindingReflections.getModuleInfo(NetworkTopology.class));
+ return Set.of(BindingRuntimeHelpers.getYangModuleInfo(NetworkTopology.class));
}
};
final boolean serializeLeafNodesOnly(final Deque<PathArgument> path, final DataTreeCandidateNode candidate,
final boolean skipData, final boolean changedLeafNodesOnly) throws T {
final var node = switch (candidate.modificationType()) {
- case SUBTREE_MODIFIED, APPEARED -> candidate.getDataAfter().orElseThrow();
- case DELETE, DISAPPEARED -> candidate.getDataBefore().orElseThrow();
- case WRITE -> changedLeafNodesOnly && isNotUpdate(candidate) ? null
- : candidate.getDataAfter().orElseThrow();
+ case SUBTREE_MODIFIED, APPEARED -> candidate.getDataAfter();
+ case DELETE, DISAPPEARED -> candidate.getDataBefore();
+ case WRITE -> changedLeafNodesOnly && isNotUpdate(candidate) ? null : candidate.getDataAfter();
case UNMODIFIED -> {
// no reason to do anything with an unmodified node
LOG.debug("DataTreeCandidate for a notification is unmodified, not serializing leaves. Candidate: {}",
boolean skipData) throws T;
private static boolean isNotUpdate(final DataTreeCandidateNode node) {
- final var before = node.getDataBefore();
- final var after = node.getDataAfter();
+ final var before = node.dataBefore();
+ final var after = node.dataAfter();
- return before.isPresent() && after.isPresent()
- && before.orElseThrow().body().equals(after.orElseThrow().body());
+ return before != null && after != null && before.body().equals(after.body());
}
abstract void serializePath(Collection<PathArgument> pathArguments) throws T;
static final String modificationTypeToOperation(final DataTreeCandidateNode candidate,
final ModificationType modificationType) {
return switch (modificationType) {
- case APPEARED, SUBTREE_MODIFIED, WRITE -> candidate.getDataBefore().isPresent() ? "updated" : "created";
+ case APPEARED, SUBTREE_MODIFIED, WRITE -> candidate.dataBefore() != null ? "updated" : "created";
case DELETE, DISAPPEARED -> "deleted";
case UNMODIFIED -> {
// shouldn't ever happen since the root of a modification is only triggered by some event
static void writeCandidate(final NormalizedNodeStreamWriter writer, final DataTreeCandidate candidate)
throws IOException {
- if (candidate.getRootNode().getDataAfter().isPresent()) {
- try (NormalizedNodeWriter nodeWriter = NormalizedNodeWriter.forStreamWriter(writer)) {
- nodeWriter.write(candidate.getRootNode().getDataAfter().orElseThrow());
+ final var dataAfter = candidate.getRootNode().dataAfter();
+ if (dataAfter != null) {
+ try (var nodeWriter = NormalizedNodeWriter.forStreamWriter(writer)) {
+ nodeWriter.write(dataAfter);
}
}
}
jsonWriter.beginObject();
serializePath(dataPath);
- if (!skipData && candidate.getDataAfter().isPresent()) {
- jsonWriter.name("data").beginObject();
- NormalizedNodeWriter nodeWriter = NormalizedNodeWriter.forStreamWriter(nestedWriter);
- nodeWriter.write(candidate.getDataAfter().orElseThrow());
- nodeWriter.flush();
-
- // end data
- jsonWriter.endObject();
+ if (!skipData) {
+ final var dataAfter = candidate.dataAfter();
+ if (dataAfter != null) {
+ jsonWriter.name("data").beginObject();
+ NormalizedNodeWriter nodeWriter = NormalizedNodeWriter.forStreamWriter(nestedWriter);
+ nodeWriter.write(dataAfter);
+ nodeWriter.flush();
+ // end data
+ jsonWriter.endObject();
+ }
}
serializeOperation(candidate);
xmlWriter.writeStartElement(DATA_CHANGE_EVENT_ELEMENT);
serializePath(nodePath);
- if (!skipData && candidate.getDataAfter().isPresent()) {
- xmlWriter.writeStartElement("data");
- NormalizedNodeWriter nnWriter = NormalizedNodeWriter.forStreamWriter(nodeStreamWriter);
- nnWriter.write(candidate.getDataAfter().orElseThrow());
- nnWriter.flush();
-
- xmlWriter.writeEndElement();
+ if (!skipData) {
+ final var dataAfter = candidate.dataAfter();
+ if (dataAfter != null) {
+ xmlWriter.writeStartElement("data");
+ NormalizedNodeWriter nnWriter = NormalizedNodeWriter.forStreamWriter(nodeStreamWriter);
+ nnWriter.write(dataAfter);
+ nnWriter.flush();
+ xmlWriter.writeEndElement();
+ }
}
serializeOperation(candidate);