Fix CS warnings in cds-access-api and enable enforcement
[controller.git] / opendaylight / md-sal / cds-access-api / src / main / java / org / opendaylight / controller / cluster / access / concepts / AbstractMessageProxy.java
index 4b60aecefa7e01d146a9c3afb9387d5a564a66c8..8a5916813629a00539d5d23f3ff4ea356181bd80 100644 (file)
@@ -15,6 +15,7 @@ import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import javax.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 +28,36 @@ 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(@Nonnull final 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));
+        sequence = WritableObjects.readLong(in);
     }
 
     protected final Object readResolve() {
-        return Verify.verifyNotNull(createMessage(target));
+        return Verify.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
+    @Nonnull
+    protected abstract T readTarget(@Nonnull DataInput in) throws IOException;
+
+    @Nonnull
+    abstract C createMessage(@Nonnull T msgTarget, long msgSequence);
+}