*/
package org.opendaylight.controller.remote.rpc.registry.gossip;
-import java.io.Serializable;
+import static com.google.common.base.Verify.verifyNotNull;
+import static java.util.Objects.requireNonNull;
-public class BucketImpl<T extends Copier<T>> implements Bucket<T>, Serializable {
- private static final long serialVersionUID = 294779770032719196L;
+import java.io.Serializable;
- private Long version = System.currentTimeMillis();
+final class BucketImpl<T extends BucketData<T>> implements Bucket<T>, Serializable {
+ private static final long serialVersionUID = 1L;
- private T data;
+ private final long version;
- public BucketImpl() {
- }
-
- public BucketImpl(T data) {
- this.data = data;
- }
+ // Guaranteed to be non-null
+ private final T data;
- public BucketImpl(Bucket<T> other) {
- this.version = other.getVersion();
- this.data = other.getData();
- }
-
- public void setData(T data) {
- this.data = data;
- this.version = System.currentTimeMillis()+1;
+ BucketImpl(final long version, final T data) {
+ this.version = version;
+ this.data = requireNonNull(data);
}
@Override
- public Long getVersion() {
+ public long getVersion() {
return version;
}
@Override
public String toString() {
- return "BucketImpl{" +
- "version=" + version +
- ", data=" + data +
- '}';
+ return "BucketImpl{" + "version=" + version + ", data=" + data + '}';
+ }
+
+ private Object readResolve() {
+ verifyNotNull(data);
+ return this;
}
}