Refactor AbstractOxmMatchEntryDeserializer
[openflowplugin.git] / openflowjava / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / deserialization / match / OxmIpv6FlabelDeserializer.java
index aa588961691143fba5c1d5f18642ac42b610ed9c..1001339324f42b3cca226f96feca1d92affd3fd6 100644 (file)
@@ -7,15 +7,11 @@
  */
 package org.opendaylight.openflowjava.protocol.impl.deserialization.match;
 
+import static org.opendaylight.yangtools.yang.common.netty.ByteBufUtils.readUint32;
+
 import io.netty.buffer.ByteBuf;
-import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
-import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6FlowLabel;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6Flabel;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchField;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OpenflowBasicClass;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OxmClassBase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntryBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6FlabelCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.flabel._case.Ipv6FlabelBuilder;
@@ -25,36 +21,18 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.matc
  *
  * @author michal.polkorab
  */
-public class OxmIpv6FlabelDeserializer extends AbstractOxmMatchEntryDeserializer
-        implements OFDeserializer<MatchEntry> {
-
-    @Override
-    public MatchEntry deserialize(ByteBuf input) {
-        MatchEntryBuilder builder = processHeader(getOxmClass(), getOxmField(), input);
-        addIpv6FlabelValue(input, builder);
-        return builder.build();
+public class OxmIpv6FlabelDeserializer extends AbstractOxmMatchEntryDeserializer {
+    public OxmIpv6FlabelDeserializer() {
+        super(Ipv6Flabel.class);
     }
 
-    private static void addIpv6FlabelValue(ByteBuf input, MatchEntryBuilder builder) {
-        Ipv6FlabelCaseBuilder caseBuilder = new Ipv6FlabelCaseBuilder();
-        Ipv6FlabelBuilder labelBuilder = new Ipv6FlabelBuilder();
-        labelBuilder.setIpv6Flabel(new Ipv6FlowLabel(input.readUnsignedInt()));
+    @Override
+    protected void deserialize(final ByteBuf input, final MatchEntryBuilder builder) {
+        final Ipv6FlabelBuilder labelBuilder = new Ipv6FlabelBuilder()
+                .setIpv6Flabel(new Ipv6FlowLabel(readUint32(input)));
         if (builder.isHasMask()) {
-            labelBuilder.setMask(OxmDeserializerHelper.convertMask(input,
-                    EncodeConstants.SIZE_OF_INT_IN_BYTES));
+            labelBuilder.setMask(OxmDeserializerHelper.convertMask(input, Integer.BYTES));
         }
-        caseBuilder.setIpv6Flabel(labelBuilder.build());
-        builder.setMatchEntryValue(caseBuilder.build());
+        builder.setMatchEntryValue(new Ipv6FlabelCaseBuilder().setIpv6Flabel(labelBuilder.build()).build());
     }
-
-    @Override
-    protected Class<? extends MatchField> getOxmField() {
-        return Ipv6Flabel.class;
-    }
-
-    @Override
-    protected Class<? extends OxmClassBase> getOxmClass() {
-        return OpenflowBasicClass.class;
-    }
-
 }