From 139f7a412c8d96fa9d03113439d622c30218c7ce Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 3 Nov 2022 03:45:41 +0100 Subject: [PATCH] Promote cds-access-api This API is no longer @Beta. Change-Id: If81e77c8b2c9dc2fcfa6bcd94f58426c75f6cd0a Signed-off-by: Robert Varga --- .../controller/cluster/access/ABIVersion.java | 30 +++++----------- .../access/AbstractVersionException.java | 12 +++---- .../access/FutureVersionException.java | 6 ++-- .../cluster/access/PastVersionException.java | 4 +-- .../AbortLocalTransactionRequest.java | 6 ++-- .../AbstractReadPathTransactionRequest.java | 6 ++-- .../AbstractReadTransactionRequest.java | 6 ++-- .../commands/ClosedTransactionException.java | 6 ++-- .../CommitLocalTransactionRequest.java | 6 ++-- .../access/commands/ConnectClientFailure.java | 6 ++-- .../access/commands/ConnectClientRequest.java | 8 ++--- .../access/commands/ConnectClientSuccess.java | 9 +---- .../commands/CreateLocalHistoryRequest.java | 6 ++-- .../access/commands/DeadHistoryException.java | 6 ++-- .../commands/DeadTransactionException.java | 6 ++-- .../commands/DestroyLocalHistoryRequest.java | 6 ++-- .../commands/ExistsTransactionRequest.java | 6 ++-- .../commands/ExistsTransactionSuccess.java | 7 ++-- .../IncrementTransactionSequenceSuccess.java | 6 ++-- .../access/commands/LocalHistoryFailure.java | 6 ++-- .../access/commands/LocalHistoryRequest.java | 6 ++-- .../access/commands/LocalHistorySuccess.java | 4 --- .../commands/ModifyTransactionRequest.java | 6 ++-- .../ModifyTransactionRequestBuilder.java | 6 +--- .../commands/ModifyTransactionSuccess.java | 6 ++-- .../access/commands/NotLeaderException.java | 6 ++-- .../commands/OutOfOrderRequestException.java | 6 ++-- .../OutOfSequenceEnvelopeException.java | 6 ++-- .../access/commands/PersistenceProtocol.java | 29 ++++++--------- .../commands/PurgeLocalHistoryRequest.java | 6 ++-- .../commands/ReadTransactionRequest.java | 6 ++-- .../commands/ReadTransactionSuccess.java | 9 +++-- .../commands/SkipTransactionsRequest.java | 4 +-- .../commands/SkipTransactionsResponse.java | 4 +-- .../commands/TransactionAbortRequest.java | 6 ++-- .../commands/TransactionDataModification.java | 4 --- .../access/commands/TransactionDelete.java | 4 --- .../commands/TransactionDoCommitRequest.java | 6 ++-- .../access/commands/TransactionFailure.java | 6 ++-- .../access/commands/TransactionMerge.java | 4 --- .../commands/TransactionModification.java | 20 ++++------- .../commands/TransactionPreCommitRequest.java | 6 ++-- .../commands/TransactionPurgeRequest.java | 6 ++-- .../access/commands/TransactionRequest.java | 6 ++-- .../access/commands/TransactionSuccess.java | 6 ++-- .../access/commands/TransactionWrite.java | 4 --- .../commands/UnknownHistoryException.java | 8 ++--- .../concepts/AbstractRequestFailureProxy.java | 7 ++-- .../access/concepts/AbstractRequestProxy.java | 7 ++-- .../access/concepts/AbstractSuccessProxy.java | 6 ++-- .../access/concepts/ClientIdentifier.java | 23 ++++++------ .../access/concepts/FrontendIdentifier.java | 12 +++---- .../cluster/access/concepts/FrontendType.java | 7 ++-- .../cluster/access/concepts/MemberName.java | 8 ++--- .../cluster/access/concepts/Message.java | 21 ++++------- .../cluster/access/concepts/Request.java | 7 ++-- .../access/concepts/RequestException.java | 6 ++-- .../access/concepts/RequestFailure.java | 6 ++-- .../access/concepts/RequestSuccess.java | 6 ++-- .../cluster/access/concepts/Response.java | 6 ++-- .../concepts/RetiredGenerationException.java | 6 ++-- .../concepts/RuntimeRequestException.java | 6 ++-- .../access/concepts/SliceableMessage.java | 4 +-- .../concepts/TransactionIdentifier.java | 20 ++++------- .../concepts/UnsupportedRequestException.java | 6 ++-- .../access/client/AbstractClientActor.java | 4 --- .../access/client/ClientActorBehavior.java | 4 --- .../access/client/ClientActorContext.java | 10 ++---- .../client/ConnectingClientConnection.java | 2 -- .../access/client/ConnectionEntry.java | 6 +--- .../cluster/access/client/InversibleLock.java | 35 ++++++++++--------- .../client/InversibleLockException.java | 6 ++-- 72 files changed, 195 insertions(+), 380 deletions(-) diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/ABIVersion.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/ABIVersion.java index cfaf477f8f..92a70cd000 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/ABIVersion.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/ABIVersion.java @@ -9,7 +9,6 @@ package org.opendaylight.controller.cluster.access; import static com.google.common.base.Preconditions.checkArgument; -import com.google.common.annotations.Beta; import com.google.common.annotations.VisibleForTesting; import java.io.DataInput; import java.io.DataOutput; @@ -22,10 +21,7 @@ import org.slf4j.LoggerFactory; /** * Enumeration of all ABI versions supported by this implementation of the client access API. - * - * @author Robert Varga */ -@Beta public enum ABIVersion implements WritableObject { // NOTE: enumeration values need to be sorted in ascending order of their version to keep Comparable working @@ -130,24 +126,14 @@ public enum ABIVersion implements WritableObject { * @throws PastVersionException if the specified integer identifies a past version which is no longer supported */ public static @NonNull ABIVersion valueOf(final short value) throws FutureVersionException, PastVersionException { - switch (Short.toUnsignedInt(value)) { - case 0: - case 1: - case 2: - case 3: - case 4: - throw new PastVersionException(value, BORON); - case 5: - return BORON; - case 6: - return NEON_SR2; - case 7: - return SODIUM_SR1; - case 8: - return MAGNESIUM; - default: - throw new FutureVersionException(value, MAGNESIUM); - } + return switch (Short.toUnsignedInt(value)) { + case 0, 1, 2, 3, 4 -> throw new PastVersionException(value, BORON); + case 5 -> BORON; + case 6 -> NEON_SR2; + case 7 -> SODIUM_SR1; + case 8 -> MAGNESIUM; + default -> throw new FutureVersionException(value, MAGNESIUM); + }; } @Override diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/AbstractVersionException.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/AbstractVersionException.java index 0567ef1191..f1c538c718 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/AbstractVersionException.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/AbstractVersionException.java @@ -9,17 +9,16 @@ package org.opendaylight.controller.cluster.access; import static java.util.Objects.requireNonNull; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.eclipse.jdt.annotation.NonNull; /** * Abstract base exception used for reporting version mismatches from {@link ABIVersion}. - * - * @author Robert Varga */ -@Beta public abstract class AbstractVersionException extends Exception { + @Serial private static final long serialVersionUID = 1L; + private final @NonNull ABIVersion closestVersion; private final int version; @@ -34,7 +33,7 @@ public abstract class AbstractVersionException extends Exception { * * @return Numeric version */ - public final int getVersion() { + public final int version() { return version; } @@ -43,8 +42,7 @@ public abstract class AbstractVersionException extends Exception { * * @return Closest supported {@link ABIVersion} */ - public final @NonNull ABIVersion getClosestVersion() { + public final @NonNull ABIVersion closestVersion() { return closestVersion; } - } diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/FutureVersionException.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/FutureVersionException.java index d5f132a7b8..4cd807ee09 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/FutureVersionException.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/FutureVersionException.java @@ -7,16 +7,14 @@ */ package org.opendaylight.controller.cluster.access; -import com.google.common.annotations.Beta; +import java.io.Serial; /** * Exception thrown from {@link ABIVersion#valueOf(short)} when the specified version is too new to be supported * by the codebase. - * - * @author Robert Varga */ -@Beta public final class FutureVersionException extends AbstractVersionException { + @Serial private static final long serialVersionUID = 1L; FutureVersionException(final short version, ABIVersion closest) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/PastVersionException.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/PastVersionException.java index c8cbe54b3d..0b7f134ec9 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/PastVersionException.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/PastVersionException.java @@ -7,7 +7,7 @@ */ package org.opendaylight.controller.cluster.access; -import com.google.common.annotations.Beta; +import java.io.Serial; /** * Exception thrown from {@link ABIVersion#valueOf(short)} when the specified version is too old and no longer @@ -15,8 +15,8 @@ import com.google.common.annotations.Beta; * * @author Robert Varga */ -@Beta public final class PastVersionException extends AbstractVersionException { + @Serial private static final long serialVersionUID = 1L; PastVersionException(final short version, final ABIVersion closest) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/AbortLocalTransactionRequest.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/AbortLocalTransactionRequest.java index 3898ee22b3..37ddb9e7e7 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/AbortLocalTransactionRequest.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/AbortLocalTransactionRequest.java @@ -8,7 +8,7 @@ package org.opendaylight.controller.cluster.access.commands; import akka.actor.ActorRef; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; @@ -16,11 +16,9 @@ import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier * Request to abort a local transaction. Since local transactions do not introduce state on the backend until they * are ready, the purpose of this message is to inform the backend that a message identifier has been used. This is * not important for single transactions, but is critical to ensure transaction ordering within local histories. - * - * @author Robert Varga */ -@Beta public final class AbortLocalTransactionRequest extends AbstractLocalTransactionRequest { + @Serial private static final long serialVersionUID = 1L; public AbortLocalTransactionRequest(final @NonNull TransactionIdentifier identifier, diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/AbstractReadPathTransactionRequest.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/AbstractReadPathTransactionRequest.java index fa53a599aa..1cdade9ac0 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/AbstractReadPathTransactionRequest.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/AbstractReadPathTransactionRequest.java @@ -10,8 +10,8 @@ package org.opendaylight.controller.cluster.access.commands; import static java.util.Objects.requireNonNull; import akka.actor.ActorRef; -import com.google.common.annotations.Beta; import com.google.common.base.MoreObjects.ToStringHelper; +import java.io.Serial; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; @@ -25,13 +25,11 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; * This class is visible outside of this package for the purpose of allowing common instanceof checks * and simplified codepaths. * - * @author Robert Varga - * * @param Message type */ -@Beta public abstract class AbstractReadPathTransactionRequest> extends AbstractReadTransactionRequest { + @Serial private static final long serialVersionUID = 1L; private final @NonNull YangInstanceIdentifier path; diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/AbstractReadTransactionRequest.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/AbstractReadTransactionRequest.java index 3fc4821edf..4c1d3971f5 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/AbstractReadTransactionRequest.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/AbstractReadTransactionRequest.java @@ -8,8 +8,8 @@ package org.opendaylight.controller.cluster.access.commands; import akka.actor.ActorRef; -import com.google.common.annotations.Beta; import com.google.common.base.MoreObjects.ToStringHelper; +import java.io.Serial; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; @@ -20,13 +20,11 @@ import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier * This class is visible outside of this package for the purpose of allowing common instanceof checks * and simplified codepaths. * - * @author Robert Varga - * * @param Message type */ -@Beta public abstract class AbstractReadTransactionRequest> extends TransactionRequest { + @Serial private static final long serialVersionUID = 1L; private final boolean snapshotOnly; diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ClosedTransactionException.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ClosedTransactionException.java index ece4720564..10bee071a5 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ClosedTransactionException.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ClosedTransactionException.java @@ -7,7 +7,7 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.opendaylight.controller.cluster.access.concepts.RequestException; /** @@ -15,11 +15,9 @@ import org.opendaylight.controller.cluster.access.concepts.RequestException; * been closed, either via a successful commit or abort (which is indicated via {@link #isSuccessful()}. This can * happen if the corresponding journal record is replicated, but the message to the frontend gets lost and the backed * leader moved before the frontend retried the corresponding request. - * - * @author Robert Varga */ -@Beta public final class ClosedTransactionException extends RequestException { + @Serial private static final long serialVersionUID = 1L; private final boolean successful; diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/CommitLocalTransactionRequest.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/CommitLocalTransactionRequest.java index 1e16cb5bbd..c51165fb63 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/CommitLocalTransactionRequest.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/CommitLocalTransactionRequest.java @@ -10,9 +10,9 @@ package org.opendaylight.controller.cluster.access.commands; import static java.util.Objects.requireNonNull; import akka.actor.ActorRef; -import com.google.common.annotations.Beta; import com.google.common.base.MoreObjects.ToStringHelper; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import java.io.Serial; import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; @@ -22,12 +22,10 @@ import org.opendaylight.yangtools.yang.data.tree.api.DataTreeModification; /** * Request to commit a local transaction. Since local transactions do not introduce state on the backend until they * are ready, this message carries a complete set of modifications. - * - * @author Robert Varga */ -@Beta public final class CommitLocalTransactionRequest extends AbstractLocalTransactionRequest { + @Serial private static final long serialVersionUID = 1L; @SuppressFBWarnings(value = "SE_BAD_FIELD", justification = "This field is not Serializable but this class " diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ConnectClientFailure.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ConnectClientFailure.java index 46b460ac0d..e11798ab80 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ConnectClientFailure.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ConnectClientFailure.java @@ -7,7 +7,7 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.AbstractRequestFailureProxy; import org.opendaylight.controller.cluster.access.concepts.ClientIdentifier; @@ -16,11 +16,9 @@ import org.opendaylight.controller.cluster.access.concepts.RequestFailure; /** * A {@link RequestFailure} reported when {@link ConnectClientRequest} fails. - * - * @author Robert Varga */ -@Beta public final class ConnectClientFailure extends RequestFailure { + @Serial private static final long serialVersionUID = 1L; ConnectClientFailure(final ClientIdentifier target, final long sequence, final RequestException cause) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ConnectClientRequest.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ConnectClientRequest.java index ba86035e92..1b937521ef 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ConnectClientRequest.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ConnectClientRequest.java @@ -10,7 +10,6 @@ package org.opendaylight.controller.cluster.access.commands; import static java.util.Objects.requireNonNull; import akka.actor.ActorRef; -import com.google.common.annotations.Beta; import com.google.common.base.MoreObjects.ToStringHelper; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.AbstractRequestProxy; @@ -26,10 +25,7 @@ import org.opendaylight.controller.cluster.access.concepts.RequestException; * *

* It also includes request stream sequencing information. - * - * @author Robert Varga */ -@Beta public final class ConnectClientRequest extends Request { private static final long serialVersionUID = 1L; @@ -50,8 +46,8 @@ public final class ConnectClientRequest extends Request { private static final long serialVersionUID = 1L; - @SuppressFBWarnings(value = "SE_BAD_FIELD", justification = "This field is not Serializable but this class " - + "implements writeReplace to delegate serialization to a Proxy class and thus instances of this class " - + "aren't serialized. FindBugs does not recognize this.") - private final @NonNull List alternates; + private final @NonNull ImmutableList alternates; @SuppressFBWarnings(value = "SE_BAD_FIELD", justification = "See justification above.") private final ReadOnlyDataTree dataTree; diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/CreateLocalHistoryRequest.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/CreateLocalHistoryRequest.java index 01a110d046..4e07b8ff75 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/CreateLocalHistoryRequest.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/CreateLocalHistoryRequest.java @@ -8,17 +8,15 @@ package org.opendaylight.controller.cluster.access.commands; import akka.actor.ActorRef; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.LocalHistoryIdentifier; /** * Request to create a new local history. - * - * @author Robert Varga */ -@Beta public final class CreateLocalHistoryRequest extends LocalHistoryRequest { + @Serial private static final long serialVersionUID = 1L; public CreateLocalHistoryRequest(final LocalHistoryIdentifier target, final ActorRef replyTo) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/DeadHistoryException.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/DeadHistoryException.java index 7df84763c5..81c8dabf5c 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/DeadHistoryException.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/DeadHistoryException.java @@ -7,19 +7,17 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.annotations.Beta; import com.google.common.collect.RangeSet; import com.google.common.primitives.UnsignedLong; +import java.io.Serial; import org.opendaylight.controller.cluster.access.concepts.RequestException; /** * A {@link RequestException} indicating that the backend has received a request to create a history which has already * been retired. - * - * @author Robert Varga */ -@Beta public final class DeadHistoryException extends RequestException { + @Serial private static final long serialVersionUID = 1L; public DeadHistoryException(final RangeSet purgedHistories) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/DeadTransactionException.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/DeadTransactionException.java index fee439984a..dadfb93110 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/DeadTransactionException.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/DeadTransactionException.java @@ -7,20 +7,18 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.annotations.Beta; import com.google.common.collect.ImmutableRangeSet; import com.google.common.collect.RangeSet; import com.google.common.primitives.UnsignedLong; +import java.io.Serial; import org.opendaylight.controller.cluster.access.concepts.RequestException; /** * A {@link RequestException} indicating that the backend has received a request to create a transaction which has * already been purged. - * - * @author Robert Varga */ -@Beta public final class DeadTransactionException extends RequestException { + @Serial private static final long serialVersionUID = 1L; private final RangeSet purgedIdentifiers; diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/DestroyLocalHistoryRequest.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/DestroyLocalHistoryRequest.java index 375128318c..3c9a4b6945 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/DestroyLocalHistoryRequest.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/DestroyLocalHistoryRequest.java @@ -8,17 +8,15 @@ package org.opendaylight.controller.cluster.access.commands; import akka.actor.ActorRef; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.LocalHistoryIdentifier; /** * Request to destroy a local history. - * - * @author Robert Varga */ -@Beta public final class DestroyLocalHistoryRequest extends LocalHistoryRequest { + @Serial private static final long serialVersionUID = 1L; public DestroyLocalHistoryRequest(final LocalHistoryIdentifier target, final long sequence, diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ExistsTransactionRequest.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ExistsTransactionRequest.java index ab2316c28e..d5e619c706 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ExistsTransactionRequest.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ExistsTransactionRequest.java @@ -8,7 +8,7 @@ package org.opendaylight.controller.cluster.access.commands; import akka.actor.ActorRef; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; @@ -16,11 +16,9 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; /** * A transaction request to query if a particular path exists in the current view of a particular transaction. - * - * @author Robert Varga */ -@Beta public final class ExistsTransactionRequest extends AbstractReadPathTransactionRequest { + @Serial private static final long serialVersionUID = 1L; public ExistsTransactionRequest(final @NonNull TransactionIdentifier identifier, final long sequence, diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ExistsTransactionSuccess.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ExistsTransactionSuccess.java index 8a1704de76..3110002e4f 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ExistsTransactionSuccess.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ExistsTransactionSuccess.java @@ -7,20 +7,19 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.annotations.Beta; import com.google.common.base.MoreObjects.ToStringHelper; +import java.io.Serial; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; /** * Successful reply to an {@link ExistsTransactionRequest}. It indicates presence of requested data via * {@link #getExists()}. - * - * @author Robert Varga */ -@Beta public final class ExistsTransactionSuccess extends TransactionSuccess { + @Serial private static final long serialVersionUID = 1L; + private final boolean exists; public ExistsTransactionSuccess(final TransactionIdentifier target, final long sequence, final boolean exists) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/IncrementTransactionSequenceSuccess.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/IncrementTransactionSequenceSuccess.java index 80f4a0d5aa..a147545dd9 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/IncrementTransactionSequenceSuccess.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/IncrementTransactionSequenceSuccess.java @@ -7,17 +7,15 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; /** * Successful reply to an {@link IncrementTransactionSequenceRequest}. - * - * @author Robert Varga */ -@Beta public final class IncrementTransactionSequenceSuccess extends TransactionSuccess { + @Serial private static final long serialVersionUID = 1L; public IncrementTransactionSequenceSuccess(final TransactionIdentifier target, final long sequence) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/LocalHistoryFailure.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/LocalHistoryFailure.java index 4fd69c24ce..60aba50d36 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/LocalHistoryFailure.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/LocalHistoryFailure.java @@ -7,7 +7,7 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.LocalHistoryIdentifier; import org.opendaylight.controller.cluster.access.concepts.RequestException; @@ -15,11 +15,9 @@ import org.opendaylight.controller.cluster.access.concepts.RequestFailure; /** * Generic {@link RequestFailure} involving a {@link LocalHistoryRequest}. - * - * @author Robert Varga */ -@Beta public final class LocalHistoryFailure extends RequestFailure { + @Serial private static final long serialVersionUID = 1L; LocalHistoryFailure(final LocalHistoryIdentifier target, final long sequence, final RequestException cause) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/LocalHistoryRequest.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/LocalHistoryRequest.java index 33d04850fb..0fe4c2d618 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/LocalHistoryRequest.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/LocalHistoryRequest.java @@ -8,8 +8,8 @@ package org.opendaylight.controller.cluster.access.commands; import akka.actor.ActorRef; -import com.google.common.annotations.Beta; import com.google.common.base.Preconditions; +import java.io.Serial; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.LocalHistoryIdentifier; import org.opendaylight.controller.cluster.access.concepts.Request; @@ -19,12 +19,10 @@ import org.opendaylight.controller.cluster.access.concepts.RequestException; * Abstract base class for {@link Request}s involving specific local history. This class is visible outside of this * package solely for the ability to perform a unified instanceof check. * - * @author Robert Varga - * * @param Message type */ -@Beta public abstract class LocalHistoryRequest> extends Request { + @Serial private static final long serialVersionUID = 1L; LocalHistoryRequest(final LocalHistoryIdentifier target, final long sequence, final ActorRef replyTo) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/LocalHistorySuccess.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/LocalHistorySuccess.java index 3b8ed35816..7480305eb9 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/LocalHistorySuccess.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/LocalHistorySuccess.java @@ -7,7 +7,6 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.annotations.Beta; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.AbstractSuccessProxy; import org.opendaylight.controller.cluster.access.concepts.LocalHistoryIdentifier; @@ -15,10 +14,7 @@ import org.opendaylight.controller.cluster.access.concepts.RequestSuccess; /** * Success class for {@link RequestSuccess}es involving a specific local history. - * - * @author Robert Varga */ -@Beta public final class LocalHistorySuccess extends RequestSuccess { private static final long serialVersionUID = 1L; diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ModifyTransactionRequest.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ModifyTransactionRequest.java index 39b577cef2..6f42d0ce56 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ModifyTransactionRequest.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ModifyTransactionRequest.java @@ -8,10 +8,10 @@ package org.opendaylight.controller.cluster.access.commands; import akka.actor.ActorRef; -import com.google.common.annotations.Beta; import com.google.common.base.MoreObjects.ToStringHelper; import com.google.common.collect.ImmutableList; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import java.io.Serial; import java.util.List; import java.util.Optional; import org.opendaylight.controller.cluster.access.ABIVersion; @@ -21,12 +21,10 @@ import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier /** * A transaction request to apply a particular set of operations on top of the current transaction. This message is * used to also finish a transaction by specifying a {@link PersistenceProtocol}. - * - * @author Robert Varga */ -@Beta public final class ModifyTransactionRequest extends TransactionRequest implements SliceableMessage { + @Serial private static final long serialVersionUID = 1L; @SuppressFBWarnings(value = "SE_BAD_FIELD", justification = "This field is not Serializable but this class " diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ModifyTransactionRequestBuilder.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ModifyTransactionRequestBuilder.java index 8e2e5cce0b..0e99942c1e 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ModifyTransactionRequestBuilder.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ModifyTransactionRequestBuilder.java @@ -11,7 +11,6 @@ import static com.google.common.base.Preconditions.checkState; import static java.util.Objects.requireNonNull; import akka.actor.ActorRef; -import com.google.common.annotations.Beta; import java.util.ArrayList; import java.util.List; import org.eclipse.jdt.annotation.NonNull; @@ -21,13 +20,10 @@ import org.opendaylight.yangtools.concepts.Identifiable; /** * A reusable builder for creating {@link ModifyTransactionRequest} message instances. Its internal state is reset when * {@link #build()} is invoked, hence it can be used to create a sequence of messages. This class is NOT thread-safe. - * - * @author Robert Varga */ -@Beta public final class ModifyTransactionRequestBuilder implements Identifiable { private final List modifications = new ArrayList<>(1); - private final TransactionIdentifier identifier; + private final @NonNull TransactionIdentifier identifier; private final ActorRef replyTo; private PersistenceProtocol protocol; diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ModifyTransactionSuccess.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ModifyTransactionSuccess.java index c4dd20d6c9..42f22439b1 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ModifyTransactionSuccess.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ModifyTransactionSuccess.java @@ -7,17 +7,15 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; /** * Response to a {@link ModifyTransactionRequest} which does not have a {@link PersistenceProtocol}. - * - * @author Robert Varga */ -@Beta public final class ModifyTransactionSuccess extends TransactionSuccess { + @Serial private static final long serialVersionUID = 1L; public ModifyTransactionSuccess(final TransactionIdentifier identifier, final long sequence) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/NotLeaderException.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/NotLeaderException.java index 0864cd0cf0..881953c01b 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/NotLeaderException.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/NotLeaderException.java @@ -8,17 +8,15 @@ package org.opendaylight.controller.cluster.access.commands; import akka.actor.ActorRef; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.opendaylight.controller.cluster.access.concepts.RequestException; /** * General error raised when the recipient of a Request is not the correct backend to talk to. This typically * means that the backend processing has moved and the frontend needs to run rediscovery and retry the request. - * - * @author Robert Varga */ -@Beta public final class NotLeaderException extends RequestException { + @Serial private static final long serialVersionUID = 1L; public NotLeaderException(final ActorRef me) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/OutOfOrderRequestException.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/OutOfOrderRequestException.java index cd110d66b6..7ee5a2f306 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/OutOfOrderRequestException.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/OutOfOrderRequestException.java @@ -7,17 +7,15 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.opendaylight.controller.cluster.access.concepts.RequestException; /** * A {@link RequestException} indicating that the backend has received a Request whose sequence does not match the * next expected sequence for the target. This is a hard error, as it indicates a Request is missing in the stream. - * - * @author Robert Varga */ -@Beta public final class OutOfOrderRequestException extends RequestException { + @Serial private static final long serialVersionUID = 1L; public OutOfOrderRequestException(final long expectedRequest) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/OutOfSequenceEnvelopeException.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/OutOfSequenceEnvelopeException.java index ad3dd8d700..61715bc42a 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/OutOfSequenceEnvelopeException.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/OutOfSequenceEnvelopeException.java @@ -7,18 +7,16 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.opendaylight.controller.cluster.access.concepts.RequestException; /** * A {@link RequestException} indicating that the backend has received a RequestEnvelope whose sequence does not match * the next expected sequence. This can happen during leader transitions, when a part of the stream is rejected because * the backend is not the leader and it transitions to being a leader with old stream messages still being present. - * - * @author Robert Varga */ -@Beta public final class OutOfSequenceEnvelopeException extends RequestException { + @Serial private static final long serialVersionUID = 1L; public OutOfSequenceEnvelopeException(final long expectedEnvelope) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/PersistenceProtocol.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/PersistenceProtocol.java index be58b05b1f..82fca03087 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/PersistenceProtocol.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/PersistenceProtocol.java @@ -7,19 +7,16 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.annotations.Beta; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; +import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.concepts.WritableObject; /** * Enumeration of transaction persistence protocols. These govern which protocol is executed between the frontend * and backend to drive persistence of a particular transaction. - * - * @author Robert Varga */ -@Beta public enum PersistenceProtocol implements WritableObject { /** * Abort protocol. The transaction has been aborted on the frontend and its effects should not be visible @@ -77,20 +74,14 @@ public enum PersistenceProtocol implements WritableObject { return finish == null ? 0 : finish.byteValue(); } - static PersistenceProtocol valueOf(final byte value) { - switch (value) { - case 0: - return null; - case 1: - return ABORT; - case 2: - return SIMPLE; - case 3: - return THREE_PHASE; - case 4: - return READY; - default: - throw new IllegalArgumentException("Unhandled byte value " + value); - } + static @Nullable PersistenceProtocol valueOf(final byte value) { + return switch (value) { + case 0 -> null; + case 1 -> ABORT; + case 2 -> SIMPLE; + case 3 -> THREE_PHASE; + case 4 -> READY; + default -> throw new IllegalArgumentException("Unhandled byte value " + value); + }; } } diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/PurgeLocalHistoryRequest.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/PurgeLocalHistoryRequest.java index ecbd749dd1..50f1657026 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/PurgeLocalHistoryRequest.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/PurgeLocalHistoryRequest.java @@ -8,18 +8,16 @@ package org.opendaylight.controller.cluster.access.commands; import akka.actor.ActorRef; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.LocalHistoryIdentifier; /** * Request to purge a local history. This request is sent by the client once it receives a successful reply to * {@link DestroyLocalHistoryRequest} and indicates it has removed all state attached to a particular local history. - * - * @author Robert Varga */ -@Beta public final class PurgeLocalHistoryRequest extends LocalHistoryRequest { + @Serial private static final long serialVersionUID = 1L; public PurgeLocalHistoryRequest(final LocalHistoryIdentifier target, final long sequence, final ActorRef replyTo) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionRequest.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionRequest.java index 92caa59b7a..c5a550ce05 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionRequest.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionRequest.java @@ -8,7 +8,7 @@ package org.opendaylight.controller.cluster.access.commands; import akka.actor.ActorRef; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; @@ -16,11 +16,9 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; /** * A transaction request to read a particular path exists in the current view of a particular transaction. - * - * @author Robert Varga */ -@Beta public final class ReadTransactionRequest extends AbstractReadPathTransactionRequest { + @Serial private static final long serialVersionUID = 1L; public ReadTransactionRequest(final @NonNull TransactionIdentifier identifier, final long sequence, diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionSuccess.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionSuccess.java index 1b3410ee3c..1e473d2b30 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionSuccess.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionSuccess.java @@ -9,8 +9,8 @@ package org.opendaylight.controller.cluster.access.commands; import static java.util.Objects.requireNonNull; -import com.google.common.annotations.Beta; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import java.io.Serial; import java.util.Optional; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.SliceableMessage; @@ -20,14 +20,13 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; /** * Successful reply to an {@link ReadTransactionRequest}. It indicates presence of requested data via * {@link #getData()}. - * - * @author Robert Varga */ -@Beta -@SuppressFBWarnings("SE_BAD_FIELD") public final class ReadTransactionSuccess extends TransactionSuccess implements SliceableMessage { + @Serial private static final long serialVersionUID = 1L; + + @SuppressFBWarnings(value = "SE_BAD_FIELD", justification = "interface-based best effort") private final Optional data; public ReadTransactionSuccess(final TransactionIdentifier identifier, final long sequence, diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/SkipTransactionsRequest.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/SkipTransactionsRequest.java index dd5faa8e87..3b97bb9817 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/SkipTransactionsRequest.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/SkipTransactionsRequest.java @@ -8,10 +8,10 @@ package org.opendaylight.controller.cluster.access.commands; import akka.actor.ActorRef; -import com.google.common.annotations.Beta; import com.google.common.base.MoreObjects.ToStringHelper; import com.google.common.collect.ImmutableList; import com.google.common.primitives.UnsignedLong; +import java.io.Serial; import java.util.Collection; import java.util.List; import org.eclipse.jdt.annotation.NonNull; @@ -27,8 +27,8 @@ import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier * This request is sent by the frontend to inform the backend that a set of {@link TransactionIdentifier}s are * explicitly retired and are guaranteed to never be used by the frontend. */ -@Beta public final class SkipTransactionsRequest extends TransactionRequest { + @Serial private static final long serialVersionUID = 1L; // Note: UnsignedLong is arbitrary, yang.common.Uint64 would work just as well, we really want an immutable diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/SkipTransactionsResponse.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/SkipTransactionsResponse.java index b62af7e7dc..6d168d30d6 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/SkipTransactionsResponse.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/SkipTransactionsResponse.java @@ -7,15 +7,15 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; /** * Successful reply to a {@link SkipTransactionsRequest}. */ -@Beta public final class SkipTransactionsResponse extends TransactionSuccess { + @Serial private static final long serialVersionUID = 1L; public SkipTransactionsResponse(final TransactionIdentifier identifier, final long sequence) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionAbortRequest.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionAbortRequest.java index b8499cc2a2..d43d188de4 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionAbortRequest.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionAbortRequest.java @@ -8,17 +8,15 @@ package org.opendaylight.controller.cluster.access.commands; import akka.actor.ActorRef; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; /** * A transaction request to perform the abort step of the three-phase commit protocol. - * - * @author Robert Varga */ -@Beta public final class TransactionAbortRequest extends TransactionRequest { + @Serial private static final long serialVersionUID = 1L; public TransactionAbortRequest(final TransactionIdentifier target, final long sequence, final ActorRef replyTo) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionDataModification.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionDataModification.java index 9f0cb81876..d6eb297bb0 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionDataModification.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionDataModification.java @@ -9,7 +9,6 @@ package org.opendaylight.controller.cluster.access.commands; import static java.util.Objects.requireNonNull; -import com.google.common.annotations.Beta; import java.io.IOException; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -17,10 +16,7 @@ import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeDataOutpu /** * A {@link TransactionModification} which has a data component. - * - * @author Robert Varga */ -@Beta public abstract class TransactionDataModification extends TransactionModification { private final NormalizedNode data; diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionDelete.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionDelete.java index 62acdbbb76..00c9bd8259 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionDelete.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionDelete.java @@ -7,15 +7,11 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.annotations.Beta; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; /** * Delete a particular path. - * - * @author Robert Varga */ -@Beta public final class TransactionDelete extends TransactionModification { public TransactionDelete(final YangInstanceIdentifier path) { super(path); diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionDoCommitRequest.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionDoCommitRequest.java index 955c268008..92ede4f1d8 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionDoCommitRequest.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionDoCommitRequest.java @@ -8,17 +8,15 @@ package org.opendaylight.controller.cluster.access.commands; import akka.actor.ActorRef; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; /** * A transaction request to perform the final, doCommit, step of the three-phase commit protocol. - * - * @author Robert Varga */ -@Beta public final class TransactionDoCommitRequest extends TransactionRequest { + @Serial private static final long serialVersionUID = 1L; public TransactionDoCommitRequest(final TransactionIdentifier target, final long sequence, final ActorRef replyTo) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionFailure.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionFailure.java index e0b6a59987..86240ddfbc 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionFailure.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionFailure.java @@ -7,7 +7,7 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.RequestException; import org.opendaylight.controller.cluster.access.concepts.RequestFailure; @@ -15,11 +15,9 @@ import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier /** * Generic {@link RequestFailure} involving a {@link TransactionRequest}. - * - * @author Robert Varga */ -@Beta public final class TransactionFailure extends RequestFailure { + @Serial private static final long serialVersionUID = 1L; TransactionFailure(final TransactionIdentifier target, final long sequence, final RequestException cause) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionMerge.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionMerge.java index bf2580f44b..2784687d28 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionMerge.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionMerge.java @@ -7,16 +7,12 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.annotations.Beta; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; /** * Merge a {@link NormalizedNode} tree onto a specific path. - * - * @author Robert Varga */ -@Beta public final class TransactionMerge extends TransactionDataModification { public TransactionMerge(final YangInstanceIdentifier path, final NormalizedNode data) { super(path, data); diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionModification.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionModification.java index a4e0194373..96bea87d46 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionModification.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionModification.java @@ -9,7 +9,6 @@ package org.opendaylight.controller.cluster.access.commands; import static java.util.Objects.requireNonNull; -import com.google.common.annotations.Beta; import com.google.common.base.MoreObjects; import java.io.IOException; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; @@ -23,10 +22,7 @@ import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeDataOutpu * {@link #readFrom(NormalizedNodeDataInput, ReusableStreamReceiver)} methods for explicit serialization. The reason for * this is that they are usually transmitted in bulk, hence it is advantageous to reuse * a {@link NormalizedNodeDataOutput} instance to achieve better compression. - * - * @author Robert Varga */ -@Beta public abstract class TransactionModification { static final byte TYPE_DELETE = 1; static final byte TYPE_MERGE = 2; @@ -57,15 +53,11 @@ public abstract class TransactionModification { static TransactionModification readFrom(final NormalizedNodeDataInput in, final ReusableStreamReceiver writer) throws IOException { final byte type = in.readByte(); - switch (type) { - case TYPE_DELETE: - return new TransactionDelete(in.readYangInstanceIdentifier()); - case TYPE_MERGE: - return new TransactionMerge(in.readYangInstanceIdentifier(), in.readNormalizedNode(writer)); - case TYPE_WRITE: - return new TransactionWrite(in.readYangInstanceIdentifier(), in.readNormalizedNode(writer)); - default: - throw new IllegalArgumentException("Unhandled type " + type); - } + return switch (type) { + case TYPE_DELETE -> new TransactionDelete(in.readYangInstanceIdentifier()); + case TYPE_MERGE -> new TransactionMerge(in.readYangInstanceIdentifier(), in.readNormalizedNode(writer)); + case TYPE_WRITE -> new TransactionWrite(in.readYangInstanceIdentifier(), in.readNormalizedNode(writer)); + default -> throw new IllegalArgumentException("Unhandled type " + type); + }; } } diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionPreCommitRequest.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionPreCommitRequest.java index 226557d124..3828628089 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionPreCommitRequest.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionPreCommitRequest.java @@ -8,17 +8,15 @@ package org.opendaylight.controller.cluster.access.commands; import akka.actor.ActorRef; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; /** * A transaction request to perform the second, preCommit, step of the three-phase commit protocol. - * - * @author Robert Varga */ -@Beta public final class TransactionPreCommitRequest extends TransactionRequest { + @Serial private static final long serialVersionUID = 1L; public TransactionPreCommitRequest(final TransactionIdentifier target, final long sequence, diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionPurgeRequest.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionPurgeRequest.java index a0fab70188..a374a891db 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionPurgeRequest.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionPurgeRequest.java @@ -8,7 +8,7 @@ package org.opendaylight.controller.cluster.access.commands; import akka.actor.ActorRef; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; @@ -16,11 +16,9 @@ import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier * A transaction request to perform the final transaction transition, which is purging it from the protocol view, * meaning the frontend has no further knowledge of the transaction. The backend is free to purge any state related * to the transaction and responds with a {@link TransactionPurgeResponse}. - * - * @author Robert Varga */ -@Beta public final class TransactionPurgeRequest extends TransactionRequest { + @Serial private static final long serialVersionUID = 1L; public TransactionPurgeRequest(final TransactionIdentifier target, final long sequence, final ActorRef replyTo) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionRequest.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionRequest.java index 4dcf6ea93c..fb12edeacd 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionRequest.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionRequest.java @@ -8,7 +8,7 @@ package org.opendaylight.controller.cluster.access.commands; import akka.actor.ActorRef; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.Request; import org.opendaylight.controller.cluster.access.concepts.RequestException; @@ -18,12 +18,10 @@ import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier * Abstract base class for {@link Request}s involving specific transaction. This class is visible outside of this * package solely for the ability to perform a unified instanceof check. * - * @author Robert Varga - * * @param Message type */ -@Beta public abstract class TransactionRequest> extends Request { + @Serial private static final long serialVersionUID = 1L; TransactionRequest(final TransactionIdentifier identifier, final long sequence, final ActorRef replyTo) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionSuccess.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionSuccess.java index 636a2e741b..f70b750813 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionSuccess.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionSuccess.java @@ -7,7 +7,7 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.RequestSuccess; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; @@ -16,13 +16,11 @@ import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier * Abstract base class for {@link RequestSuccess}es involving specific transaction. This class is visible outside of * this package solely for the ability to perform a unified instanceof check. * - * @author Robert Varga - * * @param Message type */ -@Beta public abstract class TransactionSuccess> extends RequestSuccess { + @Serial private static final long serialVersionUID = 1L; TransactionSuccess(final TransactionIdentifier identifier, final long sequence) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionWrite.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionWrite.java index 4960c4ad98..af1acbe57e 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionWrite.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/TransactionWrite.java @@ -7,16 +7,12 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.annotations.Beta; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; /** * Modification to write (and replace) a subtree at specified path with another subtree. - * - * @author Robert Varga */ -@Beta public final class TransactionWrite extends TransactionDataModification { public TransactionWrite(final YangInstanceIdentifier path, final NormalizedNode data) { super(path, data); diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/UnknownHistoryException.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/UnknownHistoryException.java index 196c60c0d8..b7b2228e0f 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/UnknownHistoryException.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/UnknownHistoryException.java @@ -7,17 +7,15 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.opendaylight.controller.cluster.access.concepts.RequestException; /** * A {@link RequestException} indicating that the backend has received a request referencing an unknown history. This * typically happens when the linear history ID is newer than the highest observed {@link CreateLocalHistoryRequest}. - * - * @author Robert Varga */ -@Beta public final class UnknownHistoryException extends RequestException { + @Serial private static final long serialVersionUID = 1L; public UnknownHistoryException(final Long lastSeenHistory) { @@ -25,7 +23,7 @@ public final class UnknownHistoryException extends RequestException { } private static String historyToString(final Long history) { - return history == null ? "null" : Long.toUnsignedString(history.longValue()); + return history == null ? "null" : Long.toUnsignedString(history); } @Override diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/AbstractRequestFailureProxy.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/AbstractRequestFailureProxy.java index e35936d53b..e715c94f01 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/AbstractRequestFailureProxy.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/AbstractRequestFailureProxy.java @@ -7,24 +7,23 @@ */ package org.opendaylight.controller.cluster.access.concepts; -import com.google.common.annotations.Beta; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; +import java.io.Serial; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.concepts.WritableIdentifier; /** * Abstract Externalizable proxy for use with {@link RequestFailure} subclasses. * - * @author Robert Varga - * * @param Target identifier type */ -@Beta public abstract class AbstractRequestFailureProxy> extends AbstractResponseProxy { + @Serial private static final long serialVersionUID = 1L; + private RequestException cause; protected AbstractRequestFailureProxy() { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/AbstractRequestProxy.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/AbstractRequestProxy.java index 183766f310..762c9728d5 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/AbstractRequestProxy.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/AbstractRequestProxy.java @@ -10,24 +10,23 @@ package org.opendaylight.controller.cluster.access.concepts; import akka.actor.ActorRef; import akka.serialization.JavaSerializer; import akka.serialization.Serialization; -import com.google.common.annotations.Beta; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; +import java.io.Serial; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.concepts.WritableIdentifier; /** * Abstract Externalizable proxy for use with {@link Request} subclasses. * - * @author Robert Varga - * * @param Target identifier type */ -@Beta public abstract class AbstractRequestProxy> extends AbstractMessageProxy { + @Serial private static final long serialVersionUID = 1L; + private ActorRef replyTo; protected AbstractRequestProxy() { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/AbstractSuccessProxy.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/AbstractSuccessProxy.java index ecf792e1d9..4e31019c77 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/AbstractSuccessProxy.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/AbstractSuccessProxy.java @@ -7,20 +7,18 @@ */ package org.opendaylight.controller.cluster.access.concepts; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.concepts.WritableIdentifier; /** * Abstract Externalizable proxy for use with {@link RequestSuccess} subclasses. * - * @author Robert Varga - * * @param Target identifier type */ -@Beta public abstract class AbstractSuccessProxy> extends AbstractResponseProxy { + @Serial private static final long serialVersionUID = 1L; protected AbstractSuccessProxy() { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/ClientIdentifier.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/ClientIdentifier.java index c317ac31b6..69e803ef42 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/ClientIdentifier.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/ClientIdentifier.java @@ -9,7 +9,6 @@ package org.opendaylight.controller.cluster.access.concepts; import static java.util.Objects.requireNonNull; -import com.google.common.annotations.Beta; import com.google.common.base.MoreObjects; import java.io.DataInput; import java.io.DataOutput; @@ -17,6 +16,7 @@ import java.io.Externalizable; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; +import java.io.Serial; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.cds.types.rev191024.ClientGeneration; import org.opendaylight.yangtools.concepts.WritableIdentifier; @@ -29,10 +29,11 @@ import org.opendaylight.yangtools.yang.common.Uint64; * * @author Robert Varga */ -@Beta public final class ClientIdentifier implements WritableIdentifier { private static final class Proxy implements Externalizable { + @Serial private static final long serialVersionUID = 1L; + private FrontendIdentifier frontendId; private long generation; @@ -65,6 +66,7 @@ public final class ClientIdentifier implements WritableIdentifier { } } + @Serial private static final long serialVersionUID = 1L; private final @NonNull FrontendIdentifier frontendId; @@ -110,21 +112,16 @@ public final class ClientIdentifier implements WritableIdentifier { @Override public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof ClientIdentifier)) { - return false; - } - - final ClientIdentifier other = (ClientIdentifier) obj; - return generation == other.generation && frontendId.equals(other.frontendId); + return this == obj || obj instanceof ClientIdentifier other && generation == other.generation + && frontendId.equals(other.frontendId); } @Override public String toString() { - return MoreObjects.toStringHelper(ClientIdentifier.class).add("frontend", frontendId) - .add("generation", Long.toUnsignedString(generation)).toString(); + return MoreObjects.toStringHelper(ClientIdentifier.class) + .add("frontend", frontendId) + .add("generation", Long.toUnsignedString(generation)) + .toString(); } private Object writeReplace() { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/FrontendIdentifier.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/FrontendIdentifier.java index 10abac6d58..00aa6cdd4b 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/FrontendIdentifier.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/FrontendIdentifier.java @@ -9,26 +9,25 @@ package org.opendaylight.controller.cluster.access.concepts; import static java.util.Objects.requireNonNull; -import com.google.common.annotations.Beta; import java.io.DataInput; import java.io.DataOutput; import java.io.Externalizable; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; +import java.io.Serial; import java.util.Objects; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.concepts.WritableIdentifier; /** * A cluster-wide unique identifier of a frontend type located at a cluster member. - * - * @author Robert Varga */ -@Beta public final class FrontendIdentifier implements WritableIdentifier { private static final class Proxy implements Externalizable { + @Serial private static final long serialVersionUID = 1L; + private MemberName memberName; private FrontendType clientType; @@ -61,7 +60,9 @@ public final class FrontendIdentifier implements WritableIdentifier { } } + @Serial private static final long serialVersionUID = 1L; + private final MemberName memberName; private final FrontendType clientType; @@ -104,11 +105,10 @@ public final class FrontendIdentifier implements WritableIdentifier { if (this == obj) { return true; } - if (!(obj instanceof FrontendIdentifier)) { + if (!(obj instanceof FrontendIdentifier other)) { return false; } - final FrontendIdentifier other = (FrontendIdentifier) obj; return memberName.equals(other.memberName) && clientType.equals(other.clientType); } diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/FrontendType.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/FrontendType.java index 2a2a5b2b30..755eda99bf 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/FrontendType.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/FrontendType.java @@ -11,7 +11,6 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Verify.verifyNotNull; import static java.util.Objects.requireNonNull; -import com.google.common.annotations.Beta; import com.google.common.base.MoreObjects; import com.google.common.base.Strings; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; @@ -21,6 +20,7 @@ import java.io.Externalizable; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; +import java.io.Serial; import java.nio.charset.StandardCharsets; import java.util.regex.Pattern; import org.eclipse.jdt.annotation.NonNull; @@ -31,12 +31,10 @@ import org.opendaylight.yangtools.concepts.WritableIdentifier; * An {@link Identifier} identifying a data store frontend type, which is able to access the data store backend. * Frontend implementations need to define this identifier so that multiple clients existing on a member node can be * discerned. - * - * @author Robert Varga */ -@Beta public final class FrontendType implements Comparable, WritableIdentifier { private static final class Proxy implements Externalizable { + @Serial private static final long serialVersionUID = 1L; private byte[] serialized; @@ -71,6 +69,7 @@ public final class FrontendType implements Comparable, WritableIde private static final String SIMPLE_STRING_REGEX = "^[a-zA-Z0-9-_.*+:=,!~';]+$"; private static final Pattern SIMPLE_STRING_PATTERN = Pattern.compile(SIMPLE_STRING_REGEX); + @Serial private static final long serialVersionUID = 1L; private final @NonNull String name; diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/MemberName.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/MemberName.java index 3cc2b0c639..2404924c64 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/MemberName.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/MemberName.java @@ -11,7 +11,6 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Verify.verifyNotNull; import static java.util.Objects.requireNonNull; -import com.google.common.annotations.Beta; import com.google.common.base.MoreObjects; import com.google.common.base.Strings; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; @@ -21,19 +20,19 @@ import java.io.Externalizable; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; +import java.io.Serial; import java.nio.charset.StandardCharsets; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.concepts.WritableIdentifier; /** * Type-safe encapsulation of a cluster member name. - * - * @author Robert Varga */ -@Beta public final class MemberName implements Comparable, WritableIdentifier { private static final class Proxy implements Externalizable { + @Serial private static final long serialVersionUID = 1L; + private byte[] serialized; // checkstyle flags the public modifier as redundant however it is explicitly needed for Java serialization to @@ -65,6 +64,7 @@ public final class MemberName implements Comparable, WritableIdentif } } + @Serial private static final long serialVersionUID = 1L; private final @NonNull String name; diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/Message.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/Message.java index 5456fbb19e..9b1c4c25b3 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/Message.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/Message.java @@ -10,10 +10,10 @@ package org.opendaylight.controller.cluster.access.concepts; import static com.google.common.base.Verify.verifyNotNull; import static java.util.Objects.requireNonNull; -import com.google.common.annotations.Beta; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.MoreObjects; import com.google.common.base.MoreObjects.ToStringHelper; +import java.io.Serial; import java.io.Serializable; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.access.ABIVersion; @@ -47,14 +47,12 @@ import org.opendaylight.yangtools.concepts.WritableIdentifier; * Note that this class specifies the {@link Immutable} contract, which means that all subclasses must follow this API * contract. * - * @author Robert Varga - * * @param Target identifier type * @param Message type */ -@Beta public abstract class Message> implements Immutable, Serializable { + @Serial private static final long serialVersionUID = 1L; private final @NonNull ABIVersion version; @@ -110,17 +108,12 @@ public abstract class Message verifyNotNull(cloneAsVersion(toVersion)); + case TEST_PAST_VERSION, TEST_FUTURE_VERSION -> throw new IllegalArgumentException("Unhandled ABI version " + toVersion); - } + default -> throw new IllegalArgumentException("Unhandled ABI version " + toVersion); + }; } /** diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/Request.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/Request.java index 093a3f1eb0..d39617cf77 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/Request.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/Request.java @@ -10,8 +10,8 @@ package org.opendaylight.controller.cluster.access.concepts; import static java.util.Objects.requireNonNull; import akka.actor.ActorRef; -import com.google.common.annotations.Beta; import com.google.common.base.MoreObjects.ToStringHelper; +import java.io.Serial; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.yangtools.concepts.WritableIdentifier; @@ -20,14 +20,13 @@ import org.opendaylight.yangtools.concepts.WritableIdentifier; * A request message concept. Upon receipt of this message, the recipient will respond with either * a {@link RequestSuccess} or a {@link RequestFailure} message. * - * @author Robert Varga - * * @param Target identifier type * @param Message type */ -@Beta public abstract class Request> extends Message { + @Serial private static final long serialVersionUID = 1L; + private final @NonNull ActorRef replyTo; protected Request(final @NonNull T target, final long sequence, final @NonNull ActorRef replyTo) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RequestException.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RequestException.java index 7267edea4f..41bfd13dd2 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RequestException.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RequestException.java @@ -9,16 +9,14 @@ package org.opendaylight.controller.cluster.access.concepts; import static java.util.Objects.requireNonNull; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.eclipse.jdt.annotation.NonNull; /** * A failure cause behind a {@link RequestFailure} to process a {@link Request}. - * - * @author Robert Varga */ -@Beta public abstract class RequestException extends Exception { + @Serial private static final long serialVersionUID = 1L; protected RequestException(final @NonNull String message) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RequestFailure.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RequestFailure.java index db5a15b0bc..c30269f63e 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RequestFailure.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RequestFailure.java @@ -9,8 +9,8 @@ package org.opendaylight.controller.cluster.access.concepts; import static java.util.Objects.requireNonNull; -import com.google.common.annotations.Beta; import com.google.common.base.MoreObjects.ToStringHelper; +import java.io.Serial; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.yangtools.concepts.WritableIdentifier; @@ -18,14 +18,12 @@ import org.opendaylight.yangtools.concepts.WritableIdentifier; /** * A failure response to a {@link Request}. Contains a {@link RequestException} detailing the cause for this failure. * - * @author Robert Varga - * * @param Target identifier type * @param Message class */ -@Beta public abstract class RequestFailure> extends Response { + @Serial private static final long serialVersionUID = 1L; private final @NonNull RequestException cause; diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RequestSuccess.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RequestSuccess.java index 9b60d21b0d..7542c4cb36 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RequestSuccess.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RequestSuccess.java @@ -7,7 +7,7 @@ */ package org.opendaylight.controller.cluster.access.concepts; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.yangtools.concepts.WritableIdentifier; @@ -15,13 +15,11 @@ import org.opendaylight.yangtools.concepts.WritableIdentifier; /** * A successful reply to a {@link Request}. * - * @author Robert Varga - * * @param Target identifier type */ -@Beta public abstract class RequestSuccess> extends Response { + @Serial private static final long serialVersionUID = 1L; protected RequestSuccess(final @NonNull C success, final @NonNull ABIVersion version) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/Response.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/Response.java index f733a9e919..7f74e39683 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/Response.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/Response.java @@ -7,7 +7,7 @@ */ package org.opendaylight.controller.cluster.access.concepts; -import com.google.common.annotations.Beta; +import java.io.Serial; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.yangtools.concepts.WritableIdentifier; @@ -17,13 +17,11 @@ import org.opendaylight.yangtools.concepts.WritableIdentifier; * {@link RequestFailure} and {@link RequestSuccess}, which provide appropriate specialization. It is visible purely for * the purpose of allowing to check if an object is either of those specializations with a single instanceof check. * - * @author Robert Varga - * * @param Target identifier type * @param Message type */ -@Beta public abstract class Response> extends Message { + @Serial private static final long serialVersionUID = 1L; Response(final @NonNull T target, final long sequence) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RetiredGenerationException.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RetiredGenerationException.java index 7730318f57..cc0c6d0e16 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RetiredGenerationException.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RetiredGenerationException.java @@ -7,16 +7,14 @@ */ package org.opendaylight.controller.cluster.access.concepts; -import com.google.common.annotations.Beta; +import java.io.Serial; /** * General error raised when the recipient of a {@link Request} determines that the request contains * a {@link ClientIdentifier} which corresponds to an outdated generation. - * - * @author Robert Varga */ -@Beta public final class RetiredGenerationException extends RequestException { + @Serial private static final long serialVersionUID = 1L; public RetiredGenerationException(final long originatingGeneration, final long newGeneration) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RuntimeRequestException.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RuntimeRequestException.java index 7fb0ef0701..713c413e52 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RuntimeRequestException.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/RuntimeRequestException.java @@ -10,16 +10,14 @@ package org.opendaylight.controller.cluster.access.concepts; import static com.google.common.base.Preconditions.checkArgument; import static java.util.Objects.requireNonNull; -import com.google.common.annotations.Beta; import com.google.common.base.Strings; +import java.io.Serial; /** * General error raised when the recipient of a {@link Request} fails to process a request. - * - * @author Robert Varga */ -@Beta public final class RuntimeRequestException extends RequestException { + @Serial private static final long serialVersionUID = 1L; public RuntimeRequestException(final String message, final Throwable cause) { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/SliceableMessage.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/SliceableMessage.java index cd3e2608d6..118e9262a7 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/SliceableMessage.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/SliceableMessage.java @@ -7,14 +7,12 @@ */ package org.opendaylight.controller.cluster.access.concepts; -import com.google.common.annotations.Beta; - /** * A tagging interface that specifies a message whose serialized size can be large and thus should be sliced into * smaller chunks when transporting over the wire. * * @author Thomas Pantelis */ -@Beta public interface SliceableMessage { + // Marker interface } diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/TransactionIdentifier.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/TransactionIdentifier.java index d2a92ea191..354cf8c9bf 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/TransactionIdentifier.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/TransactionIdentifier.java @@ -9,26 +9,25 @@ package org.opendaylight.controller.cluster.access.concepts; import static java.util.Objects.requireNonNull; -import com.google.common.annotations.Beta; import java.io.DataInput; import java.io.DataOutput; import java.io.Externalizable; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; +import java.io.Serial; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.concepts.WritableIdentifier; import org.opendaylight.yangtools.concepts.WritableObjects; /** * Globally-unique identifier of a transaction. - * - * @author Robert Varga */ -@Beta public final class TransactionIdentifier implements WritableIdentifier { private static final class Proxy implements Externalizable { + @Serial private static final long serialVersionUID = 1L; + private LocalHistoryIdentifier historyId; private long transactionId; @@ -61,7 +60,9 @@ public final class TransactionIdentifier implements WritableIdentifier { } } + @Serial private static final long serialVersionUID = 1L; + private final @NonNull LocalHistoryIdentifier historyId; private final long transactionId; private String shortString; @@ -97,15 +98,8 @@ public final class TransactionIdentifier implements WritableIdentifier { @Override public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof TransactionIdentifier)) { - return false; - } - - final TransactionIdentifier other = (TransactionIdentifier) obj; - return transactionId == other.transactionId && historyId.equals(other.historyId); + return this == obj || obj instanceof TransactionIdentifier other && transactionId == other.transactionId + && historyId.equals(other.historyId); } public String toShortString() { diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/UnsupportedRequestException.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/UnsupportedRequestException.java index 903ed59fbc..134a0a94f2 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/UnsupportedRequestException.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/UnsupportedRequestException.java @@ -7,16 +7,14 @@ */ package org.opendaylight.controller.cluster.access.concepts; -import com.google.common.annotations.Beta; +import java.io.Serial; /** * General error raised when the recipient of a {@link Request} determines that it does not know how to handle * the request. - * - * @author Robert Varga */ -@Beta public final class UnsupportedRequestException extends RequestException { + @Serial private static final long serialVersionUID = 1L; public UnsupportedRequestException(final Request request) { diff --git a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/AbstractClientActor.java b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/AbstractClientActor.java index a1c84c0e83..98edb1d341 100644 --- a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/AbstractClientActor.java +++ b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/AbstractClientActor.java @@ -10,17 +10,13 @@ package org.opendaylight.controller.cluster.access.client; import akka.actor.ActorRef; import akka.actor.PoisonPill; import akka.persistence.AbstractPersistentActor; -import com.google.common.annotations.Beta; import org.opendaylight.controller.cluster.access.concepts.FrontendIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Frontend actor which takes care of persisting generations and creates an appropriate ClientIdentifier. - * - * @author Robert Varga */ -@Beta public abstract class AbstractClientActor extends AbstractPersistentActor { private static final Logger LOG = LoggerFactory.getLogger(AbstractClientActor.class); private AbstractClientActorBehavior currentBehavior; diff --git a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ClientActorBehavior.java b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ClientActorBehavior.java index 14ca1ef38c..40f07f137a 100644 --- a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ClientActorBehavior.java +++ b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ClientActorBehavior.java @@ -9,7 +9,6 @@ package org.opendaylight.controller.cluster.access.client; import static java.util.Objects.requireNonNull; -import com.google.common.annotations.Beta; import com.google.common.base.Stopwatch; import com.google.common.base.Verify; import java.util.Collection; @@ -45,10 +44,7 @@ import scala.concurrent.duration.FiniteDuration; /** * A behavior, which handles messages sent to a {@link AbstractClientActor}. - * - * @author Robert Varga */ -@Beta public abstract class ClientActorBehavior extends RecoveredClientActorBehavior implements Identifiable { /** diff --git a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ClientActorContext.java b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ClientActorContext.java index 0864da10b0..abebf02197 100644 --- a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ClientActorContext.java +++ b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ClientActorContext.java @@ -13,7 +13,6 @@ import akka.actor.ActorRef; import akka.actor.ActorSystem; import akka.actor.Cancellable; import akka.actor.Scheduler; -import com.google.common.annotations.Beta; import com.google.common.base.Ticker; import java.util.concurrent.TimeUnit; import org.eclipse.jdt.annotation.NonNull; @@ -32,10 +31,7 @@ import scala.concurrent.duration.FiniteDuration; * Time-keeping in a client actor is based on monotonic time. The precision of this time can be expected to be the * same as {@link System#nanoTime()}, but it is not tied to that particular clock. Actor clock is exposed as * a {@link Ticker}, which can be obtained via {@link #ticker()}. This class is thread-safe. - * - * @author Robert Varga */ -@Beta public class ClientActorContext extends AbstractClientActorContext implements Identifiable { private final ExecutionContext executionContext; private final ClientIdentifier identifier; @@ -49,9 +45,9 @@ public class ClientActorContext extends AbstractClientActorContext implements Id final ClientIdentifier identifier, final ClientActorConfig config) { super(self, persistenceId); this.identifier = requireNonNull(identifier); - this.scheduler = requireNonNull(system).scheduler(); - this.executionContext = system.dispatcher(); - this.dispatchers = new Dispatchers(system.dispatchers()); + scheduler = requireNonNull(system).scheduler(); + executionContext = system.dispatcher(); + dispatchers = new Dispatchers(system.dispatchers()); this.config = requireNonNull(config); messageSlicer = MessageSlicer.builder().messageSliceSize(config.getMaximumMessageSliceSize()) diff --git a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ConnectingClientConnection.java b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ConnectingClientConnection.java index 1015990106..445321b474 100644 --- a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ConnectingClientConnection.java +++ b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ConnectingClientConnection.java @@ -7,11 +7,9 @@ */ package org.opendaylight.controller.cluster.access.client; -import com.google.common.annotations.Beta; import java.util.Optional; import org.opendaylight.controller.cluster.access.concepts.RequestException; -@Beta public final class ConnectingClientConnection extends AbstractClientConnection { /** * A wild estimate on how deep a queue should be. Without having knowledge of the remote actor we can only diff --git a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ConnectionEntry.java b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ConnectionEntry.java index b47ddee2a3..c5e47e76dd 100644 --- a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ConnectionEntry.java +++ b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/ConnectionEntry.java @@ -9,7 +9,6 @@ package org.opendaylight.controller.cluster.access.client; import static java.util.Objects.requireNonNull; -import com.google.common.annotations.Beta; import com.google.common.base.MoreObjects; import com.google.common.base.MoreObjects.ToStringHelper; import java.util.function.Consumer; @@ -20,10 +19,7 @@ import org.opendaylight.yangtools.concepts.Immutable; /** * Single entry in a {@link AbstractClientConnection}. Tracks the request, the associated callback and time when * the request was first enqueued. - * - * @author Robert Varga */ -@Beta public class ConnectionEntry implements Immutable { private final Consumer> callback; private final Request request; @@ -32,7 +28,7 @@ public class ConnectionEntry implements Immutable { ConnectionEntry(final Request request, final Consumer> callback, final long now) { this.request = requireNonNull(request); this.callback = requireNonNull(callback); - this.enqueuedTicks = now; + enqueuedTicks = now; } ConnectionEntry(final ConnectionEntry entry) { diff --git a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/InversibleLock.java b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/InversibleLock.java index 08bc05346b..7e68445396 100644 --- a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/InversibleLock.java +++ b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/InversibleLock.java @@ -7,25 +7,32 @@ */ package org.opendaylight.controller.cluster.access.client; -import com.google.common.annotations.Beta; -import com.google.common.base.Verify; +import static com.google.common.base.Verify.verify; +import static com.google.common.base.Verify.verifyNotNull; + +import java.lang.invoke.MethodHandles; +import java.lang.invoke.VarHandle; import java.util.concurrent.CountDownLatch; -import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; import java.util.concurrent.locks.StampedLock; /** * A lock implementation which allows users to perform optimistic reads and validate them in a fashion similar * to {@link StampedLock}. In case a read is contented with a write, the read side will throw * an {@link InversibleLockException}, which the caller can catch and use to wait for the write to resolve. - * - * @author Robert Varga */ -@Beta public final class InversibleLock { - private static final AtomicReferenceFieldUpdater LATCH_UPDATER = - AtomicReferenceFieldUpdater.newUpdater(InversibleLock.class, CountDownLatch.class, "latch"); + private static final VarHandle LATCH; + + static { + try { + LATCH = MethodHandles.lookup().findVarHandle(InversibleLock.class, "latch", CountDownLatch.class); + } catch (NoSuchFieldException | IllegalAccessException e) { + throw new ExceptionInInitializerError(e); + } + } private final StampedLock lock = new StampedLock(); + private volatile CountDownLatch latch; /** @@ -43,7 +50,7 @@ public final class InversibleLock { // Write-locked. Read the corresponding latch and if present report an exception, which will propagate // and force release of locks. - final CountDownLatch local = latch; + final var local = latch; if (local != null) { throw new InversibleLockException(local); } @@ -57,18 +64,14 @@ public final class InversibleLock { } public long writeLock() { - final CountDownLatch local = new CountDownLatch(1); - final boolean taken = LATCH_UPDATER.compareAndSet(this, null, local); - Verify.verify(taken); - + verify(LATCH.compareAndSet(this, null, new CountDownLatch(1))); return lock.writeLock(); } public void unlockWrite(final long stamp) { - final CountDownLatch local = LATCH_UPDATER.getAndSet(this, null); - Verify.verifyNotNull(local); + final CountDownLatch local = (CountDownLatch) LATCH.getAndSet(this, null); + verifyNotNull(local); lock.unlockWrite(stamp); local.countDown(); } - } diff --git a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/InversibleLockException.java b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/InversibleLockException.java index a2f2ffd7e8..82b6568459 100644 --- a/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/InversibleLockException.java +++ b/opendaylight/md-sal/cds-access-client/src/main/java/org/opendaylight/controller/cluster/access/client/InversibleLockException.java @@ -9,17 +9,15 @@ package org.opendaylight.controller.cluster.access.client; import static java.util.Objects.requireNonNull; -import com.google.common.annotations.Beta; +import java.io.Serial; import java.util.concurrent.CountDownLatch; /** * Exception thrown from {@link InversibleLock#optimisticRead()} and can be used to wait for the racing write * to complete using {@link #awaitResolution()}. - * - * @author Robert Varga */ -@Beta public final class InversibleLockException extends RuntimeException { + @Serial private static final long serialVersionUID = 1L; private final transient CountDownLatch latch; -- 2.36.6