Updated extension registration keys 91/8991/4
authorMichal Polkorab <michal.polkorab@pantheon.sk>
Mon, 14 Jul 2014 14:45:04 +0000 (16:45 +0200)
committerMichal Polkorab <michal.polkorab@pantheon.sk>
Tue, 15 Jul 2014 12:40:09 +0000 (14:40 +0200)
 - keys now properly use experimenter ID to distinguish between experimenter messages
 - also updated initialization and registry helper classes

Change-Id: I6177c72397aa7b534cffdf0a9b729fbec2effa50
Signed-off-by: Michal Polkorab <michal.polkorab@pantheon.sk>
44 files changed:
openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/MessageCodeKey.java
openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/MessageTypeKey.java
openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/keys/ActionDeserializerKey.java [new file with mode: 0644]
openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/keys/ActionSerializerKey.java [new file with mode: 0644]
openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/keys/InstructionDeserializerKey.java [new file with mode: 0644]
openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/keys/InstructionSerializerKey.java [new file with mode: 0644]
openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/keys/MatchEntryDeserializerKey.java [new file with mode: 0644]
openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/keys/MatchEntrySerializerKey.java [new file with mode: 0644]
openflow-protocol-api/src/main/yang/openflow-augments.yang
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/ActionDeserializerInitializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/InstructionDeserializerInitializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/MessageDerializerInitializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/deserialization/action/OF13SetFieldActionDeserializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/ActionsInitializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/InstructionsInitializer.java [moved from openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/InstructionsInitializer.java with 84% similarity]
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/MatchEntriesInitializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/SerializerRegistryImpl.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/action/OF13SetFieldActionSerializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/FlowModInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/GroupModInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/MultipartRequestInputFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10FlowModInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/OF10PacketOutInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/factories/PacketOutInputMessageFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/serialization/instruction/AbstractActionInstructionSerializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/AbstractTypeKeyMaker.java [moved from openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/AbstractEnhancedTypeKeyMaker.java with 79% similarity]
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/ActionDeserializerRegistryHelper.java [new file with mode: 0644]
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/ActionSerializerRegistryHelper.java [new file with mode: 0644]
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/CodeKeyMakerFactory.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/EnhancedTypeKeyMakerFactory.java [deleted file]
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/InstructionDeserializerRegistryHelper.java [new file with mode: 0644]
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/InstructionSerializerRegistryHelper.java [new file with mode: 0644]
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/ListSerializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/MatchEntryDeserializerRegistryHelper.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/MatchEntrySerializerRegistryHelper.java [new file with mode: 0644]
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/OF13MatchSerializer.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/SimpleDeserializerRegistryHelper.java
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/TypeKeyMaker.java [moved from openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/EnhancedTypeKeyMaker.java with 80% similarity]
openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/TypeKeyMakerFactory.java [new file with mode: 0644]
openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/deserialization/factories/MultipartReplyMessageFactoryTest.java
openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/util/MatchDeserializerTest.java
openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/util/OF10ActionsSerializerTest.java
openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/util/OF13ActionsSerializerTest.java
openflow-protocol-impl/src/test/java/org/opendaylight/openflowjava/protocol/impl/util/OF13InstructionsSerializerTest.java

