Merge "OF1.3 matchSerializer (Ipv6 address) fix + test"
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / deserialization / factories / MultipartReplyMessageFactory.java
index 15944d6bb896b431f0ed96098ecb060dab1f939a..4bf6d21a8aaa13145a28be304e9806281e1b0b15 100644 (file)
@@ -10,6 +10,7 @@ import java.util.List;
 import org.opendaylight.openflowjava.protocol.impl.deserialization.OFDeserializer;\r
 import org.opendaylight.openflowjava.protocol.impl.util.ActionsDeserializer;\r
 import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;\r
+import org.opendaylight.openflowjava.protocol.impl.util.EncodeConstants;\r
 import org.opendaylight.openflowjava.protocol.impl.util.InstructionsDeserializer;\r
 import org.opendaylight.openflowjava.protocol.impl.util.MatchDeserializer;\r
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;\r
@@ -107,8 +108,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.table.features.TableFeaturesBuilder;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.table.features.properties.TableFeatureProperties;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.table.features.properties.TableFeaturePropertiesBuilder;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
 \r
 /**\r
  * Translates MultipartReply messages\r
@@ -117,9 +116,38 @@ import org.slf4j.LoggerFactory;
  */\r
 public class MultipartReplyMessageFactory implements OFDeserializer<MultipartReplyMessage> {\r
 \r
-    private static final Logger LOGGER = LoggerFactory\r
-            .getLogger(MultipartReplyMessageFactory.class);\r
     private static final byte PADDING_IN_MULTIPART_REPLY_HEADER = 4;\r
+    private static final int DESC_STR_LEN = 256;\r
+    private static final int SERIAL_NUM_LEN = 32;\r
+    private static final byte PADDING_IN_FLOW_STATS_HEADER_01 = 1;\r
+    private static final byte PADDING_IN_FLOW_STATS_HEADER_02 = 4;\r
+    private static final byte PADDING_IN_AGGREGATE_HEADER = 4;\r
+    private static final byte PADDING_IN_TABLE_HEADER = 3;\r
+    private static final byte PADDING_IN_MULTIPART_REPLY_TABLE_FEATURES = 5;\r
+    private static final byte MAX_TABLE_NAME_LENGTH = 32;\r
+    private static final byte MULTIPART_REPLY_TABLE_FEATURES_STRUCTURE_LENGTH = 64;\r
+    private static final byte COMMON_PROPERTY_LENGTH = 4;\r
+    private static final byte PADDING_IN_PORT_STATS_HEADER = 4;\r
+    private static final byte PADDING_IN_GROUP_HEADER_01 = 2;\r
+    private static final byte PADDING_IN_GROUP_HEADER_02 = 4;\r
+    private static final byte BUCKET_COUNTER_LENGTH = 16;\r
+    private static final byte GROUP_BODY_LENGTH = 40;\r
+    private static final byte PADDING_IN_METER_FEATURES_HEADER = 2;\r
+    private static final byte PADDING_IN_METER_STATS_HEADER = 6;\r
+    private static final byte METER_BAND_STATS_LENGTH = 16;\r
+    private static final byte METER_BODY_LENGTH = 40;\r
+    private static final byte METER_CONFIG_LENGTH = 8;\r
+    private static final byte PADDING_IN_METER_BAND_DROP_HEADER = 4;\r
+    private static final byte PADDING_IN_METER_BAND_DSCP_HEADER = 3;\r
+    private static final byte PADDING_IN_PORT_DESC_HEADER_01 = 4;\r
+    private static final byte PADDING_IN_PORT_DESC_HEADER_02 = 2;\r
+    private static final byte MAX_PORT_NAME_LEN = 16;\r
+    private static final int GROUP_TYPES = 4;\r
+    private static final byte PADDING_IN_GROUP_DESC_HEADER = 1;\r
+    private static final byte PADDING_IN_BUCKETS_HEADER = 4;\r
+    private static final byte GROUP_DESC_HEADER_LENGTH = 8;\r
+    private static final byte BUCKETS_HEADER_LENGTH = 16;\r
+\r
     \r
     private static MultipartReplyMessageFactory instance;\r
 \r
@@ -186,8 +214,6 @@ public class MultipartReplyMessageFactory implements OFDeserializer<MultipartRep
     }\r
     \r
     private static MultipartReplyDesc setDesc(ByteBuf input) {\r
-        final int DESC_STR_LEN = 256;\r
-        final int SERIAL_NUM_LEN = 32;\r
         MultipartReplyDescBuilder descBuilder = new MultipartReplyDescBuilder();\r
         byte[] mfrDescBytes = new byte[DESC_STR_LEN];\r
         input.readBytes(mfrDescBytes);\r
@@ -213,13 +239,11 @@ public class MultipartReplyMessageFactory implements OFDeserializer<MultipartRep
     }\r
     \r
     private static MultipartReplyFlow setFlow(ByteBuf input) {\r
-        final byte PADDING_IN_FLOW_STATS_HEADER_01 = 1;\r
-        final byte PADDING_IN_FLOW_STATS_HEADER_02 = 4;\r
         MultipartReplyFlowBuilder flowBuilder = new MultipartReplyFlowBuilder();\r
         List<FlowStats> flowStatsList = new ArrayList<>();\r
         while (input.readableBytes() > 0) {\r
             FlowStatsBuilder flowStatsBuilder = new FlowStatsBuilder();\r
-            input.skipBytes(Short.SIZE / Byte.SIZE);\r
+            input.skipBytes(EncodeConstants.SIZE_OF_SHORT_IN_BYTES);\r
             flowStatsBuilder.setTableId(input.readUnsignedByte());\r
             input.skipBytes(PADDING_IN_FLOW_STATS_HEADER_01);\r
             flowStatsBuilder.setDurationSec(input.readUnsignedInt());\r
@@ -256,7 +280,6 @@ public class MultipartReplyMessageFactory implements OFDeserializer<MultipartRep
     }\r
     \r
     private static MultipartReplyAggregate setAggregate(ByteBuf input) {\r
-        final byte PADDING_IN_AGGREGATE_HEADER = 4;\r
         MultipartReplyAggregateBuilder builder = new MultipartReplyAggregateBuilder();\r
         byte[] packetCount = new byte[Long.SIZE/Byte.SIZE];\r
         input.readBytes(packetCount);\r
@@ -270,7 +293,6 @@ public class MultipartReplyMessageFactory implements OFDeserializer<MultipartRep
     }\r
     \r
     private static MultipartReplyTable setTable(ByteBuf input) {\r
-        final byte PADDING_IN_TABLE_HEADER = 3;\r
         MultipartReplyTableBuilder builder = new MultipartReplyTableBuilder();\r
         List<TableStats> tableStatsList = new ArrayList<>();\r
         while (input.readableBytes() > 0) {\r
@@ -291,9 +313,6 @@ public class MultipartReplyMessageFactory implements OFDeserializer<MultipartRep
     }\r
     \r
     private static MultipartReplyTableFeatures setTableFeatures(ByteBuf input) {\r
-        final byte PADDING_IN_MULTIPART_REPLY_TABLE_FEATURES = 5;\r
-        final byte MAX_TABLE_NAME_LENGTH = 32;\r
-        final byte MULTIPART_REPLY_TABLE_FEATURES_STRUCTURE_LENGTH = 64;\r
         MultipartReplyTableFeaturesBuilder builder = new MultipartReplyTableFeaturesBuilder();\r
         List<TableFeatures> features = new ArrayList<>();\r
         while (input.readableBytes() > 0) {\r
@@ -302,10 +321,10 @@ public class MultipartReplyMessageFactory implements OFDeserializer<MultipartRep
             featuresBuilder.setTableId(input.readUnsignedByte());\r
             input.skipBytes(PADDING_IN_MULTIPART_REPLY_TABLE_FEATURES);\r
             featuresBuilder.setName(input.readBytes(MAX_TABLE_NAME_LENGTH).toString());\r
-            byte[] metadataMatch = new byte[Long.SIZE / Byte.SIZE];\r
+            byte[] metadataMatch = new byte[EncodeConstants.SIZE_OF_LONG_IN_BYTES];\r
             input.readBytes(metadataMatch);\r
             featuresBuilder.setMetadataMatch(metadataMatch);\r
-            byte[] metadataWrite = new byte[Long.SIZE / Byte.SIZE];\r
+            byte[] metadataWrite = new byte[EncodeConstants.SIZE_OF_LONG_IN_BYTES];\r
             input.readBytes(metadataWrite);\r
             featuresBuilder.setMetadataWrite(metadataWrite);\r
             featuresBuilder.setConfig(createTableConfig(input.readUnsignedInt()));\r
@@ -324,7 +343,6 @@ public class MultipartReplyMessageFactory implements OFDeserializer<MultipartRep
     }\r
     \r
     private static List<TableFeatureProperties> createTableFeaturesProperties(ByteBuf input, int length) {\r
-        final byte COMMON_PROPERTY_LENGTH = 4;\r
         List<TableFeatureProperties> properties = new ArrayList<>();\r
         int tableFeaturesLength = length;\r
         while (tableFeaturesLength > 0) {\r
@@ -383,7 +401,6 @@ public class MultipartReplyMessageFactory implements OFDeserializer<MultipartRep
     }\r
     \r
     private static MultipartReplyPortStats setPortStats(ByteBuf input) {\r
-        final byte PADDING_IN_PORT_STATS_HEADER = 4;\r
         MultipartReplyPortStatsBuilder builder = new MultipartReplyPortStatsBuilder();\r
         List<PortStats> portStatsList = new ArrayList<>();\r
         while (input.readableBytes() > 0) {\r
@@ -459,10 +476,6 @@ public class MultipartReplyMessageFactory implements OFDeserializer<MultipartRep
     }\r
     \r
     private static MultipartReplyGroup setGroup(ByteBuf input) {\r
-        final byte PADDING_IN_GROUP_HEADER_01 = 2;\r
-        final byte PADDING_IN_GROUP_HEADER_02 = 4;\r
-        final byte BUCKET_COUNTER_LENGTH = 16;\r
-        final byte GROUP_BODY_LENGTH = 40;\r
         MultipartReplyGroupBuilder builder = new MultipartReplyGroupBuilder();\r
         List<GroupStats> groupStatsList = new ArrayList<>();\r
         while (input.readableBytes() > 0) {\r
@@ -501,7 +514,6 @@ public class MultipartReplyMessageFactory implements OFDeserializer<MultipartRep
     }\r
     \r
     private static MultipartReplyMeterFeatures setMeterFeatures(ByteBuf input) {\r
-        final byte PADDING_IN_METER_FEATURES_HEADER = 2;\r
         MultipartReplyMeterFeaturesBuilder builder = new MultipartReplyMeterFeaturesBuilder();\r
         builder.setMaxMeter(input.readUnsignedInt());\r
         builder.setBandTypes(createMeterBandsBitmap(input.readUnsignedInt()));\r
@@ -527,9 +539,6 @@ public class MultipartReplyMessageFactory implements OFDeserializer<MultipartRep
     }\r
     \r
     private static MultipartReplyMeter setMeter(ByteBuf input) {\r
-        final byte PADDING_IN_METER_STATS_HEADER = 6;\r
-        final byte METER_BAND_STATS_LENGTH = 16;\r
-        final byte METER_BODY_LENGTH = 40;\r
         MultipartReplyMeterBuilder builder = new MultipartReplyMeterBuilder();\r
         List<MeterStats> meterStatsList = new ArrayList<>();\r
         while (input.readableBytes() > 0) {\r
@@ -567,9 +576,6 @@ public class MultipartReplyMessageFactory implements OFDeserializer<MultipartRep
     }\r
     \r
     private static MultipartReplyMeterConfig setMeterConfig(ByteBuf input) {\r
-        final byte METER_CONFIG_LENGTH = 8;\r
-        final byte PADDING_IN_METER_BAND_DROP_HEADER = 4;\r
-        final byte PADDING_IN_METER_BAND_DSCP_HEADER = 3;\r
         MultipartReplyMeterConfigBuilder builder = new MultipartReplyMeterConfigBuilder();\r
         List<MeterConfig> meterConfigList = new ArrayList<>();\r
         while (input.readableBytes() > 0) {\r
@@ -634,17 +640,13 @@ public class MultipartReplyMessageFactory implements OFDeserializer<MultipartRep
     }\r
     \r
     private static MultipartReplyPortDesc setPortDesc(ByteBuf input) {\r
-        final byte PADDING_IN_PORT_DESC_HEADER_01 = 4;\r
-        final byte PADDING_IN_PORT_DESC_HEADER_02 = 2;\r
-        final int MAC_ADDRESS_LENGTH = 6;\r
-        final byte MAX_PORT_NAME_LEN = 16;\r
         MultipartReplyPortDescBuilder builder = new MultipartReplyPortDescBuilder();\r
         List<Ports> portsList = new ArrayList<>();\r
         while (input.readableBytes() > 0) {\r
             PortsBuilder portsBuilder = new PortsBuilder();\r
             portsBuilder.setPortNo(input.readUnsignedInt());\r
             input.skipBytes(PADDING_IN_PORT_DESC_HEADER_01);\r
-            byte[] hwAddress = new byte[MAC_ADDRESS_LENGTH];\r
+            byte[] hwAddress = new byte[EncodeConstants.MAC_ADDRESS_LENGTH];\r
             input.readBytes(hwAddress);\r
             portsBuilder.setHwAddr(new MacAddress(ByteBufUtils.macAddressToString(hwAddress)));\r
             input.skipBytes(PADDING_IN_PORT_DESC_HEADER_02);\r
@@ -703,7 +705,6 @@ public class MultipartReplyMessageFactory implements OFDeserializer<MultipartRep
     }\r
     \r
     private static MultipartReplyBody setGroupFeatures(ByteBuf rawMessage) {\r
-        final int GROUP_TYPES = 4;\r
         MultipartReplyGroupFeaturesBuilder featuresBuilder = new MultipartReplyGroupFeaturesBuilder();\r
         featuresBuilder.setTypes(createGroupType(rawMessage.readUnsignedInt()));\r
         featuresBuilder.setCapabilities(createCapabilities(rawMessage.readUnsignedInt()));\r
@@ -761,38 +762,25 @@ public class MultipartReplyMessageFactory implements OFDeserializer<MultipartRep
     }\r
     \r
     private static MultipartReplyGroupDesc setGroupDesc(ByteBuf input) {\r
-        final byte PADDING_IN_GROUP_DESC_HEADER = 1;\r
-        final byte PADDING_IN_BUCKETS_HEADER = 4;\r
-        final byte GROUP_DESC_HEADER_LENGTH = 8;\r
-        final byte BUCKETS_HEADER_LENGTH = 16;\r
         MultipartReplyGroupDescBuilder builder = new MultipartReplyGroupDescBuilder();\r
         List<GroupDesc> groupDescsList = new ArrayList<>();\r
-        LOGGER.info("readablebytes pred: " + input.readableBytes());\r
         while (input.readableBytes() > 0) {\r
-            LOGGER.info("readablebytes po: " + input.readableBytes());\r
             GroupDescBuilder groupDescBuilder = new GroupDescBuilder();\r
             int bodyLength = input.readUnsignedShort();\r
-            LOGGER.info("bodylength: " + bodyLength);\r
             groupDescBuilder.setType(GroupType.forValue(input.readUnsignedByte()));\r
             input.skipBytes(PADDING_IN_GROUP_DESC_HEADER);\r
             groupDescBuilder.setGroupId(input.readUnsignedInt());\r
             int actualLength = GROUP_DESC_HEADER_LENGTH;\r
             List<BucketsList> bucketsList = new ArrayList<>();\r
             while (actualLength < bodyLength) {\r
-                System.out.println("cyklim v buckets");\r
                 BucketsListBuilder bucketsBuilder = new BucketsListBuilder();\r
                 int bucketsLength = input.readUnsignedShort();\r
                 bucketsBuilder.setWeight(input.readUnsignedShort());\r
                 bucketsBuilder.setWatchPort(new PortNumber(input.readUnsignedInt()));\r
                 bucketsBuilder.setWatchGroup(input.readUnsignedInt());\r
                 input.skipBytes(PADDING_IN_BUCKETS_HEADER);\r
-                System.out.println("bucketslength: " + bucketsLength);\r
-                System.out.println("actuallength: " + actualLength);\r
-                System.out.println("bodylength: " + bodyLength);\r
-                LOGGER.info("length - length: " + (bucketsLength - BUCKETS_HEADER_LENGTH));\r
                 List<ActionsList> actionsList = ActionsDeserializer\r
                         .createActionsList(input, bucketsLength - BUCKETS_HEADER_LENGTH);\r
-                LOGGER.info("actions size: " + actionsList.size());\r
                 bucketsBuilder.setActionsList(actionsList);\r
                 bucketsList.add(bucketsBuilder.build());\r
                 actualLength += bucketsLength;\r