Bump upstream versions
[controller.git] / opendaylight / md-sal / cds-access-api / src / main / java / org / opendaylight / controller / cluster / access / concepts / AbstractMessageProxy.java
index 4b60aecefa7e01d146a9c3afb9387d5a564a66c8..0367527a5e67eb2ce796720786df1adeae733f1d 100644 (file)
@@ -7,14 +7,16 @@
  */
 package org.opendaylight.controller.cluster.access.concepts;
 
-import com.google.common.base.Verify;
+import static com.google.common.base.Verify.verifyNotNull;
+
 import java.io.DataInput;
 import java.io.Externalizable;
 import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
-import javax.annotation.Nonnull;
+import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.concepts.WritableIdentifier;
+import org.opendaylight.yangtools.concepts.WritableObjects;
 
 /**
  * Abstract Externalizable proxy for use with {@link Message} subclasses.
@@ -27,29 +29,34 @@ import org.opendaylight.yangtools.concepts.WritableIdentifier;
 abstract class AbstractMessageProxy<T extends WritableIdentifier, C extends Message<T, C>> implements Externalizable {
     private static final long serialVersionUID = 1L;
     private T target;
+    private long sequence;
 
     protected AbstractMessageProxy() {
         // For Externalizable
     }
 
-    AbstractMessageProxy(final @Nonnull C message) {
+    AbstractMessageProxy(final @NonNull C message) {
         this.target = message.getTarget();
+        this.sequence = message.getSequence();
     }
 
     @Override
     public void writeExternal(final ObjectOutput out) throws IOException {
         target.writeTo(out);
+        WritableObjects.writeLong(out, sequence);
     }
 
     @Override
     public void readExternal(final ObjectInput in) throws IOException, ClassNotFoundException {
-        target = Verify.verifyNotNull(readTarget(in));
+        target = verifyNotNull(readTarget(in));
+        sequence = WritableObjects.readLong(in);
     }
 
     protected final Object readResolve() {
-        return Verify.verifyNotNull(createMessage(target));
+        return verifyNotNull(createMessage(target, sequence));
     }
 
-    protected abstract @Nonnull T readTarget(@Nonnull DataInput in) throws IOException;
-    abstract @Nonnull C createMessage(@Nonnull T target);
-}
\ No newline at end of file
+    protected abstract @NonNull T readTarget(@NonNull DataInput in) throws IOException;
+
+    abstract @NonNull C createMessage(@NonNull T msgTarget, long msgSequence);
+}