*/
package org.opendaylight.controller.cluster.access.commands;
+import static java.util.Objects.requireNonNull;
+
import akka.actor.ActorRef;
-import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
+import java.io.Serial;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
-import org.opendaylight.controller.cluster.datastore.node.utils.stream.NormalizedNodeDataInput;
-import org.opendaylight.controller.cluster.datastore.node.utils.stream.NormalizedNodeDataOutput;
-import org.opendaylight.controller.cluster.datastore.node.utils.stream.NormalizedNodeInputOutput;
+import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeDataInput;
+import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeDataOutput;
+import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeStreamVersion;
+import org.opendaylight.yangtools.yang.data.impl.schema.ReusableImmutableNormalizedNodeStreamWriter;
/**
* Externalizable proxy for use with {@link ExistsTransactionRequest}. It implements the initial (Boron) serialization
* @author Robert Varga
*/
final class ModifyTransactionRequestProxyV1 extends AbstractTransactionRequestProxy<ModifyTransactionRequest> {
+ @Serial
private static final long serialVersionUID = 1L;
+
private List<TransactionModification> modifications;
private Optional<PersistenceProtocol> protocol;
+ private transient NormalizedNodeStreamVersion streamVersion;
+ // checkstyle flags the public modifier as redundant however it is explicitly needed for Java serialization to
+ // be able to create instances via reflection.
+ @SuppressWarnings("checkstyle:RedundantModifier")
public ModifyTransactionRequestProxyV1() {
// For Externalizable
}
ModifyTransactionRequestProxyV1(final ModifyTransactionRequest request) {
super(request);
- this.modifications = Preconditions.checkNotNull(request.getModifications());
- this.protocol = request.getPersistenceProtocol();
+ modifications = requireNonNull(request.getModifications());
+ protocol = request.getPersistenceProtocol();
+ streamVersion = request.getVersion().getStreamVersion();
}
@Override
final int size = in.readInt();
if (size != 0) {
modifications = new ArrayList<>(size);
- final NormalizedNodeDataInput nnin = NormalizedNodeInputOutput.newDataInput(in);
+ final NormalizedNodeDataInput nnin = NormalizedNodeDataInput.newDataInput(in);
+ final ReusableImmutableNormalizedNodeStreamWriter writer =
+ ReusableImmutableNormalizedNodeStreamWriter.create();
for (int i = 0; i < size; ++i) {
- modifications.add(TransactionModification.readFrom(nnin));
+ modifications.add(TransactionModification.readFrom(nnin, writer));
}
} else {
modifications = ImmutableList.of();
out.writeByte(PersistenceProtocol.byteValue(protocol.orElse(null)));
out.writeInt(modifications.size());
if (!modifications.isEmpty()) {
- try (NormalizedNodeDataOutput nnout = NormalizedNodeInputOutput.newDataOutput(out)) {
+ try (NormalizedNodeDataOutput nnout = streamVersion.newDataOutput(out)) {
for (TransactionModification op : modifications) {
op.writeTo(nnout);
}