Updated experimenter model
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / serialization / action / OF13SetFieldActionSerializer.java
index 93539a83bf7da1406c978e473296472053248146..bd6b9d8e366bd96e4efdef10a913237903386943 100644 (file)
@@ -10,16 +10,18 @@ package org.opendaylight.openflowjava.protocol.impl.serialization.action;
 \r
 import io.netty.buffer.ByteBuf;\r
 \r
-import org.opendaylight.openflowjava.protocol.api.extensibility.EnhancedMessageTypeKey;\r
 import org.opendaylight.openflowjava.protocol.api.extensibility.HeaderSerializer;\r
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;\r
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;\r
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;\r
-import org.opendaylight.openflowjava.protocol.impl.util.ActionConstants;\r
-import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;\r
+import org.opendaylight.openflowjava.protocol.api.keys.MatchEntrySerializerKey;\r
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
+import org.opendaylight.openflowjava.protocol.impl.util.ActionConstants;\r
+import org.opendaylight.openflowjava.util.ByteBufUtils;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterIdMatchEntry;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.OxmFieldsAction;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ExperimenterClass;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.grouping.MatchEntries;\r
 \r
 /**\r
@@ -39,8 +41,15 @@ public class OF13SetFieldActionSerializer implements OFSerializer<Action>,
         outBuffer.writeShort(EncodeConstants.EMPTY_LENGTH);\r
         OxmFieldsAction oxmField = action.getAugmentation(OxmFieldsAction.class);\r
         MatchEntries entry = oxmField.getMatchEntries().get(0);\r
-        OFSerializer<MatchEntries> serializer = registry.getSerializer(new EnhancedMessageTypeKey<>(\r
-                EncodeConstants.OF13_VERSION_ID, entry.getOxmClass(), entry.getOxmMatchField()));\r
+        MatchEntrySerializerKey<?, ?> key = new MatchEntrySerializerKey<>(\r
+                EncodeConstants.OF13_VERSION_ID, entry.getOxmClass(), entry.getOxmMatchField());\r
+        if (entry.getOxmClass().equals(ExperimenterClass.class)) {\r
+            key.setExperimenterId(entry.getAugmentation(ExperimenterIdMatchEntry.class)\r
+                    .getExperimenter().getValue());\r
+        } else {\r
+            key.setExperimenterId(null);\r
+        }\r
+        OFSerializer<MatchEntries> serializer = registry.getSerializer(key);\r
         serializer.serialize(entry, outBuffer);\r
         int paddingRemainder = (outBuffer.writerIndex() - startIndex) % EncodeConstants.PADDING;\r
         if (paddingRemainder != 0) {\r