index 5ebcde21c29aa40527112e81493988f54b7b691a..b850eae99fc9560d76f913f9aa28d6ac0f568ac4 100644 (file)
@@ -19,7 +19,7 @@ public class MessageCodeKey {
     /**\r
      * Constructor\r
      * @param version wire protocol version\r
-     * @param value used as distinguisher\r
+     * @param value used as distinguisher (read from binary data / buffer)\r
      * @param clazz class of object that is going to be deserialized\r
      */\r
     public MessageCodeKey(short version, int value, Class<?> clazz) {\r
@@ -60,6 +60,6 @@ public class MessageCodeKey {
 \r
     @Override\r
     public String toString() {\r
-        return "msgVersion: " + msgVersion + " class: " + clazz.getName() + " msgType: " + msgType;\r
+        return "msgVersion: " + msgVersion + " objectClass: " + clazz.getName() + " msgType: " + msgType;\r
     }\r
-}\r
+}
\ No newline at end of file
index 7885b7e17dadf5fcd16409f67314e4d0104b34fc..0ece4c61a194e81b69350bfcf24b1a1a01c57ff5 100644 (file)
@@ -17,22 +17,21 @@ package org.opendaylight.openflowjava.protocol.api.extensibility;
  */
 public class MessageTypeKey<E> {
 
-    private final Class<E> msgType;
+    private final Class<? extends E> msgType;
     private final short msgVersion;
     
     /**
      * @param msgVersion protocol version
-     * @param msgType type of message
+     * @param msgType type of message - class of serialized object
      */
-    public MessageTypeKey(short msgVersion, Class<E> msgType) {
-        super();
+    public MessageTypeKey(short msgVersion, Class<? extends E> msgType) {
         this.msgType = msgType;
         this.msgVersion = msgVersion;
     }
     
     @Override
     public String toString() {
-        return "msgVersion: " + msgVersion + " msgType: " + msgType.getName();
+        return "msgVersion: " + msgVersion + " objectType: " + msgType.getName();
     }
 
     @Override
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/keys/ActionDeserializerKey.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/keys/ActionDeserializerKey.java
new file mode 100644 (file)
index 0000000..f345c3b
--- /dev/null
@@ -0,0 +1,53 @@
+/*\r
+ * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+\r
+package org.opendaylight.openflowjava.protocol.api.extensibility.keys;\r
+\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.MessageCodeKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action;\r
+\r
+/**\r
+ * @author michal.polkorab\r
+ *\r
+ */\r
+public class ActionDeserializerKey extends MessageCodeKey {\r
+\r
+    private Long experimenterId;\r
+    /**\r
+     * @param version protocol wire version\r
+     * @param type action type\r
+     * @param experimenterId experimenter / vendor ID\r
+     */\r
+    public ActionDeserializerKey(short version,\r
+            int type, Long experimenterId) {\r
+        super(version, type, Action.class);\r
+        this.experimenterId = experimenterId;\r
+    }\r
+\r
+    @Override\r
+    public boolean equals(Object obj) {\r
+        if (this == obj)\r
+            return true;\r
+        if (!super.equals(obj))\r
+            return false;\r
+        if (getClass() != obj.getClass())\r
+            return false;\r
+        ActionDeserializerKey other = (ActionDeserializerKey) obj;\r
+        if (experimenterId == null) {\r
+            if (other.experimenterId != null)\r
+                return false;\r
+        } else if (!experimenterId.equals(other.experimenterId))\r
+            return false;\r
+        return true;\r
+    }\r
+\r
+    @Override\r
+    public String toString() {\r
+        return super.toString() + " experimenterID: " + experimenterId;\r
+    }\r
+}
\ No newline at end of file
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/keys/ActionSerializerKey.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/keys/ActionSerializerKey.java
new file mode 100644 (file)
index 0000000..3956108
--- /dev/null
@@ -0,0 +1,63 @@
+/*\r
+ * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+\r
+package org.opendaylight.openflowjava.protocol.api.extensibility.keys;\r
+\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey;\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.common.types.rev130731.ActionBase;\r
+\r
+/**\r
+ * @author michal.polkorab\r
+ * @param <TYPE> action type\r
+ */\r
+public class ActionSerializerKey<TYPE extends ActionBase> extends MessageTypeKey<Action> {\r
+\r
+    private Class<TYPE> actionType;\r
+    private Long experimenterId;\r
+\r
+    /**\r
+     * @param msgVersion protocol wire version\r
+     * @param actionType type of action\r
+     * @param experimenterId experimenter / vendor ID\r
+     */\r
+    public ActionSerializerKey(short msgVersion, Class<TYPE> actionType,\r
+            Long experimenterId) {\r
+        super(msgVersion, Action.class);\r
+        this.actionType = actionType;\r
+        this.experimenterId = experimenterId;\r
+    }\r
+\r
+    @Override\r
+    public boolean equals(Object obj) {\r
+        if (this == obj)\r
+            return true;\r
+        if (!super.equals(obj))\r
+            return false;\r
+        if (getClass() != obj.getClass())\r
+            return false;\r
+        @SuppressWarnings("rawtypes")\r
+        ActionSerializerKey other = (ActionSerializerKey) obj;\r
+        if (actionType == null) {\r
+            if (other.actionType != null)\r
+                return false;\r
+        } else if (!actionType.equals(other.actionType))\r
+            return false;\r
+        if (experimenterId == null) {\r
+            if (other.experimenterId != null)\r
+                return false;\r
+        } else if (!experimenterId.equals(other.experimenterId))\r
+            return false;\r
+        return true;\r
+    }\r
+\r
+    @Override\r
+    public String toString() {\r
+        return super.toString() + " action type: " + actionType.getName() + " experimenterID: " + experimenterId;\r
+    }\r
+}
\ No newline at end of file
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/keys/InstructionDeserializerKey.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/keys/InstructionDeserializerKey.java
new file mode 100644 (file)
index 0000000..ec4cc0b
--- /dev/null
@@ -0,0 +1,53 @@
+/*\r
+ * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+\r
+package org.opendaylight.openflowjava.protocol.api.extensibility.keys;\r
+\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.MessageCodeKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instructions.grouping.Instruction;\r
+\r
+/**\r
+ * @author michal.polkorab\r
+ *\r
+ */\r
+public class InstructionDeserializerKey extends MessageCodeKey {\r
+\r
+    private Long experimenterId;\r
+    /**\r
+     * @param version protocol wire version\r
+     * @param type instruction type\r
+     * @param experimenterId \r
+     */\r
+    public InstructionDeserializerKey(short version, int type,\r
+            Long experimenterId) {\r
+        super(version, type, Instruction.class);\r
+        this.experimenterId = experimenterId;\r
+    }\r
+\r
+    @Override\r
+    public boolean equals(Object obj) {\r
+        if (this == obj)\r
+            return true;\r
+        if (!super.equals(obj))\r
+            return false;\r
+        if (getClass() != obj.getClass())\r
+            return false;\r
+        InstructionDeserializerKey other = (InstructionDeserializerKey) obj;\r
+        if (experimenterId == null) {\r
+            if (other.experimenterId != null)\r
+                return false;\r
+        } else if (!experimenterId.equals(other.experimenterId))\r
+            return false;\r
+        return true;\r
+    }\r
+\r
+    @Override\r
+    public String toString() {\r
+        return super.toString() + " experimenterID: " + experimenterId;\r
+    }\r
+}
\ No newline at end of file
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/keys/InstructionSerializerKey.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/keys/InstructionSerializerKey.java
new file mode 100644 (file)
index 0000000..dee43ee
--- /dev/null
@@ -0,0 +1,66 @@
+/*\r
+ * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+\r
+package org.opendaylight.openflowjava.protocol.api.extensibility.keys;\r
+\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instructions.grouping.Instruction;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.InstructionBase;\r
+\r
+/**\r
+ * @author michal.polkorab\r
+ * @param <TYPE> action type\r
+ */\r
+public class InstructionSerializerKey<TYPE extends InstructionBase>\r
+        extends MessageTypeKey<Instruction>{\r
+\r
+    private Class<TYPE> instructionType;\r
+    private Long experimenterId;\r
+\r
+    /**\r
+     * @param msgVersion protocol wire version\r
+     * @param objectType class of serialized object (Instruction.class)\r
+     * @param instructionType type of instruction\r
+     * @param experimenterId experimenter / vendor ID\r
+     */\r
+    public InstructionSerializerKey(short msgVersion, Class<TYPE> instructionType,\r
+            Long experimenterId) {\r
+        super(msgVersion, Instruction.class);\r
+        this.instructionType = instructionType;\r
+        this.experimenterId = experimenterId;\r
+    }\r
+\r
+    @Override\r
+    public boolean equals(Object obj) {\r
+        if (this == obj)\r
+            return true;\r
+        if (!super.equals(obj))\r
+            return false;\r
+        if (getClass() != obj.getClass())\r
+            return false;\r
+        @SuppressWarnings("rawtypes")\r
+        InstructionSerializerKey other = (InstructionSerializerKey) obj;\r
+        if (instructionType == null) {\r
+            if (other.instructionType != null)\r
+                return false;\r
+        } else if (!instructionType.equals(other.instructionType))\r
+            return false;\r
+        if (experimenterId == null) {\r
+            if (other.experimenterId != null)\r
+                return false;\r
+        } else if (!experimenterId.equals(other.experimenterId))\r
+            return false;\r
+        return true;\r
+    }\r
+\r
+    @Override\r
+    public String toString() {\r
+        return super.toString() + " instructionType type: " + instructionType.getName()\r
+                + " vendorID: " + experimenterId;\r
+    }\r
+}
\ No newline at end of file
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/keys/MatchEntryDeserializerKey.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/keys/MatchEntryDeserializerKey.java
new file mode 100644 (file)
index 0000000..6403a4d
--- /dev/null
@@ -0,0 +1,64 @@
+/*\r
+ * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+\r
+package org.opendaylight.openflowjava.protocol.api.extensibility.keys;\r
+\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.MessageCodeKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.grouping.MatchEntries;\r
+\r
+/**\r
+ * @author michal.polkorab\r
+ *\r
+ */\r
+public class MatchEntryDeserializerKey extends MessageCodeKey {\r
+\r
+    private int oxmField;\r
+    private Long experimenterId;\r
+\r
+    /**\r
+     * @param version protocol wire version\r
+     * @param oxmClass oxm_class (see specification)\r
+     * @param oxmField oxm_field (see specification)\r
+     */\r
+    public MatchEntryDeserializerKey(short version,\r
+            int oxmClass, int oxmField) {\r
+        super(version, oxmClass, MatchEntries.class);\r
+        this.oxmField = oxmField;\r
+    }\r
+\r
+    /**\r
+     * @param experimenterId experimenter / vendor ID\r
+     */\r
+    public void setExperimenterId(Long experimenterId) {\r
+        this.experimenterId = experimenterId;\r
+    }\r
+\r
+    @Override\r
+    public boolean equals(Object obj) {\r
+        if (this == obj)\r
+            return true;\r
+        if (!super.equals(obj))\r
+            return false;\r
+        if (getClass() != obj.getClass())\r
+            return false;\r
+        MatchEntryDeserializerKey other = (MatchEntryDeserializerKey) obj;\r
+        if (experimenterId == null) {\r
+            if (other.experimenterId != null)\r
+                return false;\r
+        } else if (!experimenterId.equals(other.experimenterId))\r
+            return false;\r
+        if (oxmField != other.oxmField)\r
+            return false;\r
+        return true;\r
+    }\r
+\r
+    @Override\r
+    public String toString() {\r
+        return super.toString() + " oxm_field: " + oxmField + " experimenterID: " + experimenterId;\r
+    }\r
+}
\ No newline at end of file
diff --git a/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/keys/MatchEntrySerializerKey.java b/openflow-protocol-api/src/main/java/org/opendaylight/openflowjava/protocol/api/extensibility/keys/MatchEntrySerializerKey.java
new file mode 100644 (file)
index 0000000..e71ddb4
--- /dev/null
@@ -0,0 +1,81 @@
+/*\r
+ * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+\r
+package org.opendaylight.openflowjava.protocol.api.extensibility.keys;\r
+\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Clazz;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MatchField;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.grouping.MatchEntries;\r
+\r
+/**\r
+ * @author michal.polkorab\r
+ * @param <OXM_CLASS> oxm_class (see specification)\r
+ * @param <OXM_FIELD> oxm_field (see specification)\r
+ */\r
+public class MatchEntrySerializerKey<OXM_CLASS extends Clazz,\r
+        OXM_FIELD extends MatchField> extends MessageTypeKey<MatchEntries>{\r
+\r
+    private Class<OXM_CLASS> oxmClass;\r
+    private Class<OXM_FIELD> oxmField;\r
+    private Long experimenterId;\r
+\r
+    /**\r
+     * @param msgVersion protocol wire version\r
+     * @param objectType class of serialized object\r
+     * @param oxmClass oxm_class (see specification)\r
+     * @param oxmField oxm_field (see specification)\r
+     */\r
+    public MatchEntrySerializerKey(short msgVersion, Class<OXM_CLASS> oxmClass,\r
+            Class<OXM_FIELD> oxmField) {\r
+        super(msgVersion, MatchEntries.class);\r
+        this.oxmClass = oxmClass;\r
+        this.oxmField = oxmField;\r
+    }\r
+\r
+    /**\r
+     * @param experimenterId experimenter / vendor ID\r
+     */\r
+    public void setExperimenterId(Long experimenterId) {\r
+        this.experimenterId = experimenterId;\r
+    }\r
+\r
+    @Override\r
+    public boolean equals(Object obj) {\r
+        if (this == obj)\r
+            return true;\r
+        if (!super.equals(obj))\r
+            return false;\r
+        if (getClass() != obj.getClass())\r
+            return false;\r
+        @SuppressWarnings("rawtypes")\r
+        MatchEntrySerializerKey other = (MatchEntrySerializerKey) obj;\r
+        if (experimenterId == null) {\r
+            if (other.experimenterId != null)\r
+                return false;\r
+        } else if (!experimenterId.equals(other.experimenterId))\r
+            return false;\r
+        if (oxmClass == null) {\r
+            if (other.oxmClass != null)\r
+                return false;\r
+        } else if (!oxmClass.equals(other.oxmClass))\r
+            return false;\r
+        if (oxmField == null) {\r
+            if (other.oxmField != null)\r
+                return false;\r
+        } else if (!oxmField.equals(other.oxmField))\r
+            return false;\r
+        return true;\r
+    }\r
+\r
+    @Override\r
+    public String toString() {\r
+        return super.toString() + " oxm_class: " + oxmClass.getName() + " oxm_field: "\r
+                + oxmField.getName() + " experimenterID: " + experimenterId;\r
+    }\r
+}
\ No newline at end of file
index 2ac2d248bdbac6a0eb90616965c837b3202569f1..44986927df0393ebb05dbcff7d6ee2aa841af887 100644 (file)
              type oft:ipv6-exthdr-flags;\r
          }\r
      }\r
+     augment "/oxm:oxm-container/oxm:match-entries" {\r
+         ext:augment-identifier "experimenter-match-entry";\r
+         leaf experimenter {\r
+             type uint32;\r
+         }\r
+     }\r
      augment "/oxm:oxm-container/oxm:match-entries" {\r
          ext:augment-identifier "tcp-flag-match-entry";\r
          leaf tcp-flag {\r
index 7c1d110b00c86fa74c148c03cd7c0fb698067747..e641ee93518fe82124f85553518d6d5cbc8b8dce 100644 (file)
@@ -9,6 +9,7 @@
 package org.opendaylight.openflowjava.protocol.impl.deserialization;\r
 \r
 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;\r
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
 import org.opendaylight.openflowjava.protocol.impl.deserialization.action.OF10EnqueueActionDeserializer;\r
 import org.opendaylight.openflowjava.protocol.impl.deserialization.action.OF10OutputActionDeserializer;\r
 import org.opendaylight.openflowjava.protocol.impl.deserialization.action.OF10SetDlDstActionDeserializer;\r
@@ -37,9 +38,7 @@ import org.opendaylight.openflowjava.protocol.impl.deserialization.action.OF13Se
 import org.opendaylight.openflowjava.protocol.impl.deserialization.action.OF13SetMplsTtlActionDeserializer;\r
 import org.opendaylight.openflowjava.protocol.impl.deserialization.action.OF13SetNwTtlActionDeserializer;\r
 import org.opendaylight.openflowjava.protocol.impl.deserialization.action.OF13SetQueueActionDeserializer;\r
-import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
-import org.opendaylight.openflowjava.protocol.impl.util.SimpleDeserializerRegistryHelper;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action;\r
+import org.opendaylight.openflowjava.protocol.impl.util.ActionDeserializerRegistryHelper;\r
 \r
 /**\r
  * @author michal.polkorab\r
@@ -53,37 +52,37 @@ public class ActionDeserializerInitializer {
      */\r
     public static void registerDeserializers(DeserializerRegistry registry) {\r
         // register OF v1.0 action deserializers\r
-        SimpleDeserializerRegistryHelper helper =\r
-                new SimpleDeserializerRegistryHelper(EncodeConstants.OF10_VERSION_ID, registry);\r
-        helper.registerDeserializer(0, Action.class, new OF10OutputActionDeserializer());\r
-        helper.registerDeserializer(1, Action.class, new OF10SetVlanVidActionDeserializer());\r
-        helper.registerDeserializer(2, Action.class, new OF10SetVlanPcpActionDeserializer());\r
-        helper.registerDeserializer(3, Action.class, new OF10StripVlanActionDeserializer());\r
-        helper.registerDeserializer(4, Action.class, new OF10SetDlSrcActionDeserializer());\r
-        helper.registerDeserializer(5, Action.class, new OF10SetDlDstActionDeserializer());\r
-        helper.registerDeserializer(6, Action.class, new OF10SetNwSrcActionDeserializer());\r
-        helper.registerDeserializer(7, Action.class, new OF10SetNwDstActionDeserializer());\r
-        helper.registerDeserializer(8, Action.class, new OF10SetNwTosActionDeserializer());\r
-        helper.registerDeserializer(9, Action.class, new OF10SetTpSrcActionDeserializer());\r
-        helper.registerDeserializer(10, Action.class, new OF10SetTpDstActionDeserializer());\r
-        helper.registerDeserializer(11, Action.class, new OF10EnqueueActionDeserializer());\r
+        ActionDeserializerRegistryHelper helper = \r
+                new ActionDeserializerRegistryHelper(EncodeConstants.OF10_VERSION_ID, registry);\r
+        helper.registerDeserializer(0, new OF10OutputActionDeserializer());\r
+        helper.registerDeserializer(1, new OF10SetVlanVidActionDeserializer());\r
+        helper.registerDeserializer(2, new OF10SetVlanPcpActionDeserializer());\r
+        helper.registerDeserializer(3, new OF10StripVlanActionDeserializer());\r
+        helper.registerDeserializer(4, new OF10SetDlSrcActionDeserializer());\r
+        helper.registerDeserializer(5, new OF10SetDlDstActionDeserializer());\r
+        helper.registerDeserializer(6, new OF10SetNwSrcActionDeserializer());\r
+        helper.registerDeserializer(7, new OF10SetNwDstActionDeserializer());\r
+        helper.registerDeserializer(8, new OF10SetNwTosActionDeserializer());\r
+        helper.registerDeserializer(9, new OF10SetTpSrcActionDeserializer());\r
+        helper.registerDeserializer(10, new OF10SetTpDstActionDeserializer());\r
+        helper.registerDeserializer(11, new OF10EnqueueActionDeserializer());\r
         // register OF v1.3 action deserializers\r
-        helper = new SimpleDeserializerRegistryHelper(EncodeConstants.OF13_VERSION_ID, registry);\r
-        helper.registerDeserializer(0, Action.class, new OF13OutputActionDeserializer());\r
-        helper.registerDeserializer(11, Action.class, new OF13CopyTtlOutActionDeserializer());\r
-        helper.registerDeserializer(12, Action.class, new OF13CopyTtlInActionDeserializer());\r
-        helper.registerDeserializer(15, Action.class, new OF13SetMplsTtlActionDeserializer());\r
-        helper.registerDeserializer(16, Action.class, new OF13DecMplsTtlActionDeserializer());\r
-        helper.registerDeserializer(17, Action.class, new OF13PushVlanActionDeserializer());\r
-        helper.registerDeserializer(18, Action.class, new OF13PopVlanActionDeserializer());\r
-        helper.registerDeserializer(19, Action.class, new OF13PushMplsActionDeserializer());\r
-        helper.registerDeserializer(20, Action.class, new OF13PopMplsActionDeserializer());\r
-        helper.registerDeserializer(21, Action.class, new OF13SetQueueActionDeserializer());\r
-        helper.registerDeserializer(22, Action.class, new OF13GroupActionDeserializer());\r
-        helper.registerDeserializer(23, Action.class, new OF13SetNwTtlActionDeserializer());\r
-        helper.registerDeserializer(24, Action.class, new OF13DecNwTtlActionDeserializer());\r
-        helper.registerDeserializer(25, Action.class, new OF13SetFieldActionDeserializer());\r
-        helper.registerDeserializer(26, Action.class, new OF13PushPbbActionDeserializer());\r
-        helper.registerDeserializer(27, Action.class, new OF13PopPbbActionDeserializer());\r
+        helper = new ActionDeserializerRegistryHelper(EncodeConstants.OF13_VERSION_ID, registry);\r
+        helper.registerDeserializer(0, new OF13OutputActionDeserializer());\r
+        helper.registerDeserializer(11, new OF13CopyTtlOutActionDeserializer());\r
+        helper.registerDeserializer(12, new OF13CopyTtlInActionDeserializer());\r
+        helper.registerDeserializer(15, new OF13SetMplsTtlActionDeserializer());\r
+        helper.registerDeserializer(16, new OF13DecMplsTtlActionDeserializer());\r
+        helper.registerDeserializer(17, new OF13PushVlanActionDeserializer());\r
+        helper.registerDeserializer(18, new OF13PopVlanActionDeserializer());\r
+        helper.registerDeserializer(19, new OF13PushMplsActionDeserializer());\r
+        helper.registerDeserializer(20, new OF13PopMplsActionDeserializer());\r
+        helper.registerDeserializer(21, new OF13SetQueueActionDeserializer());\r
+        helper.registerDeserializer(22, new OF13GroupActionDeserializer());\r
+        helper.registerDeserializer(23, new OF13SetNwTtlActionDeserializer());\r
+        helper.registerDeserializer(24, new OF13DecNwTtlActionDeserializer());\r
+        helper.registerDeserializer(25, new OF13SetFieldActionDeserializer());\r
+        helper.registerDeserializer(26, new OF13PushPbbActionDeserializer());\r
+        helper.registerDeserializer(27, new OF13PopPbbActionDeserializer());\r
     }\r
-}\r
+}
\ No newline at end of file
index 9a83ec49bc987044cb267f4384c5caeb18fafd7f..a09f51479435648aeb5e69d569ccc75f36693d7b 100644 (file)
@@ -9,15 +9,14 @@
 package org.opendaylight.openflowjava.protocol.impl.deserialization;\r
 \r
 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;\r
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
 import org.opendaylight.openflowjava.protocol.impl.deserialization.instruction.ApplyActionsInstructionDeserializer;\r
 import org.opendaylight.openflowjava.protocol.impl.deserialization.instruction.ClearActionsInstructionDeserializer;\r
 import org.opendaylight.openflowjava.protocol.impl.deserialization.instruction.GoToTableInstructionDeserializer;\r
 import org.opendaylight.openflowjava.protocol.impl.deserialization.instruction.MeterInstructionDeserializer;\r
 import org.opendaylight.openflowjava.protocol.impl.deserialization.instruction.WriteActionsInstructionDeserializer;\r
 import org.opendaylight.openflowjava.protocol.impl.deserialization.instruction.WriteMetadataInstructionDeserializer;\r
-import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
-import org.opendaylight.openflowjava.protocol.impl.util.SimpleDeserializerRegistryHelper;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instructions.grouping.Instruction;\r
+import org.opendaylight.openflowjava.protocol.impl.util.InstructionDeserializerRegistryHelper;\r
 \r
 /**\r
  * @author michal.polkorab\r
@@ -31,13 +30,13 @@ public class InstructionDeserializerInitializer {
      */\r
     public static void registerDeserializers(DeserializerRegistry registry) {\r
         // register OF v1.3 instruction deserializers\r
-        SimpleDeserializerRegistryHelper helper =\r
-                new SimpleDeserializerRegistryHelper(EncodeConstants.OF13_VERSION_ID, registry);\r
-        helper.registerDeserializer(1, Instruction.class, new GoToTableInstructionDeserializer());\r
-        helper.registerDeserializer(2, Instruction.class, new WriteMetadataInstructionDeserializer());\r
-        helper.registerDeserializer(3, Instruction.class, new WriteActionsInstructionDeserializer());\r
-        helper.registerDeserializer(4, Instruction.class, new ApplyActionsInstructionDeserializer());\r
-        helper.registerDeserializer(5, Instruction.class, new ClearActionsInstructionDeserializer());\r
-        helper.registerDeserializer(6, Instruction.class, new MeterInstructionDeserializer());\r
+        InstructionDeserializerRegistryHelper helper =\r
+                new InstructionDeserializerRegistryHelper(EncodeConstants.OF13_VERSION_ID, registry);\r
+        helper.registerDeserializer(1, new GoToTableInstructionDeserializer());\r
+        helper.registerDeserializer(2, new WriteMetadataInstructionDeserializer());\r
+        helper.registerDeserializer(3, new WriteActionsInstructionDeserializer());\r
+        helper.registerDeserializer(4, new ApplyActionsInstructionDeserializer());\r
+        helper.registerDeserializer(5, new ClearActionsInstructionDeserializer());\r
+        helper.registerDeserializer(6, new MeterInstructionDeserializer());\r
     }\r
-}\r
+}
\ No newline at end of file
index 25e896e4d66cfddd8b71ca54eae83bbf4befbab2..e45da36f9fb7aec34b3b88b9c0a48e5be7645d80 100644 (file)
@@ -65,33 +65,33 @@ public class MessageDerializerInitializer {
         // register OF v1.0 message deserializers\r
         SimpleDeserializerRegistryHelper helper =\r
                 new SimpleDeserializerRegistryHelper(EncodeConstants.OF10_VERSION_ID, registry);\r
-        helper.registerDeserializer(0, HelloMessage.class, new OF10HelloMessageFactory());\r
-        helper.registerDeserializer(1, ErrorMessage.class, new OF10ErrorMessageFactory());\r
-        helper.registerDeserializer(2, EchoRequestMessage.class, new OF10EchoRequestMessageFactory());\r
-        helper.registerDeserializer(3, EchoOutput.class, new OF10EchoReplyMessageFactory());\r
-        helper.registerDeserializer(6, GetFeaturesOutput.class, new OF10FeaturesReplyMessageFactory());\r
-        helper.registerDeserializer(8, GetConfigOutput.class, new OF10GetConfigReplyMessageFactory());\r
-        helper.registerDeserializer(10, PacketInMessage.class, new OF10PacketInMessageFactory());\r
-        helper.registerDeserializer(11, FlowRemovedMessage.class, new OF10FlowRemovedMessageFactory());\r
-        helper.registerDeserializer(12, PortStatusMessage.class, new OF10PortStatusMessageFactory());\r
-        helper.registerDeserializer(17, MultipartReplyMessage.class, new OF10StatsReplyMessageFactory());\r
-        helper.registerDeserializer(19, BarrierOutput.class, new OF10BarrierReplyMessageFactory());\r
-        helper.registerDeserializer(21, GetQueueConfigOutput.class, new OF10QueueGetConfigReplyMessageFactory());\r
+        helper.registerDeserializer(0, null, HelloMessage.class, new OF10HelloMessageFactory());\r
+        helper.registerDeserializer(1, null, ErrorMessage.class, new OF10ErrorMessageFactory());\r
+        helper.registerDeserializer(2, null, EchoRequestMessage.class, new OF10EchoRequestMessageFactory());\r
+        helper.registerDeserializer(3, null, EchoOutput.class, new OF10EchoReplyMessageFactory());\r
+        helper.registerDeserializer(6, null, GetFeaturesOutput.class, new OF10FeaturesReplyMessageFactory());\r
+        helper.registerDeserializer(8, null, GetConfigOutput.class, new OF10GetConfigReplyMessageFactory());\r
+        helper.registerDeserializer(10, null, PacketInMessage.class, new OF10PacketInMessageFactory());\r
+        helper.registerDeserializer(11, null, FlowRemovedMessage.class, new OF10FlowRemovedMessageFactory());\r
+        helper.registerDeserializer(12, null, PortStatusMessage.class, new OF10PortStatusMessageFactory());\r
+        helper.registerDeserializer(17, null, MultipartReplyMessage.class, new OF10StatsReplyMessageFactory());\r
+        helper.registerDeserializer(19, null, BarrierOutput.class, new OF10BarrierReplyMessageFactory());\r
+        helper.registerDeserializer(21, null, GetQueueConfigOutput.class, new OF10QueueGetConfigReplyMessageFactory());\r
         // register Of v1.3 message deserializers\r
         helper = new SimpleDeserializerRegistryHelper(EncodeConstants.OF13_VERSION_ID, registry);\r
-        helper.registerDeserializer(0, HelloMessage.class, new HelloMessageFactory());\r
-        helper.registerDeserializer(1, ErrorMessage.class, new ErrorMessageFactory());\r
-        helper.registerDeserializer(2, EchoRequestMessage.class, new EchoRequestMessageFactory());\r
-        helper.registerDeserializer(3, EchoOutput.class, new EchoReplyMessageFactory());\r
-        helper.registerDeserializer(6, GetFeaturesOutput.class, new FeaturesReplyMessageFactory());\r
-        helper.registerDeserializer(8, GetConfigOutput.class, new GetConfigReplyMessageFactory());\r
-        helper.registerDeserializer(10, PacketInMessage.class, new PacketInMessageFactory());\r
-        helper.registerDeserializer(11, FlowRemovedMessage.class, new FlowRemovedMessageFactory());\r
-        helper.registerDeserializer(12, PortStatusMessage.class, new PortStatusMessageFactory());\r
-        helper.registerDeserializer(19, MultipartReplyMessage.class, new MultipartReplyMessageFactory());\r
-        helper.registerDeserializer(21, BarrierOutput.class, new BarrierReplyMessageFactory());\r
-        helper.registerDeserializer(23, GetQueueConfigOutput.class, new QueueGetConfigReplyMessageFactory());\r
-        helper.registerDeserializer(25, RoleRequestOutput.class, new RoleReplyMessageFactory());\r
-        helper.registerDeserializer(27, GetAsyncOutput.class, new GetAsyncReplyMessageFactory());\r
+        helper.registerDeserializer(0, null, HelloMessage.class, new HelloMessageFactory());\r
+        helper.registerDeserializer(1, null, ErrorMessage.class, new ErrorMessageFactory());\r
+        helper.registerDeserializer(2, null, EchoRequestMessage.class, new EchoRequestMessageFactory());\r
+        helper.registerDeserializer(3, null, EchoOutput.class, new EchoReplyMessageFactory());\r
+        helper.registerDeserializer(6, null, GetFeaturesOutput.class, new FeaturesReplyMessageFactory());\r
+        helper.registerDeserializer(8, null, GetConfigOutput.class, new GetConfigReplyMessageFactory());\r
+        helper.registerDeserializer(10, null, PacketInMessage.class, new PacketInMessageFactory());\r
+        helper.registerDeserializer(11, null, FlowRemovedMessage.class, new FlowRemovedMessageFactory());\r
+        helper.registerDeserializer(12, null, PortStatusMessage.class, new PortStatusMessageFactory());\r
+        helper.registerDeserializer(19, null, MultipartReplyMessage.class, new MultipartReplyMessageFactory());\r
+        helper.registerDeserializer(21, null, BarrierOutput.class, new BarrierReplyMessageFactory());\r
+        helper.registerDeserializer(23, null, GetQueueConfigOutput.class, new QueueGetConfigReplyMessageFactory());\r
+        helper.registerDeserializer(25, null, RoleRequestOutput.class, new RoleReplyMessageFactory());\r
+        helper.registerDeserializer(27, null, GetAsyncOutput.class, new GetAsyncReplyMessageFactory());\r
     }\r
 }\r
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
index 753c745a5507525dd54bbce92ac0764f4334857c..818a842b11ccbd377054848e5be5f4482c10886c 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.openflowjava.protocol.impl.serialization;\r
 \r
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;\r
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF10EnqueueActionSerializer;\r
 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF10OutputActionSerializer;\r
 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF10SetDlDstActionSerializer;\r
