*/
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 com.google.common.base.Preconditions;
+import com.google.common.primitives.UnsignedLong;
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 org.opendaylight.yangtools.concepts.Identifier;
+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;
+import org.opendaylight.yangtools.concepts.WritableObjects;
/**
* A cluster-wide unique identifier of a frontend instance. This identifier discerns between individual incarnations
* @author Robert Varga
*/
@Beta
-public final class ClientIdentifier implements Identifier, WritableObject {
+public final class ClientIdentifier implements WritableIdentifier {
private static final class Proxy implements Externalizable {
private static final long serialVersionUID = 1L;
private FrontendIdentifier frontendId;
private long generation;
+ // checkstyle flags the public modifier as redundant however it is explicitly needed for Java serialization to
+ // be able to create instances via reflection.
+ @SuppressWarnings("checkstyle:RedundantModifier")
public Proxy() {
// Needed for Externalizable
}
Proxy(final FrontendIdentifier frontendId, final long generation) {
- this.frontendId = Preconditions.checkNotNull(frontendId);
+ this.frontendId = requireNonNull(frontendId);
this.generation = generation;
}
}
private static final long serialVersionUID = 1L;
- private final FrontendIdentifier frontendId;
+
+ private final @NonNull FrontendIdentifier frontendId;
private final long generation;
ClientIdentifier(final FrontendIdentifier frontendId, final long generation) {
- this.frontendId = Preconditions.checkNotNull(frontendId);
+ this.frontendId = requireNonNull(frontendId);
this.generation = generation;
}
- public static ClientIdentifier create(final FrontendIdentifier frontendId,
+ public static @NonNull ClientIdentifier create(final FrontendIdentifier frontendId,
final long generation) {
return new ClientIdentifier(frontendId, generation);
}
- public static ClientIdentifier readFrom(final DataInput in) throws IOException {
+ public static @NonNull ClientIdentifier readFrom(final DataInput in) throws IOException {
final FrontendIdentifier frontendId = FrontendIdentifier.readFrom(in);
return new ClientIdentifier(frontendId, WritableObjects.readLong(in));
}
WritableObjects.writeLong(out, generation);
}
- public FrontendIdentifier getFrontendId() {
+ public @NonNull FrontendIdentifier getFrontendId() {
return frontendId;
}
return generation;
}
+ public @NonNull ClientGeneration getYangGeneration() {
+ return new ClientGeneration(UnsignedLong.fromLongBits(generation).bigIntegerValue());
+ }
+
@Override
public int hashCode() {
return frontendId.hashCode() * 31 + Long.hashCode(generation);
}
@Override
- public boolean equals(final Object o) {
- if (this == o) {
+ public boolean equals(final Object obj) {
+ if (this == obj) {
return true;
}
- if (!(o instanceof ClientIdentifier)) {
+ if (!(obj instanceof ClientIdentifier)) {
return false;
}
- final ClientIdentifier other = (ClientIdentifier) o;
+ final ClientIdentifier other = (ClientIdentifier) obj;
return generation == other.generation && frontendId.equals(other.frontendId);
}