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=d0abb20718bd87dfc13f862bbe6f4672878abc35;hp=955e4bbf220cc458cd20638967a91c849dab6909;hb=971b179000ef1cc56699de35061cf6f97d4cf36f;hpb=8c6fac2a853a107c49983fb17934958eadaee416 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..d0abb20718 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,7 +29,7 @@ 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() { @@ -43,7 +44,28 @@ public class CompositeModificationPayload extends Payload implements PersistentMessages.CompositeModification modification = payload .getExtension( org.opendaylight.controller.mdsal.CompositeModificationPayload.modification); - payload.getExtension(KeyValueMessages.value); + + + + // 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); }