@@ -36,8 +37,7 @@ import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF13SetF
 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF13SetMplsTtlActionSerializer;\r
 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF13SetNwTtlActionSerializer;\r
 import org.opendaylight.openflowjava.protocol.impl.serialization.action.OF13SetQueueActionSerializer;\r
-import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
-import org.opendaylight.openflowjava.protocol.impl.util.EnhancedKeyRegistryHelper;\r
+import org.opendaylight.openflowjava.protocol.impl.util.ActionSerializerRegistryHelper;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.CopyTtlIn;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.CopyTtlOut;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.DecMplsTtl;\r
@@ -65,7 +65,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev1
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetVlanPcp;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetVlanVid;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.StripVlan;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action;\r
 \r
 /**\r
  * Initializes serializer registry with action serializers\r
@@ -78,10 +77,9 @@ public class ActionsInitializer {
      * @param serializerRegistry registry to be initialized with action serializers\r
      */\r
     public static void registerActionSerializers(SerializerRegistry serializerRegistry) {\r
-        Class<Action> actionClass = Action.class;\r
         // register OF v1.0 action serializers\r
-        EnhancedKeyRegistryHelper<Action> helper =\r
-                new EnhancedKeyRegistryHelper<>(EncodeConstants.OF10_VERSION_ID, actionClass, serializerRegistry);\r
+        ActionSerializerRegistryHelper helper = new ActionSerializerRegistryHelper(\r
+                EncodeConstants.OF10_VERSION_ID, serializerRegistry);\r
         helper.registerSerializer(Output.class, new OF10OutputActionSerializer());\r
         helper.registerSerializer(SetVlanVid.class, new OF10SetVlanVidActionSerializer());\r
         helper.registerSerializer(SetVlanPcp.class, new OF10SetVlanPcpActionSerializer());\r
@@ -95,8 +93,8 @@ public class ActionsInitializer {
         helper.registerSerializer(SetTpDst.class, new OF10SetTpDstActionSerializer());\r
         helper.registerSerializer(Enqueue.class, new OF10EnqueueActionSerializer());\r
         // register OF v1.0 action serializers\r
-        helper = new EnhancedKeyRegistryHelper<>(\r
-                EncodeConstants.OF13_VERSION_ID, actionClass, serializerRegistry);\r
+        helper = new ActionSerializerRegistryHelper(\r
+                EncodeConstants.OF13_VERSION_ID, serializerRegistry);\r
         helper.registerSerializer(Output.class, new OF13OutputActionSerializer());\r
         helper.registerSerializer(CopyTtlOut.class, new OF13CopyTtlOutActionSerializer());\r
         helper.registerSerializer(CopyTtlIn.class, new OF13CopyTtlInActionSerializer());\r
@@ -114,4 +112,4 @@ public class ActionsInitializer {
         helper.registerSerializer(PushPbb.class, new OF13PushPbbActionSerializer());\r
         helper.registerSerializer(PopPbb.class, new OF13PopPbbActionSerializer());\r
     }\r
-}\r
+}
\ No newline at end of file
@@ -6,7 +6,7 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
  */\r
 \r
