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