Used super.XXX instead of manipulating the controller directly in filters
diff --git a/coap/src/main/java/org/apache/mina/coap/retry/CoapRetryFilter.java b/coap/src/main/java/org/apache/mina/coap/retry/CoapRetryFilter.java
index 83084ad..5c6777f 100644
--- a/coap/src/main/java/org/apache/mina/coap/retry/CoapRetryFilter.java
+++ b/coap/src/main/java/org/apache/mina/coap/retry/CoapRetryFilter.java
@@ -40,13 +40,16 @@
* An {@link IoFilter} in charge of messages retransmissions.
*
* <p>
- * In case of messages to be sent to the client, the filter retransmits the <i>Confirmable</i> message at exponentially
- * increasing intervals, until it receives an acknowledgment (or <i>Reset</i> message), or runs out of attempts.
+ * In case of messages to be sent to the client, the filter retransmits the
+ * <i>Confirmable</i> message at exponentially increasing intervals, until it
+ * receives an acknowledgment (or <i>Reset</i> message), or runs out of
+ * attempts.
* </p>
*
* <p>
- * In case of received <i>Confirmable</i> messages, the filter keeps track of the acknowledged transmissions in order to
- * avoid multiple processing of duplicated messages.
+ * In case of received <i>Confirmable</i> messages, the filter keeps track of
+ * the acknowledged transmissions in order to avoid multiple processing of
+ * duplicated messages.
* </p>
*/
public class CoapRetryFilter extends AbstractIoFilter {
@@ -59,7 +62,10 @@
/** The confirmable messages waiting to be acknowledged */
private Map<String, CoapTransmission> inFlight = new ConcurrentHashMap<>();
- /** The list of processed messages used to handle duplicate copies of Confirmable messages */
+ /**
+ * The list of processed messages used to handle duplicate copies of
+ * Confirmable messages
+ */
private ExpiringMap<String, CoapMessage> processed = new ExpiringMap<String, CoapMessage>(retryExecutor);
/**
@@ -75,29 +81,34 @@
switch (coapMsg.getType()) {
case NON_CONFIRMABLE:
// non confirmable message, let's move to the next filter
- controller.callReadNextFilter(coapMsg);
+ super.messageReceived(session, coapMsg, controller);
break;
+
case CONFIRMABLE:
// check if this is a duplicate of a message already processed
CoapMessage ack = processed.get(transmissionId);
+
if (ack != null) {
- // stop the filter chain and send again the ack since it was probably lost
+ // stop the filter chain and send again the ack since it was
+ // probably lost
LOGGER.debug("Duplicated messages detected with ID {} in session {}", coapMsg.requestId(), session);
controller.callWriteMessageForRead(ack);
} else {
- controller.callReadNextFilter(coapMsg);
+ super.messageReceived(session, coapMsg, controller);
}
break;
case ACK:
case RESET:
CoapTransmission t = inFlight.get(transmissionId);
+
if (t != null) {
// cancel the scheduled retransmission
t.getRetryFuture().cancel(false);
inFlight.remove(transmissionId);
}
- controller.callReadNextFilter(coapMsg);
+
+ super.messageReceived(session, coapMsg, controller);
break;
}
}
@@ -106,8 +117,7 @@
* {@inheritDoc}
*/
@Override
- public void messageWriting(final IoSession session, final WriteRequest message,
- WriteFilterChainController controller) {
+ public void messageWriting(final IoSession session, final WriteRequest message, WriteFilterChainController controller) {
LOGGER.debug("Processing a MESSAGE_WRITING for session {}", session);
final CoapMessage coapMsg = (CoapMessage) message.getMessage();
@@ -120,7 +130,8 @@
break;
case RESET:
case ACK:
- // let's keep track of the message to avoid processing it again in case of duplicate copy.
+ // let's keep track of the message to avoid processing it again in
+ // case of duplicate copy.
processed.put(transmissionId, coapMsg);
controller.callWriteNextFilter(message);
@@ -141,7 +152,8 @@
public void run() {
CoapTransmission t = inFlight.get(transmissionId);
- // send again the message if the maximum number of attempts is not reached
+ // send again the message if the maximum number of attempts
+ // is not reached
if (t != null && t.timeout()) {
LOGGER.debug("Retry for message with ID {}", coapMsg.requestId());
session.write(coapMsg);
diff --git a/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java b/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
index 65974b4..04228e1 100644
--- a/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
+++ b/core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
@@ -36,11 +36,16 @@
import org.slf4j.LoggerFactory;
/**
- * An {@link IoFilter} which translates binary or protocol specific data into message objects and vice versa using
- * {@link ProtocolCodecFactory}, {@link ProtocolEncoder}, or {@link ProtocolDecoder}.
+ * An {@link IoFilter} which translates binary or protocol specific data into
+ * message objects and vice versa using {@link ProtocolCodecFactory},
+ * {@link ProtocolEncoder}, or {@link ProtocolDecoder}.
*
- * @param MESSAGE the kind of high level business message this filter will encode and decode.
- * @param ENCODED the kind of low level message (most of time {@link ByteBuffer}) this filter will produce of consume.
+ * @param MESSAGE
+ * the kind of high level business message this filter will encode
+ * and decode.
+ * @param ENCODED
+ * the kind of low level message (most of time {@link ByteBuffer})
+ * this filter will produce of consume.
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
public class ProtocolCodecFilter<MESSAGE, ENCODED, ENCODING_STATE, DECODING_STATE> extends AbstractIoFilter {
@@ -60,7 +65,8 @@
private static final AttributeKey<Object> DECODER = new AttributeKey<Object>(Object.class, "internal_decoder");
/**
- * Creates a new instance of ProtocolCodecFilter, with the specified encoder and decoder.
+ * Creates a new instance of ProtocolCodecFilter, with the specified encoder
+ * and decoder.
*
*/
public ProtocolCodecFilter(ProtocolEncoder<MESSAGE, ENCODED, ENCODING_STATE> encoder,
@@ -72,8 +78,9 @@
}
/**
- * Process the incoming message, calling the session decoder. As the incoming buffer might contains more than one
- * messages, we have to loop until the decoder throws an exception. <code>
+ * Process the incoming message, calling the session decoder. As the
+ * incoming buffer might contains more than one messages, we have to loop
+ * until the decoder throws an exception. <code>
* while ( buffer not empty )
* try
* decode ( buffer )
@@ -92,7 +99,7 @@
MESSAGE msg;
try {
while (((msg = decoder.decode((ENCODED) in, state)) != null)) {
- controller.callReadNextFilter(msg);
+ super.messageReceived(session, msg, controller);
}
} catch (ProtocolDecoderException e) {
LOGGER.debug("decoding exception : ", e);
@@ -111,7 +118,7 @@
ENCODED encoded = encoder.encode((MESSAGE) message.getMessage(), getEncodingState(session));
message.setMessage(encoded);
- controller.callWriteNextFilter(message);
+ super.messageWriting(session, message, controller);
}
/**
@@ -126,6 +133,7 @@
DECODING_STATE decodingState = decoder.createDecoderState();
session.setAttribute(DECODER, decodingState);
+ super.sessionOpened(session);
}
/**
@@ -134,6 +142,7 @@
@Override
public void sessionClosed(IoSession session) {
decoder.finishDecode(getDecodingState(session));
+ super.sessionClosed(session);
}
diff --git a/core/src/test/java/org/apache/mina/transport/bio/BioUdpServerFilterEventTest.java b/core/src/test/java/org/apache/mina/transport/bio/BioUdpServerFilterEventTest.java
index 246eb95..96ea739 100644
--- a/core/src/test/java/org/apache/mina/transport/bio/BioUdpServerFilterEventTest.java
+++ b/core/src/test/java/org/apache/mina/transport/bio/BioUdpServerFilterEventTest.java
@@ -19,7 +19,9 @@
*/
package org.apache.mina.transport.bio;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.io.IOException;
import java.net.DatagramPacket;
@@ -144,13 +146,12 @@
private class MyCodec extends AbstractIoFilter {
@Override
- public void messageReceived(final IoSession session, final Object message,
- final ReadFilterChainController controller) {
+ public void messageReceived(final IoSession session, final Object message, final ReadFilterChainController controller) {
if (message instanceof ByteBuffer) {
final ByteBuffer in = (ByteBuffer) message;
final byte[] buffer = new byte[in.remaining()];
in.get(buffer);
- controller.callReadNextFilter(new String(buffer));
+ super.messageReceived(session, new String(buffer), controller);
} else {
fail();
}
@@ -159,7 +160,7 @@
@Override
public void messageWriting(IoSession session, WriteRequest writeRequest, WriteFilterChainController controller) {
writeRequest.setMessage(ByteBuffer.wrap(writeRequest.getMessage().toString().getBytes()));
- controller.callWriteNextFilter(writeRequest);
+ super.messageWriting(session, writeRequest, controller);
}
}
@@ -178,8 +179,7 @@
}
@Override
- public void messageReceived(final IoSession session, final Object message,
- final ReadFilterChainController controller) {
+ public void messageReceived(final IoSession session, final Object message, final ReadFilterChainController controller) {
LOG.info("** message received {}", message);
msgReadLatch.countDown();
session.write(message.toString());
diff --git a/core/src/test/java/org/apache/mina/transport/nio/NioTcpClientFilterEventTest.java b/core/src/test/java/org/apache/mina/transport/nio/NioTcpClientFilterEventTest.java
index d0e27f5..265f19a 100644
--- a/core/src/test/java/org/apache/mina/transport/nio/NioTcpClientFilterEventTest.java
+++ b/core/src/test/java/org/apache/mina/transport/nio/NioTcpClientFilterEventTest.java
@@ -19,7 +19,10 @@
*/
package org.apache.mina.transport.nio;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.io.IOException;
import java.net.InetSocketAddress;
@@ -38,7 +41,6 @@
import org.apache.mina.filterchain.ReadFilterChainController;
import org.apache.mina.filterchain.WriteFilterChainController;
import org.apache.mina.session.WriteRequest;
-import org.apache.mina.transport.nio.NioTcpClient;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -65,8 +67,8 @@
private final CountDownLatch closedLatch = new CountDownLatch(CLIENT_COUNT);
/**
- * Create an old IO server and use a bunch of MINA client on it. Test if the events occurs correctly in the
- * different IoFilters.
+ * Create an old IO server and use a bunch of MINA client on it. Test if the
+ * events occurs correctly in the different IoFilters.
*/
@Test
public void generate_all_kind_of_client_event() throws IOException, InterruptedException, ExecutionException {
@@ -143,13 +145,12 @@
private class MyCodec extends AbstractIoFilter {
@Override
- public void messageReceived(final IoSession session, final Object message,
- final ReadFilterChainController controller) {
+ public void messageReceived(final IoSession session, final Object message, final ReadFilterChainController controller) {
if (message instanceof ByteBuffer) {
final ByteBuffer in = (ByteBuffer) message;
final byte[] buffer = new byte[in.remaining()];
in.get(buffer);
- controller.callReadNextFilter(new String(buffer));
+ super.messageReceived(session, new String(buffer), controller);
} else {
fail();
}
@@ -158,7 +159,7 @@
@Override
public void messageWriting(IoSession session, WriteRequest writeRequest, WriteFilterChainController controller) {
writeRequest.setMessage(ByteBuffer.wrap(writeRequest.getMessage().toString().getBytes()));
- controller.callWriteNextFilter(writeRequest);
+ super.messageWriting(session, writeRequest, controller);
}
}
@@ -177,8 +178,7 @@
}
@Override
- public void messageReceived(final IoSession session, final Object message,
- final ReadFilterChainController controller) {
+ public void messageReceived(final IoSession session, final Object message, final ReadFilterChainController controller) {
LOG.info("** message received {}", message);
msgReadLatch.countDown();
session.write(message.toString());
diff --git a/core/src/test/java/org/apache/mina/transport/nio/NioTcpServerFilterEventTest.java b/core/src/test/java/org/apache/mina/transport/nio/NioTcpServerFilterEventTest.java
index 1d55410..6eb2d9c 100644
--- a/core/src/test/java/org/apache/mina/transport/nio/NioTcpServerFilterEventTest.java
+++ b/core/src/test/java/org/apache/mina/transport/nio/NioTcpServerFilterEventTest.java
@@ -34,9 +34,6 @@
import org.apache.mina.filterchain.ReadFilterChainController;
import org.apache.mina.filterchain.WriteFilterChainController;
import org.apache.mina.session.WriteRequest;
-import org.apache.mina.transport.nio.FixedSelectorLoopPool;
-import org.apache.mina.transport.nio.NioTcpServer;
-import org.apache.mina.transport.nio.SelectorLoopPool;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -127,8 +124,9 @@
}
/**
- * A test that creates 50 clients, each one of them writing one message. We will check that for each client we
- * correctly process the sessionOpened, messageReceived, messageSent and sessionClosed events. We use only one
+ * A test that creates 50 clients, each one of them writing one message. We
+ * will check that for each client we correctly process the sessionOpened,
+ * messageReceived, messageSent and sessionClosed events. We use only one
* selector to process all the OP events.
*/
@Test
@@ -194,13 +192,12 @@
private class MyCodec extends AbstractIoFilter {
@Override
- public void messageReceived(final IoSession session, final Object message,
- final ReadFilterChainController controller) {
+ public void messageReceived(final IoSession session, final Object message, final ReadFilterChainController controller) {
if (message instanceof ByteBuffer) {
final ByteBuffer in = (ByteBuffer) message;
final byte[] buffer = new byte[in.remaining()];
in.get(buffer);
- controller.callReadNextFilter(new String(buffer));
+ super.messageReceived(session, new String(buffer), controller);
} else {
fail();
}
@@ -209,7 +206,7 @@
@Override
public void messageWriting(IoSession session, WriteRequest writeRequest, WriteFilterChainController controller) {
writeRequest.setMessage(ByteBuffer.wrap(writeRequest.getMessage().toString().getBytes()));
- controller.callWriteNextFilter(writeRequest);
+ super.messageWriting(session, writeRequest, controller);
}
}
@@ -228,8 +225,7 @@
}
@Override
- public void messageReceived(final IoSession session, final Object message,
- final ReadFilterChainController controller) {
+ public void messageReceived(final IoSession session, final Object message, final ReadFilterChainController controller) {
LOG.info("** message received {}", message);
msgReadLatch.countDown();
session.write(message.toString());
diff --git a/core/src/test/java/org/apache/mina/transport/nio/NioUdpClientFilterEventTest.java b/core/src/test/java/org/apache/mina/transport/nio/NioUdpClientFilterEventTest.java
index 4fc83a8..f6d7102 100644
--- a/core/src/test/java/org/apache/mina/transport/nio/NioUdpClientFilterEventTest.java
+++ b/core/src/test/java/org/apache/mina/transport/nio/NioUdpClientFilterEventTest.java
@@ -19,7 +19,10 @@
*/
package org.apache.mina.transport.nio;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.io.IOException;
import java.net.DatagramPacket;
@@ -40,7 +43,6 @@
import org.apache.mina.filterchain.ReadFilterChainController;
import org.apache.mina.filterchain.WriteFilterChainController;
import org.apache.mina.session.WriteRequest;
-import org.apache.mina.transport.nio.NioUdpClient;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -69,8 +71,8 @@
private final CountDownLatch closedLatch = new CountDownLatch(CLIENT_COUNT);
/**
- * Create an old IO server and use a bunch of MINA client on it. Test if the events occurs correctly in the
- * different IoFilters.
+ * Create an old IO server and use a bunch of MINA client on it. Test if the
+ * events occurs correctly in the different IoFilters.
*/
@Test
public void generate_all_kind_of_client_event() throws IOException, InterruptedException, ExecutionException {
@@ -114,8 +116,7 @@
InetAddress IPAddress = receivePacket.getAddress();
int clientPort = receivePacket.getPort();
- DatagramPacket sendPacket = new DatagramPacket("tata".getBytes(), "tata".getBytes().length, IPAddress,
- clientPort);
+ DatagramPacket sendPacket = new DatagramPacket("tata".getBytes(), "tata".getBytes().length, IPAddress, clientPort);
serverSocket.send(sendPacket);
}
@@ -144,13 +145,12 @@
private class MyCodec extends AbstractIoFilter {
@Override
- public void messageReceived(final IoSession session, final Object message,
- final ReadFilterChainController controller) {
+ public void messageReceived(final IoSession session, final Object message, final ReadFilterChainController controller) {
if (message instanceof ByteBuffer) {
final ByteBuffer in = (ByteBuffer) message;
final byte[] buffer = new byte[in.remaining()];
in.get(buffer);
- controller.callReadNextFilter(new String(buffer));
+ super.messageReceived(session, new String(buffer), controller);
} else {
fail();
}
@@ -159,7 +159,7 @@
@Override
public void messageWriting(IoSession session, WriteRequest writeRequest, WriteFilterChainController controller) {
writeRequest.setMessage(ByteBuffer.wrap(writeRequest.getMessage().toString().getBytes()));
- controller.callWriteNextFilter(writeRequest);
+ super.messageWriting(session, writeRequest, controller);
}
}
@@ -179,8 +179,7 @@
}
@Override
- public void messageReceived(final IoSession session, final Object message,
- final ReadFilterChainController controller) {
+ public void messageReceived(final IoSession session, final Object message, final ReadFilterChainController controller) {
LOG.info("** message received {}", message);
msgReadLatch.countDown();
}
diff --git a/core/src/test/java/org/apache/mina/transport/nio/NioUdpServerFilterEventTest.java b/core/src/test/java/org/apache/mina/transport/nio/NioUdpServerFilterEventTest.java
index b9b2f12..8c27356 100644
--- a/core/src/test/java/org/apache/mina/transport/nio/NioUdpServerFilterEventTest.java
+++ b/core/src/test/java/org/apache/mina/transport/nio/NioUdpServerFilterEventTest.java
@@ -19,7 +19,9 @@
*/
package org.apache.mina.transport.nio;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.io.IOException;
import java.net.DatagramPacket;
@@ -132,13 +134,12 @@
private class MyCodec extends AbstractIoFilter {
@Override
- public void messageReceived(final IoSession session, final Object message,
- final ReadFilterChainController controller) {
+ public void messageReceived(final IoSession session, final Object message, final ReadFilterChainController controller) {
if (message instanceof ByteBuffer) {
final ByteBuffer in = (ByteBuffer) message;
final byte[] buffer = new byte[in.remaining()];
in.get(buffer);
- controller.callReadNextFilter(new String(buffer));
+ super.messageReceived(session, new String(buffer), controller);
} else {
fail();
}
@@ -147,7 +148,7 @@
@Override
public void messageWriting(IoSession session, WriteRequest writeRequest, WriteFilterChainController controller) {
writeRequest.setMessage(ByteBuffer.wrap(writeRequest.getMessage().toString().getBytes()));
- controller.callWriteNextFilter(writeRequest);
+ super.messageWriting(session, writeRequest, controller);
}
}
@@ -165,8 +166,7 @@
}
@Override
- public void messageReceived(final IoSession session, final Object message,
- final ReadFilterChainController controller) {
+ public void messageReceived(final IoSession session, final Object message, final ReadFilterChainController controller) {
LOG.info("** message received {}", message);
msgReadLatch.countDown();
session.write(message.toString());