TcpCodecs factory Sonar polishing

- also some magic numbers in the deserializers
This commit is contained in:
Gary Russell
2019-01-12 12:37:27 -05:00
parent 4dcbb92246
commit 518c4918e2
4 changed files with 33 additions and 24 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2017-2018 the original author or authors.
* Copyright 2017-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -34,6 +34,8 @@ import org.springframework.util.StreamUtils;
*/
public class ByteArrayElasticRawDeserializer implements Deserializer<byte[]> {
private static final int DEFAULT_INITIAL_SIZE = 32;
private final int initialBufferSize;
/**
@@ -41,7 +43,7 @@ public class ByteArrayElasticRawDeserializer implements Deserializer<byte[]> {
* buffer size of 32;
*/
public ByteArrayElasticRawDeserializer() {
this(32);
this(DEFAULT_INITIAL_SIZE);
}
/**

View File

@@ -45,21 +45,24 @@ import org.apache.commons.logging.LogFactory;
*/
public class ByteArrayLengthHeaderSerializer extends AbstractByteArraySerializer {
/**
* Default length-header field, allows for data up to 2**31-1 bytes.
*/
public static final int HEADER_SIZE_INT = 4; // default
/**
* A single unsigned byte, for data up to 255 bytes.
*/
public static final int HEADER_SIZE_UNSIGNED_BYTE = 1;
public static final int HEADER_SIZE_INT = Integer.BYTES; // default
/**
* An unsigned short, for data up to 2**16 bytes.
*/
public static final int HEADER_SIZE_UNSIGNED_SHORT = 2;
public static final int HEADER_SIZE_UNSIGNED_SHORT = Short.BYTES;
/**
* A single unsigned byte, for data up to 255 bytes.
*/
public static final int HEADER_SIZE_UNSIGNED_BYTE = Byte.BYTES;
private static final int MAX_UNSIGNED_SHORT = 0xffff;
private static final int MAX_UNSIGNED_BYTE = 0xff;
private final int headerSize;
@@ -183,7 +186,7 @@ public class ByteArrayLengthHeaderSerializer extends AbstractByteArraySerializer
lengthPart.putInt(length);
break;
case HEADER_SIZE_UNSIGNED_BYTE:
if (length > 0xff) {
if (length > MAX_UNSIGNED_BYTE) {
throw new IllegalArgumentException("Length header:"
+ this.headerSize
+ " too short to accommodate message length:" + length);
@@ -191,7 +194,7 @@ public class ByteArrayLengthHeaderSerializer extends AbstractByteArraySerializer
lengthPart.put((byte) length);
break;
case HEADER_SIZE_UNSIGNED_SHORT:
if (length > 0xffff) {
if (length > MAX_UNSIGNED_SHORT) {
throw new IllegalArgumentException("Length header:"
+ this.headerSize
+ " too short to accommodate message length:" + length);
@@ -231,10 +234,10 @@ public class ByteArrayLengthHeaderSerializer extends AbstractByteArraySerializer
}
break;
case HEADER_SIZE_UNSIGNED_BYTE:
messageLength = ByteBuffer.wrap(lengthPart).get() & 0xff;
messageLength = ByteBuffer.wrap(lengthPart).get() & MAX_UNSIGNED_BYTE;
break;
case HEADER_SIZE_UNSIGNED_SHORT:
messageLength = ByteBuffer.wrap(lengthPart).getShort() & 0xffff;
messageLength = ByteBuffer.wrap(lengthPart).getShort() & MAX_UNSIGNED_SHORT;
break;
default:
throw new IllegalArgumentException("Bad header size:" + this.headerSize);

View File

@@ -29,7 +29,7 @@ public class ByteArrayLfSerializer extends ByteArraySingleTerminatorSerializer {
public static final ByteArrayLfSerializer INSTANCE = new ByteArrayLfSerializer();
public ByteArrayLfSerializer() {
super((byte) 0x0a);
super((byte) '\n');
}
}

View File

@@ -99,7 +99,7 @@ public final class TcpCodecs {
*/
public static ByteArrayLengthHeaderSerializer lengthHeader1() {
if (oneByteLHS == null) {
oneByteLHS = new ByteArrayLengthHeaderSerializer(1);
oneByteLHS = new ByteArrayLengthHeaderSerializer(ByteArrayLengthHeaderSerializer.HEADER_SIZE_UNSIGNED_BYTE);
}
return oneByteLHS;
}
@@ -111,7 +111,8 @@ public final class TcpCodecs {
*/
public static ByteArrayLengthHeaderSerializer lengthHeader2() {
if (twoByteLHS == null) {
twoByteLHS = new ByteArrayLengthHeaderSerializer(2);
twoByteLHS = new ByteArrayLengthHeaderSerializer(
ByteArrayLengthHeaderSerializer.HEADER_SIZE_UNSIGNED_SHORT);
}
return twoByteLHS;
}
@@ -123,7 +124,7 @@ public final class TcpCodecs {
*/
public static ByteArrayLengthHeaderSerializer lengthHeader4() {
if (fourByteLHS == null) {
fourByteLHS = new ByteArrayLengthHeaderSerializer(4);
fourByteLHS = new ByteArrayLengthHeaderSerializer(ByteArrayLengthHeaderSerializer.HEADER_SIZE_INT);
}
return fourByteLHS;
}
@@ -136,11 +137,11 @@ public final class TcpCodecs {
*/
public static ByteArrayLengthHeaderSerializer lengthHeader(int bytes) {
switch (bytes) {
case 1:
case ByteArrayLengthHeaderSerializer.HEADER_SIZE_UNSIGNED_BYTE:
return lengthHeader1();
case 2:
case ByteArrayLengthHeaderSerializer.HEADER_SIZE_UNSIGNED_SHORT:
return lengthHeader2();
case 4:
case ByteArrayLengthHeaderSerializer.HEADER_SIZE_INT:
return lengthHeader4();
default:
throw new IllegalArgumentException("Only 1, 2 or 4 byte headers are supported");
@@ -216,7 +217,8 @@ public final class TcpCodecs {
* @since 5.1.3
*/
public static ByteArrayLengthHeaderSerializer lengthHeader1(int maxMessageSize) {
ByteArrayLengthHeaderSerializer codec = new ByteArrayLengthHeaderSerializer(1);
ByteArrayLengthHeaderSerializer codec = new ByteArrayLengthHeaderSerializer(
ByteArrayLengthHeaderSerializer.HEADER_SIZE_UNSIGNED_BYTE);
codec.setMaxMessageSize(maxMessageSize);
return codec;
}
@@ -228,7 +230,8 @@ public final class TcpCodecs {
* @since 5.1.3
*/
public static ByteArrayLengthHeaderSerializer lengthHeader2(int maxMessageSize) {
ByteArrayLengthHeaderSerializer codec = new ByteArrayLengthHeaderSerializer(2);
ByteArrayLengthHeaderSerializer codec = new ByteArrayLengthHeaderSerializer(
ByteArrayLengthHeaderSerializer.HEADER_SIZE_UNSIGNED_SHORT);
codec.setMaxMessageSize(maxMessageSize);
return codec;
}
@@ -240,7 +243,8 @@ public final class TcpCodecs {
* @since 5.1.3
*/
public static ByteArrayLengthHeaderSerializer lengthHeader4(int maxMessageSize) {
ByteArrayLengthHeaderSerializer codec = new ByteArrayLengthHeaderSerializer(4);
ByteArrayLengthHeaderSerializer codec = new ByteArrayLengthHeaderSerializer(
ByteArrayLengthHeaderSerializer.HEADER_SIZE_INT);
codec.setMaxMessageSize(maxMessageSize);
return codec;
}