import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor;
import org.opendaylight.controller.cluster.datastore.persisted.CommitTransactionPayload;
import org.opendaylight.controller.cluster.raft.ReplicatedLogEntry;
-import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer;
import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType;
import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
import org.opendaylight.yangtools.yang.data.codec.gson.JSONNormalizedNodeStreamWriter;
+import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidate;
+import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidateNode;
+import org.opendaylight.yangtools.yang.data.tree.api.ModificationType;
import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack;
public final class JsonExportActor extends AbstractUntypedActor {
// Internal messages
private final DataTreeCandidate dataTreeCandidate;
public ExportSnapshot(final DataTreeCandidate candidate, final String id) {
- this.dataTreeCandidate = requireNonNull(candidate);
+ dataTreeCandidate = requireNonNull(candidate);
this.id = requireNonNull(id);
}
}
}
private final List<ReplicatedLogEntry> entries = new ArrayList<>();
- private final EffectiveModelContext schemaContext;
- private final Path baseDirPath;
+ private final @NonNull EffectiveModelContext schemaContext;
+ private final @NonNull Path baseDirPath;
private JsonExportActor(final EffectiveModelContext schemaContext, final Path dirPath) {
this.schemaContext = requireNonNull(schemaContext);
- this.baseDirPath = requireNonNull(dirPath);
+ baseDirPath = requireNonNull(dirPath);
}
public static Props props(final EffectiveModelContext schemaContext, final String dirPath) {
final Path filePath = snapshotDir.resolve(exportSnapshot.id + "-snapshot.json");
LOG.debug("Creating JSON file : {}", filePath);
- final NormalizedNode root = exportSnapshot.dataTreeCandidate.getRootNode().getDataAfter().get();
+ final NormalizedNode root = exportSnapshot.dataTreeCandidate.getRootNode().getDataAfter().orElseThrow();
checkState(root instanceof NormalizedNodeContainer, "Unexpected root %s", root);
writeSnapshot(filePath, (NormalizedNodeContainer<?>) root);
try (NormalizedNodeWriter nnWriter = NormalizedNodeWriter.forStreamWriter(
JSONNormalizedNodeStreamWriter.createNestedWriter(
- JSONCodecFactorySupplier.RFC7951.getShared(schemaContext), SchemaPath.ROOT, null, jsonWriter),
+ JSONCodecFactorySupplier.RFC7951.getShared(schemaContext),
+ SchemaInferenceStack.of(schemaContext).toInference(), null, jsonWriter),
true)) {
for (NormalizedNode node : root.body()) {
nnWriter.write(node);
jsonWriter.beginObject().name("Entries");
jsonWriter.beginArray();
for (ReplicatedLogEntry entry : entries) {
- final Payload data = entry.getData();
+ final var data = entry.getData();
if (data instanceof CommitTransactionPayload) {
final CommitTransactionPayload payload = (CommitTransactionPayload) entry.getData();
final DataTreeCandidate candidate = payload.getCandidate().getValue().getCandidate();
writer.beginObject().name("Path").value(path.toString()).endObject();
writer.beginObject().name("ModificationType").value(modificationType.toString()).endObject();
if (modificationType == ModificationType.WRITE) {
- writer.beginObject().name("Data").value(node.getDataAfter().get().body().toString()).endObject();
+ writer.beginObject().name("Data").value(node.getDataAfter().orElseThrow().body().toString()).endObject();
}
writer.endArray();
writer.endObject();