Sonar warning, refactor: AbstractNumericOperandParser 32/28432/2
authorIveta Halanova <ihalanov@cisco.com>
Thu, 15 Oct 2015 09:44:01 +0000 (11:44 +0200)
committerGerrit Code Review <gerrit@opendaylight.org>
Mon, 19 Oct 2015 15:32:37 +0000 (15:32 +0000)
Change-Id: If19f82f959997f75c676bf8935117965f61ec4ae
Signed-off-by: Iveta Halanova <ihalanov@cisco.com>
bgp/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/AbstractNumericOperandParser.java
bgp/flowspec/src/test/java/org/opendaylight/protocol/bgp/flowspec/FSIpv4NlriParserTest.java

index bd4d2883acc68aa4818a555065f614bc992528a9..e19563cd5e9d964fab00afbf9bb5018ce6504316 100644 (file)
@@ -43,53 +43,53 @@ abstract class AbstractNumericOperandParser<N> extends AbstractOperandParser<Num
     protected abstract <T extends N> String toString(final List<T> list);
 
     @Override
-    protected final NumericOperand create(final Set<String> opValues) {
-        return new NumericOperand(opValues.contains(AND_BIT_VALUE), opValues.contains(END_OF_LIST_VALUE), opValues.contains(EQUALS_VALUE), opValues.contains(GREATER_THAN_VALUE), opValues.contains(LESS_THAN_VALUE));
+    protected final NumericOperand create(final Set<String> operandValues) {
+        return new NumericOperand(operandValues.contains(AND_BIT_VALUE), operandValues.contains(END_OF_LIST_VALUE), operandValues.contains(EQUALS_VALUE), operandValues.contains(GREATER_THAN_VALUE), operandValues.contains(LESS_THAN_VALUE));
     }
 
     @Override
-    public final void serialize(final NumericOperand op, final int length, final ByteBuf buffer) {
-        final BitArray bs = new BitArray(OPERAND_LENGTH);
-        bs.set(END_OF_LIST, op.isEndOfList());
-        bs.set(AND_BIT, op.isAndBit());
-        bs.set(LESS_THAN, op.isLessThan());
-        bs.set(GREATER_THAN, op.isGreaterThan());
-        bs.set(EQUAL, op.isEquals());
-        final byte len = (byte) (Integer.numberOfTrailingZeros(length) << LENGTH_SHIFT);
-        buffer.writeByte(bs.toByte() | len);
+    public final void serialize(final NumericOperand operand, final int length, final ByteBuf buffer) {
+        final BitArray operandValues = new BitArray(OPERAND_LENGTH);
+        operandValues.set(END_OF_LIST, operand.isEndOfList());
+        operandValues.set(AND_BIT, operand.isAndBit());
+        operandValues.set(LESS_THAN, operand.isLessThan());
+        operandValues.set(GREATER_THAN, operand.isGreaterThan());
+        operandValues.set(EQUAL, operand.isEquals());
+        final byte byteLength = (byte) (Integer.numberOfTrailingZeros(length) << LENGTH_SHIFT);
+        buffer.writeByte(operandValues.toByte() | byteLength);
     }
 
     @Override
-    protected final NumericOperand parse(final byte op) {
-        final BitArray bs = BitArray.valueOf(op);
-        return new NumericOperand(bs.get(AND_BIT), bs.get(END_OF_LIST), bs.get(EQUAL), bs.get(GREATER_THAN), bs.get(LESS_THAN));
+    protected final NumericOperand parse(final byte operand) {
+        final BitArray operandValues = BitArray.valueOf(operand);
+        return new NumericOperand(operandValues.get(AND_BIT), operandValues.get(END_OF_LIST), operandValues.get(EQUAL), operandValues.get(GREATER_THAN), operandValues.get(LESS_THAN));
     }
 
     @Override
-    protected String toString(final NumericOperand op, final boolean isFirst) {
+    protected String toString(final NumericOperand operand, final boolean isFirst) {
         final StringBuilder buffer = new StringBuilder();
-        if (!op.isAndBit() && !isFirst) {
-            buffer.append("or ");
-        }
-        if (op.isAndBit()) {
+        if (operand.isAndBit()) {
             buffer.append("and ");
+        } else if (!isFirst) {
+            buffer.append("or ");
         }
-        if (op.isLessThan() && op.isEquals()) {
-            buffer.append("is less than or equal to ");
+        if (operand.isLessThan()) {
+            buffer.append("is less than ");
+            if (operand.isEquals()) {
+                buffer.append("or equals to ");
+            }
             return buffer.toString();
-        } else if (op.isGreaterThan() && op.isEquals()) {
-            buffer.append("is greater than or equal to ");
+        }
+        if (operand.isGreaterThan()) {
+            buffer.append("is greater than ");
+            if (operand.isEquals()) {
+                buffer.append("or equals to ");
+            }
             return buffer.toString();
         }
-        if (op.isEquals()) {
+        if (operand.isEquals()) {
             buffer.append("equals to ");
         }
-        if (op.isLessThan()) {
-            buffer.append("is less than ");
-        }
-        if (op.isGreaterThan()) {
-            buffer.append("is greater than ");
-        }
         return buffer.toString();
     }
 }
index ad6c1cce7fe3b3329df778164b0fcbb4aa0f53a4..06846c53cf58c54220fb330c7c2cf8cf8f83ad7b 100644 (file)
@@ -105,10 +105,10 @@ public class FSIpv4NlriParserTest {
 
     private static final byte[] UNREACHED_NLRI = new byte[] { 0x1B,
         07, 4, 2, (byte) 0x84, 3,
-        0x08, 06, 04, (byte) 0x80, 05,
+        0x08, 4, 04, (byte) 0x80, 05,
         0x09, 0x12, 04, 01, (byte) 0x91, 0x56, (byte) 0xb1,
-        0x0a, (byte) 0x96, (byte) 0xde, (byte) 0xad,
-        0x0b, (byte) 0x86, 0x2a,
+        0x0a, (byte) 0x94, (byte) 0xde, (byte) 0xad,
+        0x0b, (byte) 0x82, 0x2a,
         0x0c, (byte) 0x81, (byte) 0x0e};
 
     private static final FSIpv4NlriParser FS_PARSER = new FSIpv4NlriParser();
@@ -173,7 +173,7 @@ public class FSIpv4NlriParserTest {
         assertEquals("all packets to 10.0.1.0/32", FS_PARSER.stringNlri(flows.get(0)));
         assertEquals("all packets from 1.2.3.4/32", FS_PARSER.stringNlri(flows.get(1)));
         assertEquals("all packets where IP protocol equals to 6 ", FS_PARSER.stringNlri(flows.get(2)));
-        assertEquals("all packets where port is greater than or equal to 137 and is less than or equal to 139 or equals to 8080 ", FS_PARSER.stringNlri(flows.get(3)));
+        assertEquals("all packets where port is greater than or equals to 137 and is less than or equals to 139 or equals to 8080 ", FS_PARSER.stringNlri(flows.get(3)));
         assertEquals("all packets where destination port is greater than 4089 or equals to 179 ", FS_PARSER.stringNlri(flows.get(4)));
         assertEquals("all packets where source port equals to 8080 ", FS_PARSER.stringNlri(flows.get(5)));
     }
@@ -191,7 +191,7 @@ public class FSIpv4NlriParserTest {
         builder.setFlowspecType(icmpType);
         fs.add(builder.build());
 
-        final List<Codes> codes = Lists.newArrayList(new CodesBuilder().setOp(new NumericOperand(false, false, false, true, true)).setValue((short) 4).build(),
+        final List<Codes> codes = Lists.newArrayList(new CodesBuilder().setOp(new NumericOperand(false, false, false, false, true)).setValue((short) 4).build(),
             new CodesBuilder().setOp(new NumericOperand(false, true, false, false, false)).setValue((short) 5).build());
         final IcmpCodeCase icmpCode = new IcmpCodeCaseBuilder().setCodes(codes).build();
         builder.setFlowspecType(icmpCode);
@@ -203,12 +203,12 @@ public class FSIpv4NlriParserTest {
         builder.setFlowspecType(tcp);
         fs.add(builder.build());
 
-        final List<PacketLengths> packets = Lists.newArrayList(new PacketLengthsBuilder().setOp(new NumericOperand(false, true, false, true, true)).setValue(57005).build());
+        final List<PacketLengths> packets = Lists.newArrayList(new PacketLengthsBuilder().setOp(new NumericOperand(false, true, false, false, true)).setValue(57005).build());
         final PacketLengthCase packet = new PacketLengthCaseBuilder().setPacketLengths(packets).build();
         builder.setFlowspecType(packet);
         fs.add(builder.build());
 
-        final List<Dscps> dscps = Lists.newArrayList(new DscpsBuilder().setOp(new NumericOperand(false, true, false, true, true)).setValue(new Dscp((short) 42)).build());
+        final List<Dscps> dscps = Lists.newArrayList(new DscpsBuilder().setOp(new NumericOperand(false, true, false, true, false)).setValue(new Dscp((short) 42)).build());
         final DscpCase dscp = new DscpCaseBuilder().setDscps(dscps).build();
         builder.setFlowspecType(dscp);
         fs.add(builder.build());
@@ -247,10 +247,10 @@ public class FSIpv4NlriParserTest {
         assertArrayEquals(UNREACHED_NLRI, ByteArray.readAllBytes(buffer));
 
         assertEquals("all packets where ICMP type is less than 2 or is less than 3 ", FS_PARSER.stringNlri(flows.get(0)));
-        assertEquals("all packets where ICMP code is less than is greater than 4 or 5 ", FS_PARSER.stringNlri(flows.get(1)));
+        assertEquals("all packets where ICMP code is less than 4 or 5 ", FS_PARSER.stringNlri(flows.get(1)));
         assertEquals("all packets where TCP flags is not 1025 or does match 22193 ", FS_PARSER.stringNlri(flows.get(2)));
-        assertEquals("all packets where packet length is less than is greater than 57005 ", FS_PARSER.stringNlri(flows.get(3)));
-        assertEquals("all packets where DSCP is less than is greater than 42 ", FS_PARSER.stringNlri(flows.get(4)));
+        assertEquals("all packets where packet length is less than 57005 ", FS_PARSER.stringNlri(flows.get(3)));
+        assertEquals("all packets where DSCP is greater than 42 ", FS_PARSER.stringNlri(flows.get(4)));
         assertEquals("all packets where fragment does match 'IS FIRST' 'IS LAST' 'IS A' ", FS_PARSER.stringNlri(flows.get(5)));
     }