o Fixed some missing Javadoc o Fixed numerous Sonarlint issues Project: http://git-wip-us.apache.org/repos/asf/mina/repo Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/a9c468fb Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/a9c468fb Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/a9c468fb
Branch: refs/heads/2.0 Commit: a9c468fb4ec72ff1b8f275f5f5f4a35aaac66359 Parents: f103176 Author: Emmanuel Lécharny <[email protected]> Authored: Thu Dec 8 10:28:41 2016 +0100 Committer: Emmanuel Lécharny <[email protected]> Committed: Thu Dec 8 19:41:15 2016 +0100 ---------------------------------------------------------------------- .../filter/codec/CumulativeProtocolDecoder.java | 7 +- .../mina/filter/codec/ProtocolCodecFilter.java | 43 ++++++++++++ .../mina/filter/codec/ProtocolCodecSession.java | 8 +++ .../filter/codec/ProtocolDecoderAdapter.java | 2 + .../filter/codec/ProtocolEncoderAdapter.java | 1 + .../codec/SynchronizedProtocolDecoder.java | 6 ++ .../codec/SynchronizedProtocolEncoder.java | 2 + .../ObjectSerializationCodecFactory.java | 2 + .../ObjectSerializationEncoder.java | 1 + .../ObjectSerializationInputStream.java | 22 +++++- .../ObjectSerializationOutputStream.java | 12 ++++ .../ConsumeToCrLfDecodingState.java | 5 ++ ...ConsumeToDynamicTerminatorDecodingState.java | 2 + .../ConsumeToEndOfSessionDecodingState.java | 2 + .../ConsumeToTerminatorDecodingState.java | 2 + .../codec/statemachine/CrLfDecodingState.java | 2 + .../statemachine/DecodingStateMachine.java | 12 +++- .../DecodingStateProtocolDecoder.java | 7 +- .../statemachine/FixedLengthDecodingState.java | 7 ++ .../statemachine/IntegerDecodingState.java | 2 + .../statemachine/ShortIntegerDecodingState.java | 22 +++--- .../statemachine/SingleByteDecodingState.java | 6 +- .../codec/statemachine/SkippingState.java | 5 ++ .../codec/textline/TextLineCodecFactory.java | 2 + .../filter/codec/textline/TextLineDecoder.java | 5 +- .../filter/codec/textline/TextLineEncoder.java | 3 +- .../errorgenerating/ErrorGeneratingFilter.java | 53 ++++++++++---- .../executor/DefaultIoEventSizeEstimator.java | 5 +- .../mina/filter/executor/ExecutorFilter.java | 60 ++++++++-------- .../filter/executor/IoEventQueueHandler.java | 12 ++++ .../filter/executor/IoEventQueueThrottle.java | 43 +++++++++++- .../executor/OrderedThreadPoolExecutor.java | 35 ++++------ .../executor/UnorderedThreadPoolExecutor.java | 73 ++++++++++++++++++-- .../filter/executor/WriteRequestFilter.java | 7 ++ .../mina/filter/logging/MdcInjectionFilter.java | 59 ++++++++++++++-- .../stream/AbstractStreamWriteFilter.java | 34 +++++++-- .../filter/stream/FileRegionWriteFilter.java | 9 ++- .../mina/filter/stream/StreamWriteFilter.java | 13 ++-- .../mina/filter/util/CommonEventFilter.java | 32 +++++++-- .../org/apache/mina/filter/util/NoopFilter.java | 6 -- .../filter/util/ReferenceCountingFilter.java | 65 ++++++++++++++--- .../SessionAttributeInitializingFilter.java | 11 ++- .../mina/filter/util/WriteRequestFilter.java | 10 +++ 43 files changed, 579 insertions(+), 138 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/CumulativeProtocolDecoder.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/CumulativeProtocolDecoder.java b/mina-core/src/main/java/org/apache/mina/filter/codec/CumulativeProtocolDecoder.java index e950303..fc3ace9 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/CumulativeProtocolDecoder.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/CumulativeProtocolDecoder.java @@ -100,7 +100,7 @@ import org.apache.mina.core.session.IoSession; */ public abstract class CumulativeProtocolDecoder extends ProtocolDecoderAdapter { /** The buffer used to store the data in the session */ - private final AttributeKey BUFFER = new AttributeKey(getClass(), "buffer"); + private static final AttributeKey BUFFER = new AttributeKey(CumulativeProtocolDecoder.class, "buffer"); /** A flag set to true if we handle fragmentation accordingly to the TransportMetadata setting. * It can be set to false if needed (UDP with fragments, for instance). the default value is 'true' @@ -125,6 +125,7 @@ public abstract class CumulativeProtocolDecoder extends ProtocolDecoderAdapter { * if your <tt>doDecode()</tt> returned <tt>true</tt> not * consuming the cumulative buffer. */ + @Override public void decode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception { if (transportMetadataFragmentation && !session.getTransportMetadata().hasFragmentation()) { while (in.hasRemaining()) { @@ -147,11 +148,9 @@ public abstract class CumulativeProtocolDecoder extends ProtocolDecoderAdapter { try { buf.put(in); appended = true; - } catch (IllegalStateException e) { + } catch (IllegalStateException | IndexOutOfBoundsException e) { // A user called derivation method (e.g. slice()), // which disables auto-expansion of the parent buffer. - } catch (IndexOutOfBoundsException e) { - // A user disabled auto-expansion. } } http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java b/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java index 1f47928..97a76ea 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java @@ -98,10 +98,18 @@ public class ProtocolCodecFilter extends IoFilterAdapter { // Create the inner Factory based on the two parameters this.factory = new ProtocolCodecFactory() { + /** + * {@inheritDoc} + */ + @Override public ProtocolEncoder getEncoder(IoSession session) { return encoder; } + /** + * {@inheritDoc} + */ + @Override public ProtocolDecoder getDecoder(IoSession session) { return decoder; } @@ -160,10 +168,18 @@ public class ProtocolCodecFilter extends IoFilterAdapter { // Create the inner factory based on the two parameters. this.factory = new ProtocolCodecFactory() { + /** + * {@inheritDoc} + */ + @Override public ProtocolEncoder getEncoder(IoSession session) throws Exception { return encoder; } + /** + * {@inheritDoc} + */ + @Override public ProtocolDecoder getDecoder(IoSession session) throws Exception { return decoder; } @@ -180,6 +196,9 @@ public class ProtocolCodecFilter extends IoFilterAdapter { return (ProtocolEncoder) session.getAttribute(ENCODER); } + /** + * {@inheritDoc} + */ @Override public void onPreAdd(IoFilterChain parent, String name, NextFilter nextFilter) throws Exception { if (parent.contains(this)) { @@ -188,6 +207,9 @@ public class ProtocolCodecFilter extends IoFilterAdapter { } } + /** + * {@inheritDoc} + */ @Override public void onPostRemove(IoFilterChain parent, String name, NextFilter nextFilter) throws Exception { // Clean everything @@ -260,6 +282,9 @@ public class ProtocolCodecFilter extends IoFilterAdapter { } } + /** + * {@inheritDoc} + */ @Override public void messageSent(NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception { if (writeRequest instanceof EncodedWriteRequest) { @@ -274,6 +299,9 @@ public class ProtocolCodecFilter extends IoFilterAdapter { } } + /** + * {@inheritDoc} + */ @Override public void filterWrite(NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception { Object message = writeRequest.getMessage(); @@ -334,6 +362,9 @@ public class ProtocolCodecFilter extends IoFilterAdapter { } } + /** + * {@inheritDoc} + */ @Override public void sessionClosed(NextFilter nextFilter, IoSession session) throws Exception { // Call finishDecode() first when a connection is closed. @@ -365,6 +396,10 @@ public class ProtocolCodecFilter extends IoFilterAdapter { super(encodedMessage, future, destination); } + /** + * {@inheritDoc} + */ + @Override public boolean isEncoded() { return true; } @@ -391,6 +426,10 @@ public class ProtocolCodecFilter extends IoFilterAdapter { // Do nothing } + /** + * {@inheritDoc} + */ + @Override public void flush(NextFilter nextFilter, IoSession session) { Queue<Object> messageQueue = getMessageQueue(); @@ -416,6 +455,10 @@ public class ProtocolCodecFilter extends IoFilterAdapter { destination = writeRequest.getDestination(); } + /** + * {@inheritDoc} + */ + @Override public WriteFuture flush() { Queue<Object> bufferQueue = getMessageQueue(); WriteFuture future = null; http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecSession.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecSession.java b/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecSession.java index 4ef234a..2b5f89c 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecSession.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecSession.java @@ -63,12 +63,20 @@ public class ProtocolCodecSession extends DummySession { new UnsupportedOperationException()); private final AbstractProtocolEncoderOutput encoderOutput = new AbstractProtocolEncoderOutput() { + /** + * {@inheritDoc} + */ + @Override public WriteFuture flush() { return notWrittenFuture; } }; private final AbstractProtocolDecoderOutput decoderOutput = new AbstractProtocolDecoderOutput() { + /** + * {@inheritDoc} + */ + @Override public void flush(NextFilter nextFilter, IoSession session) { // Do nothing } http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolDecoderAdapter.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolDecoderAdapter.java b/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolDecoderAdapter.java index d4eea25..7bb6147 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolDecoderAdapter.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolDecoderAdapter.java @@ -34,6 +34,7 @@ public abstract class ProtocolDecoderAdapter implements ProtocolDecoder { * Override this method to deal with the closed connection. * The default implementation does nothing. */ + @Override public void finishDecode(IoSession session, ProtocolDecoderOutput out) throws Exception { // Do nothing } @@ -42,6 +43,7 @@ public abstract class ProtocolDecoderAdapter implements ProtocolDecoder { * Override this method to dispose all resources related with this decoder. * The default implementation does nothing. */ + @Override public void dispose(IoSession session) throws Exception { // Do nothing } http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolEncoderAdapter.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolEncoderAdapter.java b/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolEncoderAdapter.java index 2f62ba5..dd32171 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolEncoderAdapter.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolEncoderAdapter.java @@ -32,6 +32,7 @@ public abstract class ProtocolEncoderAdapter implements ProtocolEncoder { * Override this method dispose all resources related with this encoder. * The default implementation does nothing. */ + @Override public void dispose(IoSession session) throws Exception { // Do nothing } http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/SynchronizedProtocolDecoder.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/SynchronizedProtocolDecoder.java b/mina-core/src/main/java/org/apache/mina/filter/codec/SynchronizedProtocolDecoder.java index 6cb1d69..eda5dbe 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/SynchronizedProtocolDecoder.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/SynchronizedProtocolDecoder.java @@ -56,6 +56,10 @@ public class SynchronizedProtocolDecoder implements ProtocolDecoder { return decoder; } + /** + * {@inheritDoc} + */ + @Override public void decode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception { synchronized (decoder) { decoder.decode(session, in, out); @@ -65,6 +69,7 @@ public class SynchronizedProtocolDecoder implements ProtocolDecoder { /** * {@inheritDoc} */ + @Override public void finishDecode(IoSession session, ProtocolDecoderOutput out) throws Exception { synchronized (decoder) { decoder.finishDecode(session, out); @@ -74,6 +79,7 @@ public class SynchronizedProtocolDecoder implements ProtocolDecoder { /** * {@inheritDoc} */ + @Override public void dispose(IoSession session) throws Exception { synchronized (decoder) { decoder.dispose(session); http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/SynchronizedProtocolEncoder.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/SynchronizedProtocolEncoder.java b/mina-core/src/main/java/org/apache/mina/filter/codec/SynchronizedProtocolEncoder.java index 49c7c66..21d40cf 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/SynchronizedProtocolEncoder.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/SynchronizedProtocolEncoder.java @@ -55,6 +55,7 @@ public class SynchronizedProtocolEncoder implements ProtocolEncoder { /** * {@inheritDoc} */ + @Override public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception { synchronized (encoder) { encoder.encode(session, message, out); @@ -64,6 +65,7 @@ public class SynchronizedProtocolEncoder implements ProtocolEncoder { /** * {@inheritDoc} */ + @Override public void dispose(IoSession session) throws Exception { synchronized (encoder) { encoder.dispose(session); http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationCodecFactory.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationCodecFactory.java b/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationCodecFactory.java index fefe24e..ac91cad 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationCodecFactory.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationCodecFactory.java @@ -58,6 +58,7 @@ public class ObjectSerializationCodecFactory implements ProtocolCodecFactory { /** * {@inheritDoc} */ + @Override public ProtocolEncoder getEncoder(IoSession session) { return encoder; } @@ -65,6 +66,7 @@ public class ObjectSerializationCodecFactory implements ProtocolCodecFactory { /** * {@inheritDoc} */ + @Override public ProtocolDecoder getDecoder(IoSession session) { return decoder; } http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationEncoder.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationEncoder.java b/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationEncoder.java index 93fe4ee..70fdf16 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationEncoder.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationEncoder.java @@ -73,6 +73,7 @@ public class ObjectSerializationEncoder extends ProtocolEncoderAdapter { /** * {@inheritDoc} */ + @Override public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception { if (!(message instanceof Serializable)) { throw new NotSerializableException(); http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationInputStream.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationInputStream.java b/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationInputStream.java index d96ea8f..5da80cf 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationInputStream.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationInputStream.java @@ -62,7 +62,9 @@ public class ObjectSerializationInputStream extends InputStream implements Objec } if (classLoader == null) { - classLoader = Thread.currentThread().getContextClassLoader(); + this.classLoader = Thread.currentThread().getContextClassLoader(); + } else { + this.classLoader = classLoader; } if (in instanceof DataInputStream) { @@ -70,8 +72,6 @@ public class ObjectSerializationInputStream extends InputStream implements Objec } else { this.in = new DataInputStream(in); } - - this.classLoader = classLoader; } /** @@ -111,6 +111,7 @@ public class ObjectSerializationInputStream extends InputStream implements Objec /** * {@inheritDoc} */ + @Override public Object readObject() throws ClassNotFoundException, IOException { int objectSize = in.readInt(); if (objectSize <= 0) { @@ -133,6 +134,7 @@ public class ObjectSerializationInputStream extends InputStream implements Objec /** * {@inheritDoc} */ + @Override public boolean readBoolean() throws IOException { return in.readBoolean(); } @@ -140,6 +142,7 @@ public class ObjectSerializationInputStream extends InputStream implements Objec /** * {@inheritDoc} */ + @Override public byte readByte() throws IOException { return in.readByte(); } @@ -147,6 +150,7 @@ public class ObjectSerializationInputStream extends InputStream implements Objec /** * {@inheritDoc} */ + @Override public char readChar() throws IOException { return in.readChar(); } @@ -154,6 +158,7 @@ public class ObjectSerializationInputStream extends InputStream implements Objec /** * {@inheritDoc} */ + @Override public double readDouble() throws IOException { return in.readDouble(); } @@ -161,6 +166,7 @@ public class ObjectSerializationInputStream extends InputStream implements Objec /** * {@inheritDoc} */ + @Override public float readFloat() throws IOException { return in.readFloat(); } @@ -168,6 +174,7 @@ public class ObjectSerializationInputStream extends InputStream implements Objec /** * {@inheritDoc} */ + @Override public void readFully(byte[] b) throws IOException { in.readFully(b); } @@ -175,6 +182,7 @@ public class ObjectSerializationInputStream extends InputStream implements Objec /** * {@inheritDoc} */ + @Override public void readFully(byte[] b, int off, int len) throws IOException { in.readFully(b, off, len); } @@ -182,6 +190,7 @@ public class ObjectSerializationInputStream extends InputStream implements Objec /** * {@inheritDoc} */ + @Override public int readInt() throws IOException { return in.readInt(); } @@ -191,6 +200,7 @@ public class ObjectSerializationInputStream extends InputStream implements Objec * @deprecated Bytes are not properly converted to chars */ @Deprecated + @Override public String readLine() throws IOException { return in.readLine(); } @@ -198,6 +208,7 @@ public class ObjectSerializationInputStream extends InputStream implements Objec /** * {@inheritDoc} */ + @Override public long readLong() throws IOException { return in.readLong(); } @@ -205,6 +216,7 @@ public class ObjectSerializationInputStream extends InputStream implements Objec /** * {@inheritDoc} */ + @Override public short readShort() throws IOException { return in.readShort(); } @@ -212,6 +224,7 @@ public class ObjectSerializationInputStream extends InputStream implements Objec /** * {@inheritDoc} */ + @Override public String readUTF() throws IOException { return in.readUTF(); } @@ -219,6 +232,7 @@ public class ObjectSerializationInputStream extends InputStream implements Objec /** * {@inheritDoc} */ + @Override public int readUnsignedByte() throws IOException { return in.readUnsignedByte(); } @@ -226,6 +240,7 @@ public class ObjectSerializationInputStream extends InputStream implements Objec /** * {@inheritDoc} */ + @Override public int readUnsignedShort() throws IOException { return in.readUnsignedShort(); } @@ -233,6 +248,7 @@ public class ObjectSerializationInputStream extends InputStream implements Objec /** * {@inheritDoc} */ + @Override public int skipBytes(int n) throws IOException { return in.skipBytes(n); } http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationOutputStream.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationOutputStream.java b/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationOutputStream.java index 8243e75..c5e8898 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationOutputStream.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/serialization/ObjectSerializationOutputStream.java @@ -123,6 +123,7 @@ public class ObjectSerializationOutputStream extends OutputStream implements Obj /** * {@inheritDoc} */ + @Override public void writeObject(Object obj) throws IOException { IoBuffer buf = IoBuffer.allocate(64, false); buf.setAutoExpand(true); @@ -140,6 +141,7 @@ public class ObjectSerializationOutputStream extends OutputStream implements Obj /** * {@inheritDoc} */ + @Override public void writeBoolean(boolean v) throws IOException { out.writeBoolean(v); } @@ -147,6 +149,7 @@ public class ObjectSerializationOutputStream extends OutputStream implements Obj /** * {@inheritDoc} */ + @Override public void writeByte(int v) throws IOException { out.writeByte(v); } @@ -154,6 +157,7 @@ public class ObjectSerializationOutputStream extends OutputStream implements Obj /** * {@inheritDoc} */ + @Override public void writeBytes(String s) throws IOException { out.writeBytes(s); } @@ -161,6 +165,7 @@ public class ObjectSerializationOutputStream extends OutputStream implements Obj /** * {@inheritDoc} */ + @Override public void writeChar(int v) throws IOException { out.writeChar(v); } @@ -168,6 +173,7 @@ public class ObjectSerializationOutputStream extends OutputStream implements Obj /** * {@inheritDoc} */ + @Override public void writeChars(String s) throws IOException { out.writeChars(s); } @@ -175,6 +181,7 @@ public class ObjectSerializationOutputStream extends OutputStream implements Obj /** * {@inheritDoc} */ + @Override public void writeDouble(double v) throws IOException { out.writeDouble(v); } @@ -182,6 +189,7 @@ public class ObjectSerializationOutputStream extends OutputStream implements Obj /** * {@inheritDoc} */ + @Override public void writeFloat(float v) throws IOException { out.writeFloat(v); } @@ -189,6 +197,7 @@ public class ObjectSerializationOutputStream extends OutputStream implements Obj /** * {@inheritDoc} */ + @Override public void writeInt(int v) throws IOException { out.writeInt(v); } @@ -196,6 +205,7 @@ public class ObjectSerializationOutputStream extends OutputStream implements Obj /** * {@inheritDoc} */ + @Override public void writeLong(long v) throws IOException { out.writeLong(v); } @@ -203,6 +213,7 @@ public class ObjectSerializationOutputStream extends OutputStream implements Obj /** * {@inheritDoc} */ + @Override public void writeShort(int v) throws IOException { out.writeShort(v); } @@ -210,6 +221,7 @@ public class ObjectSerializationOutputStream extends OutputStream implements Obj /** * {@inheritDoc} */ + @Override public void writeUTF(String str) throws IOException { out.writeUTF(str); } http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToCrLfDecodingState.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToCrLfDecodingState.java b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToCrLfDecodingState.java index ca08ac4..49b9294 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToCrLfDecodingState.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToCrLfDecodingState.java @@ -51,6 +51,10 @@ public abstract class ConsumeToCrLfDecodingState implements DecodingState { // Do nothing } + /** + * {@inheritDoc} + */ + @Override public DecodingState decode(IoBuffer in, ProtocolDecoderOutput out) throws Exception { int beginPos = in.position(); int limit = in.limit(); @@ -118,6 +122,7 @@ public abstract class ConsumeToCrLfDecodingState implements DecodingState { /** * {@inheritDoc} */ + @Override public DecodingState finishDecode(ProtocolDecoderOutput out) throws Exception { IoBuffer product; // When input contained only CR or LF rather than actual data... http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToDynamicTerminatorDecodingState.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToDynamicTerminatorDecodingState.java b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToDynamicTerminatorDecodingState.java index 0c5ca4b..06f9903 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToDynamicTerminatorDecodingState.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToDynamicTerminatorDecodingState.java @@ -35,6 +35,7 @@ public abstract class ConsumeToDynamicTerminatorDecodingState implements Decodin /** * {@inheritDoc} */ + @Override public DecodingState decode(IoBuffer in, ProtocolDecoderOutput out) throws Exception { int beginPos = in.position(); int terminatorPos = -1; @@ -87,6 +88,7 @@ public abstract class ConsumeToDynamicTerminatorDecodingState implements Decodin /** * {@inheritDoc} */ + @Override public DecodingState finishDecode(ProtocolDecoderOutput out) throws Exception { IoBuffer product; // When input contained only terminator rather than actual data... http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToEndOfSessionDecodingState.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToEndOfSessionDecodingState.java b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToEndOfSessionDecodingState.java index a9847b8..f53fe21 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToEndOfSessionDecodingState.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToEndOfSessionDecodingState.java @@ -49,6 +49,7 @@ public abstract class ConsumeToEndOfSessionDecodingState implements DecodingStat /** * {@inheritDoc} */ + @Override public DecodingState decode(IoBuffer in, ProtocolDecoderOutput out) throws Exception { if (buffer == null) { buffer = IoBuffer.allocate(256).setAutoExpand(true); @@ -64,6 +65,7 @@ public abstract class ConsumeToEndOfSessionDecodingState implements DecodingStat /** * {@inheritDoc} */ + @Override public DecodingState finishDecode(ProtocolDecoderOutput out) throws Exception { try { if (buffer == null) { http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToTerminatorDecodingState.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToTerminatorDecodingState.java b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToTerminatorDecodingState.java index ef6538c..a3afd62 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToTerminatorDecodingState.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ConsumeToTerminatorDecodingState.java @@ -46,6 +46,7 @@ public abstract class ConsumeToTerminatorDecodingState implements DecodingState /** * {@inheritDoc} */ + @Override public DecodingState decode(IoBuffer in, ProtocolDecoderOutput out) throws Exception { int terminatorPos = in.indexOf(terminator); @@ -90,6 +91,7 @@ public abstract class ConsumeToTerminatorDecodingState implements DecodingState /** * {@inheritDoc} */ + @Override public DecodingState finishDecode(ProtocolDecoderOutput out) throws Exception { IoBuffer product; // When input contained only terminator rather than actual data... http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/CrLfDecodingState.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/CrLfDecodingState.java b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/CrLfDecodingState.java index c6fd00b..0d9ce1a 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/CrLfDecodingState.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/CrLfDecodingState.java @@ -50,6 +50,7 @@ public abstract class CrLfDecodingState implements DecodingState { /** * {@inheritDoc} */ + @Override public DecodingState decode(IoBuffer in, ProtocolDecoderOutput out) throws Exception { boolean found = false; boolean finished = false; @@ -90,6 +91,7 @@ public abstract class CrLfDecodingState implements DecodingState { /** * {@inheritDoc} */ + @Override public DecodingState finishDecode(ProtocolDecoderOutput out) throws Exception { return finishDecode(false, out); } http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/DecodingStateMachine.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/DecodingStateMachine.java b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/DecodingStateMachine.java index 2acec27..0e8e57f 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/DecodingStateMachine.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/DecodingStateMachine.java @@ -50,13 +50,21 @@ import org.slf4j.LoggerFactory; public abstract class DecodingStateMachine implements DecodingState { private final Logger log = LoggerFactory.getLogger(DecodingStateMachine.class); - private final List<Object> childProducts = new ArrayList<Object>(); + private final List<Object> childProducts = new ArrayList<>(); private final ProtocolDecoderOutput childOutput = new ProtocolDecoderOutput() { + /** + * {@inheritDoc} + */ + @Override public void flush(NextFilter nextFilter, IoSession session) { // Do nothing } + /** + * {@inheritDoc} + */ + @Override public void write(Object message) { childProducts.add(message); } @@ -99,6 +107,7 @@ public abstract class DecodingStateMachine implements DecodingState { /** * {@inheritDoc} */ + @Override public DecodingState decode(IoBuffer in, ProtocolDecoderOutput out) throws Exception { DecodingState state = getCurrentState(); @@ -146,6 +155,7 @@ public abstract class DecodingStateMachine implements DecodingState { /** * {@inheritDoc} */ + @Override public DecodingState finishDecode(ProtocolDecoderOutput out) throws Exception { DecodingState nextState; DecodingState state = getCurrentState(); http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/DecodingStateProtocolDecoder.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/DecodingStateProtocolDecoder.java b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/DecodingStateProtocolDecoder.java index 4c6fbbd..86bb5b3 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/DecodingStateProtocolDecoder.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/DecodingStateProtocolDecoder.java @@ -40,7 +40,7 @@ import org.apache.mina.filter.codec.ProtocolDecoderOutput; public class DecodingStateProtocolDecoder implements ProtocolDecoder { private final DecodingState state; - private final Queue<IoBuffer> undecodedBuffers = new ConcurrentLinkedQueue<IoBuffer>(); + private final Queue<IoBuffer> undecodedBuffers = new ConcurrentLinkedQueue<>(); private IoSession session; @@ -61,6 +61,7 @@ public class DecodingStateProtocolDecoder implements ProtocolDecoder { /** * {@inheritDoc} */ + @Override public void decode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception { if (this.session == null) { this.session = session; @@ -70,6 +71,7 @@ public class DecodingStateProtocolDecoder implements ProtocolDecoder { } undecodedBuffers.offer(in); + for (;;) { IoBuffer b = undecodedBuffers.peek(); if (b == null) { @@ -79,6 +81,7 @@ public class DecodingStateProtocolDecoder implements ProtocolDecoder { int oldRemaining = b.remaining(); state.decode(b, out); int newRemaining = b.remaining(); + if (newRemaining != 0) { if (oldRemaining == newRemaining) { throw new IllegalStateException(DecodingState.class.getSimpleName() + " must " @@ -93,6 +96,7 @@ public class DecodingStateProtocolDecoder implements ProtocolDecoder { /** * {@inheritDoc} */ + @Override public void finishDecode(IoSession session, ProtocolDecoderOutput out) throws Exception { state.finishDecode(out); } @@ -100,6 +104,7 @@ public class DecodingStateProtocolDecoder implements ProtocolDecoder { /** * {@inheritDoc} */ + @Override public void dispose(IoSession session) throws Exception { // Do nothing } http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/FixedLengthDecodingState.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/FixedLengthDecodingState.java b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/FixedLengthDecodingState.java index 8660931..1993df6 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/FixedLengthDecodingState.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/FixedLengthDecodingState.java @@ -48,6 +48,7 @@ public abstract class FixedLengthDecodingState implements DecodingState { /** * {@inheritDoc} */ + @Override public DecodingState decode(IoBuffer in, ProtocolDecoderOutput out) throws Exception { if (buffer == null) { if (in.remaining() >= length) { @@ -56,11 +57,13 @@ public abstract class FixedLengthDecodingState implements DecodingState { IoBuffer product = in.slice(); in.position(in.position() + length); in.limit(limit); + return finishDecode(product, out); } buffer = IoBuffer.allocate(length); buffer.put(in); + return this; } @@ -71,6 +74,7 @@ public abstract class FixedLengthDecodingState implements DecodingState { in.limit(limit); IoBuffer product = this.buffer; this.buffer = null; + return finishDecode(product.flip(), out); } @@ -81,14 +85,17 @@ public abstract class FixedLengthDecodingState implements DecodingState { /** * {@inheritDoc} */ + @Override public DecodingState finishDecode(ProtocolDecoderOutput out) throws Exception { IoBuffer readData; + if (buffer == null) { readData = IoBuffer.allocate(0); } else { readData = buffer.flip(); buffer = null; } + return finishDecode(readData, out); } http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/IntegerDecodingState.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/IntegerDecodingState.java b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/IntegerDecodingState.java index e21672c..631c1e5 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/IntegerDecodingState.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/IntegerDecodingState.java @@ -35,6 +35,7 @@ public abstract class IntegerDecodingState implements DecodingState { /** * {@inheritDoc} */ + @Override public DecodingState decode(IoBuffer in, ProtocolDecoderOutput out) throws Exception { int firstByte = 0; int secondByte = 0; @@ -71,6 +72,7 @@ public abstract class IntegerDecodingState implements DecodingState { /** * {@inheritDoc} */ + @Override public DecodingState finishDecode(ProtocolDecoderOutput out) throws Exception { throw new ProtocolDecoderException("Unexpected end of session while waiting for an integer."); } http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ShortIntegerDecodingState.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ShortIntegerDecodingState.java b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ShortIntegerDecodingState.java index c81d4c8..c219a90 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ShortIntegerDecodingState.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ShortIntegerDecodingState.java @@ -35,22 +35,23 @@ public abstract class ShortIntegerDecodingState implements DecodingState { /** * {@inheritDoc} */ + @Override public DecodingState decode(IoBuffer in, ProtocolDecoderOutput out) throws Exception { int highByte = 0; while (in.hasRemaining()) { switch (counter) { - case 0: - highByte = in.getUnsigned(); - break; - - case 1: - counter = 0; - return finishDecode((short) ((highByte << 8) | in.getUnsigned()), out); - - default: - throw new InternalError(); + case 0: + highByte = in.getUnsigned(); + break; + + case 1: + counter = 0; + return finishDecode((short) ((highByte << 8) | in.getUnsigned()), out); + + default: + throw new InternalError(); } counter++; @@ -61,6 +62,7 @@ public abstract class ShortIntegerDecodingState implements DecodingState { /** * {@inheritDoc} */ + @Override public DecodingState finishDecode(ProtocolDecoderOutput out) throws Exception { throw new ProtocolDecoderException("Unexpected end of session while waiting for a short integer."); } http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/SingleByteDecodingState.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/SingleByteDecodingState.java b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/SingleByteDecodingState.java index b1fc5c5..d0866e1 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/SingleByteDecodingState.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/SingleByteDecodingState.java @@ -29,7 +29,10 @@ import org.apache.mina.filter.codec.ProtocolDecoderOutput; * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ public abstract class SingleByteDecodingState implements DecodingState { - + /** + * {@inheritDoc} + */ + @Override public DecodingState decode(IoBuffer in, ProtocolDecoderOutput out) throws Exception { if (in.hasRemaining()) { return finishDecode(in.get(), out); @@ -41,6 +44,7 @@ public abstract class SingleByteDecodingState implements DecodingState { /** * {@inheritDoc} */ + @Override public DecodingState finishDecode(ProtocolDecoderOutput out) throws Exception { throw new ProtocolDecoderException("Unexpected end of session while waiting for a single byte."); } http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/SkippingState.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/SkippingState.java b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/SkippingState.java index 59956d4..ed45dec 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/SkippingState.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/SkippingState.java @@ -35,15 +35,19 @@ public abstract class SkippingState implements DecodingState { /** * {@inheritDoc} */ + @Override public DecodingState decode(IoBuffer in, ProtocolDecoderOutput out) throws Exception { int beginPos = in.position(); int limit = in.limit(); + for (int i = beginPos; i < limit; i++) { byte b = in.get(i); + if (!canSkip(b)) { in.position(i); int answer = this.skippedBytes; this.skippedBytes = 0; + return finishDecode(answer); } @@ -57,6 +61,7 @@ public abstract class SkippingState implements DecodingState { /** * {@inheritDoc} */ + @Override public DecodingState finishDecode(ProtocolDecoderOutput out) throws Exception { return finishDecode(skippedBytes); } http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/textline/TextLineCodecFactory.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/textline/TextLineCodecFactory.java b/mina-core/src/main/java/org/apache/mina/filter/codec/textline/TextLineCodecFactory.java index b6f7374..9858f3e 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/textline/TextLineCodecFactory.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/textline/TextLineCodecFactory.java @@ -94,6 +94,7 @@ public class TextLineCodecFactory implements ProtocolCodecFactory { /** * {@inheritDoc} */ + @Override public ProtocolEncoder getEncoder(IoSession session) { return encoder; } @@ -101,6 +102,7 @@ public class TextLineCodecFactory implements ProtocolCodecFactory { /** * {@inheritDoc} */ + @Override public ProtocolDecoder getDecoder(IoSession session) { return decoder; } http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java b/mina-core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java index a42ee27..ad43b38 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/textline/TextLineDecoder.java @@ -40,7 +40,7 @@ import org.apache.mina.filter.codec.RecoverableProtocolDecoderException; * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ public class TextLineDecoder implements ProtocolDecoder { - private final AttributeKey CONTEXT = new AttributeKey(getClass(), "context"); + private static final AttributeKey CONTEXT = new AttributeKey(TextLineDecoder.class, "context"); private final Charset charset; @@ -191,6 +191,7 @@ public class TextLineDecoder implements ProtocolDecoder { /** * {@inheritDoc} */ + @Override public void decode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception { Context ctx = getContext(session); @@ -221,6 +222,7 @@ public class TextLineDecoder implements ProtocolDecoder { /** * {@inheritDoc} */ + @Override public void finishDecode(IoSession session, ProtocolDecoderOutput out) throws Exception { // Do nothing } @@ -228,6 +230,7 @@ public class TextLineDecoder implements ProtocolDecoder { /** * {@inheritDoc} */ + @Override public void dispose(IoSession session) throws Exception { Context ctx = (Context) session.getAttribute(CONTEXT); http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/codec/textline/TextLineEncoder.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/textline/TextLineEncoder.java b/mina-core/src/main/java/org/apache/mina/filter/codec/textline/TextLineEncoder.java index 9c38390..bd19c4d 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/textline/TextLineEncoder.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/textline/TextLineEncoder.java @@ -144,6 +144,7 @@ public class TextLineEncoder extends ProtocolEncoderAdapter { /** * {@inheritDoc} */ + @Override public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception { CharsetEncoder encoder = (CharsetEncoder) session.getAttribute(ENCODER); @@ -152,7 +153,7 @@ public class TextLineEncoder extends ProtocolEncoderAdapter { session.setAttribute(ENCODER, encoder); } - String value = (message == null ? "" : message.toString()); + String value = message == null ? "" : message.toString(); IoBuffer buf = IoBuffer.allocate(value.length()).setAutoExpand(true); buf.putString(value, encoder); http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/errorgenerating/ErrorGeneratingFilter.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/errorgenerating/ErrorGeneratingFilter.java b/mina-core/src/main/java/org/apache/mina/filter/errorgenerating/ErrorGeneratingFilter.java index 6ab6acc..d325731 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/errorgenerating/ErrorGeneratingFilter.java +++ b/mina-core/src/main/java/org/apache/mina/filter/errorgenerating/ErrorGeneratingFilter.java @@ -73,7 +73,7 @@ public class ErrorGeneratingFilter extends IoFilterAdapter { private Random rng = new Random(); - final private Logger logger = LoggerFactory.getLogger(ErrorGeneratingFilter.class); + private final Logger logger = LoggerFactory.getLogger(ErrorGeneratingFilter.class); @Override public void filterWrite(NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception { @@ -82,6 +82,7 @@ public class ErrorGeneratingFilter extends IoFilterAdapter { if (writeRequest.getMessage() instanceof IoBuffer) { manipulateIoBuffer(session, (IoBuffer) writeRequest.getMessage()); IoBuffer buffer = insertBytesToNewIoBuffer(session, (IoBuffer) writeRequest.getMessage()); + if (buffer != null) { writeRequest = new DefaultWriteRequest(buffer, writeRequest.getFuture(), writeRequest.getDestination()); @@ -97,29 +98,28 @@ public class ErrorGeneratingFilter extends IoFilterAdapter { // later // TODO } + if (removePduProbability > rng.nextInt()) { return; } } } + nextFilter.filterWrite(session, writeRequest); } @Override public void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception { - if (manipulateReads) { - if (message instanceof IoBuffer) { - // manipulate bytes - manipulateIoBuffer(session, (IoBuffer) message); - IoBuffer buffer = insertBytesToNewIoBuffer(session, (IoBuffer) message); - if (buffer != null) { - message = buffer; - } - } else { - // manipulate PDU - // TODO + if (manipulateReads && (message instanceof IoBuffer)) { + // manipulate bytes + manipulateIoBuffer(session, (IoBuffer) message); + IoBuffer buffer = insertBytesToNewIoBuffer(session, (IoBuffer) message); + + if (buffer != null) { + message = buffer; } } + nextFilter.messageReceived(session, message); } @@ -191,6 +191,9 @@ public class ErrorGeneratingFilter extends IoFilterAdapter { } } + /** + * @return The probably that a byte changes + */ public int getChangeByteProbability() { return changeByteProbability; } @@ -205,6 +208,9 @@ public class ErrorGeneratingFilter extends IoFilterAdapter { this.changeByteProbability = changeByteProbability; } + /** + * @return The probability for generating duplicated PDU + */ public int getDuplicatePduProbability() { return duplicatePduProbability; } @@ -217,6 +223,9 @@ public class ErrorGeneratingFilter extends IoFilterAdapter { this.duplicatePduProbability = duplicatePduProbability; } + /** + * @return the probability for the insert byte error. + */ public int getInsertByteProbability() { return insertByteProbability; } @@ -231,6 +240,9 @@ public class ErrorGeneratingFilter extends IoFilterAdapter { this.insertByteProbability = insertByteProbability; } + /** + * @return The number of manipulated reads + */ public boolean isManipulateReads() { return manipulateReads; } @@ -244,6 +256,9 @@ public class ErrorGeneratingFilter extends IoFilterAdapter { this.manipulateReads = manipulateReads; } + /** + * @return If manipulated writes are expected or not + */ public boolean isManipulateWrites() { return manipulateWrites; } @@ -251,12 +266,15 @@ public class ErrorGeneratingFilter extends IoFilterAdapter { /** * Set to true if you want to apply error to the written {@link IoBuffer} * - * @param manipulateWrites The umber of manipulated writes + * @param manipulateWrites If manipulated writes are expected or not */ public void setManipulateWrites(boolean manipulateWrites) { this.manipulateWrites = manipulateWrites; } + /** + * @return The probability for the remove byte error + */ public int getRemoveByteProbability() { return removeByteProbability; } @@ -272,6 +290,9 @@ public class ErrorGeneratingFilter extends IoFilterAdapter { this.removeByteProbability = removeByteProbability; } + /** + * @return The PDU removal probability + */ public int getRemovePduProbability() { return removePduProbability; } @@ -284,6 +305,9 @@ public class ErrorGeneratingFilter extends IoFilterAdapter { this.removePduProbability = removePduProbability; } + /** + * @return The delay before a resend + */ public int getResendPduLasterProbability() { return resendPduLasterProbability; } @@ -296,6 +320,9 @@ public class ErrorGeneratingFilter extends IoFilterAdapter { this.resendPduLasterProbability = resendPduLasterProbability; } + /** + * @return maximum bytes inserted in a {@link IoBuffer} + */ public int getMaxInsertByte() { return maxInsertByte; } http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/executor/DefaultIoEventSizeEstimator.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/executor/DefaultIoEventSizeEstimator.java b/mina-core/src/main/java/org/apache/mina/filter/executor/DefaultIoEventSizeEstimator.java index a3cd992..858e0a1 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/executor/DefaultIoEventSizeEstimator.java +++ b/mina-core/src/main/java/org/apache/mina/filter/executor/DefaultIoEventSizeEstimator.java @@ -45,7 +45,7 @@ import org.apache.mina.core.write.WriteRequest; */ public class DefaultIoEventSizeEstimator implements IoEventSizeEstimator { /** A map containing the estimated size of each Java objects we know for */ - private final ConcurrentMap<Class<?>, Integer> class2size = new ConcurrentHashMap<Class<?>, Integer>(); + private final ConcurrentMap<Class<?>, Integer> class2size = new ConcurrentHashMap<>(); /** * Create a new instance of this class, injecting the known size of @@ -66,6 +66,7 @@ public class DefaultIoEventSizeEstimator implements IoEventSizeEstimator { /** * {@inheritDoc} */ + @Override public int estimateSize(IoEvent event) { return estimateSize((Object) event) + estimateSize(event.getParameter()); } @@ -109,7 +110,7 @@ public class DefaultIoEventSizeEstimator implements IoEventSizeEstimator { return 0; } } else { - visitedClasses = new HashSet<Class<?>>(); + visitedClasses = new HashSet<>(); } visitedClasses.add(clazz); http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java b/mina-core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java index 7d76b36..178fd8d 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java +++ b/mina-core/src/main/java/org/apache/mina/filter/executor/ExecutorFilter.java @@ -150,11 +150,11 @@ public class ExecutorFilter extends IoFilterAdapter { */ public ExecutorFilter() { // Create a new default Executor - Executor executor = createDefaultExecutor(BASE_THREAD_NUMBER, DEFAULT_MAX_POOL_SIZE, DEFAULT_KEEPALIVE_TIME, + Executor newExecutor = createDefaultExecutor(BASE_THREAD_NUMBER, DEFAULT_MAX_POOL_SIZE, DEFAULT_KEEPALIVE_TIME, TimeUnit.SECONDS, Executors.defaultThreadFactory(), null); // Initialize the filter - init(executor, MANAGEABLE_EXECUTOR); + init(newExecutor, MANAGEABLE_EXECUTOR); } /** @@ -167,11 +167,11 @@ public class ExecutorFilter extends IoFilterAdapter { */ public ExecutorFilter(int maximumPoolSize) { // Create a new default Executor - Executor executor = createDefaultExecutor(BASE_THREAD_NUMBER, maximumPoolSize, DEFAULT_KEEPALIVE_TIME, + Executor newExecutor = createDefaultExecutor(BASE_THREAD_NUMBER, maximumPoolSize, DEFAULT_KEEPALIVE_TIME, TimeUnit.SECONDS, Executors.defaultThreadFactory(), null); // Initialize the filter - init(executor, MANAGEABLE_EXECUTOR); + init(newExecutor, MANAGEABLE_EXECUTOR); } /** @@ -185,11 +185,11 @@ public class ExecutorFilter extends IoFilterAdapter { */ public ExecutorFilter(int corePoolSize, int maximumPoolSize) { // Create a new default Executor - Executor executor = createDefaultExecutor(corePoolSize, maximumPoolSize, DEFAULT_KEEPALIVE_TIME, + Executor newExecutor = createDefaultExecutor(corePoolSize, maximumPoolSize, DEFAULT_KEEPALIVE_TIME, TimeUnit.SECONDS, Executors.defaultThreadFactory(), null); // Initialize the filter - init(executor, MANAGEABLE_EXECUTOR); + init(newExecutor, MANAGEABLE_EXECUTOR); } /** @@ -203,11 +203,11 @@ public class ExecutorFilter extends IoFilterAdapter { */ public ExecutorFilter(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit) { // Create a new default Executor - Executor executor = createDefaultExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, + Executor newExecutor = createDefaultExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, Executors.defaultThreadFactory(), null); // Initialize the filter - init(executor, MANAGEABLE_EXECUTOR); + init(newExecutor, MANAGEABLE_EXECUTOR); } /** @@ -223,11 +223,11 @@ public class ExecutorFilter extends IoFilterAdapter { public ExecutorFilter(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, IoEventQueueHandler queueHandler) { // Create a new default Executor - Executor executor = createDefaultExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, + Executor newExecutor = createDefaultExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, Executors.defaultThreadFactory(), queueHandler); // Initialize the filter - init(executor, MANAGEABLE_EXECUTOR); + init(newExecutor, MANAGEABLE_EXECUTOR); } /** @@ -243,11 +243,11 @@ public class ExecutorFilter extends IoFilterAdapter { public ExecutorFilter(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, ThreadFactory threadFactory) { // Create a new default Executor - Executor executor = createDefaultExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, threadFactory, + Executor newExecutor = createDefaultExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, threadFactory, null); // Initialize the filter - init(executor, MANAGEABLE_EXECUTOR); + init(newExecutor, MANAGEABLE_EXECUTOR); } /** @@ -264,11 +264,11 @@ public class ExecutorFilter extends IoFilterAdapter { public ExecutorFilter(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, ThreadFactory threadFactory, IoEventQueueHandler queueHandler) { // Create a new default Executor - Executor executor = new OrderedThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, + Executor newExecutor = new OrderedThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, threadFactory, queueHandler); // Initialize the filter - init(executor, MANAGEABLE_EXECUTOR); + init(newExecutor, MANAGEABLE_EXECUTOR); } /** @@ -279,11 +279,11 @@ public class ExecutorFilter extends IoFilterAdapter { */ public ExecutorFilter(IoEventType... eventTypes) { // Create a new default Executor - Executor executor = createDefaultExecutor(BASE_THREAD_NUMBER, DEFAULT_MAX_POOL_SIZE, DEFAULT_KEEPALIVE_TIME, + Executor newExecutor = createDefaultExecutor(BASE_THREAD_NUMBER, DEFAULT_MAX_POOL_SIZE, DEFAULT_KEEPALIVE_TIME, TimeUnit.SECONDS, Executors.defaultThreadFactory(), null); // Initialize the filter - init(executor, MANAGEABLE_EXECUTOR, eventTypes); + init(newExecutor, MANAGEABLE_EXECUTOR, eventTypes); } /** @@ -295,11 +295,11 @@ public class ExecutorFilter extends IoFilterAdapter { */ public ExecutorFilter(int maximumPoolSize, IoEventType... eventTypes) { // Create a new default Executor - Executor executor = createDefaultExecutor(BASE_THREAD_NUMBER, maximumPoolSize, DEFAULT_KEEPALIVE_TIME, + Executor newExecutor = createDefaultExecutor(BASE_THREAD_NUMBER, maximumPoolSize, DEFAULT_KEEPALIVE_TIME, TimeUnit.SECONDS, Executors.defaultThreadFactory(), null); // Initialize the filter - init(executor, MANAGEABLE_EXECUTOR, eventTypes); + init(newExecutor, MANAGEABLE_EXECUTOR, eventTypes); } /** @@ -312,11 +312,11 @@ public class ExecutorFilter extends IoFilterAdapter { */ public ExecutorFilter(int corePoolSize, int maximumPoolSize, IoEventType... eventTypes) { // Create a new default Executor - Executor executor = createDefaultExecutor(corePoolSize, maximumPoolSize, DEFAULT_KEEPALIVE_TIME, + Executor newExecutor = createDefaultExecutor(corePoolSize, maximumPoolSize, DEFAULT_KEEPALIVE_TIME, TimeUnit.SECONDS, Executors.defaultThreadFactory(), null); // Initialize the filter - init(executor, MANAGEABLE_EXECUTOR, eventTypes); + init(newExecutor, MANAGEABLE_EXECUTOR, eventTypes); } /** @@ -332,11 +332,11 @@ public class ExecutorFilter extends IoFilterAdapter { public ExecutorFilter(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, IoEventType... eventTypes) { // Create a new default Executor - Executor executor = createDefaultExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, + Executor newExecutor = createDefaultExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, Executors.defaultThreadFactory(), null); // Initialize the filter - init(executor, MANAGEABLE_EXECUTOR, eventTypes); + init(newExecutor, MANAGEABLE_EXECUTOR, eventTypes); } /** @@ -353,11 +353,11 @@ public class ExecutorFilter extends IoFilterAdapter { public ExecutorFilter(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, IoEventQueueHandler queueHandler, IoEventType... eventTypes) { // Create a new default Executor - Executor executor = createDefaultExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, + Executor newExecutor = createDefaultExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, Executors.defaultThreadFactory(), queueHandler); // Initialize the filter - init(executor, MANAGEABLE_EXECUTOR, eventTypes); + init(newExecutor, MANAGEABLE_EXECUTOR, eventTypes); } /** @@ -374,11 +374,11 @@ public class ExecutorFilter extends IoFilterAdapter { public ExecutorFilter(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, ThreadFactory threadFactory, IoEventType... eventTypes) { // Create a new default Executor - Executor executor = createDefaultExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, threadFactory, + Executor newExecutor = createDefaultExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, threadFactory, null); // Initialize the filter - init(executor, MANAGEABLE_EXECUTOR, eventTypes); + init(newExecutor, MANAGEABLE_EXECUTOR, eventTypes); } /** @@ -396,11 +396,11 @@ public class ExecutorFilter extends IoFilterAdapter { public ExecutorFilter(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, ThreadFactory threadFactory, IoEventQueueHandler queueHandler, IoEventType... eventTypes) { // Create a new default Executor - Executor executor = new OrderedThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, + Executor newExecutor = new OrderedThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, threadFactory, queueHandler); // Initialize the filter - init(executor, MANAGEABLE_EXECUTOR, eventTypes); + init(newExecutor, MANAGEABLE_EXECUTOR, eventTypes); } /** @@ -438,10 +438,8 @@ public class ExecutorFilter extends IoFilterAdapter { private Executor createDefaultExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, ThreadFactory threadFactory, IoEventQueueHandler queueHandler) { // Create a new Executor - Executor executor = new OrderedThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, + return new OrderedThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, threadFactory, queueHandler); - - return executor; } /** http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/executor/IoEventQueueHandler.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/executor/IoEventQueueHandler.java b/mina-core/src/main/java/org/apache/mina/filter/executor/IoEventQueueHandler.java index 9c0cbaf..ceba804 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/executor/IoEventQueueHandler.java +++ b/mina-core/src/main/java/org/apache/mina/filter/executor/IoEventQueueHandler.java @@ -35,14 +35,26 @@ public interface IoEventQueueHandler extends EventListener { * A dummy handler which always accepts event doing nothing particular. */ IoEventQueueHandler NOOP = new IoEventQueueHandler() { + /** + * {@inheritDoc} + */ + @Override public boolean accept(Object source, IoEvent event) { return true; } + /** + * {@inheritDoc} + */ + @Override public void offered(Object source, IoEvent event) { // NOOP } + /** + * {@inheritDoc} + */ + @Override public void polled(Object source, IoEvent event) { // NOOP } http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/executor/IoEventQueueThrottle.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/executor/IoEventQueueThrottle.java b/mina-core/src/main/java/org/apache/mina/filter/executor/IoEventQueueThrottle.java index b490cb2..9170764 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/executor/IoEventQueueThrottle.java +++ b/mina-core/src/main/java/org/apache/mina/filter/executor/IoEventQueueThrottle.java @@ -32,7 +32,7 @@ import org.slf4j.LoggerFactory; */ public class IoEventQueueThrottle implements IoEventQueueHandler { /** A logger for this class */ - private final static Logger LOGGER = LoggerFactory.getLogger(IoEventQueueThrottle.class); + private static final Logger LOGGER = LoggerFactory.getLogger(IoEventQueueThrottle.class); /** The event size estimator instance */ private final IoEventSizeEstimator eventSizeEstimator; @@ -41,18 +41,33 @@ public class IoEventQueueThrottle implements IoEventQueueHandler { private final Object lock = new Object(); + /** The number of events we hold */ private final AtomicInteger counter = new AtomicInteger(); private int waiters; + /** + * Creates a new IoEventQueueThrottle instance + */ public IoEventQueueThrottle() { this(new DefaultIoEventSizeEstimator(), 65536); } + /** + * Creates a new IoEventQueueThrottle instance + * + * @param threshold The events threshold + */ public IoEventQueueThrottle(int threshold) { this(new DefaultIoEventSizeEstimator(), threshold); } + /** + * Creates a new IoEventQueueThrottle instance + * + * @param eventSizeEstimator The IoEventSizeEstimator instance + * @param threshold The events threshold + */ public IoEventQueueThrottle(IoEventSizeEstimator eventSizeEstimator, int threshold) { if (eventSizeEstimator == null) { throw new IllegalArgumentException("eventSizeEstimator"); @@ -63,18 +78,32 @@ public class IoEventQueueThrottle implements IoEventQueueHandler { setThreshold(threshold); } + /** + * @return The IoEventSizeEstimator instance + */ public IoEventSizeEstimator getEventSizeEstimator() { return eventSizeEstimator; } + /** + * @return The events threshold + */ public int getThreshold() { return threshold; } + /** + * @return The number of events currently held + */ public int getCounter() { return counter.get(); } + /** + * Sets the events threshold + * + * @param threshold The events threshold + */ public void setThreshold(int threshold) { if (threshold <= 0) { throw new IllegalArgumentException("threshold: " + threshold); @@ -83,10 +112,18 @@ public class IoEventQueueThrottle implements IoEventQueueHandler { this.threshold = threshold; } + /** + * {@inheritDoc} + */ + @Override public boolean accept(Object source, IoEvent event) { return true; } + /** + * {@inheritDoc} + */ + @Override public void offered(Object source, IoEvent event) { int eventSize = estimateSize(event); int currentCounter = counter.addAndGet(eventSize); @@ -97,6 +134,10 @@ public class IoEventQueueThrottle implements IoEventQueueHandler { } } + /** + * {@inheritDoc} + */ + @Override public void polled(Object source, IoEvent event) { int eventSize = estimateSize(event); int currentCounter = counter.addAndGet(-eventSize); http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/executor/OrderedThreadPoolExecutor.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/executor/OrderedThreadPoolExecutor.java b/mina-core/src/main/java/org/apache/mina/filter/executor/OrderedThreadPoolExecutor.java index 101aa2b..da8333d 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/executor/OrderedThreadPoolExecutor.java +++ b/mina-core/src/main/java/org/apache/mina/filter/executor/OrderedThreadPoolExecutor.java @@ -68,12 +68,12 @@ public class OrderedThreadPoolExecutor extends ThreadPoolExecutor { private static final IoSession EXIT_SIGNAL = new DummySession(); /** A key stored into the session's attribute for the event tasks being queued */ - private final AttributeKey TASKS_QUEUE = new AttributeKey(getClass(), "tasksQueue"); + private static final AttributeKey TASKS_QUEUE = new AttributeKey(OrderedThreadPoolExecutor.class, "tasksQueue"); /** A queue used to store the available sessions */ - private final BlockingQueue<IoSession> waitingSessions = new LinkedBlockingQueue<IoSession>(); + private final BlockingQueue<IoSession> waitingSessions = new LinkedBlockingQueue<>(); - private final Set<Worker> workers = new HashSet<Worker>(); + private final Set<Worker> workers = new HashSet<>(); private volatile int largestPoolSize; @@ -294,14 +294,6 @@ public class OrderedThreadPoolExecutor extends ThreadPoolExecutor { * {@inheritDoc} */ @Override - public int getMaximumPoolSize() { - return super.getMaximumPoolSize(); - } - - /** - * {@inheritDoc} - */ - @Override public void setMaximumPoolSize(int maximumPoolSize) { if ((maximumPoolSize <= 0) || (maximumPoolSize < super.getCorePoolSize())) { throw new IllegalArgumentException("maximumPoolSize: " + maximumPoolSize); @@ -385,7 +377,7 @@ public class OrderedThreadPoolExecutor extends ThreadPoolExecutor { public List<Runnable> shutdownNow() { shutdown(); - List<Runnable> answer = new ArrayList<Runnable>(); + List<Runnable> answer = new ArrayList<>(); IoSession session; while ((session = waitingSessions.poll()) != null) { @@ -644,14 +636,6 @@ public class OrderedThreadPoolExecutor extends ThreadPoolExecutor { * {@inheritDoc} */ @Override - public int getCorePoolSize() { - return super.getCorePoolSize(); - } - - /** - * {@inheritDoc} - */ - @Override public void setCorePoolSize(int corePoolSize) { if (corePoolSize < 0) { throw new IllegalArgumentException("corePoolSize: " + corePoolSize); @@ -676,6 +660,10 @@ public class OrderedThreadPoolExecutor extends ThreadPoolExecutor { private Thread thread; + /** + * @inheritedDoc + */ + @Override public void run() { thread = Thread.currentThread(); @@ -720,9 +708,11 @@ public class OrderedThreadPoolExecutor extends ThreadPoolExecutor { IoSession session = null; long currentTime = System.currentTimeMillis(); long deadline = currentTime + getKeepAliveTime(TimeUnit.MILLISECONDS); + for (;;) { try { long waitTime = deadline - currentTime; + if (waitTime <= 0) { break; } @@ -731,7 +721,7 @@ public class OrderedThreadPoolExecutor extends ThreadPoolExecutor { session = waitingSessions.poll(waitTime, TimeUnit.MILLISECONDS); break; } finally { - if (session == null) { + if (session != null) { currentTime = System.currentTimeMillis(); } } @@ -740,6 +730,7 @@ public class OrderedThreadPoolExecutor extends ThreadPoolExecutor { continue; } } + return session; } @@ -786,7 +777,7 @@ public class OrderedThreadPoolExecutor extends ThreadPoolExecutor { */ private class SessionTasksQueue { /** A queue of ordered event waiting to be processed */ - private final Queue<Runnable> tasksQueue = new ConcurrentLinkedQueue<Runnable>(); + private final Queue<Runnable> tasksQueue = new ConcurrentLinkedQueue<>(); /** The current task state */ private boolean processingCompleted = true; http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/executor/UnorderedThreadPoolExecutor.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/executor/UnorderedThreadPoolExecutor.java b/mina-core/src/main/java/org/apache/mina/filter/executor/UnorderedThreadPoolExecutor.java index 4743866..3136492 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/executor/UnorderedThreadPoolExecutor.java +++ b/mina-core/src/main/java/org/apache/mina/filter/executor/UnorderedThreadPoolExecutor.java @@ -55,12 +55,16 @@ import org.apache.mina.core.session.IoEvent; public class UnorderedThreadPoolExecutor extends ThreadPoolExecutor { private static final Runnable EXIT_SIGNAL = new Runnable() { + /** + * {@inheritDoc} + */ + @Override public void run() { throw new Error("This method shouldn't be called. " + "Please file a bug report."); } }; - private final Set<Worker> workers = new HashSet<Worker>(); + private final Set<Worker> workers = new HashSet<>(); private volatile int corePoolSize; @@ -76,35 +80,86 @@ public class UnorderedThreadPoolExecutor extends ThreadPoolExecutor { private final IoEventQueueHandler queueHandler; + /** + * Creates a new UnorderedThreadPoolExecutor instance + */ public UnorderedThreadPoolExecutor() { this(16); } + /** + * Creates a new UnorderedThreadPoolExecutor instance + * + * @param maximumPoolSize The maximum number of threads in the pool + */ public UnorderedThreadPoolExecutor(int maximumPoolSize) { this(0, maximumPoolSize); } + /** + * Creates a new UnorderedThreadPoolExecutor instance + * + * @param corePoolSize The initial threads pool size + * @param maximumPoolSize The maximum number of threads in the pool + */ public UnorderedThreadPoolExecutor(int corePoolSize, int maximumPoolSize) { this(corePoolSize, maximumPoolSize, 30, TimeUnit.SECONDS); } + /** + * Creates a new UnorderedThreadPoolExecutor instance + * + * @param corePoolSize The initial threads pool size + * @param maximumPoolSize The maximum number of threads in the pool + * @param keepAliveTime The time to keep threads alive + * @param unit The time unit for the keepAliveTime + */ public UnorderedThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit) { this(corePoolSize, maximumPoolSize, keepAliveTime, unit, Executors.defaultThreadFactory()); } + /** + * Creates a new UnorderedThreadPoolExecutor instance + * + * @param corePoolSize The initial threads pool size + * @param maximumPoolSize The maximum number of threads in the pool + * @param keepAliveTime The time to keep threads alive + * @param unit The time unit for the keepAliveTime + * @param queueHandler The Event queue handler to use + */ public UnorderedThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, IoEventQueueHandler queueHandler) { this(corePoolSize, maximumPoolSize, keepAliveTime, unit, Executors.defaultThreadFactory(), queueHandler); } + /** + * Creates a new UnorderedThreadPoolExecutor instance + * + * @param corePoolSize The initial threads pool size + * @param maximumPoolSize The maximum number of threads in the pool + * @param keepAliveTime The time to keep threads alive + * @param unit The time unit for the keepAliveTime + * @param threadFactory The Thread factory to use + */ public UnorderedThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, ThreadFactory threadFactory) { this(corePoolSize, maximumPoolSize, keepAliveTime, unit, threadFactory, null); } + /** + * Creates a new UnorderedThreadPoolExecutor instance + * + * @param corePoolSize The initial threads pool size + * @param maximumPoolSize The maximum number of threads in the pool + * @param keepAliveTime The time to keep threads alive + * @param unit The time unit for the keepAliveTime + * @param threadFactory The Thread factory to use + * @param queueHandler The Event queue handler to use + */ public UnorderedThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, ThreadFactory threadFactory, IoEventQueueHandler queueHandler) { super(0, 1, keepAliveTime, unit, new LinkedBlockingQueue<Runnable>(), threadFactory, new AbortPolicy()); + if (corePoolSize < 0) { throw new IllegalArgumentException("corePoolSize: " + corePoolSize); } @@ -114,14 +169,18 @@ public class UnorderedThreadPoolExecutor extends ThreadPoolExecutor { } if (queueHandler == null) { - queueHandler = IoEventQueueHandler.NOOP; + this.queueHandler = IoEventQueueHandler.NOOP; + } else { + this.queueHandler = queueHandler; } this.corePoolSize = corePoolSize; this.maximumPoolSize = maximumPoolSize; - this.queueHandler = queueHandler; } + /** + * @return The Queue handler in use + */ public IoEventQueueHandler getQueueHandler() { return queueHandler; } @@ -242,7 +301,7 @@ public class UnorderedThreadPoolExecutor extends ThreadPoolExecutor { public List<Runnable> shutdownNow() { shutdown(); - List<Runnable> answer = new ArrayList<Runnable>(); + List<Runnable> answer = new ArrayList<>(); Runnable task; while ((task = getQueue().poll()) != null) { if (task == EXIT_SIGNAL) { @@ -401,6 +460,10 @@ public class UnorderedThreadPoolExecutor extends ThreadPoolExecutor { private Thread thread; + /** + * {@inheritDoc} + */ + @Override public void run() { thread = Thread.currentThread(); @@ -446,9 +509,11 @@ public class UnorderedThreadPoolExecutor extends ThreadPoolExecutor { Runnable task = null; long currentTime = System.currentTimeMillis(); long deadline = currentTime + getKeepAliveTime(TimeUnit.MILLISECONDS); + for (;;) { try { long waitTime = deadline - currentTime; + if (waitTime <= 0) { break; } http://git-wip-us.apache.org/repos/asf/mina/blob/a9c468fb/mina-core/src/main/java/org/apache/mina/filter/executor/WriteRequestFilter.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/executor/WriteRequestFilter.java b/mina-core/src/main/java/org/apache/mina/filter/executor/WriteRequestFilter.java index 1485d5a..baf93d6 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/executor/WriteRequestFilter.java +++ b/mina-core/src/main/java/org/apache/mina/filter/executor/WriteRequestFilter.java @@ -91,6 +91,9 @@ public class WriteRequestFilter extends IoFilterAdapter { return queueHandler; } + /** + * @inheritedDoc + */ @Override public void filterWrite(NextFilter nextFilter, IoSession session, WriteRequest writeRequest) throws Exception { @@ -106,6 +109,10 @@ public class WriteRequestFilter extends IoFilterAdapter { // We can track the write request only when it has a future. queueHandler.offered(this, e); writeFuture.addListener(new IoFutureListener<WriteFuture>() { + /** + * @inheritedDoc + */ + @Override public void operationComplete(WriteFuture future) { queueHandler.polled(WriteRequestFilter.this, e); }
