Repository: mina Updated Branches: refs/heads/2.0 a20f6d8c3 -> fed4aed8e
Added some missing Javadoc Project: http://git-wip-us.apache.org/repos/asf/mina/repo Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/247c3d9c Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/247c3d9c Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/247c3d9c Branch: refs/heads/2.0 Commit: 247c3d9c706d02dd12c138e75a2ea18415270c06 Parents: a20f6d8 Author: Emmanuel Lécharny <elecha...@symas.com> Authored: Tue Nov 29 20:54:34 2016 +0100 Committer: Emmanuel Lécharny <elecha...@symas.com> Committed: Tue Nov 29 20:54:34 2016 +0100 ---------------------------------------------------------------------- .../mina/core/session/AbstractIoSession.java | 4 - .../core/session/AbstractIoSessionConfig.java | 2 +- .../mina/core/session/IdleStatusChecker.java | 31 +++-- .../org/apache/mina/core/session/IoEvent.java | 114 +++++++++++++------ .../apache/mina/core/session/IoEventType.java | 27 ++++- .../mina/core/session/IoSessionInitializer.java | 8 ++ .../apache/mina/core/session/SessionState.java | 9 +- .../codec/AbstractProtocolDecoderOutput.java | 13 ++- .../codec/AbstractProtocolEncoderOutput.java | 17 ++- .../filter/codec/CumulativeProtocolDecoder.java | 4 +- .../filter/codec/textline/TextLineEncoder.java | 4 +- 11 files changed, 178 insertions(+), 55 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mina/blob/247c3d9c/mina-core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java b/mina-core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java index 04153bb..9eb7567 100644 --- a/mina-core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java +++ b/mina-core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java @@ -92,15 +92,11 @@ public abstract class AbstractIoSession implements IoSession { /** * An internal write request object that triggers session close. - * - * @see #writeRequestQueue */ public static final WriteRequest CLOSE_REQUEST = new DefaultWriteRequest(new Object()); /** * An internal write request object that triggers message sent events. - * - * @see #writeRequestQueue */ public static final WriteRequest MESSAGE_SENT_REQUEST = new DefaultWriteRequest(DefaultWriteRequest.EMPTY_MESSAGE); http://git-wip-us.apache.org/repos/asf/mina/blob/247c3d9c/mina-core/src/main/java/org/apache/mina/core/session/AbstractIoSessionConfig.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/core/session/AbstractIoSessionConfig.java b/mina-core/src/main/java/org/apache/mina/core/session/AbstractIoSessionConfig.java index 2a6a887..74ab95d 100644 --- a/mina-core/src/main/java/org/apache/mina/core/session/AbstractIoSessionConfig.java +++ b/mina-core/src/main/java/org/apache/mina/core/session/AbstractIoSessionConfig.java @@ -68,8 +68,8 @@ public abstract class AbstractIoSessionConfig implements IoSessionConfig { } setReadBufferSize(config.getReadBufferSize()); - setMinReadBufferSize(config.getMinReadBufferSize()); setMaxReadBufferSize(config.getMaxReadBufferSize()); + setMinReadBufferSize(config.getMinReadBufferSize()); setIdleTime(IdleStatus.BOTH_IDLE, config.getIdleTime(IdleStatus.BOTH_IDLE)); setIdleTime(IdleStatus.READER_IDLE, config.getIdleTime(IdleStatus.READER_IDLE)); setIdleTime(IdleStatus.WRITER_IDLE, config.getIdleTime(IdleStatus.WRITER_IDLE)); http://git-wip-us.apache.org/repos/asf/mina/blob/247c3d9c/mina-core/src/main/java/org/apache/mina/core/session/IdleStatusChecker.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/core/session/IdleStatusChecker.java b/mina-core/src/main/java/org/apache/mina/core/session/IdleStatusChecker.java index 0de2bbb..b921530 100644 --- a/mina-core/src/main/java/org/apache/mina/core/session/IdleStatusChecker.java +++ b/mina-core/src/main/java/org/apache/mina/core/session/IdleStatusChecker.java @@ -39,7 +39,7 @@ import org.apache.mina.util.ConcurrentHashSet; public class IdleStatusChecker { // the list of session to check - private final Set<AbstractIoSession> sessions = new ConcurrentHashSet<AbstractIoSession>(); + private final Set<AbstractIoSession> sessions = new ConcurrentHashSet<>(); /* create a task you can execute in the transport code, * if the transport is like NIO or APR you don't need to call it, @@ -50,6 +50,9 @@ public class IdleStatusChecker { private final IoFutureListener<IoFuture> sessionCloseListener = new SessionCloseListener(); + /** + * Creates a new instance of IdleStatusChecker + */ public IdleStatusChecker() { // Do nothing } @@ -67,14 +70,6 @@ public class IdleStatusChecker { } /** - * remove a session from the list of session being checked. - * @param session - */ - private void removeSession(AbstractIoSession session) { - sessions.remove(session); - } - - /** * get a runnable task able to be scheduled in the {@link IoService} executor. * @return the associated runnable task */ @@ -96,6 +91,10 @@ public class IdleStatusChecker { // Do nothing } + /** + * {@inheritDoc} + */ + @Override public void run() { thread = Thread.currentThread(); try { @@ -121,7 +120,7 @@ public class IdleStatusChecker { */ public void cancel() { cancelled = true; - Thread thread = this.thread; + if (thread != null) { thread.interrupt(); } @@ -146,8 +145,20 @@ public class IdleStatusChecker { super(); } + /** + * {@inheritDoc} + */ + @Override public void operationComplete(IoFuture future) { removeSession((AbstractIoSession) future.getSession()); } + + /** + * remove a session from the list of session being checked. + * @param session The session to remove + */ + private void removeSession(AbstractIoSession session) { + sessions.remove(session); + } } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/mina/blob/247c3d9c/mina-core/src/main/java/org/apache/mina/core/session/IoEvent.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/core/session/IoEvent.java b/mina-core/src/main/java/org/apache/mina/core/session/IoEvent.java index 5942a54..b3da2fc 100644 --- a/mina-core/src/main/java/org/apache/mina/core/session/IoEvent.java +++ b/mina-core/src/main/java/org/apache/mina/core/session/IoEvent.java @@ -29,80 +29,128 @@ import org.apache.mina.core.write.WriteRequest; * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ public class IoEvent implements Runnable { + /** The IoEvent type */ private final IoEventType type; + /** The associated IoSession */ private final IoSession session; + /** The stored parameter */ private final Object parameter; + /** + * Creates a new IoEvent + * + * @param type The type of event to create + * @param session The associated IoSession + * @param parameter The parameter to add to the event + */ public IoEvent(IoEventType type, IoSession session, Object parameter) { if (type == null) { throw new IllegalArgumentException("type"); } + if (session == null) { throw new IllegalArgumentException("session"); } + this.type = type; this.session = session; this.parameter = parameter; } + /** + * @return The IoEvent type + */ public IoEventType getType() { return type; } + /** + * @return The associated IoSession + */ public IoSession getSession() { return session; } + /** + * @return The stored parameter + */ public Object getParameter() { return parameter; } + /** + * {@inheritDoc} + */ + @Override public void run() { fire(); } + /** + * Fire an event + */ public void fire() { - switch (getType()) { - case MESSAGE_RECEIVED: - getSession().getFilterChain().fireMessageReceived(getParameter()); - break; - case MESSAGE_SENT: - getSession().getFilterChain().fireMessageSent((WriteRequest) getParameter()); - break; - case WRITE: - getSession().getFilterChain().fireFilterWrite((WriteRequest) getParameter()); - break; - case CLOSE: - getSession().getFilterChain().fireFilterClose(); - break; - case EXCEPTION_CAUGHT: - getSession().getFilterChain().fireExceptionCaught((Throwable) getParameter()); - break; - case SESSION_IDLE: - getSession().getFilterChain().fireSessionIdle((IdleStatus) getParameter()); - break; - case SESSION_OPENED: - getSession().getFilterChain().fireSessionOpened(); - break; - case SESSION_CREATED: - getSession().getFilterChain().fireSessionCreated(); - break; - case SESSION_CLOSED: - getSession().getFilterChain().fireSessionClosed(); - break; - default: - throw new IllegalArgumentException("Unknown event type: " + getType()); + switch ( type ) { + case MESSAGE_RECEIVED: + session.getFilterChain().fireMessageReceived(getParameter()); + break; + + case MESSAGE_SENT: + session.getFilterChain().fireMessageSent((WriteRequest) getParameter()); + break; + + case WRITE: + session.getFilterChain().fireFilterWrite((WriteRequest) getParameter()); + break; + + case CLOSE: + session.getFilterChain().fireFilterClose(); + break; + + case EXCEPTION_CAUGHT: + session.getFilterChain().fireExceptionCaught((Throwable) getParameter()); + break; + + case SESSION_IDLE: + session.getFilterChain().fireSessionIdle((IdleStatus) getParameter()); + break; + + case SESSION_OPENED: + session.getFilterChain().fireSessionOpened(); + break; + + case SESSION_CREATED: + session.getFilterChain().fireSessionCreated(); + break; + + case SESSION_CLOSED: + session.getFilterChain().fireSessionClosed(); + break; + + default: + throw new IllegalArgumentException("Unknown event type: " + getType()); } } + /** + * @see Object#toString() + */ @Override public String toString() { - if (getParameter() == null) { - return "[" + getSession() + "] " + getType().name(); + StringBuilder sb = new StringBuilder(); + + sb.append('['); + sb.append(session); + sb.append(']'); + sb.append(type.name()); + + if (parameter != null) { + sb.append(':'); + sb.append(parameter); } - return "[" + getSession() + "] " + getType().name() + ": " + getParameter(); + return sb.toString(); } } http://git-wip-us.apache.org/repos/asf/mina/blob/247c3d9c/mina-core/src/main/java/org/apache/mina/core/session/IoEventType.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/core/session/IoEventType.java b/mina-core/src/main/java/org/apache/mina/core/session/IoEventType.java index beb872f..44865fa 100644 --- a/mina-core/src/main/java/org/apache/mina/core/session/IoEventType.java +++ b/mina-core/src/main/java/org/apache/mina/core/session/IoEventType.java @@ -27,5 +27,30 @@ package org.apache.mina.core.session; * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ public enum IoEventType { - SESSION_CREATED, SESSION_OPENED, SESSION_CLOSED, MESSAGE_RECEIVED, MESSAGE_SENT, SESSION_IDLE, EXCEPTION_CAUGHT, WRITE, CLOSE, + /** The session has been created */ + SESSION_CREATED, + + /** The session has been opened */ + SESSION_OPENED, + + /** The session has been closed */ + SESSION_CLOSED, + + /** A message has been received */ + MESSAGE_RECEIVED, + + /** A message has been sent */ + MESSAGE_SENT, + + /** The session is idle */ + SESSION_IDLE, + + /** An exception has been caught */ + EXCEPTION_CAUGHT, + + /** A write has pccired */ + WRITE, + + /** A close has occured */ + CLOSE, } http://git-wip-us.apache.org/repos/asf/mina/blob/247c3d9c/mina-core/src/main/java/org/apache/mina/core/session/IoSessionInitializer.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/core/session/IoSessionInitializer.java b/mina-core/src/main/java/org/apache/mina/core/session/IoSessionInitializer.java index c9ccbc3..6983d03 100644 --- a/mina-core/src/main/java/org/apache/mina/core/session/IoSessionInitializer.java +++ b/mina-core/src/main/java/org/apache/mina/core/session/IoSessionInitializer.java @@ -24,9 +24,17 @@ import org.apache.mina.core.future.IoFuture; /** * Defines a callback for obtaining the {@link IoSession} during * session initialization. + * + * @param <T> The IoFuture type * * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ public interface IoSessionInitializer<T extends IoFuture> { + /** + * Initialize a session + * + * @param session The IoSession to initialize + * @param future The IoFuture to inform when the session has been initialized + */ void initializeSession(IoSession session, T future); } http://git-wip-us.apache.org/repos/asf/mina/blob/247c3d9c/mina-core/src/main/java/org/apache/mina/core/session/SessionState.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/core/session/SessionState.java b/mina-core/src/main/java/org/apache/mina/core/session/SessionState.java index 511858e..f087622 100644 --- a/mina-core/src/main/java/org/apache/mina/core/session/SessionState.java +++ b/mina-core/src/main/java/org/apache/mina/core/session/SessionState.java @@ -30,5 +30,12 @@ package org.apache.mina.core.session; * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ public enum SessionState { - OPENING, OPENED, CLOSING + /** Session being created, not yet completed */ + OPENING, + + /** Opened session */ + OPENED, + + /** A session being closed */ + CLOSING } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/mina/blob/247c3d9c/mina-core/src/main/java/org/apache/mina/filter/codec/AbstractProtocolDecoderOutput.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/AbstractProtocolDecoderOutput.java b/mina-core/src/main/java/org/apache/mina/filter/codec/AbstractProtocolDecoderOutput.java index b98d0ab..23a54c0 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/AbstractProtocolDecoderOutput.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/AbstractProtocolDecoderOutput.java @@ -28,16 +28,27 @@ import java.util.Queue; * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ public abstract class AbstractProtocolDecoderOutput implements ProtocolDecoderOutput { - private final Queue<Object> messageQueue = new LinkedList<Object>(); + /** The queue where decoded messages are stored */ + private final Queue<Object> messageQueue = new LinkedList<>(); + /** + * Creates a new instance of a AbstractProtocolDecoderOutput + */ public AbstractProtocolDecoderOutput() { // Do nothing } + /** + * @return The decoder's message queue + */ public Queue<Object> getMessageQueue() { return messageQueue; } + /** + * {@inheritDoc} + */ + @Override public void write(Object message) { if (message == null) { throw new IllegalArgumentException("message"); http://git-wip-us.apache.org/repos/asf/mina/blob/247c3d9c/mina-core/src/main/java/org/apache/mina/filter/codec/AbstractProtocolEncoderOutput.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/AbstractProtocolEncoderOutput.java b/mina-core/src/main/java/org/apache/mina/filter/codec/AbstractProtocolEncoderOutput.java index a120de7..e369ba9 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/AbstractProtocolEncoderOutput.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/AbstractProtocolEncoderOutput.java @@ -30,18 +30,29 @@ import org.apache.mina.core.buffer.IoBuffer; * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ public abstract class AbstractProtocolEncoderOutput implements ProtocolEncoderOutput { - private final Queue<Object> messageQueue = new ConcurrentLinkedQueue<Object>(); + /** The queue where the decoded messages are stored */ + private final Queue<Object> messageQueue = new ConcurrentLinkedQueue<>(); private boolean buffersOnly = true; + /** + * Creates an instance of AbstractProtocolEncoderOutput + */ public AbstractProtocolEncoderOutput() { // Do nothing } + /** + * @return The message queue + */ public Queue<Object> getMessageQueue() { return messageQueue; } + /** + * {@inheritDoc} + */ + @Override public void write(Object encodedMessage) { if (encodedMessage instanceof IoBuffer) { IoBuffer buf = (IoBuffer) encodedMessage; @@ -56,6 +67,10 @@ public abstract class AbstractProtocolEncoderOutput implements ProtocolEncoderOu } } + /** + * {@inheritDoc} + */ + @Override public void mergeAll() { if (!buffersOnly) { throw new IllegalStateException("the encoded message list contains a non-buffer."); http://git-wip-us.apache.org/repos/asf/mina/blob/247c3d9c/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 43e4437..e950303 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 @@ -91,7 +91,7 @@ import org.apache.mina.core.session.IoSession; * </pre> * <p> * Please note that this decoder simply forward the call to - * {@link #doDecode(IoSession, IoBuffer, ProtocolDecoderOutput)} if the + * doDecode(IoSession, IoBuffer, ProtocolDecoderOutput) if the * underlying transport doesn't have a packet fragmentation. Whether the * transport has fragmentation or not is determined by querying * {@link TransportMetadata}. @@ -117,7 +117,7 @@ public abstract class CumulativeProtocolDecoder extends ProtocolDecoderAdapter { /** * Cumulates content of <tt>in</tt> into internal buffer and forwards * decoding request to - * {@link #doDecode(IoSession, IoBuffer, ProtocolDecoderOutput)}. + * doDecode(IoSession, IoBuffer, ProtocolDecoderOutput). * <tt>doDecode()</tt> is invoked repeatedly until it returns <tt>false</tt> * and the cumulative buffer is compacted after decoding ends. * http://git-wip-us.apache.org/repos/asf/mina/blob/247c3d9c/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 27003da..9c38390 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 @@ -166,7 +166,9 @@ public class TextLineEncoder extends ProtocolEncoderAdapter { } /** - * {@inheritDoc} + * Dispose the encoder + * + * @throws Exception If the dispose failed */ public void dispose() throws Exception { // Do nothing