info should be debug in CommitTransactionPayload
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / persisted / ShardManagerSnapshot.java
index 6bb6ea8b304fe53a307041f12cf3c69cb3e462c2..0c1969b216bf550ebd17cf6d163ea119f3bc701c 100644 (file)
@@ -8,14 +8,19 @@
 package org.opendaylight.controller.cluster.datastore.persisted;
 
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
 import java.io.Externalizable;
 import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import javax.annotation.Nonnull;
+import org.opendaylight.controller.cluster.datastore.config.PrefixShardConfiguration;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
 
 /**
  * Represents the persisted snapshot state for the ShardManager.
@@ -42,22 +47,35 @@ public class ShardManagerSnapshot implements Serializable {
         }
 
         @Override
-        public void writeExternal(ObjectOutput out) throws IOException {
+        public void writeExternal(final ObjectOutput out) throws IOException {
             out.writeInt(snapshot.shardList.size());
             for (String shard: snapshot.shardList) {
                 out.writeObject(shard);
             }
+
+            out.writeInt(snapshot.prefixShardConfiguration.size());
+            for (Map.Entry<?, ?> prefixShardConfigEntry : snapshot.prefixShardConfiguration.entrySet()) {
+                out.writeObject(prefixShardConfigEntry.getKey());
+                out.writeObject(prefixShardConfigEntry.getValue());
+            }
         }
 
         @Override
-        public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        public void readExternal(final ObjectInput in) throws IOException, ClassNotFoundException {
             int size = in.readInt();
-            List<String> shardList = new ArrayList<>(size);
+            List<String> localShardList = new ArrayList<>(size);
+            for (int i = 0; i < size; i++) {
+                localShardList.add((String) in.readObject());
+            }
+
+            size = in.readInt();
+            Map<DOMDataTreeIdentifier, PrefixShardConfiguration> localPrefixShardConfiguration = new HashMap<>(size);
             for (int i = 0; i < size; i++) {
-                shardList.add((String) in.readObject());
+                localPrefixShardConfiguration.put((DOMDataTreeIdentifier) in.readObject(),
+                        (PrefixShardConfiguration) in.readObject());
             }
 
-            snapshot = new ShardManagerSnapshot(shardList);
+            snapshot = new ShardManagerSnapshot(localShardList, localPrefixShardConfiguration);
         }
 
         private Object readResolve() {
@@ -66,16 +84,18 @@ public class ShardManagerSnapshot implements Serializable {
     }
 
     private final List<String> shardList;
+    private final Map<DOMDataTreeIdentifier, PrefixShardConfiguration> prefixShardConfiguration;
 
-    public ShardManagerSnapshot(@Nonnull final List<String> shardList) {
+    public ShardManagerSnapshot(@Nonnull final List<String> shardList,
+                                final Map<DOMDataTreeIdentifier, PrefixShardConfiguration> prefixShardConfiguration) {
         this.shardList = ImmutableList.copyOf(shardList);
+        this.prefixShardConfiguration = ImmutableMap.copyOf(prefixShardConfiguration);
     }
 
     public List<String> getShardList() {
         return this.shardList;
     }
 
-    @SuppressWarnings("static-method")
     private Object writeReplace() {
         return new Proxy(this);
     }