diff --git a/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttCodecUtil.java b/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttCodecUtil.java
index 46bc486acc..b0bcb3f001 100644
--- a/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttCodecUtil.java
+++ b/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttCodecUtil.java
@@ -42,7 +42,8 @@ final class MqttCodecUtil {
if (mqttVersion == MqttVersion.MQTT_3_1) {
return clientId != null && clientId.length() >= MIN_CLIENT_ID_LENGTH &&
clientId.length() <= MAX_CLIENT_ID_LENGTH;
- } else if (mqttVersion == MqttVersion.MQTT_3_1_1) {
+ }
+ if (mqttVersion == MqttVersion.MQTT_3_1_1) {
// In 3.1.3.1 Client Identifier of MQTT 3.1.1 specification, The Server MAY allow ClientId’s
// that contain more than 23 encoded bytes. And, The Server MAY allow zero-length ClientId.
return clientId != null;
diff --git a/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttConnAckVariableHeader.java b/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttConnAckVariableHeader.java
index 4742171639..b84c21d522 100644
--- a/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttConnAckVariableHeader.java
+++ b/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttConnAckVariableHeader.java
@@ -21,7 +21,7 @@ import io.netty.util.internal.StringUtil;
/**
* Variable header of {@link MqttConnectMessage}
*/
-public class MqttConnAckVariableHeader {
+public final class MqttConnAckVariableHeader {
private final MqttConnectReturnCode connectReturnCode;
diff --git a/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttConnectPayload.java b/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttConnectPayload.java
index c1d7f6a4dc..1e16acf443 100644
--- a/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttConnectPayload.java
+++ b/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttConnectPayload.java
@@ -21,7 +21,7 @@ import io.netty.util.internal.StringUtil;
/**
* Payload of {@link MqttConnectMessage}
*/
-public class MqttConnectPayload {
+public final class MqttConnectPayload {
private final String clientIdentifier;
private final String willTopic;
diff --git a/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttConnectReturnCode.java b/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttConnectReturnCode.java
index 16d96f378b..802dc196f9 100644
--- a/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttConnectReturnCode.java
+++ b/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttConnectReturnCode.java
@@ -21,7 +21,7 @@ import java.util.HashMap;
import java.util.Map;
/**
- * Return Code of {@link io.netty.handler.codec.mqtt.MqttConnAckMessage}
+ * Return Code of {@link MqttConnAckMessage}
*/
public enum MqttConnectReturnCode {
CONNECTION_ACCEPTED((byte) 0x00),
diff --git a/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttConnectVariableHeader.java b/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttConnectVariableHeader.java
index 991a54b6b0..2a1ca2f850 100644
--- a/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttConnectVariableHeader.java
+++ b/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttConnectVariableHeader.java
@@ -21,7 +21,7 @@ import io.netty.util.internal.StringUtil;
/**
* Variable Header for the {@link MqttConnectMessage}
*/
-public class MqttConnectVariableHeader {
+public final class MqttConnectVariableHeader {
private final String name;
private final int version;
diff --git a/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttDecoder.java b/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttDecoder.java
index 7103bed641..b91ad9ef91 100644
--- a/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttDecoder.java
+++ b/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttDecoder.java
@@ -33,7 +33,7 @@ import static io.netty.handler.codec.mqtt.MqttCodecUtil.*;
*
* the MQTT protocl specification v3.1
*/
-public class MqttDecoder extends ReplayingDecoder {
+public final class MqttDecoder extends ReplayingDecoder {
private static final int DEFAULT_MAX_BYTES_IN_MESSAGE = 8092;
diff --git a/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttEncoder.java b/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttEncoder.java
index b1774d1ece..0d817332a3 100644
--- a/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttEncoder.java
+++ b/codec-mqtt/src/main/java/io/netty/handler/codec/mqtt/MqttEncoder.java
@@ -21,20 +21,21 @@ import io.netty.buffer.ByteBufAllocator;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageEncoder;
import io.netty.util.CharsetUtil;
+import io.netty.util.internal.EmptyArrays;
import java.util.List;
import static io.netty.handler.codec.mqtt.MqttCodecUtil.*;
/**
- * Encodes Mqtt messages into bytes following the protocl specification v3.1
+ * Encodes Mqtt messages into bytes following the protocol specification v3.1
* as described here MQTTV3.1
*/
-public class MqttEncoder extends MessageToMessageEncoder {
+public final class MqttEncoder extends MessageToMessageEncoder {
- public static final MqttEncoder DEFAUL_ENCODER = new MqttEncoder();
+ public static final MqttEncoder INSTANCE = new MqttEncoder();
- private static final byte[] EMPTY = new byte[0];
+ private MqttEncoder() { }
@Override
protected void encode(ChannelHandlerContext ctx, MqttMessage msg, List