X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FCompositeModificationPayload.java;h=36c0447b6e90d35c8f54f8844cf762c3fc0e1897;hp=955e4bbf220cc458cd20638967a91c849dab6909;hb=19ebaaaa8f6c4286f84379067599e48d20e44c57;hpb=df13d272f2f74892f2decd54ece5d8286fb1c995 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/CompositeModificationPayload.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/CompositeModificationPayload.java index 955e4bbf22..36c0447b6e 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/CompositeModificationPayload.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/CompositeModificationPayload.java @@ -10,7 +10,8 @@ package org.opendaylight.controller.cluster.datastore; import com.google.common.base.Preconditions; import com.google.protobuf.GeneratedMessage; -import org.opendaylight.controller.cluster.example.protobuff.messages.KeyValueMessages; +import com.google.protobuf.InvalidProtocolBufferException; +import com.google.protobuf.UnknownFieldSet; import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload; import org.opendaylight.controller.cluster.raft.protobuff.messages.AppendEntriesMessages; import org.opendaylight.controller.protobuff.messages.persistent.PersistentMessages; @@ -28,13 +29,14 @@ public class CompositeModificationPayload extends Payload implements modification = null; } public CompositeModificationPayload(Object modification){ - this.modification = (PersistentMessages.CompositeModification) modification; + this.modification = (PersistentMessages.CompositeModification) Preconditions.checkNotNull(modification, "modification should not be null"); } @Override public Map encode() { Preconditions.checkState(modification!=null); Map map = new HashMap<>(); - map.put(org.opendaylight.controller.mdsal.CompositeModificationPayload.modification, this.modification); + map.put( + org.opendaylight.controller.protobuff.messages.shard.CompositeModificationPayload.modification, this.modification); return map; } @@ -42,8 +44,29 @@ public class CompositeModificationPayload extends Payload implements AppendEntriesMessages.AppendEntries.ReplicatedLogEntry.Payload payload) { PersistentMessages.CompositeModification modification = payload .getExtension( - org.opendaylight.controller.mdsal.CompositeModificationPayload.modification); - payload.getExtension(KeyValueMessages.value); + org.opendaylight.controller.protobuff.messages.shard.CompositeModificationPayload.modification); + + + + // The extension was put in the unknown field. + // This is because extensions need to be registered + // see org.opendaylight.controller.mdsal.CompositeModificationPayload.registerAllExtensions + // also see https://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/ExtensionRegistry + // If that is not done then on the other end the extension shows up as an unknown field + // Need to figure out a better way to do this + if(payload.getUnknownFields().hasField(2)){ + UnknownFieldSet.Field field = + payload.getUnknownFields().getField(2); + + try { + modification = + PersistentMessages.CompositeModification + .parseFrom(field.getLengthDelimitedList().get(0)); + } catch (InvalidProtocolBufferException e) { + + } + } + return new CompositeModificationPayload(modification); }