Updated extension registration keys
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / deserialization / action / OF13SetFieldActionDeserializer.java
index 91e5572150952a62916a356cc18bb0340e1a40f3..e50baa4c25bfb4cd9a0db490ecd3cb9692b64aee 100644 (file)
@@ -8,15 +8,15 @@
 \r
 package org.opendaylight.openflowjava.protocol.impl.deserialization.action;\r
 \r
+import io.netty.buffer.ByteBuf;\r
+\r
 import java.util.ArrayList;\r
 import java.util.List;\r
 \r
-import io.netty.buffer.ByteBuf;\r
-\r
 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;\r
 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistryInjector;\r
-import org.opendaylight.openflowjava.protocol.api.extensibility.EnhancedMessageCodeKey;\r
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.keys.MatchEntryDeserializerKey;\r
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.OxmFieldsAction;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.OxmFieldsActionBuilder;\r
@@ -46,9 +46,14 @@ public class OF13SetFieldActionDeserializer extends AbstractActionDeserializer
         // get oxm_field & hasMask byte and extract the field value\r
         int oxmField = input.getUnsignedByte(input.readerIndex()\r
                 + EncodeConstants.SIZE_OF_SHORT_IN_BYTES) >>> 1;\r
-        OFDeserializer<MatchEntries> matchDeserializer = registry.getDeserializer(\r
-                new EnhancedMessageCodeKey(EncodeConstants.OF13_VERSION_ID, oxmClass,\r
-                        oxmField, MatchEntries.class));\r
+        MatchEntryDeserializerKey key = new MatchEntryDeserializerKey(EncodeConstants.OF13_VERSION_ID,\r
+                oxmClass, oxmField);\r
+        if (oxmClass == EncodeConstants.EXPERIMENTER_VALUE) {\r
+            long expId = input.getUnsignedInt(input.readerIndex() + EncodeConstants.SIZE_OF_SHORT_IN_BYTES\r
+                    + 2 * EncodeConstants.SIZE_OF_BYTE_IN_BYTES);\r
+            key.setExperimenterId(expId);\r
+        }\r
+        OFDeserializer<MatchEntries> matchDeserializer = registry.getDeserializer(key);\r
         List<MatchEntries> entry = new ArrayList<>();\r
         entry.add(matchDeserializer.deserialize(input));\r
         matchEntries.setMatchEntries(entry);\r