Bug 2756 - Instruction model update
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / deserialization / instruction / GoToTableInstructionDeserializer.java
index 0940aae99f7ee4af2ee377e244968add8944f362..31191b1d70478398c586414192c7ea0f5a53d691 100644 (file)
@@ -10,11 +10,12 @@ package org.opendaylight.openflowjava.protocol.impl.deserialization.instruction;
 
 import io.netty.buffer.ByteBuf;
 
+import org.opendaylight.openflowjava.protocol.api.extensibility.HeaderDeserializer;
+import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
 import org.opendaylight.openflowjava.protocol.impl.util.InstructionConstants;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.TableIdInstruction;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.TableIdInstructionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.GotoTable;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instruction.grouping.instruction.choice.GotoTableCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instruction.grouping.instruction.choice._goto.table._case.GotoTableBuilder;
 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.instruction.rev130731.instructions.grouping.InstructionBuilder;
 
@@ -22,18 +23,27 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction
  * @author michal.polkorab
  *
  */
-public class GoToTableInstructionDeserializer extends AbstractInstructionDeserializer {
+public class GoToTableInstructionDeserializer  implements OFDeserializer<Instruction>,
+        HeaderDeserializer<Instruction> {
 
     @Override
     public Instruction deserialize(ByteBuf input) {
         InstructionBuilder builder = new InstructionBuilder();
-        input.skipBytes(EncodeConstants.SIZE_OF_SHORT_IN_BYTES);
-        builder.setType(GotoTable.class);
-        input.skipBytes(EncodeConstants.SIZE_OF_SHORT_IN_BYTES);
-        TableIdInstructionBuilder tableBuilder = new TableIdInstructionBuilder();
-        tableBuilder.setTableId(input.readUnsignedByte());
-        builder.addAugmentation(TableIdInstruction.class, tableBuilder.build());
+        GotoTableCaseBuilder caseBuilder = new GotoTableCaseBuilder();
+        GotoTableBuilder instructionBuilder = new GotoTableBuilder();
+        input.skipBytes(2 * EncodeConstants.SIZE_OF_SHORT_IN_BYTES);
+        instructionBuilder.setTableId(input.readUnsignedByte());
+        caseBuilder.setGotoTable(instructionBuilder.build());
+        builder.setInstructionChoice(caseBuilder.build());
         input.skipBytes(InstructionConstants.PADDING_IN_GOTO_TABLE);
         return builder.build();
     }
+
+    @Override
+    public Instruction deserializeHeader(ByteBuf input) {
+        InstructionBuilder builder = new InstructionBuilder();
+        input.skipBytes(2 * EncodeConstants.SIZE_OF_SHORT_IN_BYTES);
+        builder.setInstructionChoice(new GotoTableCaseBuilder().build());
+        return builder.build();
+    }
 }