-package org.opendaylight.openflowjava.protocol.impl.util;\r
+package org.opendaylight.openflowjava.protocol.impl.serialization;\r
 \r
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;\r
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
@@ -16,13 +16,13 @@ import org.opendaylight.openflowjava.protocol.impl.serialization.instruction.GoT
 import org.opendaylight.openflowjava.protocol.impl.serialization.instruction.MeterInstructionSerializer;\r
 import org.opendaylight.openflowjava.protocol.impl.serialization.instruction.WriteActionsInstructionSerializer;\r
 import org.opendaylight.openflowjava.protocol.impl.serialization.instruction.WriteMetadataInstructionSerializer;\r
+import org.opendaylight.openflowjava.protocol.impl.util.InstructionSerializerRegistryHelper;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.ApplyActions;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.ClearActions;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.GotoTable;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.Meter;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.WriteActions;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.WriteMetadata;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instructions.grouping.Instruction;\r
 \r
 /**\r
  * @author michal.polkorab\r
@@ -35,11 +35,9 @@ public class InstructionsInitializer {
      * @param serializerRegistry registry to be initialized with instruction serializers\r
      */\r
     public static void registerInstructionSerializers(SerializerRegistry serializerRegistry) {\r
-        Class<Instruction> instructionClass = Instruction.class;\r
         // register OF v1.3 instruction serializers\r
-        EnhancedKeyRegistryHelper<Instruction> helper =\r
-                new EnhancedKeyRegistryHelper<>(EncodeConstants.OF13_VERSION_ID,\r
-                        instructionClass, serializerRegistry);\r
+        InstructionSerializerRegistryHelper helper= new InstructionSerializerRegistryHelper(\r
+                EncodeConstants.OF13_VERSION_ID, serializerRegistry);\r
         helper.registerSerializer(GotoTable.class, new GoToTableInstructionSerializer());\r
         helper.registerSerializer(WriteMetadata.class, new WriteMetadataInstructionSerializer());\r
         helper.registerSerializer(WriteActions.class, new WriteActionsInstructionSerializer());\r
index 2c7f814fa119180f2af73fd4556d8c1b22627074..49a70d3aa367d5b4c911e7702e18c3790ad72630 100644 (file)
@@ -53,6 +53,7 @@ import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmVlanPc
 import org.opendaylight.openflowjava.protocol.impl.serialization.match.OxmVlanVidSerializer;\r
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
 import org.opendaylight.openflowjava.protocol.impl.util.EnhancedKeyRegistryHelper;\r
+import org.opendaylight.openflowjava.protocol.impl.util.MatchEntrySerializerRegistryHelper;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpOp;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpSha;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ArpSpa;\r
@@ -112,48 +113,49 @@ public class MatchEntriesInitializer {
     public static void registerMatchEntrySerializers(SerializerRegistry serializerRegistry) {\r
         // register OF v1.3 OpenflowBasicClass match entry serializers\r
         Class<OpenflowBasicClass> oxmClass = OpenflowBasicClass.class;\r
-        EnhancedKeyRegistryHelper<OpenflowBasicClass> registryHelper =\r
-                new EnhancedKeyRegistryHelper<>(EncodeConstants.OF13_VERSION_ID, oxmClass, serializerRegistry);\r
-        registryHelper.registerSerializer(InPort.class, new OxmInPortSerializer());\r
-        registryHelper.registerSerializer(InPhyPort.class, new OxmInPhyPortSerializer());\r
-        registryHelper.registerSerializer(Metadata.class, new OxmMetadataSerializer());\r
-        registryHelper.registerSerializer(EthDst.class, new OxmEthDstSerializer());\r
-        registryHelper.registerSerializer(EthSrc.class, new OxmEthSrcSerializer());\r
-        registryHelper.registerSerializer(EthType.class, new OxmEthTypeSerializer());\r
-        registryHelper.registerSerializer(VlanVid.class, new OxmVlanVidSerializer());\r
-        registryHelper.registerSerializer(VlanPcp.class, new OxmVlanPcpSerializer());\r
-        registryHelper.registerSerializer(IpDscp.class, new OxmIpDscpSerializer());\r
-        registryHelper.registerSerializer(IpEcn.class, new OxmIpEcnSerializer());\r
-        registryHelper.registerSerializer(IpProto.class, new OxmIpProtoSerializer());\r
-        registryHelper.registerSerializer(Ipv4Src.class, new OxmIpv4SrcSerializer());\r
-        registryHelper.registerSerializer(Ipv4Dst.class, new OxmIpv4DstSerializer());\r
-        registryHelper.registerSerializer(TcpSrc.class, new OxmTcpSrcSerializer());\r
-        registryHelper.registerSerializer(TcpDst.class, new OxmTcpDstSerializer());\r
-        registryHelper.registerSerializer(UdpSrc.class, new OxmUdpSrcSerializer());\r
-        registryHelper.registerSerializer(UdpDst.class, new OxmUdpDstSerializer());\r
-        registryHelper.registerSerializer(SctpSrc.class, new OxmSctpSrcSerializer());\r
-        registryHelper.registerSerializer(SctpDst.class, new OxmSctpDstSerializer());\r
-        registryHelper.registerSerializer(Icmpv4Type.class, new OxmIcmpv4TypeSerializer());\r
-        registryHelper.registerSerializer(Icmpv4Code.class, new OxmIcmpv4CodeSerializer());\r
-        registryHelper.registerSerializer(ArpOp.class, new OxmArpOpSerializer());\r
-        registryHelper.registerSerializer(ArpSpa.class, new OxmArpSpaSerializer());\r
-        registryHelper.registerSerializer(ArpTpa.class, new OxmArpTpaSerializer());\r
-        registryHelper.registerSerializer(ArpSha.class, new OxmArpShaSerializer());\r
-        registryHelper.registerSerializer(ArpTha.class, new OxmArpThaSerializer());\r
-        registryHelper.registerSerializer(Ipv6Src.class, new OxmIpv6SrcSerializer());\r
-        registryHelper.registerSerializer(Ipv6Dst.class, new OxmIpv6DstSerializer());\r
-        registryHelper.registerSerializer(Ipv6Flabel.class, new OxmIpv6FlabelSerializer());\r
-        registryHelper.registerSerializer(Icmpv6Type.class, new OxmIcmpv6TypeSerializer());\r
-        registryHelper.registerSerializer(Icmpv6Code.class, new OxmIcmpv6CodeSerializer());\r
-        registryHelper.registerSerializer(Ipv6NdTarget.class, new OxmIpv6NdTargetSerializer());\r
-        registryHelper.registerSerializer(Ipv6NdSll.class, new OxmIpv6NdSllSerializer());\r
-        registryHelper.registerSerializer(Ipv6NdTll.class, new OxmIpv6NdTllSerializer());\r
-        registryHelper.registerSerializer(MplsLabel.class, new OxmMplsLabelSerializer());\r
-        registryHelper.registerSerializer(MplsTc.class, new OxmMplsTcSerializer());\r
-        registryHelper.registerSerializer(MplsBos.class, new OxmMplsBosSerializer());\r
-        registryHelper.registerSerializer(PbbIsid.class, new OxmPbbIsidSerializer());\r
-        registryHelper.registerSerializer(TunnelId.class, new OxmTunnelIdSerializer());\r
-        registryHelper.registerSerializer(Ipv6Exthdr.class, new OxmIpv6ExtHdrSerializer());\r
+        MatchEntrySerializerRegistryHelper<OpenflowBasicClass> helper =\r
+                new MatchEntrySerializerRegistryHelper<>(EncodeConstants.OF13_VERSION_ID,\r
+                        oxmClass, serializerRegistry);\r
+        helper.registerSerializer(InPort.class, new OxmInPortSerializer());\r
+        helper.registerSerializer(InPhyPort.class, new OxmInPhyPortSerializer());\r
+        helper.registerSerializer(Metadata.class, new OxmMetadataSerializer());\r
+        helper.registerSerializer(EthDst.class, new OxmEthDstSerializer());\r
+        helper.registerSerializer(EthSrc.class, new OxmEthSrcSerializer());\r
+        helper.registerSerializer(EthType.class, new OxmEthTypeSerializer());\r
+        helper.registerSerializer(VlanVid.class, new OxmVlanVidSerializer());\r
+        helper.registerSerializer(VlanPcp.class, new OxmVlanPcpSerializer());\r
+        helper.registerSerializer(IpDscp.class, new OxmIpDscpSerializer());\r
+        helper.registerSerializer(IpEcn.class, new OxmIpEcnSerializer());\r
+        helper.registerSerializer(IpProto.class, new OxmIpProtoSerializer());\r
+        helper.registerSerializer(Ipv4Src.class, new OxmIpv4SrcSerializer());\r
+        helper.registerSerializer(Ipv4Dst.class, new OxmIpv4DstSerializer());\r
+        helper.registerSerializer(TcpSrc.class, new OxmTcpSrcSerializer());\r
+        helper.registerSerializer(TcpDst.class, new OxmTcpDstSerializer());\r
+        helper.registerSerializer(UdpSrc.class, new OxmUdpSrcSerializer());\r
+        helper.registerSerializer(UdpDst.class, new OxmUdpDstSerializer());\r
+        helper.registerSerializer(SctpSrc.class, new OxmSctpSrcSerializer());\r
+        helper.registerSerializer(SctpDst.class, new OxmSctpDstSerializer());\r
+        helper.registerSerializer(Icmpv4Type.class, new OxmIcmpv4TypeSerializer());\r
+        helper.registerSerializer(Icmpv4Code.class, new OxmIcmpv4CodeSerializer());\r
+        helper.registerSerializer(ArpOp.class, new OxmArpOpSerializer());\r
+        helper.registerSerializer(ArpSpa.class, new OxmArpSpaSerializer());\r
+        helper.registerSerializer(ArpTpa.class, new OxmArpTpaSerializer());\r
+        helper.registerSerializer(ArpSha.class, new OxmArpShaSerializer());\r
+        helper.registerSerializer(ArpTha.class, new OxmArpThaSerializer());\r
+        helper.registerSerializer(Ipv6Src.class, new OxmIpv6SrcSerializer());\r
+        helper.registerSerializer(Ipv6Dst.class, new OxmIpv6DstSerializer());\r
+        helper.registerSerializer(Ipv6Flabel.class, new OxmIpv6FlabelSerializer());\r
+        helper.registerSerializer(Icmpv6Type.class, new OxmIcmpv6TypeSerializer());\r
+        helper.registerSerializer(Icmpv6Code.class, new OxmIcmpv6CodeSerializer());\r
+        helper.registerSerializer(Ipv6NdTarget.class, new OxmIpv6NdTargetSerializer());\r
+        helper.registerSerializer(Ipv6NdSll.class, new OxmIpv6NdSllSerializer());\r
+        helper.registerSerializer(Ipv6NdTll.class, new OxmIpv6NdTllSerializer());\r
+        helper.registerSerializer(MplsLabel.class, new OxmMplsLabelSerializer());\r
+        helper.registerSerializer(MplsTc.class, new OxmMplsTcSerializer());\r
+        helper.registerSerializer(MplsBos.class, new OxmMplsBosSerializer());\r
+        helper.registerSerializer(PbbIsid.class, new OxmPbbIsidSerializer());\r
+        helper.registerSerializer(TunnelId.class, new OxmTunnelIdSerializer());\r
+        helper.registerSerializer(Ipv6Exthdr.class, new OxmIpv6ExtHdrSerializer());\r
 \r
         // Register OpenFlow NXM1Class match entry serializer\r
         Class<Nxm1Class> nxm1Class = Nxm1Class.class;\r
index 3d8e3a625e29ad8bec481cc0bc69e489b38bc741..47b2d4a5efc60dcf9309e9c2d56848c84315fe5c 100644 (file)
@@ -16,7 +16,6 @@ import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralSeriali
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
-import org.opendaylight.openflowjava.protocol.impl.util.InstructionsInitializer;
 import org.opendaylight.openflowjava.protocol.impl.util.OF10MatchSerializer;
 import org.opendaylight.openflowjava.protocol.impl.util.OF13MatchSerializer;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.match.grouping.Match;
index a2814310d3d0adb931b91a33c52106748a83def3..86fb321200aa947bdac25ea0f754fac159c36059 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.api.extensibility.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.openflowjava.protocol.api.util.EncodeConstants;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterMatchEntry;\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,14 @@ 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(ExperimenterMatchEntry.class).getExperimenter());\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
index 3bfe885e131901b0a7c51eea9ee3f8a216179601..421bfc4a4f29e57c1eec0a0b03b8cf3bf21eb861 100644 (file)
@@ -16,8 +16,8 @@ import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegist
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
 import org.opendaylight.openflowjava.util.ByteBufUtils;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
-import org.opendaylight.openflowjava.protocol.impl.util.EnhancedTypeKeyMaker;
-import org.opendaylight.openflowjava.protocol.impl.util.EnhancedTypeKeyMakerFactory;
+import org.opendaylight.openflowjava.protocol.impl.util.TypeKeyMaker;
+import org.opendaylight.openflowjava.protocol.impl.util.TypeKeyMakerFactory;
 import org.opendaylight.openflowjava.protocol.impl.util.ListSerializer;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instructions.grouping.Instruction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowModFlags;
@@ -32,8 +32,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 public class FlowModInputMessageFactory implements OFSerializer<FlowModInput>, SerializerRegistryInjector {
     private static final byte MESSAGE_TYPE = 14;
     private static final byte PADDING_IN_FLOW_MOD_MESSAGE = 2;
-    private static final EnhancedTypeKeyMaker<Instruction> INSTRUCTION_KEY_MAKER =
-            EnhancedTypeKeyMakerFactory.createInstructionKeyMaker(EncodeConstants.OF13_VERSION_ID);
+    private static final TypeKeyMaker<Instruction> INSTRUCTION_KEY_MAKER =
+            TypeKeyMakerFactory.createInstructionKeyMaker(EncodeConstants.OF13_VERSION_ID);
     private SerializerRegistry registry;
 
     @Override
index 300e02001dd5117c0995c41f6d65d23ac2d6a89a..18155039ff6604625f84d67d903528f04e5d4061 100644 (file)
@@ -17,7 +17,7 @@ import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegist
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
 import org.opendaylight.openflowjava.util.ByteBufUtils;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
-import org.opendaylight.openflowjava.protocol.impl.util.EnhancedTypeKeyMakerFactory;
+import org.opendaylight.openflowjava.protocol.impl.util.TypeKeyMakerFactory;
 import org.opendaylight.openflowjava.protocol.impl.util.ListSerializer;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.buckets.grouping.BucketsList;
@@ -53,7 +53,7 @@ public class GroupModInputMessageFactory implements OFSerializer<GroupModInput>,
                 outBuffer.writeInt(currentBucket.getWatchPort().getValue().intValue());
                 outBuffer.writeInt(currentBucket.getWatchGroup().intValue());
                 ByteBufUtils.padBuffer(PADDING_IN_BUCKET, outBuffer);
-                ListSerializer.serializeList(currentBucket.getAction(), EnhancedTypeKeyMakerFactory
+                ListSerializer.serializeList(currentBucket.getAction(), TypeKeyMakerFactory
                         .createActionKeyMaker(EncodeConstants.OF13_VERSION_ID), registry, outBuffer);
                 outBuffer.setShort(bucketLengthIndex, outBuffer.writerIndex() - bucketLengthIndex);
             }
index 7aaeb74de1c4d8eba97703693583388b25a1b137..29cc589818b8c057886730965299b348e7dc33c4 100644 (file)
@@ -12,18 +12,19 @@ import io.netty.buffer.ByteBuf;
 
 import java.util.List;
 
-import org.opendaylight.openflowjava.protocol.api.extensibility.EnhancedMessageTypeKey;
 import org.opendaylight.openflowjava.protocol.api.extensibility.HeaderSerializer;
 import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
-import org.opendaylight.openflowjava.util.ByteBufUtils;
+import org.opendaylight.openflowjava.protocol.api.extensibility.keys.MatchEntrySerializerKey;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
-import org.opendaylight.openflowjava.protocol.impl.util.EnhancedTypeKeyMaker;
-import org.opendaylight.openflowjava.protocol.impl.util.EnhancedTypeKeyMakerFactory;
 import org.opendaylight.openflowjava.protocol.impl.util.ListSerializer;
+import org.opendaylight.openflowjava.protocol.impl.util.TypeKeyMaker;
+import org.opendaylight.openflowjava.protocol.impl.util.TypeKeyMakerFactory;
+import org.opendaylight.openflowjava.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ActionRelatedTableFeatureProperty;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterMatchEntry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.InstructionRelatedTableFeatureProperty;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.NextTableRelatedTableFeatureProperty;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.OxmRelatedTableFeatureProperty;
@@ -34,6 +35,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartRequestFlags;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.TableConfig;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.TableFeaturesPropType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ExperimenterClass;
 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;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput;
@@ -355,7 +357,7 @@ public class MultipartRequestInputFactory implements OFSerializer<MultipartReque
             }
             padding = paddingNeeded(length);
             output.writeShort(length);
-            EnhancedTypeKeyMaker<Instruction> keyMaker = EnhancedTypeKeyMakerFactory
+            TypeKeyMaker<Instruction> keyMaker = TypeKeyMakerFactory
                     .createInstructionKeyMaker(EncodeConstants.OF13_VERSION_ID);
             ListSerializer.serializeHeaderList(instructions, keyMaker, registry, output);
         } else {
@@ -413,7 +415,7 @@ public class MultipartRequestInputFactory implements OFSerializer<MultipartReque
             length += actions.size() * STRUCTURE_HEADER_LENGTH;
             padding += paddingNeeded(length);
             output.writeShort(length);
-            EnhancedTypeKeyMaker<Action> keyMaker = EnhancedTypeKeyMakerFactory
+            TypeKeyMaker<Action> keyMaker = TypeKeyMakerFactory
                     .createActionKeyMaker(EncodeConstants.OF13_VERSION_ID);
             ListSerializer.serializeHeaderList(actions, keyMaker, registry, output);
         } else {
@@ -437,9 +439,14 @@ public class MultipartRequestInputFactory implements OFSerializer<MultipartReque
             output.writeShort(length);
 
             for (MatchEntries entry : entries) {
-                HeaderSerializer<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);
+                }
+                HeaderSerializer<MatchEntries> entrySerializer = registry.getSerializer(key);
                 entrySerializer.serializeHeader(entry, output);
             }
         } else {
index ba8498efa998b654bca0cb134e1cf403a9d9ef48..7ba6e7ebef1e6480c047f647a288cc2eb2a57d55 100644 (file)
@@ -16,8 +16,8 @@ import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegist
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
 import org.opendaylight.openflowjava.util.ByteBufUtils;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
-import org.opendaylight.openflowjava.protocol.impl.util.EnhancedTypeKeyMaker;
-import org.opendaylight.openflowjava.protocol.impl.util.EnhancedTypeKeyMakerFactory;
+import org.opendaylight.openflowjava.protocol.impl.util.TypeKeyMaker;
+import org.opendaylight.openflowjava.protocol.impl.util.TypeKeyMakerFactory;
 import org.opendaylight.openflowjava.protocol.impl.util.ListSerializer;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowModFlagsV10;
@@ -31,8 +31,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 public class OF10FlowModInputMessageFactory implements OFSerializer<FlowModInput>, SerializerRegistryInjector {
 
     private static final byte MESSAGE_TYPE = 14;
-    private static final EnhancedTypeKeyMaker<Action> ACTION_KEY_MAKER =
-            EnhancedTypeKeyMakerFactory.createActionKeyMaker(EncodeConstants.OF10_VERSION_ID);
+    private static final TypeKeyMaker<Action> ACTION_KEY_MAKER =
+            TypeKeyMakerFactory.createActionKeyMaker(EncodeConstants.OF10_VERSION_ID);
     private SerializerRegistry registry;
 
     @Override
index f217e10086f748c7b8b8ae9958177668ca3960a4..a83c1a6d4e0f71bde897bd1e231b9fcea9caaee1 100644 (file)
@@ -15,7 +15,7 @@ import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegist
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
 import org.opendaylight.openflowjava.util.ByteBufUtils;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
-import org.opendaylight.openflowjava.protocol.impl.util.EnhancedTypeKeyMakerFactory;
+import org.opendaylight.openflowjava.protocol.impl.util.TypeKeyMakerFactory;
 import org.opendaylight.openflowjava.protocol.impl.util.ListSerializer;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketOutInput;
 
@@ -36,7 +36,7 @@ public class OF10PacketOutInputMessageFactory implements OFSerializer<PacketOutI
         int actionsLengthIndex = outBuffer.writerIndex();
         outBuffer.writeShort(EncodeConstants.EMPTY_LENGTH);
         int actionsStartIndex = outBuffer.writerIndex();
-        ListSerializer.serializeList(message.getAction(), EnhancedTypeKeyMakerFactory
+        ListSerializer.serializeList(message.getAction(), TypeKeyMakerFactory
                 .createActionKeyMaker(EncodeConstants.OF10_VERSION_ID), registry, outBuffer);
         outBuffer.setShort(actionsLengthIndex, outBuffer.writerIndex() - actionsStartIndex);
         byte[] data = message.getData();
index e4c56a0d6231a6175464834a6ac77d9e5494ee11..022ddb986c0c48af44ff274ebe7e4f89ab252fa0 100644 (file)
@@ -15,7 +15,7 @@ import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegist
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
 import org.opendaylight.openflowjava.util.ByteBufUtils;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
-import org.opendaylight.openflowjava.protocol.impl.util.EnhancedTypeKeyMakerFactory;
+import org.opendaylight.openflowjava.protocol.impl.util.TypeKeyMakerFactory;
 import org.opendaylight.openflowjava.protocol.impl.util.ListSerializer;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketOutInput;
 
@@ -40,7 +40,7 @@ public class PacketOutInputMessageFactory implements OFSerializer<PacketOutInput
         outBuffer.writeShort(EncodeConstants.EMPTY_LENGTH);
         ByteBufUtils.padBuffer(PADDING_IN_PACKET_OUT_MESSAGE, outBuffer);
         int actionsStartIndex = outBuffer.writerIndex();
-        ListSerializer.serializeList(message.getAction(), EnhancedTypeKeyMakerFactory
+        ListSerializer.serializeList(message.getAction(), TypeKeyMakerFactory
                 .createActionKeyMaker(EncodeConstants.OF13_VERSION_ID), registry, outBuffer);
         outBuffer.setShort(actionsLengthIndex, outBuffer.writerIndex() - actionsStartIndex);
         byte[] data = message.getData();
index b2667611f463685a12b90a13aaae2c8b1639a28a..8603f513ea6c70e84b00aa01c6546ac4519ff52f 100644 (file)
@@ -16,8 +16,8 @@ import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegist
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;\r
 import org.opendaylight.openflowjava.util.ByteBufUtils;\r
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
-import org.opendaylight.openflowjava.protocol.impl.util.EnhancedTypeKeyMaker;\r
-import org.opendaylight.openflowjava.protocol.impl.util.EnhancedTypeKeyMakerFactory;\r
+import org.opendaylight.openflowjava.protocol.impl.util.TypeKeyMaker;\r
+import org.opendaylight.openflowjava.protocol.impl.util.TypeKeyMakerFactory;\r
 import org.opendaylight.openflowjava.protocol.impl.util.InstructionConstants;\r
 import org.opendaylight.openflowjava.protocol.impl.util.ListSerializer;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ActionsInstruction;\r
@@ -31,8 +31,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction
 public abstract class AbstractActionInstructionSerializer extends AbstractInstructionSerializer\r
         implements SerializerRegistryInjector {\r
 \r
-    private static final EnhancedTypeKeyMaker<Action> ACTION_KEY_MAKER =\r
-            EnhancedTypeKeyMakerFactory.createActionKeyMaker(EncodeConstants.OF13_VERSION_ID);\r
+    private static final TypeKeyMaker<Action> ACTION_KEY_MAKER =\r
+            TypeKeyMakerFactory.createActionKeyMaker(EncodeConstants.OF13_VERSION_ID);\r
 \r
     private SerializerRegistry registry;\r
 \r
@@ -13,14 +13,14 @@ package org.opendaylight.openflowjava.protocol.impl.util;
  * @author michal.polkorab\r
  * @param <T> type the key maker is based on \r
  */\r
-public abstract class AbstractEnhancedTypeKeyMaker<T> implements EnhancedTypeKeyMaker<T> {\r
+public abstract class AbstractTypeKeyMaker<T> implements TypeKeyMaker<T> {\r
 \r
     private short version;\r
 \r
     /**\r
      * @param version openflow wire version\r
      */\r
-    public AbstractEnhancedTypeKeyMaker(short version) {\r
+    public AbstractTypeKeyMaker(short version) {\r
         this.version = version;\r
         \r
     }\r
diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/ActionDeserializerRegistryHelper.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/ActionDeserializerRegistryHelper.java
new file mode 100644 (file)
index 0000000..13b9f91
--- /dev/null
@@ -0,0 +1,42 @@
+/*\r
+ * Copyright (c) 2014 Pantheon Technologies s.r.o. and others.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.openflowjava.protocol.impl.util;\r
+\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralDeserializer;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.keys.ActionDeserializerKey;\r
+\r
+/**\r
+ * @author michal.polkorab\r
+ *\r
+ */\r
+public class ActionDeserializerRegistryHelper {\r
+\r
+    private short version;\r
+    private DeserializerRegistry registry;\r
+\r
+    /**\r
+     * @param version wire protocol version\r
+     * @param deserializerRegistry registry to be filled with message deserializers\r
+     */\r
+    public ActionDeserializerRegistryHelper(short version, DeserializerRegistry deserializerRegistry) {\r
+        this.version = version;\r
+        this.registry = deserializerRegistry;\r
+    }\r
+\r
+    /**\r
+     * @param code code / value to distinguish between deserializers\r
+     * @param deserializer deserializer instance\r
+     * @param deserializedObjectClass class of object that will be deserialized\r
+     *  by given deserializer\r
+     */\r
+    public void registerDeserializer(int code, OFGeneralDeserializer deserializer) {\r
+        registry.registerDeserializer(new ActionDeserializerKey(version, code,\r
+                null), deserializer);\r
+    }\r
+}\r
diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/ActionSerializerRegistryHelper.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/ActionSerializerRegistryHelper.java
new file mode 100644 (file)
index 0000000..48382ad
--- /dev/null
@@ -0,0 +1,43 @@
+/*\r
+ * Copyright (c) 2013 Pantheon Technologies s.r.o. and others.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.openflowjava.protocol.impl.util;\r
+\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralSerializer;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.keys.ActionSerializerKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.ActionBase;\r
+\r
+/**\r
+ * @author michal.polkorab\r
+ */\r
+public class ActionSerializerRegistryHelper {\r
+\r
+    private short version;\r
+    private SerializerRegistry serializerRegistry;\r
+\r
+    /**\r
+     * @param version Openflow wire version\r
+     * @param objectType\r
+     * @param serializerRegistry\r
+     */\r
+    public ActionSerializerRegistryHelper(short version, SerializerRegistry serializerRegistry) {\r
+        this.version = version;\r
+        this.serializerRegistry = serializerRegistry;\r
+    }\r
+\r
+    /**\r
+     * Registers given serializer\r
+     * @param actionType\r
+     * @param serializer\r
+     */\r
+    public <TYPE extends ActionBase> void registerSerializer(Class<TYPE> actionType,\r
+            OFGeneralSerializer serializer) {\r
+        serializerRegistry.registerSerializer(new ActionSerializerKey<>(version,\r
+                actionType, null), serializer);\r
+    }\r
+}
\ No newline at end of file
index 26abb18043996a8da126a0a053eb06d3d19d494b..d2eabddde753ec4052e7ad328853c338fe9c275c 100644 (file)
@@ -10,12 +10,11 @@ package org.opendaylight.openflowjava.protocol.impl.util;
 \r
 import io.netty.buffer.ByteBuf;\r
 \r
-import org.opendaylight.openflowjava.protocol.api.extensibility.EnhancedMessageCodeKey;\r
 import org.opendaylight.openflowjava.protocol.api.extensibility.MessageCodeKey;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.keys.ActionDeserializerKey;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.keys.InstructionDeserializerKey;\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.common.action.rev130731.actions.grouping.Action;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instructions.grouping.Instruction;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.grouping.MatchEntries;\r
 \r
 /**\r
  * @author michal.polkorab\r
@@ -34,8 +33,16 @@ public abstract class CodeKeyMakerFactory {
                 int oxmClass = input.getUnsignedShort(input.readerIndex());\r
                 int oxmField = input.getUnsignedByte(input.readerIndex()\r
                         + EncodeConstants.SIZE_OF_SHORT_IN_BYTES) >>> 1;\r
-                return new EnhancedMessageCodeKey(getVersion(), oxmClass,\r
-                        oxmField, MatchEntries.class);\r
+                MatchEntryDeserializerKey key = new MatchEntryDeserializerKey(getVersion(),\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
+                    return key;\r
+                }\r
+                key.setExperimenterId(null);\r
+                return key;\r
             }\r
         };\r
     }\r
@@ -49,7 +56,13 @@ public abstract class CodeKeyMakerFactory {
             @Override\r
             public MessageCodeKey make(ByteBuf input) {\r
                 int type = input.getUnsignedShort(input.readerIndex());\r
-                return new MessageCodeKey(getVersion(), type, Action.class);\r
+                if (type == EncodeConstants.EXPERIMENTER_VALUE) {\r
+                    Long expId = input.getUnsignedInt(input.readerIndex()\r
+                            + 2 * EncodeConstants.SIZE_OF_SHORT_IN_BYTES);\r
+                    return new ActionDeserializerKey(getVersion(), type, expId);\r
+                }\r
+                ActionDeserializerKey actionDeserializerKey = new ActionDeserializerKey(getVersion(), type, null);\r
+                return actionDeserializerKey;\r
             }\r
         };\r
     }\r
@@ -63,7 +76,12 @@ public abstract class CodeKeyMakerFactory {
             @Override\r
             public MessageCodeKey make(ByteBuf input) {\r
                 int type = input.getUnsignedShort(input.readerIndex());\r
-                return new MessageCodeKey(getVersion(), type, Instruction.class);\r
+                if (type == EncodeConstants.EXPERIMENTER_VALUE) {\r
+                    Long expId = input.getUnsignedInt(input.readerIndex()\r
+                            + 2 * EncodeConstants.SIZE_OF_SHORT_IN_BYTES);\r
+                    return new InstructionDeserializerKey(getVersion(), type, expId);\r
+                }\r
+                return new InstructionDeserializerKey(getVersion(), type, null);\r
             }\r
         };\r
     }\r
diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/EnhancedTypeKeyMakerFactory.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/EnhancedTypeKeyMakerFactory.java
deleted file mode 100644 (file)
index 08a9b5e..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*\r
- * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-\r
-package org.opendaylight.openflowjava.protocol.impl.util;\r
-\r
-import org.opendaylight.openflowjava.protocol.api.extensibility.EnhancedMessageTypeKey;\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.common.instruction.rev130731.instructions.grouping.Instruction;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.grouping.MatchEntries;\r
-\r
-/**\r
- * Creates KeyMakers\r
- * @author michal.polkorab\r
- */\r
-public abstract class EnhancedTypeKeyMakerFactory {\r
-\r
-    /**\r
-     * @param version openflow wire version that shall be used\r
-     *  in lookup key\r
-     * @return lookup key\r
-     */\r
-    public static EnhancedTypeKeyMaker<MatchEntries> createMatchEntriesKeyMaker(short version) {\r
-        return new AbstractEnhancedTypeKeyMaker<MatchEntries>(version) {\r
-            @Override\r
-            public EnhancedMessageTypeKey<?, ?> make(MatchEntries entry) {\r
-                return new EnhancedMessageTypeKey<>(\r
-                        getVersion(), entry.getOxmClass(), entry.getOxmMatchField());\r
-            }\r
-        };\r
-    }\r
-\r
-    /**\r
-     * @param version openflow wire version that shall be used\r
-     *  in lookup key\r
-     * @return lookup key\r
-     */\r
-    public static EnhancedTypeKeyMaker<Action> createActionKeyMaker(short version) {\r
-        return new AbstractEnhancedTypeKeyMaker<Action>(version) {\r
-            @Override\r
-            public EnhancedMessageTypeKey<?, ?> make(Action entry) {\r
-                return new EnhancedMessageTypeKey<>(getVersion(), Action.class, entry.getType());\r
-            }\r
-        };\r
-    }\r
-\r
-    /**\r
-     * @param version openflow wire version that shall be used\r
-     *  in lookup key\r
-     * @return lookup key\r
-     */\r
-    public static EnhancedTypeKeyMaker<Instruction> createInstructionKeyMaker(short version) {\r
-        return new AbstractEnhancedTypeKeyMaker<Instruction>(version) {\r
-            @Override\r
-            public EnhancedMessageTypeKey<?, ?> make(Instruction entry) {\r
-                return new EnhancedMessageTypeKey<>(getVersion(), Instruction.class, entry.getType());\r
-            }\r
-        };\r
-    }\r
-}\r
diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/InstructionDeserializerRegistryHelper.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/InstructionDeserializerRegistryHelper.java
new file mode 100644 (file)
index 0000000..211bf15
--- /dev/null
@@ -0,0 +1,42 @@
+/*\r
+ * Copyright (c) 2014 Pantheon Technologies s.r.o. and others.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.openflowjava.protocol.impl.util;\r
+\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralDeserializer;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.keys.InstructionDeserializerKey;\r
+\r
+/**\r
+ * @author michal.polkorab\r
+ *\r
+ */\r
+public class InstructionDeserializerRegistryHelper {\r
+\r
+    private short version;\r
+    private DeserializerRegistry registry;\r
+\r
+    /**\r
+     * @param version wire protocol version\r
+     * @param deserializerRegistry registry to be filled with message deserializers\r
+     */\r
+    public InstructionDeserializerRegistryHelper(short version, DeserializerRegistry deserializerRegistry) {\r
+        this.version = version;\r
+        this.registry = deserializerRegistry;\r
+    }\r
+\r
+    /**\r
+     * @param code code / value to distinguish between deserializers\r
+     * @param deserializer deserializer instance\r
+     * @param deserializedObjectClass class of object that will be deserialized\r
+     *  by given deserializer\r
+     */\r
+    public void registerDeserializer(int code, OFGeneralDeserializer deserializer) {\r
+        registry.registerDeserializer(new InstructionDeserializerKey(version, code,\r
+                null), deserializer);\r
+    }\r
+}\r
diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/InstructionSerializerRegistryHelper.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/InstructionSerializerRegistryHelper.java
new file mode 100644 (file)
index 0000000..5c11108
--- /dev/null
@@ -0,0 +1,42 @@
+/*\r
+ * Copyright (c) 2013 Pantheon Technologies s.r.o. and others.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.openflowjava.protocol.impl.util;\r
+\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralSerializer;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.keys.InstructionSerializerKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.InstructionBase;\r
+\r
+/**\r
+ * @author michal.polkorab\r
+ */\r
+public class InstructionSerializerRegistryHelper {\r
+\r
+    private short version;\r
+    private SerializerRegistry serializerRegistry;\r
+\r
+    /**\r
+     * @param version Openflow wire version\r
+     * @param serializerRegistry\r
+     */\r
+    public InstructionSerializerRegistryHelper(short version, SerializerRegistry serializerRegistry) {\r
+        this.version = version;\r
+        this.serializerRegistry = serializerRegistry;\r
+    }\r
+\r
+    /**\r
+     * Registers given serializer\r
+     * @param instructionType \r
+     * @param serializer\r
+     */\r
+    public <TYPE extends InstructionBase> void registerSerializer(Class<TYPE> instructionType,\r
+            OFGeneralSerializer serializer) {\r
+        serializerRegistry.registerSerializer(new InstructionSerializerKey<>(version,\r
+                instructionType, null), serializer);\r
+    }\r
+}
\ No newline at end of file
index 9285708b6f25c84947ef6c7c22b71800023ab953..58a963525cd4bd532f557da792465b6d5b30cc0f 100644 (file)
@@ -32,7 +32,7 @@ public abstract class ListSerializer {
      * @param outBuffer output buffer\r
      */\r
     public static <E extends DataObject> void serializeList(List<E> list,\r
-            EnhancedTypeKeyMaker<E> keyMaker, SerializerRegistry registry, ByteBuf outBuffer) {\r
+            TypeKeyMaker<E> keyMaker, SerializerRegistry registry, ByteBuf outBuffer) {\r
         if (list != null) {\r
             for (E item : list) {\r
                 OFSerializer<E> serializer = registry.getSerializer(keyMaker.make(item));\r
@@ -49,7 +49,7 @@ public abstract class ListSerializer {
      * @param outBuffer output buffer\r
      */\r
     public static <E extends DataObject> void serializeHeaderList(List<E> list,\r
-            EnhancedTypeKeyMaker<E> keyMaker, SerializerRegistry registry, ByteBuf outBuffer) {\r
+            TypeKeyMaker<E> keyMaker, SerializerRegistry registry, ByteBuf outBuffer) {\r
         if (list != null) {\r
             for (E item : list) {\r
                 HeaderSerializer<E> serializer = registry.getSerializer(keyMaker.make(item));\r
index 102d1f084cb07d790ad201ed93408942fc578d17..0acb4686feaa9d1eb5b86df5d11c8ade64f32f83 100644 (file)
@@ -8,9 +8,8 @@
 package org.opendaylight.openflowjava.protocol.impl.util;\r
 \r
 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;\r
-import org.opendaylight.openflowjava.protocol.api.extensibility.EnhancedMessageCodeKey;\r
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralDeserializer;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.grouping.MatchEntries;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.keys.MatchEntryDeserializerKey;\r
 \r
 /**\r
  * @author michal.polkorab\r
@@ -41,7 +40,8 @@ public class MatchEntryDeserializerRegistryHelper {
      * @param deserializer deserializer instance\r
      */\r
     public void register(int oxmField, OFGeneralDeserializer deserializer) {\r
-        registry.registerDeserializer(new EnhancedMessageCodeKey(version, oxmClass,\r
-                oxmField, MatchEntries.class), deserializer);\r
+        MatchEntryDeserializerKey key = new MatchEntryDeserializerKey(version, oxmClass, oxmField);\r
+        key.setExperimenterId(null);\r
+        registry.registerDeserializer(key, deserializer);\r
     }\r
-}\r
+}
\ No newline at end of file
diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/MatchEntrySerializerRegistryHelper.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/MatchEntrySerializerRegistryHelper.java
new file mode 100644 (file)
index 0000000..d3be60a
--- /dev/null
@@ -0,0 +1,49 @@
+/*\r
+ * Copyright (c) 2013 Pantheon Technologies s.r.o. and others.  All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.openflowjava.protocol.impl.util;\r
+\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.OFGeneralSerializer;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.keys.MatchEntrySerializerKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Clazz;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MatchField;\r
+\r
+/**\r
+ * @author michal.polkorab\r
+ * @param <OXM_CLASS> OXM class\r
+ */\r
+public class MatchEntrySerializerRegistryHelper<OXM_CLASS extends Clazz> {\r
+\r
+    private short version;\r
+    private Class<OXM_CLASS> generalClass;\r
+    private SerializerRegistry serializerRegistry;\r
+\r
+    /**\r
+     * @param version Openflow wire version\r
+     * @param generalClass\r
+     * @param serializerRegistry\r
+     */\r
+    public MatchEntrySerializerRegistryHelper(short version, Class<OXM_CLASS> generalClass,\r
+            SerializerRegistry serializerRegistry) {\r
+        this.version = version;\r
+        this.generalClass = generalClass;\r
+        this.serializerRegistry = serializerRegistry;\r
+    }\r
+\r
+    /**\r
+     * Registers given serializer\r
+     * @param specificClass \r
+     * @param serializer \r
+     */\r
+    public <OXM_FIELD extends MatchField> void registerSerializer(\r
+            Class<OXM_FIELD> specificClass, OFGeneralSerializer serializer) {\r
+        MatchEntrySerializerKey<?, ?> key = new MatchEntrySerializerKey<>(version, generalClass, specificClass);\r
+        key.setExperimenterId(null);\r
+        serializerRegistry.registerSerializer(key, serializer);\r
+    }\r
+}\r
index e2196daf12377cff9621fa80720e88391c7e28ef..d37c0a2b963b7da1c657955f1a34610caef37a2e 100644 (file)
@@ -12,13 +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;
@@ -75,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);
         }
     }
index 430d836ee715fbb559f24ce64b4495779e845b12..0fc660835421ece6b210c2e1da381c61e2ab8912 100644 (file)
@@ -31,12 +31,13 @@ public class SimpleDeserializerRegistryHelper {
 \r
     /**\r
      * @param code code / value to distinguish between deserializers\r
+     * @param experimenterID TODO\r
      * @param deserializedObjectClass class of object that will be deserialized\r
      *  by given deserializer\r
      * @param deserializer deserializer instance\r
      */\r
     public void registerDeserializer(int code,\r
-            Class<?> deserializedObjectClass, OFGeneralDeserializer deserializer) {\r
+            Long experimenterID, Class<?> deserializedObjectClass, OFGeneralDeserializer deserializer) {\r
         registry.registerDeserializer(new MessageCodeKey(version, code,\r
                 deserializedObjectClass), deserializer);\r
     }\r
similarity index 80%
rename from openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/EnhancedTypeKeyMaker.java
rename to openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/TypeKeyMaker.java
index 3add8156d47d40073bbf072576e9a6d7f5cb6d80..4e17dfcd96111bc90c7f34612fc6d39f06fb32e5 100644 (file)
@@ -8,19 +8,19 @@
 \r
 package org.opendaylight.openflowjava.protocol.impl.util;\r
 \r
-import org.opendaylight.openflowjava.protocol.api.extensibility.EnhancedMessageTypeKey;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey;\r
 \r
 /**\r
  * @author michal.polkorab\r
  * @param <T> \r
  */\r
-public interface EnhancedTypeKeyMaker<T> {\r
+public interface TypeKeyMaker<T> {\r
 \r
     /**\r
      * @param entry\r
      * @return key that will be used for serializer lookup in \r
      * the serializer registry\r
      */\r
-    public abstract EnhancedMessageTypeKey<?,?> make(T entry);\r
+    public abstract MessageTypeKey<?> make(T entry);\r
 \r
 }\r
diff --git a/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/TypeKeyMakerFactory.java b/openflow-protocol-impl/src/main/java/org/opendaylight/openflowjava/protocol/impl/util/TypeKeyMakerFactory.java
new file mode 100644 (file)
index 0000000..13d68da
--- /dev/null
@@ -0,0 +1,86 @@
+/*\r
+ * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+\r
+package org.opendaylight.openflowjava.protocol.impl.util;\r
+\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.keys.ActionSerializerKey;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.keys.InstructionSerializerKey;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.keys.MatchEntrySerializerKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterAction;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterInstruction;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterMatchEntry;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.Experimenter;\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.common.instruction.rev130731.instructions.grouping.Instruction;\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
+ * Creates KeyMakers\r
+ * @author michal.polkorab\r
+ */\r
+public abstract class TypeKeyMakerFactory {\r
+\r
+    /**\r
+     * @param version openflow wire version that shall be used\r
+     *  in lookup key\r
+     * @return lookup key\r
+     */\r
+    public static TypeKeyMaker<MatchEntries> createMatchEntriesKeyMaker(short version) {\r
+        return new AbstractTypeKeyMaker<MatchEntries>(version) {\r
+            @Override\r
+            public MatchEntrySerializerKey<?, ?> make(MatchEntries entry) {\r
+                MatchEntrySerializerKey<?, ?> key;\r
+                key = new MatchEntrySerializerKey<>(getVersion(), entry.getOxmClass(),\r
+                        entry.getOxmMatchField());\r
+                if (entry.getOxmClass().equals(ExperimenterClass.class)) {\r
+                    key.setExperimenterId(entry.getAugmentation(ExperimenterMatchEntry.class)\r
+                            .getExperimenter());\r
+                    return key;\r
+                }\r
+                key.setExperimenterId(null);\r
+                return key;\r
+            }\r
+        };\r
+    }\r
+\r
+    /**\r
+     * @param version openflow wire version that shall be used\r
+     *  in lookup key\r
+     * @return lookup key\r
+     */\r
+    public static TypeKeyMaker<Action> createActionKeyMaker(short version) {\r
+        return new AbstractTypeKeyMaker<Action>(version) {\r
+            @Override\r
+            public ActionSerializerKey<?> make(Action entry) {\r
+                if (entry.getType().equals(Experimenter.class)) {\r
+                    return new ActionSerializerKey<>(getVersion(), entry.getType(), entry.getAugmentation(ExperimenterAction.class).getExperimenter());\r
+                }\r
+                return new ActionSerializerKey<>(getVersion(), entry.getType(), null);\r
+            }\r
+        };\r
+    }\r
+\r
+    /**\r
+     * @param version openflow wire version that shall be used\r
+     *  in lookup key\r
+     * @return lookup key\r
+     */\r
+    public static TypeKeyMaker<Instruction> createInstructionKeyMaker(short version) {\r
+        return new AbstractTypeKeyMaker<Instruction>(version) {\r
+            @Override\r
+            public InstructionSerializerKey<?> make(Instruction entry) {\r
+                if (entry.getType().equals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common\r
+                        .instruction.rev130731.Experimenter.class)) {\r
+                    return new InstructionSerializerKey<>(getVersion(), entry.getType(), entry.getAugmentation(ExperimenterInstruction.class).getExperimenter());\r
+                }\r
+                return new InstructionSerializerKey<>(getVersion(), entry.getType(), null);\r
+            }\r
+        };\r
+    }\r
+}\r
index 94d2a95663ad8767e0db5e02e649c522ee2c1d15..5e6017a9c07e8e05a348cb55892238bf47178cf9 100644 (file)
@@ -18,10 +18,10 @@ import org.junit.Test;
 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;
 import org.opendaylight.openflowjava.protocol.api.extensibility.MessageCodeKey;
 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
 import org.opendaylight.openflowjava.protocol.impl.deserialization.DeserializerRegistryImpl;
 import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;
 import org.opendaylight.openflowjava.util.ByteBufUtils;
-import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.EthertypeAction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.GroupIdAction;
index 422113fafad848ad76b5347534db11f0c7244da0..b5ce1806fe887ab4ea3d911246ef82eb72ef45e7 100644 (file)
@@ -15,9 +15,9 @@ import org.junit.Assert;
 import org.junit.Before;\r
 import org.junit.Test;\r
 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;\r
-import org.opendaylight.openflowjava.protocol.api.extensibility.EnhancedMessageCodeKey;\r
 import org.opendaylight.openflowjava.protocol.api.extensibility.MessageCodeKey;\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.openflowjava.protocol.impl.deserialization.DeserializerRegistryImpl;\r
 import org.opendaylight.openflowjava.util.ByteBufUtils;\r
@@ -122,8 +122,10 @@ public class MatchDeserializerTest {
     public void testIpv4Address() {\r
         ByteBuf buffer = ByteBufUtils.hexStringToByteBuf("80 00 18 04 00 01 02 03");\r
 \r
-        OFDeserializer<MatchEntries> entryDeserializer = registry.getDeserializer(\r
-                new EnhancedMessageCodeKey(EncodeConstants.OF13_VERSION_ID, 0x8000, 12, MatchEntries.class));\r
+        MatchEntryDeserializerKey key = new MatchEntryDeserializerKey(EncodeConstants.OF13_VERSION_ID,\r
+                0x8000, 12);\r
+        key.setExperimenterId(null);\r
+        OFDeserializer<MatchEntries> entryDeserializer = registry.getDeserializer(key);\r
         MatchEntries entry = entryDeserializer.deserialize(buffer);\r
         Assert.assertEquals("Wrong Ipv4 address format", new Ipv4Address("0.1.2.3"),\r
                 entry.getAugmentation(Ipv4AddressMatchEntry.class).getIpv4Address());\r
@@ -136,8 +138,10 @@ public class MatchDeserializerTest {
     public void testIpv6Address() {\r
         ByteBuf buffer = ByteBufUtils.hexStringToByteBuf("80 00 34 10 00 00 00 01 00 02 00 03 00 04 00 05 00 06 0F 07");\r
         \r
-        OFDeserializer<MatchEntries> entryDeserializer = registry.getDeserializer(\r
-                new EnhancedMessageCodeKey(EncodeConstants.OF13_VERSION_ID, 0x8000, 26, MatchEntries.class));\r
+        MatchEntryDeserializerKey key = new MatchEntryDeserializerKey(EncodeConstants.OF13_VERSION_ID,\r
+                0x8000, 26);\r
+        key.setExperimenterId(null);\r
+        OFDeserializer<MatchEntries> entryDeserializer = registry.getDeserializer(key);\r
         MatchEntries entry = entryDeserializer.deserialize(buffer);\r
         Assert.assertEquals("Wrong Ipv6 address format", new Ipv6Address("0000:0001:0002:0003:0004:0005:0006:0F07"),\r
                 entry.getAugmentation(Ipv6AddressMatchEntry.class).getIpv6Address());\r
index 533bfa40278571ae8cd3282eabcb5495471eca44..4a80e8c325f8c25ed9e4331953fc999d5c0d9a53 100644 (file)
@@ -154,7 +154,7 @@ public class OF10ActionsSerializerTest {
         actions.add(actionBuilder.build());\r
         \r
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
-        ListSerializer.serializeList(actions, EnhancedTypeKeyMakerFactory\r
+        ListSerializer.serializeList(actions, TypeKeyMakerFactory\r
                 .createActionKeyMaker(EncodeConstants.OF10_VERSION_ID), registry, out);\r
         \r
         Assert.assertEquals("Wrong action type", 0, out.readUnsignedShort());\r
index 76784c9258fc9bb3236bd488c28c2dceb7817bab..bcc335c32272c20a6280d189ff6ad30567c19b2a 100644 (file)
@@ -177,7 +177,7 @@ public class OF13ActionsSerializerTest {
         actions.add(actionBuilder.build());\r
         \r
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
-        ListSerializer.serializeList(actions, EnhancedTypeKeyMakerFactory\r
+        ListSerializer.serializeList(actions, TypeKeyMakerFactory\r
                 .createActionKeyMaker(EncodeConstants.OF13_VERSION_ID), registry, out);\r
         \r
         Assert.assertEquals("Wrong action type", 0, out.readUnsignedShort());\r
index 8fbe8b3698062ab4b135e5d362e595f71eed1346..902f8b5819fe638ce21843fa5686018e429ef7d3 100644 (file)
@@ -144,7 +144,7 @@ public class OF13InstructionsSerializerTest {
         instructions.add(builder.build());\r
         \r
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
-        ListSerializer.serializeList(instructions, EnhancedTypeKeyMakerFactory\r
+        ListSerializer.serializeList(instructions, TypeKeyMakerFactory\r
                 .createInstructionKeyMaker(EncodeConstants.OF13_VERSION_ID), registry, out);\r
         \r
         Assert.assertEquals("Wrong instruction type", 1, out.readUnsignedShort());\r