Bump versions 9.0.4-SNAPSHOT
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / persisted / FrontendClientMetadata.java
index a3f41ed65ddfbfb21c4da06d804f1a0278db6c75..49573e247c6615e9ff79ef736573a969c749713e 100644 (file)
@@ -11,56 +11,43 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableRangeSet;
-import com.google.common.collect.ImmutableRangeSet.Builder;
-import com.google.common.collect.Range;
-import com.google.common.collect.RangeSet;
-import com.google.common.primitives.UnsignedLong;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Set;
+import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.controller.cluster.access.concepts.ClientIdentifier;
-import org.opendaylight.yangtools.concepts.Identifiable;
+import org.opendaylight.controller.cluster.datastore.utils.ImmutableUnsignedLongSet;
 import org.opendaylight.yangtools.concepts.WritableObject;
-import org.opendaylight.yangtools.concepts.WritableObjects;
 
-public final class FrontendClientMetadata implements Identifiable<ClientIdentifier>, WritableObject {
-    private final Collection<FrontendHistoryMetadata> currentHistories;
-    private final RangeSet<UnsignedLong> purgedHistories;
-    private final ClientIdentifier identifier;
+public final class FrontendClientMetadata implements WritableObject {
+    private final @NonNull ImmutableList<FrontendHistoryMetadata> currentHistories;
+    private final @NonNull ImmutableUnsignedLongSet purgedHistories;
+    private final @NonNull ClientIdentifier clientId;
 
-    public FrontendClientMetadata(final ClientIdentifier identifier, final RangeSet<UnsignedLong> purgedHistories,
+    public FrontendClientMetadata(final ClientIdentifier clientId, final ImmutableUnsignedLongSet purgedHistories,
             final Collection<FrontendHistoryMetadata> currentHistories) {
-        this.identifier = requireNonNull(identifier);
-        this.purgedHistories = ImmutableRangeSet.copyOf(purgedHistories);
+        this.clientId = requireNonNull(clientId);
+        this.purgedHistories = requireNonNull(purgedHistories);
         this.currentHistories = ImmutableList.copyOf(currentHistories);
     }
 
-    public Collection<FrontendHistoryMetadata> getCurrentHistories() {
-        return currentHistories;
+    public ClientIdentifier clientId() {
+        return clientId;
     }
 
-    public RangeSet<UnsignedLong> getPurgedHistories() {
-        return purgedHistories;
+    public ImmutableList<FrontendHistoryMetadata> getCurrentHistories() {
+        return currentHistories;
     }
 
-    @Override
-    public ClientIdentifier getIdentifier() {
-        return identifier;
+    public ImmutableUnsignedLongSet getPurgedHistories() {
+        return purgedHistories;
     }
 
     @Override
     public void writeTo(final DataOutput out) throws IOException {
-        identifier.writeTo(out);
-
-        final Set<Range<UnsignedLong>> ranges = purgedHistories.asRanges();
-        out.writeInt(ranges.size());
-        for (final Range<UnsignedLong> r : ranges) {
-            WritableObjects.writeLongs(out, r.lowerEndpoint().longValue(), r.upperEndpoint().longValue());
-        }
+        clientId.writeTo(out);
+        purgedHistories.writeTo(out);
 
         out.writeInt(currentHistories.size());
         for (final FrontendHistoryMetadata h : currentHistories) {
@@ -69,30 +56,21 @@ public final class FrontendClientMetadata implements Identifiable<ClientIdentifi
     }
 
     public static FrontendClientMetadata readFrom(final DataInput in) throws IOException {
-        final ClientIdentifier id = ClientIdentifier.readFrom(in);
-
-        final int purgedSize = in.readInt();
-        final Builder<UnsignedLong> b = ImmutableRangeSet.builder();
-        for (int i = 0; i < purgedSize; ++i) {
-            final byte header = WritableObjects.readLongHeader(in);
-            final UnsignedLong lower = UnsignedLong.fromLongBits(WritableObjects.readFirstLong(in, header));
-            final UnsignedLong upper = UnsignedLong.fromLongBits(WritableObjects.readSecondLong(in, header));
-
-            b.add(Range.closed(lower, upper));
-        }
+        final var clientId = ClientIdentifier.readFrom(in);
+        final var purgedHistories = ImmutableUnsignedLongSet.readFrom(in);
 
         final int currentSize = in.readInt();
-        final Collection<FrontendHistoryMetadata> currentHistories = new ArrayList<>(currentSize);
+        final var currentBuilder = ImmutableList.<FrontendHistoryMetadata>builderWithExpectedSize(currentSize);
         for (int i = 0; i < currentSize; ++i) {
-            currentHistories.add(FrontendHistoryMetadata.readFrom(in));
+            currentBuilder.add(FrontendHistoryMetadata.readFrom(in));
         }
 
-        return new FrontendClientMetadata(id, b.build(), currentHistories);
+        return new FrontendClientMetadata(clientId, purgedHistories, currentBuilder.build());
     }
 
     @Override
     public String toString() {
-        return MoreObjects.toStringHelper(FrontendClientMetadata.class).add("identifer", identifier)
-                .add("current", currentHistories).add("purged", purgedHistories).toString();
+        return MoreObjects.toStringHelper(FrontendClientMetadata.class)
+            .add("clientId", clientId).add("current", currentHistories).add("purged", purgedHistories).toString();
     }
 }