Updated extension registration keys
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / util / OF13MatchSerializer.java
index 738269235fc021748dc3df9adde9a9d44e8a1b63..d37c0a2b963b7da1c657955f1a34610caef37a2e 100644 (file)
@@ -12,12 +12,15 @@ import io.netty.buffer.ByteBuf;
 
 import java.util.List;
 
-import org.opendaylight.openflowjava.protocol.api.extensibility.EnhancedMessageTypeKey;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
-import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
+import org.opendaylight.openflowjava.protocol.api.extensibility.keys.MatchEntrySerializerKey;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
+import org.opendaylight.openflowjava.util.ByteBufUtils;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterMatchEntry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.StandardMatchType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ExperimenterClass;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.OxmMatchType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.match.grouping.Match;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.grouping.MatchEntries;
@@ -74,9 +77,15 @@ public class OF13MatchSerializer implements OFSerializer<Match>, SerializerRegis
             return;
         }
         for (MatchEntries entry : matchEntries) {
-            OFSerializer<MatchEntries> entrySerializer = registry.getSerializer(
-                    new EnhancedMessageTypeKey<>(EncodeConstants.OF13_VERSION_ID, entry.getOxmClass(),
-                            entry.getOxmMatchField()));
+            
+            MatchEntrySerializerKey<?, ?> key = new MatchEntrySerializerKey<>(
+                    EncodeConstants.OF13_VERSION_ID, entry.getOxmClass(), entry.getOxmMatchField());
+            if (entry.getOxmClass().equals(ExperimenterClass.class)) {
+                key.setExperimenterId(entry.getAugmentation(ExperimenterMatchEntry.class).getExperimenter());
+            } else {
+                key.setExperimenterId(null);
+            }
+            OFSerializer<MatchEntries> entrySerializer = registry.getSerializer(key);
             entrySerializer.serialize(entry, out);
         }
     }