Reduce JSR305 proliferation
[controller.git] / opendaylight / md-sal / sal-remoterpc-connector / src / main / java / org / opendaylight / controller / remote / rpc / registry / gossip / BucketImpl.java
index 444faed6bd38a5882f28b2d55e5ef6f26c472a33..535d5c7cd68d58928c14e439eb6ca889f8aa1c22 100644 (file)
@@ -7,34 +7,26 @@
  */
 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;
     }
 
@@ -47,4 +39,9 @@ public class BucketImpl<T extends Copier<T>> implements Bucket<T>, Serializable
     public String toString() {
         return "BucketImpl{" + "version=" + version + ", data=" + data + '}';
     }
+
+    private Object readResolve() {
+        verifyNotNull(data);
+        return this;
+    }
 }