Repository: mina Updated Branches: refs/heads/2.0 b8c32d2c0 -> f10317619
o Fixed some missing Javadoc o Fixed some sonarlint warnings Project: http://git-wip-us.apache.org/repos/asf/mina/repo Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/390326d8 Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/390326d8 Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/390326d8 Branch: refs/heads/2.0 Commit: 390326d86ed7fc2434db5d1b378898e37b70526b Parents: d2fcea3 d95cd10 Author: Emmanuel Lécharny <elecha...@symas.com> Authored: Thu Dec 8 07:59:17 2016 +0100 Committer: Emmanuel Lécharny <elecha...@symas.com> Committed: Thu Dec 8 10:04:00 2016 +0100 ---------------------------------------------------------------------- .../RecoverableProtocolDecoderException.java | 20 ++++++- .../demux/DemuxingProtocolCodecFactory.java | 57 ++++++++++++++++-- .../codec/demux/DemuxingProtocolDecoder.java | 40 +++++++++---- .../codec/demux/DemuxingProtocolEncoder.java | 63 ++++++++++++++++---- .../mina/filter/codec/demux/MessageEncoder.java | 2 +- .../codec/demux/MessageEncoderFactory.java | 2 +- .../PrefixedStringCodecFactory.java | 16 +++++ .../prefixedstring/PrefixedStringDecoder.java | 26 ++++++-- .../prefixedstring/PrefixedStringEncoder.java | 32 +++++++++- 9 files changed, 224 insertions(+), 34 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mina/blob/390326d8/mina-core/src/main/java/org/apache/mina/filter/codec/RecoverableProtocolDecoderException.java ---------------------------------------------------------------------- diff --cc mina-core/src/main/java/org/apache/mina/filter/codec/RecoverableProtocolDecoderException.java index fa8f5c2,fa8f5c2..f4030d2 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/RecoverableProtocolDecoderException.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/RecoverableProtocolDecoderException.java @@@ -43,20 -43,20 +43,38 @@@ public class RecoverableProtocolDecoder private static final long serialVersionUID = -8172624045024880678L; ++ /** ++ * Create a new RecoverableProtocolDecoderException instance ++ */ public RecoverableProtocolDecoderException() { // Do nothing } ++ /** ++ * Create a new RecoverableProtocolDecoderException instance ++ * ++ * @param message The error message ++ */ public RecoverableProtocolDecoderException(String message) { super(message); } ++ /** ++ * Create a new RecoverableProtocolDecoderException instance ++ * ++ * @param cause The original exception ++ */ public RecoverableProtocolDecoderException(Throwable cause) { super(cause); } ++ /** ++ * Create a new RecoverableProtocolDecoderException instance ++ * ++ * @param message The error message ++ * @param cause The original exception ++ */ public RecoverableProtocolDecoderException(String message, Throwable cause) { super(message, cause); } -- } http://git-wip-us.apache.org/repos/asf/mina/blob/390326d8/mina-core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolCodecFactory.java ---------------------------------------------------------------------- diff --cc mina-core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolCodecFactory.java index 58e7922,58e7922..7e72487 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolCodecFactory.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolCodecFactory.java @@@ -40,13 -40,13 +40,10 @@@ public class DemuxingProtocolCodecFacto private final DemuxingProtocolDecoder decoder = new DemuxingProtocolDecoder(); -- public DemuxingProtocolCodecFactory() { -- // Do nothing -- } -- /** * {@inheritDoc} */ ++ @Override public ProtocolEncoder getEncoder(IoSession session) throws Exception { return encoder; } @@@ -54,34 -54,34 +51,71 @@@ /** * {@inheritDoc} */ ++ @Override public ProtocolDecoder getDecoder(IoSession session) throws Exception { return decoder; } ++ /** ++ * Adds a new message encoder for a given message type ++ * ++ * @param messageType The message type ++ * @param encoderClass The associated encoder class ++ */ public void addMessageEncoder(Class<?> messageType, Class<? extends MessageEncoder> encoderClass) { this.encoder.addMessageEncoder(messageType, encoderClass); } ++ /** ++ * Adds a new message encoder for a given message type ++ * ++ * @param messageType The message type ++ * @param encoder The associated encoder instance ++ */ public <T> void addMessageEncoder(Class<T> messageType, MessageEncoder<? super T> encoder) { this.encoder.addMessageEncoder(messageType, encoder); } ++ /** ++ * Adds a new message encoder for a given message type ++ * ++ * @param messageType The message type ++ * @param factory The associated encoder factory ++ */ public <T> void addMessageEncoder(Class<T> messageType, MessageEncoderFactory<? super T> factory) { this.encoder.addMessageEncoder(messageType, factory); } ++ /** ++ * Adds a new message encoder for a list of message types ++ * ++ * @param messageTypes The message types ++ * @param encoderClass The associated encoder class ++ */ public void addMessageEncoder(Iterable<Class<?>> messageTypes, Class<? extends MessageEncoder> encoderClass) { for (Class<?> messageType : messageTypes) { addMessageEncoder(messageType, encoderClass); } } ++ /** ++ * Adds a new message encoder for a list of message types ++ * ++ * @param messageTypes The messages types ++ * @param encoder The associated encoder instance ++ */ public <T> void addMessageEncoder(Iterable<Class<? extends T>> messageTypes, MessageEncoder<? super T> encoder) { for (Class<? extends T> messageType : messageTypes) { addMessageEncoder(messageType, encoder); } } ++ /** ++ * Adds a new message encoder for a list of message types ++ * ++ * @param messageTypes The messages types ++ * @param factory The associated encoder factory ++ */ public <T> void addMessageEncoder(Iterable<Class<? extends T>> messageTypes, MessageEncoderFactory<? super T> factory) { for (Class<? extends T> messageType : messageTypes) { @@@ -89,14 -89,14 +123,29 @@@ } } ++ /** ++ * Adds a new message decoder ++ * ++ * @param decoderClass The associated decoder class ++ */ public void addMessageDecoder(Class<? extends MessageDecoder> decoderClass) { this.decoder.addMessageDecoder(decoderClass); } ++ /** ++ * Adds a new message decoder ++ * ++ * @param decoder The associated decoder instance ++ */ public void addMessageDecoder(MessageDecoder decoder) { this.decoder.addMessageDecoder(decoder); } ++ /** ++ * Adds a new message decoder ++ * ++ * @param factory The associated decoder factory ++ */ public void addMessageDecoder(MessageDecoderFactory factory) { this.decoder.addMessageDecoder(factory); } http://git-wip-us.apache.org/repos/asf/mina/blob/390326d8/mina-core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolDecoder.java ---------------------------------------------------------------------- diff --cc mina-core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolDecoder.java index 4cf6853,4cf6853..b0d10f7 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolDecoder.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolDecoder.java @@@ -87,16 -87,16 +87,17 @@@ import org.apache.mina.filter.codec.Pro */ public class DemuxingProtocolDecoder extends CumulativeProtocolDecoder { -- private final AttributeKey STATE = new AttributeKey(getClass(), "state"); ++ private static final AttributeKey STATE = new AttributeKey(DemuxingProtocolDecoder.class, "state"); private MessageDecoderFactory[] decoderFactories = new MessageDecoderFactory[0]; private static final Class<?>[] EMPTY_PARAMS = new Class[0]; -- public DemuxingProtocolDecoder() { -- // Do nothing -- } -- ++ /** ++ * Adds a new message decoder class ++ * ++ * @param decoderClass The decoder class ++ */ public void addMessageDecoder(Class<? extends MessageDecoder> decoderClass) { if (decoderClass == null) { throw new IllegalArgumentException("decoderClass"); @@@ -119,15 -119,15 +120,25 @@@ } } ++ /** ++ * Adds a new message decoder instance ++ * ++ * @param decoder The decoder instance ++ */ public void addMessageDecoder(MessageDecoder decoder) { addMessageDecoder(new SingletonMessageDecoderFactory(decoder)); } ++ /** ++ * Adds a new message decoder factory ++ * ++ * @param factory The decoder factory ++ */ public void addMessageDecoder(MessageDecoderFactory factory) { if (factory == null) { throw new IllegalArgumentException("factory"); } -- MessageDecoderFactory[] decoderFactories = this.decoderFactories; ++ MessageDecoderFactory[] newDecoderFactories = new MessageDecoderFactory[decoderFactories.length + 1]; System.arraycopy(decoderFactories, 0, newDecoderFactories, 0, decoderFactories.length); newDecoderFactories[decoderFactories.length] = factory; @@@ -249,10 -249,10 +260,11 @@@ private MessageDecoder currentDecoder; private State() throws Exception { -- MessageDecoderFactory[] decoderFactories = DemuxingProtocolDecoder.this.decoderFactories; -- decoders = new MessageDecoder[decoderFactories.length]; -- for (int i = decoderFactories.length - 1; i >= 0; i--) { -- decoders[i] = decoderFactories[i].getDecoder(); ++ MessageDecoderFactory[] factories = DemuxingProtocolDecoder.this.decoderFactories; ++ decoders = new MessageDecoder[factories.length]; ++ ++ for (int i = factories.length - 1; i >= 0; i--) { ++ decoders[i] = factories[i].getDecoder(); } } } @@@ -267,6 -267,6 +279,10 @@@ this.decoder = decoder; } ++ /** ++ * {@inheritDoc} ++ */ ++ @Override public MessageDecoder getDecoder() { return decoder; } @@@ -286,6 -286,6 +302,10 @@@ this.decoderClass = decoderClass; } ++ /** ++ * {@inheritDoc} ++ */ ++ @Override public MessageDecoder getDecoder() throws Exception { return (MessageDecoder) decoderClass.newInstance(); } http://git-wip-us.apache.org/repos/asf/mina/blob/390326d8/mina-core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolEncoder.java ---------------------------------------------------------------------- diff --cc mina-core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolEncoder.java index d743641,d743641..a99f4d7 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolEncoder.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/demux/DemuxingProtocolEncoder.java @@@ -47,17 -47,17 +47,19 @@@ import org.apache.mina.util.IdentityHas */ public class DemuxingProtocolEncoder implements ProtocolEncoder { -- private final AttributeKey STATE = new AttributeKey(getClass(), "state"); ++ private static final AttributeKey STATE = new AttributeKey(DemuxingProtocolEncoder.class, "state"); @SuppressWarnings("rawtypes") -- private final Map<Class<?>, MessageEncoderFactory> type2encoderFactory = new CopyOnWriteMap<Class<?>, MessageEncoderFactory>(); ++ private final Map<Class<?>, MessageEncoderFactory> type2encoderFactory = new CopyOnWriteMap<>(); private static final Class<?>[] EMPTY_PARAMS = new Class[0]; -- public DemuxingProtocolEncoder() { -- // Do nothing -- } -- ++ /** ++ * Add a new message encoder class for a given message type ++ * ++ * @param messageType The message type ++ * @param encoderClass The encoder class ++ */ @SuppressWarnings({ "rawtypes", "unchecked" }) public void addMessageEncoder(Class<?> messageType, Class<? extends MessageEncoder> encoderClass) { if (encoderClass == null) { @@@ -71,6 -71,6 +73,7 @@@ } boolean registered = false; ++ if (MessageEncoder.class.isAssignableFrom(encoderClass)) { addMessageEncoder(messageType, new DefaultConstructorMessageEncoderFactory(encoderClass)); registered = true; @@@ -81,11 -81,11 +84,23 @@@ } } ++ /** ++ * Add a new message encoder instance for a given message type ++ * ++ * @param messageType The message type ++ * @param encoder The encoder instance ++ */ @SuppressWarnings({ "unchecked", "rawtypes" }) public <T> void addMessageEncoder(Class<T> messageType, MessageEncoder<? super T> encoder) { addMessageEncoder(messageType, new SingletonMessageEncoderFactory(encoder)); } ++ /** ++ * Add a new message encoder factory for a given message type ++ * ++ * @param messageType The message type ++ * @param factory The encoder factory ++ */ public <T> void addMessageEncoder(Class<T> messageType, MessageEncoderFactory<? super T> factory) { if (messageType == null) { throw new IllegalArgumentException("messageType"); @@@ -105,6 -105,6 +120,12 @@@ } } ++ /** ++ * Add a new message encoder class for a list of message types ++ * ++ * @param messageTypes The message types ++ * @param encoderClass The encoder class ++ */ @SuppressWarnings("rawtypes") public void addMessageEncoder(Iterable<Class<?>> messageTypes, Class<? extends MessageEncoder> encoderClass) { for (Class<?> messageType : messageTypes) { @@@ -112,12 -112,12 +133,24 @@@ } } ++ /** ++ * Add a new message instance class for a list of message types ++ * ++ * @param messageTypes The message types ++ * @param encoder The encoder instance ++ */ public <T> void addMessageEncoder(Iterable<Class<? extends T>> messageTypes, MessageEncoder<? super T> encoder) { for (Class<? extends T> messageType : messageTypes) { addMessageEncoder(messageType, encoder); } } ++ /** ++ * Add a new message encoder factory for a list of message types ++ * ++ * @param messageTypes The message types ++ * @param factory The encoder factory ++ */ public <T> void addMessageEncoder(Iterable<Class<? extends T>> messageTypes, MessageEncoderFactory<? super T> factory) { for (Class<? extends T> messageType : messageTypes) { @@@ -128,6 -128,6 +161,7 @@@ /** * {@inheritDoc} */ ++ @Override public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception { State state = getState(session); MessageEncoder<Object> encoder = findEncoder(state, message.getClass()); @@@ -145,7 -145,7 +179,7 @@@ @SuppressWarnings("unchecked") private MessageEncoder<Object> findEncoder(State state, Class<?> type, Set<Class<?>> triedClasses) { @SuppressWarnings("rawtypes") -- MessageEncoder encoder = null; ++ MessageEncoder encoder; if (triedClasses != null && triedClasses.contains(type)) { return null; @@@ -171,7 -171,7 +205,7 @@@ */ if (triedClasses == null) { -- triedClasses = new IdentityHashSet<Class<?>>(); ++ triedClasses = new IdentityHashSet<>(); } triedClasses.add(type); @@@ -220,6 -220,6 +254,7 @@@ /** * {@inheritDoc} */ ++ @Override public void dispose(IoSession session) throws Exception { session.removeAttribute(STATE); } @@@ -238,10 -238,10 +273,10 @@@ private class State { @SuppressWarnings("rawtypes") -- private final ConcurrentHashMap<Class<?>, MessageEncoder> findEncoderCache = new ConcurrentHashMap<Class<?>, MessageEncoder>(); ++ private final ConcurrentHashMap<Class<?>, MessageEncoder> findEncoderCache = new ConcurrentHashMap<>(); @SuppressWarnings("rawtypes") -- private final Map<Class<?>, MessageEncoder> type2encoder = new ConcurrentHashMap<Class<?>, MessageEncoder>(); ++ private final Map<Class<?>, MessageEncoder> type2encoder = new ConcurrentHashMap<>(); @SuppressWarnings("rawtypes") private State() throws Exception { @@@ -261,6 -261,6 +296,10 @@@ this.encoder = encoder; } ++ /** ++ * {@inheritDoc} ++ */ ++ @Override public MessageEncoder<T> getEncoder() { return encoder; } @@@ -280,6 -280,6 +319,10 @@@ this.encoderClass = encoderClass; } ++ /** ++ * {@inheritDoc} ++ */ ++ @Override public MessageEncoder<T> getEncoder() throws Exception { return encoderClass.newInstance(); } http://git-wip-us.apache.org/repos/asf/mina/blob/390326d8/mina-core/src/main/java/org/apache/mina/filter/codec/demux/MessageEncoder.java ---------------------------------------------------------------------- diff --cc mina-core/src/main/java/org/apache/mina/filter/codec/demux/MessageEncoder.java index 31ceb70,31ceb70..631db60 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/demux/MessageEncoder.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/demux/MessageEncoder.java @@@ -35,7 -35,7 +35,7 @@@ import org.apache.mina.filter.codec.Pro * @see DemuxingProtocolEncoder * @see MessageEncoderFactory * -- * @param T The message type ++ * @param <T> The message type */ public interface MessageEncoder<T> { /** http://git-wip-us.apache.org/repos/asf/mina/blob/390326d8/mina-core/src/main/java/org/apache/mina/filter/codec/demux/MessageEncoderFactory.java ---------------------------------------------------------------------- diff --cc mina-core/src/main/java/org/apache/mina/filter/codec/demux/MessageEncoderFactory.java index cc4e213,cc4e213..358ba3d --- a/mina-core/src/main/java/org/apache/mina/filter/codec/demux/MessageEncoderFactory.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/demux/MessageEncoderFactory.java @@@ -26,7 -26,7 +26,7 @@@ package org.apache.mina.filter.codec.de * * @see DemuxingProtocolEncoder * -- * @param T the message type ++ * @param <T> the message type */ public interface MessageEncoderFactory<T> { /** http://git-wip-us.apache.org/repos/asf/mina/blob/390326d8/mina-core/src/main/java/org/apache/mina/filter/codec/prefixedstring/PrefixedStringCodecFactory.java ---------------------------------------------------------------------- diff --cc mina-core/src/main/java/org/apache/mina/filter/codec/prefixedstring/PrefixedStringCodecFactory.java index 4f8cdbf,4f8cdbf..fbbffb6 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/prefixedstring/PrefixedStringCodecFactory.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/prefixedstring/PrefixedStringCodecFactory.java @@@ -39,11 -39,11 +39,19 @@@ public class PrefixedStringCodecFactor private final PrefixedStringDecoder decoder; ++ /** ++ * Creates a new PrefixedStringCodecFactory instance ++ * ++ * @param charset The {@link Charset} to use for encoding or decoding ++ */ public PrefixedStringCodecFactory(Charset charset) { encoder = new PrefixedStringEncoder(charset); decoder = new PrefixedStringDecoder(charset); } ++ /** ++ * Creates a new PrefixedStringCodecFactory instance ++ */ public PrefixedStringCodecFactory() { this(Charset.defaultCharset()); } @@@ -138,10 -138,10 +146,18 @@@ return encoder.getPrefixLength(); } ++ /** ++ * {@inheritDoc} ++ */ ++ @Override public ProtocolEncoder getEncoder(IoSession session) throws Exception { return encoder; } ++ /** ++ * {@inheritDoc} ++ */ ++ @Override public ProtocolDecoder getDecoder(IoSession session) throws Exception { return decoder; } http://git-wip-us.apache.org/repos/asf/mina/blob/390326d8/mina-core/src/main/java/org/apache/mina/filter/codec/prefixedstring/PrefixedStringDecoder.java ---------------------------------------------------------------------- diff --cc mina-core/src/main/java/org/apache/mina/filter/codec/prefixedstring/PrefixedStringDecoder.java index eb0be9d,eb0be9d..8e27ea6 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/prefixedstring/PrefixedStringDecoder.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/prefixedstring/PrefixedStringDecoder.java @@@ -34,10 -34,10 +34,11 @@@ import java.nio.charset.Charset * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ public class PrefixedStringDecoder extends CumulativeProtocolDecoder { ++ /** The default length for the prefix */ ++ public static final int DEFAULT_PREFIX_LENGTH = 4; -- public final static int DEFAULT_PREFIX_LENGTH = 4; -- -- public final static int DEFAULT_MAX_DATA_LENGTH = 2048; ++ /** The default maximum data length */ ++ public static final int DEFAULT_MAX_DATA_LENGTH = 2048; private final Charset charset; @@@ -46,7 -46,7 +47,9 @@@ private int maxDataLength = DEFAULT_MAX_DATA_LENGTH; /** -- * @param charset the charset to use for encoding ++ * Creates a new PrefixedStringDecoder instance ++ * ++ * @param charset the {@link Charset} to use for decoding * @param prefixLength the length of the prefix * @param maxDataLength maximum number of bytes allowed for a single String */ @@@ -56,10 -56,10 +59,21 @@@ this.maxDataLength = maxDataLength; } ++ /** ++ * Creates a new PrefixedStringDecoder instance ++ * ++ * @param charset the {@link Charset} to use for decoding ++ * @param prefixLength the length of the prefix ++ */ public PrefixedStringDecoder(Charset charset, int prefixLength) { this(charset, prefixLength, DEFAULT_MAX_DATA_LENGTH); } ++ /** ++ * Creates a new PrefixedStringDecoder instance ++ * ++ * @param charset the {@link Charset} to use for decoding ++ */ public PrefixedStringDecoder(Charset charset) { this(charset, DEFAULT_PREFIX_LENGTH); } @@@ -106,6 -106,6 +120,10 @@@ return maxDataLength; } ++ /** ++ * {@inheritDoc} ++ */ ++ @Override protected boolean doDecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception { if (in.prefixedDataAvailable(prefixLength, maxDataLength)) { String msg = in.getPrefixedString(prefixLength, charset.newDecoder()); http://git-wip-us.apache.org/repos/asf/mina/blob/390326d8/mina-core/src/main/java/org/apache/mina/filter/codec/prefixedstring/PrefixedStringEncoder.java ---------------------------------------------------------------------- diff --cc mina-core/src/main/java/org/apache/mina/filter/codec/prefixedstring/PrefixedStringEncoder.java index e8769d7,e8769d7..820581d --- a/mina-core/src/main/java/org/apache/mina/filter/codec/prefixedstring/PrefixedStringEncoder.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/prefixedstring/PrefixedStringEncoder.java @@@ -34,10 -34,10 +34,11 @@@ import java.nio.charset.Charset * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ public class PrefixedStringEncoder extends ProtocolEncoderAdapter { ++ /** The default length for the prefix */ ++ public static final int DEFAULT_PREFIX_LENGTH = 4; -- public final static int DEFAULT_PREFIX_LENGTH = 4; -- -- public final static int DEFAULT_MAX_DATA_LENGTH = 2048; ++ /** The default maximum data length */ ++ public static final int DEFAULT_MAX_DATA_LENGTH = 2048; private final Charset charset; @@@ -45,20 -45,20 +46,41 @@@ private int maxDataLength = DEFAULT_MAX_DATA_LENGTH; ++ /** ++ * Creates a new PrefixedStringEncoder instance ++ * ++ * @param charset the {@link Charset} to use for encoding ++ * @param prefixLength the length of the prefix ++ * @param maxDataLength maximum number of bytes allowed for a single String ++ */ public PrefixedStringEncoder(Charset charset, int prefixLength, int maxDataLength) { this.charset = charset; this.prefixLength = prefixLength; this.maxDataLength = maxDataLength; } ++ /** ++ * Creates a new PrefixedStringEncoder instance ++ * ++ * @param charset the {@link Charset} to use for encoding ++ * @param prefixLength the length of the prefix ++ */ public PrefixedStringEncoder(Charset charset, int prefixLength) { this(charset, prefixLength, DEFAULT_MAX_DATA_LENGTH); } ++ /** ++ * Creates a new PrefixedStringEncoder instance ++ * ++ * @param charset the {@link Charset} to use for encoding ++ */ public PrefixedStringEncoder(Charset charset) { this(charset, DEFAULT_PREFIX_LENGTH); } ++ /** ++ * Creates a new PrefixedStringEncoder instance ++ */ public PrefixedStringEncoder() { this(Charset.defaultCharset()); } @@@ -108,6 -108,6 +130,10 @@@ return maxDataLength; } ++ /** ++ * {@inheritDoc} ++ */ ++ @Override public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception { String value = (String) message; IoBuffer buffer = IoBuffer.allocate(value.length()).setAutoExpand(true);