Factory tests back to stable
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / util / ActionsDeserializer.java
index 154a18143979eac4b7f6394a28adac712a83071f..5a55c1b171798c2d25bbe30ed2acc3d829f3cf9c 100644 (file)
@@ -54,110 +54,108 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev13
  * @author michal.polkorab\r
  */\r
 public abstract class ActionsDeserializer {\r
-    private static ActionBuilder actionBuilder = new ActionBuilder();\r
-    private static ActionsListBuilder actionsListBuilder = new ActionsListBuilder();\r
-    private static List<ActionsList> actionsList = new ArrayList<>();\r
+    \r
+    private static final byte ACTION_HEADER_LENGTH = 4;\r
     \r
     /**\r
      * @param input input ByteBuf\r
-     * @param bucketsLength length of buckets\r
+     * @param actionsLength length of buckets\r
      * @return ActionsList\r
      */\r
-    public static List<ActionsList> createActionsList(ByteBuf input, int bucketsLength) {\r
-        final byte BUCKET_HEADER_LENGTH = 16;\r
-        final byte ACTION_HEADER_LENGTH = 4;\r
-        int bucketsCurrentLength = BUCKET_HEADER_LENGTH;\r
-        int actionsLength = 0;\r
-            \r
-            while (bucketsCurrentLength < bucketsLength) {\r
-                switch(input.readUnsignedShort()) {\r
-                case 0: actionsLength = input.readUnsignedShort(); //outputActionLength\r
-                        actionsList.add(ActionsDeserializer.createOutputAction(input));\r
-                        break;\r
-                case 11: \r
-                         actionsLength = input.readUnsignedShort();//empty header length\r
-                         actionsList.add(ActionsDeserializer.createCopyTtlOutAction(input));\r
-                         break;\r
-                         \r
-                case 12: \r
-                         actionsLength = input.readUnsignedShort();//empty header length\r
-                         actionsList.add(ActionsDeserializer.createCopyTtlInAction(input));\r
-                         break;\r
-                \r
-                case 15: \r
-                         actionsLength = input.readUnsignedShort();//empty header length\r
-                         actionsList.add(ActionsDeserializer.createSetMplsTtlAction(input));\r
-                         break;\r
-                         \r
-                case 16:                              \r
-                         actionsLength = input.readUnsignedShort();//empty header length\r
-                         actionsList.add(ActionsDeserializer.createDecMplsTtlOutAction(input));\r
-                         break;\r
-                         \r
-                case 17: \r
-                         actionsLength = input.readUnsignedShort();\r
-                         actionsList.add(ActionsDeserializer.createPushVlanAction(input));\r
-                         break;\r
-                         \r
-                case 18:                              \r
-                         actionsLength = input.readUnsignedShort();//empty header length\r
-                         actionsList.add(ActionsDeserializer.createPopVlanAction(input));\r
-                         break;\r
-                         \r
-                case 19: \r
-                         actionsLength = input.readUnsignedShort();//8\r
-                         actionsList.add(ActionsDeserializer.createPushMplsAction(input));\r
-                         break;\r
-                         \r
-                case 20: \r
-                         actionsLength = input.readUnsignedShort();//8\r
-                         actionsList.add(ActionsDeserializer.createPopMplsAction(input));\r
-                         break;\r
-                         \r
-                case 21: \r
-                         actionsLength = input.readUnsignedShort();\r
-                         actionsList.add(ActionsDeserializer.createSetQueueAction(input));\r
-                         break;\r
-                         \r
-                case 22: \r
-                        actionsLength = input.readUnsignedShort();//8\r
-                        actionsList.add(ActionsDeserializer.createGroupAction(input));\r
-                        break;\r
-                        \r
-                case 23: \r
-                         actionsLength = input.readUnsignedShort();//8\r
-                         actionsList.add(ActionsDeserializer.createSetNwTtlAction(input));\r
-                         break;\r
-                        \r
-                case 24:                              \r
-                        actionsLength = input.readUnsignedShort();//empty header length\r
-                        actionsList.add(ActionsDeserializer.createDecNwTtlAction(input));\r
-                        break;\r
-                        \r
-                case 25:\r
-                        actionsLength = input.readUnsignedShort();//8\r
-                        actionsList.add(ActionsDeserializer.createSetFieldAction(input,\r
-                                actionsLength - ACTION_HEADER_LENGTH));\r
-                        break; \r
-                case 26: \r
-                         actionsLength = input.readUnsignedShort();//8\r
-                         actionsList.add(ActionsDeserializer.createPushPbbAction(input));\r
-                         break;\r
-                         \r
-                case 27:                              \r
-                        actionsLength = input.readUnsignedShort();//empty header length\r
-                        actionsList.add(ActionsDeserializer.createPopPbbAction(input));\r
-                        break;\r
-                        \r
-                case 0xFFFF: \r
-                        actionsLength = input.readUnsignedShort();\r
-                        actionsList.add(ActionsDeserializer.createExperimenterAction(input));\r
-                        break;\r
-                default: \r
-                         break;\r
-                }\r
-                bucketsCurrentLength += actionsLength;\r
-            } \r
+    public static List<ActionsList> createActionsList(ByteBuf input, int actionsLength) {\r
+        ActionsListBuilder actionsListBuilder = new ActionsListBuilder();\r
+        List<ActionsList> actionsList = new ArrayList<>();\r
+        int length = 0;\r
+        while (length < actionsLength) {\r
+            int currentActionLength = 0;\r
+            switch(input.readUnsignedShort()) {\r
+            case 0: currentActionLength = input.readUnsignedShort(); //outputActionLength\r
+            actionsList.add(ActionsDeserializer.createOutputAction(input, actionsListBuilder));\r
+            break;\r
+            case 11: \r
+                currentActionLength = input.readUnsignedShort();//empty header length\r
+                actionsList.add(ActionsDeserializer.createCopyTtlOutAction(input, actionsListBuilder));\r
+                break;\r
+\r
+            case 12: \r
+                currentActionLength = input.readUnsignedShort();//empty header length\r
+                actionsList.add(ActionsDeserializer.createCopyTtlInAction(input, actionsListBuilder));\r
+                break;\r
+\r
+            case 15: \r
+                currentActionLength = input.readUnsignedShort();//empty header length\r
+                actionsList.add(ActionsDeserializer.createSetMplsTtlAction(input, actionsListBuilder));\r
+                break;\r
+\r
+            case 16:                              \r
+                currentActionLength = input.readUnsignedShort();//empty header length\r
+                actionsList.add(ActionsDeserializer.createDecMplsTtlOutAction(input, actionsListBuilder));\r
+                break;\r
+\r
+            case 17: \r
+                currentActionLength = input.readUnsignedShort();\r
+                actionsList.add(ActionsDeserializer.createPushVlanAction(input, actionsListBuilder));\r
+                break;\r
+\r
+            case 18:                              \r
+                currentActionLength = input.readUnsignedShort();//empty header length\r
+                actionsList.add(ActionsDeserializer.createPopVlanAction(input, actionsListBuilder));\r
+                break;\r
+\r
+            case 19: \r
+                currentActionLength = input.readUnsignedShort();//8\r
+                actionsList.add(ActionsDeserializer.createPushMplsAction(input, actionsListBuilder));\r
+                break;\r
+\r
+            case 20: \r
+                currentActionLength = input.readUnsignedShort();//8\r
+                actionsList.add(ActionsDeserializer.createPopMplsAction(input, actionsListBuilder));\r
+                break;\r
+\r
+            case 21: \r
+                currentActionLength = input.readUnsignedShort();\r
+                actionsList.add(ActionsDeserializer.createSetQueueAction(input, actionsListBuilder));\r
+                break;\r
+\r
+            case 22: \r
+                currentActionLength = input.readUnsignedShort();//8\r
+                actionsList.add(ActionsDeserializer.createGroupAction(input, actionsListBuilder));\r
+                break;\r
+\r
+            case 23: \r
+                currentActionLength = input.readUnsignedShort();//8\r
+                actionsList.add(ActionsDeserializer.createSetNwTtlAction(input, actionsListBuilder));\r
+                break;\r
+\r
+            case 24:                              \r
+                currentActionLength = input.readUnsignedShort();//empty header length\r
+                actionsList.add(ActionsDeserializer.createDecNwTtlAction(input, actionsListBuilder));\r
+                break;\r
+\r
+            case 25:\r
+                currentActionLength = input.readUnsignedShort();//8\r
+                actionsList.add(ActionsDeserializer.createSetFieldAction(input, actionsListBuilder,\r
+                        currentActionLength));\r
+                break; \r
+            case 26: \r
+                currentActionLength = input.readUnsignedShort();//8\r
+                actionsList.add(ActionsDeserializer.createPushPbbAction(input, actionsListBuilder));\r
+                break;\r
+\r
+            case 27:                              \r
+                currentActionLength = input.readUnsignedShort();//empty header length\r
+                actionsList.add(ActionsDeserializer.createPopPbbAction(input, actionsListBuilder));\r
+                break;\r
+\r
+            case 0xFFFF: \r
+                currentActionLength = input.readUnsignedShort();\r
+                actionsList.add(ActionsDeserializer.createExperimenterAction(input, actionsListBuilder));\r
+                break;\r
+            default: \r
+                break;\r
+            }\r
+            length += currentActionLength;\r
+        } \r
         return actionsList;\r
     }\r
     \r
@@ -165,12 +163,14 @@ public abstract class ActionsDeserializer {
     /**\r
      * @param action input action that contains empty header\r
      * @param in input ByteBuf \r
+     * @param actionsListBuilder \r
      * @return Action\r
      */\r
     private static ActionsList createEmptyHeader(Class<? extends org.opendaylight.yang.gen.v1.\r
-            urn.opendaylight.openflow.common.types.rev130731.Action> action, ByteBuf in) {\r
+            urn.opendaylight.openflow.common.types.rev130731.Action> action,\r
+            ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
         final byte PADDING_IN_ACTIONS_HEADER = 4;\r
-        \r
+        ActionBuilder actionBuilder = new ActionBuilder();\r
         actionBuilder.setType(action);\r
         in.skipBytes(PADDING_IN_ACTIONS_HEADER);\r
         actionsListBuilder.setAction(actionBuilder.build());\r
@@ -179,59 +179,66 @@ public abstract class ActionsDeserializer {
     \r
     /**\r
      * @param in input ByteBuf\r
+     * @param actionsListBuilder \r
      * @return Action\r
      */\r
-    public static ActionsList createCopyTtlInAction(ByteBuf in) {\r
-        return createEmptyHeader(CopyTtlIn.class, in);\r
+    public static ActionsList createCopyTtlInAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+        return createEmptyHeader(CopyTtlIn.class, in, actionsListBuilder);\r
     }\r
     \r
     /**\r
      * @param in input ByteBuf\r
+     * @param actionsListBuilder \r
      * @return Action\r
      */\r
-    public static ActionsList createCopyTtlOutAction(ByteBuf in) {\r
-        return createEmptyHeader(CopyTtlOut.class, in);\r
+    public static ActionsList createCopyTtlOutAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+        return createEmptyHeader(CopyTtlOut.class, in, actionsListBuilder);\r
     }\r
     \r
     /**\r
      * @param in input ByteBuf\r
+     * @param actionsListBuilder \r
      * @return Action\r
      */\r
-    public static ActionsList createDecMplsTtlOutAction(ByteBuf in) {\r
-        return createEmptyHeader(DecMplsTtl.class, in);\r
+    public static ActionsList createDecMplsTtlOutAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+        return createEmptyHeader(DecMplsTtl.class, in, actionsListBuilder);\r
     }\r
     \r
     /**\r
      * @param in input ByteBuf\r
+     * @param actionsListBuilder \r
      * @return Action\r
      */\r
-    public static ActionsList createPopVlanAction(ByteBuf in) {\r
-        return createEmptyHeader(PopVlan.class, in);\r
+    public static ActionsList createPopVlanAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+        return createEmptyHeader(PopVlan.class, in, actionsListBuilder);\r
     }\r
     \r
     /**\r
      * @param in input ByteBuf\r
+     * @param actionsListBuilder \r
      * @return Action\r
      */\r
-    public static ActionsList createDecNwTtlAction(ByteBuf in) {\r
-        return createEmptyHeader(DecNwTtl.class, in);\r
+    public static ActionsList createDecNwTtlAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+        return createEmptyHeader(DecNwTtl.class, in, actionsListBuilder);\r
     }\r
     \r
     /**\r
      * @param in input ByteBuf\r
+     * @param actionsListBuilder \r
      * @return Action\r
      */\r
-    public static ActionsList createPopPbbAction(ByteBuf in) {\r
-        return createEmptyHeader(PopPbb.class, in);\r
+    public static ActionsList createPopPbbAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+        return createEmptyHeader(PopPbb.class, in, actionsListBuilder);\r
     }\r
     \r
     /**\r
      * @param in input ByteBuf\r
+     * @param actionsListBuilder \r
      * @return ActionList\r
      */\r
-    public static ActionsList createOutputAction(ByteBuf in) {\r
+    public static ActionsList createOutputAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
         final byte PADDING_IN_OUTPUT_ACTIONS_HEADER = 6;\r
-        \r
+        ActionBuilder actionBuilder = new ActionBuilder();\r
         actionBuilder.setType(Output.class);\r
         PortActionBuilder port = new PortActionBuilder();\r
         port.setPort(new PortNumber(in.readUnsignedInt()));\r
@@ -247,11 +254,12 @@ public abstract class ActionsDeserializer {
     \r
     /**\r
      * @param in input ByteBuf\r
+     * @param actionsListBuilder \r
      * @return ActionList\r
      */\r
-    public static ActionsList createSetMplsTtlAction(ByteBuf in) {\r
+    public static ActionsList createSetMplsTtlAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
         final byte PADDING_IN_SET_MPLS_TTL_ACTIONS_HEADER = 3;\r
-        \r
+        ActionBuilder actionBuilder = new ActionBuilder();\r
         actionBuilder.setType(SetMplsTtl.class);\r
         MplsTtlActionBuilder mplsTtl = new MplsTtlActionBuilder();\r
         mplsTtl.setMplsTtl(in.readUnsignedByte());\r
@@ -265,11 +273,14 @@ public abstract class ActionsDeserializer {
     /**\r
      * @param action input action that contains push\r
      * @param in input ByteBuf\r
+     * @param actionsListBuilder \r
      * @return ActionList\r
      */\r
-    private static ActionsList createPushAction(Class<? extends org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.Action> action, ByteBuf in) {\r
+    private static ActionsList createPushAction(Class<? extends org.opendaylight.yang.gen.\r
+            v1.urn.opendaylight.openflow.common.types.rev130731.Action> action,\r
+            ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
         final byte PADDING_IN_PUSH_VLAN_ACTIONS_HEADER = 2;\r
-        \r
+        ActionBuilder actionBuilder = new ActionBuilder();\r
         actionBuilder.setType(action);\r
         EthertypeActionBuilder etherType = new EthertypeActionBuilder();\r
         etherType.setEthertype(new EtherType(in.readUnsignedShort()));\r
@@ -282,41 +293,47 @@ public abstract class ActionsDeserializer {
     \r
     /**\r
      * @param in input ByteBuf\r
+     * @param actionsListBuilder \r
      * @return Action\r
      */\r
-    public static ActionsList createPushVlanAction(ByteBuf in) {\r
-        return createPushAction(PushVlan.class, in);\r
+    public static ActionsList createPushVlanAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+        return createPushAction(PushVlan.class, in, actionsListBuilder);\r
     }\r
     \r
     /**\r
      * @param in input ByteBuf\r
+     * @param actionsListBuilder \r
      * @return Action\r
      */\r
-    public static ActionsList createPushMplsAction(ByteBuf in) {\r
-        return createPushAction(PushMpls.class, in);\r
+    public static ActionsList createPushMplsAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+        return createPushAction(PushMpls.class, in, actionsListBuilder);\r
     }\r
     \r
     /**\r
      * @param in input ByteBuf\r
+     * @param actionsListBuilder \r
      * @return Action\r
      */\r
-    public static ActionsList createPopMplsAction(ByteBuf in) {\r
-        return createPushAction(PopMpls.class, in);\r
+    public static ActionsList createPopMplsAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+        return createPushAction(PopMpls.class, in, actionsListBuilder);\r
     }\r
     \r
     /**\r
      * @param in input ByteBuf\r
+     * @param actionsListBuilder \r
      * @return Action\r
      */\r
-    public static ActionsList createPushPbbAction(ByteBuf in) {\r
-        return createPushAction(PushPbb.class, in);\r
+    public static ActionsList createPushPbbAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+        return createPushAction(PushPbb.class, in, actionsListBuilder);\r
     }\r
     \r
     /**\r
      * @param in input ByteBuf\r
+     * @param actionsListBuilder \r
      * @return ActionList\r
      */\r
-    public static ActionsList createSetQueueAction(ByteBuf in) {\r
+    public static ActionsList createSetQueueAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+        ActionBuilder actionBuilder = new ActionBuilder();\r
         actionBuilder.setType(SetQueue.class);\r
         QueueIdActionBuilder queueId = new QueueIdActionBuilder();\r
         queueId.setQueueId(in.readUnsignedInt());\r
@@ -328,9 +345,11 @@ public abstract class ActionsDeserializer {
     \r
     /**\r
      * @param in input ByteBuf\r
+     * @param actionsListBuilder \r
      * @return ActionList\r
      */\r
-    public static ActionsList createGroupAction(ByteBuf in) {\r
+    public static ActionsList createGroupAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+        ActionBuilder actionBuilder = new ActionBuilder();\r
         actionBuilder.setType(Group.class);\r
         GroupIdActionBuilder group = new GroupIdActionBuilder();\r
         group.setGroupId(in.readUnsignedInt());\r
@@ -342,9 +361,11 @@ public abstract class ActionsDeserializer {
     \r
     /**\r
      * @param in input ByteBuf\r
+     * @param actionsListBuilder \r
      * @return ActionList\r
      */\r
-    public static ActionsList createExperimenterAction(ByteBuf in) {\r
+    public static ActionsList createExperimenterAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
+        ActionBuilder actionBuilder = new ActionBuilder();\r
         actionBuilder.setType(Experimenter.class);\r
         ExperimenterActionBuilder experimenter = new ExperimenterActionBuilder();\r
         experimenter.setExperimenter(in.readUnsignedInt());\r
@@ -356,11 +377,12 @@ public abstract class ActionsDeserializer {
     \r
     /**\r
      * @param in input ByteBuf\r
+     * @param actionsListBuilder \r
      * @return ActionList\r
      */\r
-    public static ActionsList createSetNwTtlAction(ByteBuf in) {\r
+    public static ActionsList createSetNwTtlAction(ByteBuf in, ActionsListBuilder actionsListBuilder) {\r
         final byte PADDING_IN_NW_TTL_ACTIONS_HEADER = 3;\r
-        \r
+        ActionBuilder actionBuilder = new ActionBuilder();\r
         actionBuilder.setType(SetNwTtl.class);\r
         NwTtlActionBuilder nwTtl = new NwTtlActionBuilder();\r
         nwTtl.setNwTtl(in.readUnsignedByte());\r
@@ -373,13 +395,15 @@ public abstract class ActionsDeserializer {
     \r
     /**\r
      * @param in input ByteBuf\r
+     * @param actionsListBuilder \r
      * @param actionLength length of action\r
      * @return ActionList\r
      */\r
-    public static ActionsList createSetFieldAction(ByteBuf in, int actionLength) {\r
+    public static ActionsList createSetFieldAction(ByteBuf in, ActionsListBuilder actionsListBuilder, int actionLength) {\r
+        ActionBuilder actionBuilder = new ActionBuilder();\r
         actionBuilder.setType(SetField.class);\r
         OxmFieldsActionBuilder matchEntries = new OxmFieldsActionBuilder();\r
-        matchEntries.setMatchEntries(MatchDeserializer.createMatchEntries(in, actionLength));\r
+        matchEntries.setMatchEntries(MatchDeserializer.createMatchEntry(in, actionLength  - ACTION_HEADER_LENGTH));\r
         actionBuilder.addAugmentation(OxmFieldsAction.class, matchEntries.build());\r
         actionsListBuilder.setAction(actionBuilder.build());\r
         \r