From 4a3495b1c829b8bd0af9a1c7f07048512fc2a473 Mon Sep 17 00:00:00 2001 From: Trustin Lee Date: Tue, 2 Feb 2010 00:38:07 +0000 Subject: [PATCH] * Added @Sharable annotation which replaces @ChannelPipelineCoverage * Removed annotations from the examples because it's not essential part of learning the framework - User guide will explain about it later --- .../jboss/netty/channel/ChannelHandler.java | 51 ++++- .../channel/ChannelPipelineCoverage.java | 182 +----------------- .../example/discard/DiscardClientHandler.java | 2 - .../example/discard/DiscardServerHandler.java | 2 - .../netty/example/echo/EchoClientHandler.java | 2 - .../netty/example/echo/EchoServerHandler.java | 2 - .../factorial/FactorialClientHandler.java | 2 - .../factorial/FactorialServerHandler.java | 2 - .../example/factorial/NumberEncoder.java | 2 - .../file/HttpStaticFileServerHandler.java | 2 - .../http/snoop/HttpRequestHandler.java | 2 - .../http/snoop/HttpResponseHandler.java | 2 - .../websocket/WebSocketServerHandler.java | 2 - .../local/LocalServerPipelineFactory.java | 2 - .../localtime/LocalTimeClientHandler.java | 2 - .../localtime/LocalTimeServerHandler.java | 2 - .../objectecho/ObjectEchoClientHandler.java | 2 - .../objectecho/ObjectEchoServerHandler.java | 2 - .../proxy/HexDumpProxyInboundHandler.java | 3 - .../qotm/QuoteOfTheMomentClientHandler.java | 2 - .../qotm/QuoteOfTheMomentServerHandler.java | 2 - .../securechat/SecureChatClientHandler.java | 2 - .../securechat/SecureChatServerHandler.java | 2 - .../example/telnet/TelnetClientHandler.java | 2 - .../example/telnet/TelnetServerHandler.java | 2 - .../example/uptime/UptimeClientHandler.java | 2 - .../handler/codec/base64/Base64Decoder.java | 4 +- .../handler/codec/base64/Base64Encoder.java | 4 +- .../codec/compression/ZlibDecoder.java | 2 - .../codec/compression/ZlibEncoder.java | 2 - .../codec/embedder/AbstractCodecEmbedder.java | 2 - .../handler/codec/frame/FrameDecoder.java | 2 - .../codec/frame/LengthFieldPrepender.java | 4 +- .../codec/http/HttpChunkAggregator.java | 2 - .../codec/http/HttpContentCompressor.java | 2 - .../codec/http/HttpContentDecoder.java | 2 - .../codec/http/HttpContentDecompressor.java | 2 - .../codec/http/HttpMessageEncoder.java | 2 - .../http/websocket/WebSocketFrameDecoder.java | 2 - .../http/websocket/WebSocketFrameEncoder.java | 4 +- .../codec/protobuf/ProtobufDecoder.java | 4 +- .../codec/protobuf/ProtobufEncoder.java | 4 +- .../ProtobufVarint32LengthFieldPrepender.java | 4 +- .../codec/replay/ReplayingDecoder.java | 2 - .../codec/rtsp/RtspMessageEncoder.java | 2 + .../CompatibleObjectEncoder.java | 2 - .../codec/serialization/ObjectEncoder.java | 4 +- .../handler/codec/string/StringDecoder.java | 4 +- .../handler/codec/string/StringEncoder.java | 4 +- .../handler/execution/ExecutionHandler.java | 4 +- .../netty/handler/logging/LoggingHandler.java | 4 +- .../handler/queue/BlockingReadHandler.java | 2 - .../handler/queue/BufferedWriteHandler.java | 2 - .../handler/stream/ChunkedWriteHandler.java | 2 - .../handler/timeout/IdleStateHandler.java | 24 ++- .../handler/timeout/ReadTimeoutHandler.java | 26 ++- .../handler/timeout/WriteTimeoutHandler.java | 27 ++- 57 files changed, 136 insertions(+), 303 deletions(-) diff --git a/src/main/java/org/jboss/netty/channel/ChannelHandler.java b/src/main/java/org/jboss/netty/channel/ChannelHandler.java index 24f33b5c62..5808bb1e0b 100644 --- a/src/main/java/org/jboss/netty/channel/ChannelHandler.java +++ b/src/main/java/org/jboss/netty/channel/ChannelHandler.java @@ -15,6 +15,13 @@ */ package org.jboss.netty.channel; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + import org.jboss.netty.bootstrap.Bootstrap; /** @@ -92,6 +99,7 @@ import org.jboss.netty.bootstrap.Bootstrap; * In such a case, you can use an attachment which is provided by * {@link ChannelHandlerContext}: *
+ * {@literal @Sharable}
  * public class DataServerHandler extends SimpleChannelHandler {
  *
  *     public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
@@ -137,6 +145,7 @@ import org.jboss.netty.bootstrap.Bootstrap;
  *     ...
  * }
  *
+ * {@literal @Sharable}
  * public class DataServerHandler extends SimpleChannelHandler {
  *     public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
  *         Channel ch = e.getChannel();
@@ -163,6 +172,23 @@ import org.jboss.netty.bootstrap.Bootstrap;
  * }
  * 
* + *

The {@literal @Sharable} annotation

+ *

+ * In the examples above which used an attachment or a {@link ChannelLocal}, + * you might have noticed the {@literal @Sharable} annotation. + *

+ * If a {@link ChannelHandler} is annotated with the {@literal @Sharable} + * annotation, it means you can create an instance of the handler just once and + * add it to one or more {@link ChannelPipeline}s multiple times without + * a race condition. + *

+ * If this annotation is not specified, it is safe to create a new handler + * instance every time you add it to a pipeline because it has unshared state + * such as member variables. + *

+ * This annotation is provided for documentation purpose, just like + * the JCIP annotations. + * *

Additional resources worth reading

*

* Please refer to the {@link ChannelEvent} and {@link ChannelPipeline} to find @@ -178,5 +204,28 @@ import org.jboss.netty.bootstrap.Bootstrap; * @apiviz.exclude ^org\.jboss\.netty\.handler\..*$ */ public interface ChannelHandler { - // This is a tag interface. + + /** + * Indicates that the same instance of the annotated {@link ChannelHandler} + * can be added to one or more {@link ChannelPipeline}s multiple times + * without a race condition. + *

+ * If this annotation is not specified, it is safe to create a new handler + * instance every time you add it to a pipeline because it has unshared + * state such as member variables. + *

+ * This annotation is provided for documentation purpose, just like + * the JCIP annotations. + * + * @author The Netty Project + * @author Trustin Lee + * @version $Rev$, $Date$ + */ + @Inherited + @Documented + @Target(ElementType.TYPE) + @Retention(RetentionPolicy.RUNTIME) + public @interface Sharable { + // no value + } } diff --git a/src/main/java/org/jboss/netty/channel/ChannelPipelineCoverage.java b/src/main/java/org/jboss/netty/channel/ChannelPipelineCoverage.java index db4542cbb2..1ff3c03fcb 100644 --- a/src/main/java/org/jboss/netty/channel/ChannelPipelineCoverage.java +++ b/src/main/java/org/jboss/netty/channel/ChannelPipelineCoverage.java @@ -21,186 +21,12 @@ import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import java.util.concurrent.ConcurrentMap; + +import org.jboss.netty.channel.ChannelHandler.Sharable; /** - * Specifies if the same instance of the annotated {@link ChannelHandler} type - * can be added to more than one {@link ChannelPipeline}. - *

- * All handler types are expected to specify this annotation. Otherwise you - * will be warned in runtime. Only two values are allowed for this annotation: - * {@code "all"} and {@code "one"}. - *

- * Please note that this annotation does not prevent a handler annotated with - * the value {@code "one"} from being added to more than one pipeline. This - * annotation is used for documentation purpose only. - * - *

{@code ChannelPipelineCoverage("all")}

- * - * {@code "all"} means you can add the same instance of the annotated handler - * type to more than one {@link ChannelPipeline}. It means the member - * variables of the handler instance is shared among multiple channels and it - * is designed to be OK to do so (or there's nothing to share.) The following - * code shows an example of a handler type annotated with {@code "all"} value: - * - *
- * public class StatelessHandler extends SimpleChannelHandler {
- *
- *     // No state properties - you are safe to add the same instance to
- *     //                       multiple pipelines.
- *
- *     public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
- *         // Prepend a length field to the message.
- *         ChannelBuffer body = (ChannelBuffer) e.getMessage();
- *         ChannelBuffer header = ChannelBuffers.buffer(4);
- *         header.writeInt(body.readableBytes());
- *
- *         // Create a message prepended with the header and send a new event.
- *         ChannelBuffer message = ChannelBuffers.wrappedBuffer(header, body);
- *         Channels.fireMessageReceived(ctx, message, e.getRemoteAddress());
- *     }
- *     ...
- * }
- * 
- * - * Please note that the handler annotated with {@code "all"} can even be added - * to the same pipeline more than once: - * - *
- * ChannelPipeline p = ...;
- * StatelessHandler h = ...;
- * p.addLast("handler1", h);
- * p.addLast("handler2", h);
- * 
- * - *

{@code ChannelPipelineCoverage("one")}

- * - * {@code "one"} means you must create a new instance of the annotated handler - * type for each new channel. It means the member variables of the handler - * instance can not be shared at all, and violating this contract will lead - * the handler to a race condition. A new handler instance is usually created - * by {@link ChannelPipelineFactory}. The following code shows an example of a - * handler type annotated with {@code "one"} value: - * - *
- * public class StatefulHandler extends SimpleChannelHandler {
- *
- *     // Stateful property - adding the same instance to multiple pipelines
- *     //                     can lead to a race condition.
- *     private int messageId;
- *
- *     public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
- *         // Prepend a message ID and length field to the message.
- *         ChannelBuffer body = (ChannelBuffer) e.getMessage();
- *         ChannelBuffer header = ChannelBuffers.buffer(8);
- *         header.writeInt(messageId);
- *         header.writeInt(body.readableBytes());
- *
- *         // Update the stateful property.
- *         messageId ++;
- *
- *         // Create a message prepended with the header and send a new event.
- *         ChannelBuffer message = ChannelBuffers.wrappedBuffer(header, body);
- *         Channels.fireMessageReceived(ctx, message, e.getRemoteAddress());
- *     }
- *     ...
- * }
- *
- * // Create a new handler instance per channel.
- * public class MyPipelineFactory implements ChannelPipelineFactory {
- *
- *     public ChannelPipeline getPipeline() {
- *         ChannelPipeline p = Channels.pipeline();
- *         p.addLast("handler", new StatefulHandler());
- *     }
- * }
- * 
- * - *

Writing a stateful handler with the {@code "all"} coverage

- * - * Although it's recommended to write a stateful handler with the {@code "one"} - * coverage, you might sometimes want to write it with the {@code "all"} - * coverage for some reason. In such a case, you need to use either - * {@link ChannelHandlerContext#setAttachment(Object) ChannelHandlerContext.attachment} - * property or a {@link ConcurrentMap} whose key is {@link ChannelHandlerContext}. - *

- * The following is an example that uses the context attachment: - *

- * public class StatefulHandler extends SimpleChannelHandler {
- *
- *     public void channelOpen(ChannelHandlerContext ctx, ChannelStateEvent e) {
- *         // Initialize the message ID counter.
- *         // Please note that the attachment (the counter in this case) will be
- *         // dereferenced and marked for garbage collection automatically on
- *         // disconnection.
- *         ctx.setAttachment(Integer.valueOf(0));
- *     }
- *
- *     public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
- *         // Fetch the current message ID.
- *         int messageId = ((Integer) ctx.getAttachment()).intValue();
- *
- *         // Prepend a message ID and length field to the message.
- *         ChannelBuffer body = (ChannelBuffer) e.getMessage();
- *         ChannelBuffer header = ChannelBuffers.buffer(8);
- *         header.writeInt(messageId);
- *         header.writeInt(body.readableBytes());
- *
- *         // Update the stateful property.
- *         ctx.setAttachment(Integer.valueOf(messageId + 1));
- *
- *         // Create a message prepended with the header and send a new event.
- *         ChannelBuffer message = ChannelBuffers.wrappedBuffer(header, body);
- *         Channels.fireMessageReceived(ctx, message, e.getRemoteAddress());
- *     }
- *     ...
- * }
- * 
- * - * and here's another example that uses a map: - *
- * public class StatefulHandler extends SimpleChannelHandler {
- *
- *     private final ConcurrentMap<ChannelHandlerContext, Integer> messageIds =
- *             new ConcurrentHashMap<ChannelHandlerContext, Integer>();
- *
- *     public void channelOpen(ChannelHandlerContext ctx, ChannelStateEvent e) {
- *         // Initialize the message ID counter.
- *         messageIds.put(ctx, Integer.valueOf(0));
- *     }
- *
- *     public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) {
- *         // Remove the message ID counter from the map.
- *         // Please note that the context attachment does not need this step.
- *         messageIds.remove(ctx);
- *     }
- *
- *     public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
- *         // Fetch the current message ID.
- *         int messageId = messageIds.get(ctx).intValue();
- *
- *         // Prepend a message ID and length field to the message.
- *         ChannelBuffer body = (ChannelBuffer) e.getMessage();
- *         ChannelBuffer header = ChannelBuffers.buffer(8);
- *         header.writeInt(messageId);
- *         header.writeInt(body.readableBytes());
- *
- *         // Update the stateful property.
- *         messageIds.put(ctx, Integer.valueOf(messageId + 1));
- *
- *         // Create a message prepended with the header and send a new event.
- *         ChannelBuffer message = ChannelBuffers.wrappedBuffer(header, body);
- *         Channels.fireMessageReceived(ctx, message, e.getRemoteAddress());
- *     }
- *     ...
- * }
- * 
- * - * Please note that the examples above in this section assume that the handlers - * are added before the {@code channelOpen} event and removed after the - * {@code channelClosed} event. The initialization and removal of the message - * ID property could have been more complicated otherwise. - * + * @deprecated Use the {@link Sharable} annotation instead. + * @author The Netty Project * @author Trustin Lee * diff --git a/src/main/java/org/jboss/netty/example/discard/DiscardClientHandler.java b/src/main/java/org/jboss/netty/example/discard/DiscardClientHandler.java index d7b04d269f..9a991a8bcf 100644 --- a/src/main/java/org/jboss/netty/example/discard/DiscardClientHandler.java +++ b/src/main/java/org/jboss/netty/example/discard/DiscardClientHandler.java @@ -24,7 +24,6 @@ import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelEvent; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelState; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ExceptionEvent; @@ -40,7 +39,6 @@ import org.jboss.netty.channel.WriteCompletionEvent; * * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("all") public class DiscardClientHandler extends SimpleChannelUpstreamHandler { private static final Logger logger = Logger.getLogger( diff --git a/src/main/java/org/jboss/netty/example/discard/DiscardServerHandler.java b/src/main/java/org/jboss/netty/example/discard/DiscardServerHandler.java index a3a7c06ae4..67ec94682f 100644 --- a/src/main/java/org/jboss/netty/example/discard/DiscardServerHandler.java +++ b/src/main/java/org/jboss/netty/example/discard/DiscardServerHandler.java @@ -22,7 +22,6 @@ import java.util.logging.Logger; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.channel.ChannelEvent; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; @@ -36,7 +35,6 @@ import org.jboss.netty.channel.SimpleChannelUpstreamHandler; * * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("all") public class DiscardServerHandler extends SimpleChannelUpstreamHandler { private static final Logger logger = Logger.getLogger( diff --git a/src/main/java/org/jboss/netty/example/echo/EchoClientHandler.java b/src/main/java/org/jboss/netty/example/echo/EchoClientHandler.java index 10ad8227da..ebd60eb35c 100644 --- a/src/main/java/org/jboss/netty/example/echo/EchoClientHandler.java +++ b/src/main/java/org/jboss/netty/example/echo/EchoClientHandler.java @@ -22,7 +22,6 @@ import java.util.logging.Logger; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; @@ -38,7 +37,6 @@ import org.jboss.netty.channel.SimpleChannelUpstreamHandler; * * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("all") public class EchoClientHandler extends SimpleChannelUpstreamHandler { private static final Logger logger = Logger.getLogger( diff --git a/src/main/java/org/jboss/netty/example/echo/EchoServerHandler.java b/src/main/java/org/jboss/netty/example/echo/EchoServerHandler.java index ee72e178e6..1a815bb1ae 100644 --- a/src/main/java/org/jboss/netty/example/echo/EchoServerHandler.java +++ b/src/main/java/org/jboss/netty/example/echo/EchoServerHandler.java @@ -21,7 +21,6 @@ import java.util.logging.Logger; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.SimpleChannelUpstreamHandler; @@ -34,7 +33,6 @@ import org.jboss.netty.channel.SimpleChannelUpstreamHandler; * * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("all") public class EchoServerHandler extends SimpleChannelUpstreamHandler { private static final Logger logger = Logger.getLogger( diff --git a/src/main/java/org/jboss/netty/example/factorial/FactorialClientHandler.java b/src/main/java/org/jboss/netty/example/factorial/FactorialClientHandler.java index 4c43bd70e1..8c4d36e98c 100644 --- a/src/main/java/org/jboss/netty/example/factorial/FactorialClientHandler.java +++ b/src/main/java/org/jboss/netty/example/factorial/FactorialClientHandler.java @@ -26,7 +26,6 @@ import org.jboss.netty.channel.ChannelEvent; import org.jboss.netty.channel.ChannelFuture; import org.jboss.netty.channel.ChannelFutureListener; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; @@ -44,7 +43,6 @@ import org.jboss.netty.channel.SimpleChannelUpstreamHandler; * * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("one") // <-- HERE public class FactorialClientHandler extends SimpleChannelUpstreamHandler { private static final Logger logger = Logger.getLogger( diff --git a/src/main/java/org/jboss/netty/example/factorial/FactorialServerHandler.java b/src/main/java/org/jboss/netty/example/factorial/FactorialServerHandler.java index a016cd6955..404b60a4d3 100644 --- a/src/main/java/org/jboss/netty/example/factorial/FactorialServerHandler.java +++ b/src/main/java/org/jboss/netty/example/factorial/FactorialServerHandler.java @@ -22,7 +22,6 @@ import java.util.logging.Logger; import org.jboss.netty.channel.ChannelEvent; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; @@ -40,7 +39,6 @@ import org.jboss.netty.channel.SimpleChannelUpstreamHandler; * * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("one") // <-- HERE public class FactorialServerHandler extends SimpleChannelUpstreamHandler { private static final Logger logger = Logger.getLogger( diff --git a/src/main/java/org/jboss/netty/example/factorial/NumberEncoder.java b/src/main/java/org/jboss/netty/example/factorial/NumberEncoder.java index 6f988d1896..cfd157539c 100644 --- a/src/main/java/org/jboss/netty/example/factorial/NumberEncoder.java +++ b/src/main/java/org/jboss/netty/example/factorial/NumberEncoder.java @@ -21,7 +21,6 @@ import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; /** @@ -34,7 +33,6 @@ import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; * @version $Rev$, $Date$ * */ -@ChannelPipelineCoverage("all") public class NumberEncoder extends OneToOneEncoder { @Override diff --git a/src/main/java/org/jboss/netty/example/http/file/HttpStaticFileServerHandler.java b/src/main/java/org/jboss/netty/example/http/file/HttpStaticFileServerHandler.java index 5d05e0af01..0b587df5d2 100644 --- a/src/main/java/org/jboss/netty/example/http/file/HttpStaticFileServerHandler.java +++ b/src/main/java/org/jboss/netty/example/http/file/HttpStaticFileServerHandler.java @@ -32,7 +32,6 @@ import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelFuture; import org.jboss.netty.channel.ChannelFutureListener; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.SimpleChannelUpstreamHandler; @@ -48,7 +47,6 @@ import org.jboss.netty.util.CharsetUtil; * @author The Netty Project * @author Trustin Lee */ -@ChannelPipelineCoverage("one") public class HttpStaticFileServerHandler extends SimpleChannelUpstreamHandler { @Override diff --git a/src/main/java/org/jboss/netty/example/http/snoop/HttpRequestHandler.java b/src/main/java/org/jboss/netty/example/http/snoop/HttpRequestHandler.java index e82eb9ab3c..2f89f17610 100644 --- a/src/main/java/org/jboss/netty/example/http/snoop/HttpRequestHandler.java +++ b/src/main/java/org/jboss/netty/example/http/snoop/HttpRequestHandler.java @@ -30,7 +30,6 @@ import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.channel.ChannelFuture; import org.jboss.netty.channel.ChannelFutureListener; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.SimpleChannelUpstreamHandler; @@ -52,7 +51,6 @@ import org.jboss.netty.util.CharsetUtil; * * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("one") public class HttpRequestHandler extends SimpleChannelUpstreamHandler { private volatile HttpRequest request; diff --git a/src/main/java/org/jboss/netty/example/http/snoop/HttpResponseHandler.java b/src/main/java/org/jboss/netty/example/http/snoop/HttpResponseHandler.java index 246a3433dd..6e8ac779a2 100644 --- a/src/main/java/org/jboss/netty/example/http/snoop/HttpResponseHandler.java +++ b/src/main/java/org/jboss/netty/example/http/snoop/HttpResponseHandler.java @@ -17,7 +17,6 @@ package org.jboss.netty.example.http.snoop; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.SimpleChannelUpstreamHandler; import org.jboss.netty.handler.codec.http.HttpChunk; @@ -31,7 +30,6 @@ import org.jboss.netty.util.CharsetUtil; * * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("one") public class HttpResponseHandler extends SimpleChannelUpstreamHandler { private volatile boolean readingChunks; diff --git a/src/main/java/org/jboss/netty/example/http/websocket/WebSocketServerHandler.java b/src/main/java/org/jboss/netty/example/http/websocket/WebSocketServerHandler.java index b0d1be337f..0dc87f7c7b 100644 --- a/src/main/java/org/jboss/netty/example/http/websocket/WebSocketServerHandler.java +++ b/src/main/java/org/jboss/netty/example/http/websocket/WebSocketServerHandler.java @@ -28,7 +28,6 @@ import org.jboss.netty.channel.ChannelFuture; import org.jboss.netty.channel.ChannelFutureListener; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelPipeline; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.SimpleChannelUpstreamHandler; @@ -51,7 +50,6 @@ import org.jboss.netty.util.CharsetUtil; * * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("one") public class WebSocketServerHandler extends SimpleChannelUpstreamHandler { private static final String WEBSOCKET_PATH = "/websocket"; diff --git a/src/main/java/org/jboss/netty/example/local/LocalServerPipelineFactory.java b/src/main/java/org/jboss/netty/example/local/LocalServerPipelineFactory.java index 350cda3206..d3898843d1 100644 --- a/src/main/java/org/jboss/netty/example/local/LocalServerPipelineFactory.java +++ b/src/main/java/org/jboss/netty/example/local/LocalServerPipelineFactory.java @@ -21,7 +21,6 @@ import org.jboss.netty.channel.ChannelDownstreamHandler; import org.jboss.netty.channel.ChannelEvent; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelPipeline; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelPipelineFactory; import org.jboss.netty.channel.ChannelUpstreamHandler; import org.jboss.netty.channel.Channels; @@ -53,7 +52,6 @@ public class LocalServerPipelineFactory implements ChannelPipelineFactory { return pipeline; } - @ChannelPipelineCoverage("all") static class EchoCloseServerHandler implements ChannelUpstreamHandler, ChannelDownstreamHandler { public void handleUpstream(ChannelHandlerContext ctx, ChannelEvent e) throws Exception { diff --git a/src/main/java/org/jboss/netty/example/localtime/LocalTimeClientHandler.java b/src/main/java/org/jboss/netty/example/localtime/LocalTimeClientHandler.java index 055e774829..e2e7109685 100644 --- a/src/main/java/org/jboss/netty/example/localtime/LocalTimeClientHandler.java +++ b/src/main/java/org/jboss/netty/example/localtime/LocalTimeClientHandler.java @@ -27,7 +27,6 @@ import java.util.logging.Logger; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelEvent; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; @@ -44,7 +43,6 @@ import org.jboss.netty.example.localtime.LocalTimeProtocol.Locations; * * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("one") public class LocalTimeClientHandler extends SimpleChannelUpstreamHandler { private static final Logger logger = Logger.getLogger( diff --git a/src/main/java/org/jboss/netty/example/localtime/LocalTimeServerHandler.java b/src/main/java/org/jboss/netty/example/localtime/LocalTimeServerHandler.java index fc8d1189ff..261d709784 100644 --- a/src/main/java/org/jboss/netty/example/localtime/LocalTimeServerHandler.java +++ b/src/main/java/org/jboss/netty/example/localtime/LocalTimeServerHandler.java @@ -24,7 +24,6 @@ import java.util.logging.Logger; import org.jboss.netty.channel.ChannelEvent; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; @@ -42,7 +41,6 @@ import org.jboss.netty.example.localtime.LocalTimeProtocol.Locations; * * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("all") public class LocalTimeServerHandler extends SimpleChannelUpstreamHandler { private static final Logger logger = Logger.getLogger( diff --git a/src/main/java/org/jboss/netty/example/objectecho/ObjectEchoClientHandler.java b/src/main/java/org/jboss/netty/example/objectecho/ObjectEchoClientHandler.java index 50dde3282d..385964c167 100644 --- a/src/main/java/org/jboss/netty/example/objectecho/ObjectEchoClientHandler.java +++ b/src/main/java/org/jboss/netty/example/objectecho/ObjectEchoClientHandler.java @@ -23,7 +23,6 @@ import java.util.logging.Logger; import org.jboss.netty.channel.ChannelEvent; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelState; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ExceptionEvent; @@ -40,7 +39,6 @@ import org.jboss.netty.channel.SimpleChannelUpstreamHandler; * * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("all") public class ObjectEchoClientHandler extends SimpleChannelUpstreamHandler { private static final Logger logger = Logger.getLogger( diff --git a/src/main/java/org/jboss/netty/example/objectecho/ObjectEchoServerHandler.java b/src/main/java/org/jboss/netty/example/objectecho/ObjectEchoServerHandler.java index 39b4f43177..307adbd782 100644 --- a/src/main/java/org/jboss/netty/example/objectecho/ObjectEchoServerHandler.java +++ b/src/main/java/org/jboss/netty/example/objectecho/ObjectEchoServerHandler.java @@ -21,7 +21,6 @@ import java.util.logging.Logger; import org.jboss.netty.channel.ChannelEvent; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelState; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ExceptionEvent; @@ -37,7 +36,6 @@ import org.jboss.netty.channel.SimpleChannelUpstreamHandler; * * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("all") public class ObjectEchoServerHandler extends SimpleChannelUpstreamHandler { private static final Logger logger = Logger.getLogger( diff --git a/src/main/java/org/jboss/netty/example/proxy/HexDumpProxyInboundHandler.java b/src/main/java/org/jboss/netty/example/proxy/HexDumpProxyInboundHandler.java index db4ced7442..b34bedc544 100644 --- a/src/main/java/org/jboss/netty/example/proxy/HexDumpProxyInboundHandler.java +++ b/src/main/java/org/jboss/netty/example/proxy/HexDumpProxyInboundHandler.java @@ -24,7 +24,6 @@ import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelFuture; import org.jboss.netty.channel.ChannelFutureListener; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; @@ -36,7 +35,6 @@ import org.jboss.netty.channel.socket.ClientSocketChannelFactory; * @author Trustin Lee * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("one") public class HexDumpProxyInboundHandler extends SimpleChannelUpstreamHandler { private final ClientSocketChannelFactory cf; @@ -102,7 +100,6 @@ public class HexDumpProxyInboundHandler extends SimpleChannelUpstreamHandler { closeOnFlush(e.getChannel()); } - @ChannelPipelineCoverage("one") private static class OutboundHandler extends SimpleChannelUpstreamHandler { private final Channel inboundChannel; diff --git a/src/main/java/org/jboss/netty/example/qotm/QuoteOfTheMomentClientHandler.java b/src/main/java/org/jboss/netty/example/qotm/QuoteOfTheMomentClientHandler.java index d96e8e7dc6..cab0c2652f 100644 --- a/src/main/java/org/jboss/netty/example/qotm/QuoteOfTheMomentClientHandler.java +++ b/src/main/java/org/jboss/netty/example/qotm/QuoteOfTheMomentClientHandler.java @@ -16,7 +16,6 @@ package org.jboss.netty.example.qotm; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.SimpleChannelUpstreamHandler; @@ -26,7 +25,6 @@ import org.jboss.netty.channel.SimpleChannelUpstreamHandler; * @author Trustin Lee * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("all") public class QuoteOfTheMomentClientHandler extends SimpleChannelUpstreamHandler { @Override diff --git a/src/main/java/org/jboss/netty/example/qotm/QuoteOfTheMomentServerHandler.java b/src/main/java/org/jboss/netty/example/qotm/QuoteOfTheMomentServerHandler.java index c953832ea8..cf247ea68b 100644 --- a/src/main/java/org/jboss/netty/example/qotm/QuoteOfTheMomentServerHandler.java +++ b/src/main/java/org/jboss/netty/example/qotm/QuoteOfTheMomentServerHandler.java @@ -18,7 +18,6 @@ package org.jboss.netty.example.qotm; import java.util.Random; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.SimpleChannelUpstreamHandler; @@ -28,7 +27,6 @@ import org.jboss.netty.channel.SimpleChannelUpstreamHandler; * @author Trustin Lee * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("all") public class QuoteOfTheMomentServerHandler extends SimpleChannelUpstreamHandler { private static final Random random = new Random(); diff --git a/src/main/java/org/jboss/netty/example/securechat/SecureChatClientHandler.java b/src/main/java/org/jboss/netty/example/securechat/SecureChatClientHandler.java index 0de6de6cb3..f9537ae258 100644 --- a/src/main/java/org/jboss/netty/example/securechat/SecureChatClientHandler.java +++ b/src/main/java/org/jboss/netty/example/securechat/SecureChatClientHandler.java @@ -20,7 +20,6 @@ import java.util.logging.Logger; import org.jboss.netty.channel.ChannelEvent; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; @@ -35,7 +34,6 @@ import org.jboss.netty.handler.ssl.SslHandler; * * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("all") public class SecureChatClientHandler extends SimpleChannelUpstreamHandler { private static final Logger logger = Logger.getLogger( diff --git a/src/main/java/org/jboss/netty/example/securechat/SecureChatServerHandler.java b/src/main/java/org/jboss/netty/example/securechat/SecureChatServerHandler.java index 829fb6285d..fe94953554 100644 --- a/src/main/java/org/jboss/netty/example/securechat/SecureChatServerHandler.java +++ b/src/main/java/org/jboss/netty/example/securechat/SecureChatServerHandler.java @@ -24,7 +24,6 @@ import org.jboss.netty.channel.ChannelEvent; import org.jboss.netty.channel.ChannelFuture; import org.jboss.netty.channel.ChannelFutureListener; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; @@ -41,7 +40,6 @@ import org.jboss.netty.handler.ssl.SslHandler; * * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("all") public class SecureChatServerHandler extends SimpleChannelUpstreamHandler { private static final Logger logger = Logger.getLogger( diff --git a/src/main/java/org/jboss/netty/example/telnet/TelnetClientHandler.java b/src/main/java/org/jboss/netty/example/telnet/TelnetClientHandler.java index 86fe32e454..d5ee47fccb 100644 --- a/src/main/java/org/jboss/netty/example/telnet/TelnetClientHandler.java +++ b/src/main/java/org/jboss/netty/example/telnet/TelnetClientHandler.java @@ -20,7 +20,6 @@ import java.util.logging.Logger; import org.jboss.netty.channel.ChannelEvent; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; @@ -34,7 +33,6 @@ import org.jboss.netty.channel.SimpleChannelUpstreamHandler; * * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("all") public class TelnetClientHandler extends SimpleChannelUpstreamHandler { private static final Logger logger = Logger.getLogger( diff --git a/src/main/java/org/jboss/netty/example/telnet/TelnetServerHandler.java b/src/main/java/org/jboss/netty/example/telnet/TelnetServerHandler.java index af03c111af..17ab96909b 100644 --- a/src/main/java/org/jboss/netty/example/telnet/TelnetServerHandler.java +++ b/src/main/java/org/jboss/netty/example/telnet/TelnetServerHandler.java @@ -24,7 +24,6 @@ import org.jboss.netty.channel.ChannelEvent; import org.jboss.netty.channel.ChannelFuture; import org.jboss.netty.channel.ChannelFutureListener; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; @@ -38,7 +37,6 @@ import org.jboss.netty.channel.SimpleChannelUpstreamHandler; * * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("all") public class TelnetServerHandler extends SimpleChannelUpstreamHandler { private static final Logger logger = Logger.getLogger( diff --git a/src/main/java/org/jboss/netty/example/uptime/UptimeClientHandler.java b/src/main/java/org/jboss/netty/example/uptime/UptimeClientHandler.java index d84ad53aa1..7ee80c3613 100644 --- a/src/main/java/org/jboss/netty/example/uptime/UptimeClientHandler.java +++ b/src/main/java/org/jboss/netty/example/uptime/UptimeClientHandler.java @@ -21,7 +21,6 @@ import java.util.concurrent.TimeUnit; import org.jboss.netty.bootstrap.ClientBootstrap; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.SimpleChannelUpstreamHandler; @@ -38,7 +37,6 @@ import org.jboss.netty.util.TimerTask; * * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("one") public class UptimeClientHandler extends SimpleChannelUpstreamHandler { final ClientBootstrap bootstrap; diff --git a/src/main/java/org/jboss/netty/handler/codec/base64/Base64Decoder.java b/src/main/java/org/jboss/netty/handler/codec/base64/Base64Decoder.java index 556fc9d9df..6cc5228003 100644 --- a/src/main/java/org/jboss/netty/handler/codec/base64/Base64Decoder.java +++ b/src/main/java/org/jboss/netty/handler/codec/base64/Base64Decoder.java @@ -20,7 +20,7 @@ import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelPipeline; -import org.jboss.netty.channel.ChannelPipelineCoverage; +import org.jboss.netty.channel.ChannelHandler.Sharable; import org.jboss.netty.handler.codec.frame.DelimiterBasedFrameDecoder; import org.jboss.netty.handler.codec.frame.Delimiters; import org.jboss.netty.handler.codec.frame.FrameDecoder; @@ -50,7 +50,7 @@ import org.jboss.netty.util.CharsetUtil; * * @apiviz.uses org.jboss.netty.handler.codec.base64.Base64 */ -@ChannelPipelineCoverage("all") +@Sharable public class Base64Decoder extends OneToOneDecoder { private final Base64Dialect dialect; diff --git a/src/main/java/org/jboss/netty/handler/codec/base64/Base64Encoder.java b/src/main/java/org/jboss/netty/handler/codec/base64/Base64Encoder.java index c0098df72a..954822606d 100644 --- a/src/main/java/org/jboss/netty/handler/codec/base64/Base64Encoder.java +++ b/src/main/java/org/jboss/netty/handler/codec/base64/Base64Encoder.java @@ -19,7 +19,7 @@ import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelPipeline; -import org.jboss.netty.channel.ChannelPipelineCoverage; +import org.jboss.netty.channel.ChannelHandler.Sharable; import org.jboss.netty.handler.codec.frame.DelimiterBasedFrameDecoder; import org.jboss.netty.handler.codec.frame.Delimiters; import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; @@ -44,7 +44,7 @@ import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; * * @apiviz.uses org.jboss.netty.handler.codec.base64.Base64 */ -@ChannelPipelineCoverage("all") +@Sharable public class Base64Encoder extends OneToOneEncoder { private final boolean breakLines; diff --git a/src/main/java/org/jboss/netty/handler/codec/compression/ZlibDecoder.java b/src/main/java/org/jboss/netty/handler/codec/compression/ZlibDecoder.java index 4c3748855f..f326522478 100644 --- a/src/main/java/org/jboss/netty/handler/codec/compression/ZlibDecoder.java +++ b/src/main/java/org/jboss/netty/handler/codec/compression/ZlibDecoder.java @@ -19,7 +19,6 @@ import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.handler.codec.oneone.OneToOneDecoder; import org.jboss.netty.util.internal.jzlib.JZlib; import org.jboss.netty.util.internal.jzlib.ZStream; @@ -32,7 +31,6 @@ import org.jboss.netty.util.internal.jzlib.ZStream; * @author Trustin Lee * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("one") public class ZlibDecoder extends OneToOneDecoder { private final ZStream z = new ZStream(); diff --git a/src/main/java/org/jboss/netty/handler/codec/compression/ZlibEncoder.java b/src/main/java/org/jboss/netty/handler/codec/compression/ZlibEncoder.java index 04868cefcb..08239fe17e 100644 --- a/src/main/java/org/jboss/netty/handler/codec/compression/ZlibEncoder.java +++ b/src/main/java/org/jboss/netty/handler/codec/compression/ZlibEncoder.java @@ -24,7 +24,6 @@ import org.jboss.netty.channel.ChannelEvent; import org.jboss.netty.channel.ChannelFuture; import org.jboss.netty.channel.ChannelFutureListener; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.Channels; import org.jboss.netty.channel.LifeCycleAwareChannelHandler; @@ -40,7 +39,6 @@ import org.jboss.netty.util.internal.jzlib.ZStream; * @author Trustin Lee * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("one") public class ZlibEncoder extends OneToOneEncoder implements LifeCycleAwareChannelHandler { private static final byte[] EMPTY_ARRAY = new byte[0]; diff --git a/src/main/java/org/jboss/netty/handler/codec/embedder/AbstractCodecEmbedder.java b/src/main/java/org/jboss/netty/handler/codec/embedder/AbstractCodecEmbedder.java index 6c9039b347..56dbe8c7b0 100644 --- a/src/main/java/org/jboss/netty/handler/codec/embedder/AbstractCodecEmbedder.java +++ b/src/main/java/org/jboss/netty/handler/codec/embedder/AbstractCodecEmbedder.java @@ -28,7 +28,6 @@ import org.jboss.netty.channel.ChannelEvent; import org.jboss.netty.channel.ChannelHandler; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelPipeline; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelPipelineException; import org.jboss.netty.channel.ChannelSink; import org.jboss.netty.channel.ChannelUpstreamHandler; @@ -181,7 +180,6 @@ abstract class AbstractCodecEmbedder implements CodecEmbedder { return productQueue.size(); } - @ChannelPipelineCoverage("all") private final class EmbeddedChannelSink implements ChannelSink, ChannelUpstreamHandler { EmbeddedChannelSink() { super(); diff --git a/src/main/java/org/jboss/netty/handler/codec/frame/FrameDecoder.java b/src/main/java/org/jboss/netty/handler/codec/frame/FrameDecoder.java index a507f43c77..a9c01fc9e5 100644 --- a/src/main/java/org/jboss/netty/handler/codec/frame/FrameDecoder.java +++ b/src/main/java/org/jboss/netty/handler/codec/frame/FrameDecoder.java @@ -23,7 +23,6 @@ import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandler; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelPipeline; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ChannelUpstreamHandler; import org.jboss.netty.channel.Channels; @@ -176,7 +175,6 @@ import org.jboss.netty.handler.codec.replay.ReplayingDecoder; * * @apiviz.landmark */ -@ChannelPipelineCoverage("one") public abstract class FrameDecoder extends SimpleChannelUpstreamHandler { private final boolean unfold; diff --git a/src/main/java/org/jboss/netty/handler/codec/frame/LengthFieldPrepender.java b/src/main/java/org/jboss/netty/handler/codec/frame/LengthFieldPrepender.java index f410737d49..a0856a2958 100644 --- a/src/main/java/org/jboss/netty/handler/codec/frame/LengthFieldPrepender.java +++ b/src/main/java/org/jboss/netty/handler/codec/frame/LengthFieldPrepender.java @@ -23,7 +23,7 @@ import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBufferFactory; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; +import org.jboss.netty.channel.ChannelHandler.Sharable; import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; /** @@ -58,7 +58,7 @@ import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; * @author Trustin Lee * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("all") +@Sharable public class LengthFieldPrepender extends OneToOneEncoder { private final int lengthFieldLength; diff --git a/src/main/java/org/jboss/netty/handler/codec/http/HttpChunkAggregator.java b/src/main/java/org/jboss/netty/handler/codec/http/HttpChunkAggregator.java index 39995594c4..6296ce16f0 100644 --- a/src/main/java/org/jboss/netty/handler/codec/http/HttpChunkAggregator.java +++ b/src/main/java/org/jboss/netty/handler/codec/http/HttpChunkAggregator.java @@ -22,7 +22,6 @@ import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.channel.ChannelHandler; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelPipeline; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.Channels; import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.SimpleChannelUpstreamHandler; @@ -51,7 +50,6 @@ import org.jboss.netty.handler.codec.frame.TooLongFrameException; * @apiviz.landmark * @apiviz.has org.jboss.netty.handler.codec.http.HttpChunk oneway - - filters out */ -@ChannelPipelineCoverage("one") public class HttpChunkAggregator extends SimpleChannelUpstreamHandler { private final int maxContentLength; diff --git a/src/main/java/org/jboss/netty/handler/codec/http/HttpContentCompressor.java b/src/main/java/org/jboss/netty/handler/codec/http/HttpContentCompressor.java index 74a143be22..a141402c29 100644 --- a/src/main/java/org/jboss/netty/handler/codec/http/HttpContentCompressor.java +++ b/src/main/java/org/jboss/netty/handler/codec/http/HttpContentCompressor.java @@ -16,7 +16,6 @@ package org.jboss.netty.handler.codec.http; import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.handler.codec.compression.ZlibEncoder; import org.jboss.netty.handler.codec.compression.ZlibWrapper; import org.jboss.netty.handler.codec.embedder.EncoderEmbedder; @@ -32,7 +31,6 @@ import org.jboss.netty.handler.codec.embedder.EncoderEmbedder; * @author Trustin Lee * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("one") public class HttpContentCompressor extends HttpContentEncoder { private final int compressionLevel; diff --git a/src/main/java/org/jboss/netty/handler/codec/http/HttpContentDecoder.java b/src/main/java/org/jboss/netty/handler/codec/http/HttpContentDecoder.java index 432f3c796e..84bbfc0162 100644 --- a/src/main/java/org/jboss/netty/handler/codec/http/HttpContentDecoder.java +++ b/src/main/java/org/jboss/netty/handler/codec/http/HttpContentDecoder.java @@ -18,7 +18,6 @@ package org.jboss.netty.handler.codec.http; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.Channels; import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.SimpleChannelUpstreamHandler; @@ -47,7 +46,6 @@ import org.jboss.netty.handler.codec.embedder.DecoderEmbedder; * @author Trustin Lee * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("one") public abstract class HttpContentDecoder extends SimpleChannelUpstreamHandler { private volatile DecoderEmbedder decoder; diff --git a/src/main/java/org/jboss/netty/handler/codec/http/HttpContentDecompressor.java b/src/main/java/org/jboss/netty/handler/codec/http/HttpContentDecompressor.java index bba0d7672b..63a9c6cdd9 100644 --- a/src/main/java/org/jboss/netty/handler/codec/http/HttpContentDecompressor.java +++ b/src/main/java/org/jboss/netty/handler/codec/http/HttpContentDecompressor.java @@ -16,7 +16,6 @@ package org.jboss.netty.handler.codec.http; import org.jboss.netty.buffer.ChannelBuffer; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.handler.codec.compression.ZlibDecoder; import org.jboss.netty.handler.codec.compression.ZlibWrapper; import org.jboss.netty.handler.codec.embedder.DecoderEmbedder; @@ -30,7 +29,6 @@ import org.jboss.netty.handler.codec.embedder.DecoderEmbedder; * @author Trustin Lee * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("one") public class HttpContentDecompressor extends HttpContentDecoder { @Override protected DecoderEmbedder newContentDecoder(String contentEncoding) throws Exception { diff --git a/src/main/java/org/jboss/netty/handler/codec/http/HttpMessageEncoder.java b/src/main/java/org/jboss/netty/handler/codec/http/HttpMessageEncoder.java index 86e1fb2ff5..9ead3f1fea 100644 --- a/src/main/java/org/jboss/netty/handler/codec/http/HttpMessageEncoder.java +++ b/src/main/java/org/jboss/netty/handler/codec/http/HttpMessageEncoder.java @@ -25,7 +25,6 @@ import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; import org.jboss.netty.util.CharsetUtil; @@ -49,7 +48,6 @@ import org.jboss.netty.util.CharsetUtil; * * @apiviz.landmark */ -@ChannelPipelineCoverage("one") public abstract class HttpMessageEncoder extends OneToOneEncoder { private static final ChannelBuffer LAST_CHUNK = diff --git a/src/main/java/org/jboss/netty/handler/codec/http/websocket/WebSocketFrameDecoder.java b/src/main/java/org/jboss/netty/handler/codec/http/websocket/WebSocketFrameDecoder.java index acf7c68134..ccd5d948ee 100644 --- a/src/main/java/org/jboss/netty/handler/codec/http/websocket/WebSocketFrameDecoder.java +++ b/src/main/java/org/jboss/netty/handler/codec/http/websocket/WebSocketFrameDecoder.java @@ -18,7 +18,6 @@ package org.jboss.netty.handler.codec.http.websocket; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.handler.codec.frame.TooLongFrameException; import org.jboss.netty.handler.codec.replay.ReplayingDecoder; import org.jboss.netty.handler.codec.replay.VoidEnum; @@ -35,7 +34,6 @@ import org.jboss.netty.handler.codec.replay.VoidEnum; * @author Trustin Lee * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("one") public class WebSocketFrameDecoder extends ReplayingDecoder { public static final int DEFAULT_MAX_FRAME_SIZE = 16384; diff --git a/src/main/java/org/jboss/netty/handler/codec/http/websocket/WebSocketFrameEncoder.java b/src/main/java/org/jboss/netty/handler/codec/http/websocket/WebSocketFrameEncoder.java index 42f6a447ba..90f83929b6 100644 --- a/src/main/java/org/jboss/netty/handler/codec/http/websocket/WebSocketFrameEncoder.java +++ b/src/main/java/org/jboss/netty/handler/codec/http/websocket/WebSocketFrameEncoder.java @@ -18,7 +18,7 @@ package org.jboss.netty.handler.codec.http.websocket; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; +import org.jboss.netty.channel.ChannelHandler.Sharable; import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; /** @@ -33,7 +33,7 @@ import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; * @author Trustin Lee * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("all") +@Sharable public class WebSocketFrameEncoder extends OneToOneEncoder { @Override diff --git a/src/main/java/org/jboss/netty/handler/codec/protobuf/ProtobufDecoder.java b/src/main/java/org/jboss/netty/handler/codec/protobuf/ProtobufDecoder.java index d560f3640d..9c29a418c0 100644 --- a/src/main/java/org/jboss/netty/handler/codec/protobuf/ProtobufDecoder.java +++ b/src/main/java/org/jboss/netty/handler/codec/protobuf/ProtobufDecoder.java @@ -20,7 +20,7 @@ import org.jboss.netty.buffer.ChannelBufferInputStream; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelPipeline; -import org.jboss.netty.channel.ChannelPipelineCoverage; +import org.jboss.netty.channel.ChannelHandler.Sharable; import org.jboss.netty.handler.codec.frame.FrameDecoder; import org.jboss.netty.handler.codec.frame.LengthFieldBasedFrameDecoder; import org.jboss.netty.handler.codec.frame.LengthFieldPrepender; @@ -67,7 +67,7 @@ import com.google.protobuf.Message; * * @apiviz.landmark */ -@ChannelPipelineCoverage("all") +@Sharable public class ProtobufDecoder extends OneToOneDecoder { private final Message prototype; diff --git a/src/main/java/org/jboss/netty/handler/codec/protobuf/ProtobufEncoder.java b/src/main/java/org/jboss/netty/handler/codec/protobuf/ProtobufEncoder.java index 1662b130c4..392729d163 100644 --- a/src/main/java/org/jboss/netty/handler/codec/protobuf/ProtobufEncoder.java +++ b/src/main/java/org/jboss/netty/handler/codec/protobuf/ProtobufEncoder.java @@ -21,7 +21,7 @@ import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelPipeline; -import org.jboss.netty.channel.ChannelPipelineCoverage; +import org.jboss.netty.channel.ChannelHandler.Sharable; import org.jboss.netty.handler.codec.frame.LengthFieldBasedFrameDecoder; import org.jboss.netty.handler.codec.frame.LengthFieldPrepender; import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; @@ -63,7 +63,7 @@ import com.google.protobuf.Message; * * @apiviz.landmark */ -@ChannelPipelineCoverage("all") +@Sharable public class ProtobufEncoder extends OneToOneEncoder { /** diff --git a/src/main/java/org/jboss/netty/handler/codec/protobuf/ProtobufVarint32LengthFieldPrepender.java b/src/main/java/org/jboss/netty/handler/codec/protobuf/ProtobufVarint32LengthFieldPrepender.java index 81709185de..9d7fcdcfe9 100644 --- a/src/main/java/org/jboss/netty/handler/codec/protobuf/ProtobufVarint32LengthFieldPrepender.java +++ b/src/main/java/org/jboss/netty/handler/codec/protobuf/ProtobufVarint32LengthFieldPrepender.java @@ -21,7 +21,7 @@ import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBufferOutputStream; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; +import org.jboss.netty.channel.ChannelHandler.Sharable; import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; import com.google.protobuf.CodedOutputStream; @@ -38,7 +38,7 @@ import com.google.protobuf.CodedOutputStream; * @author Tomasz Blachowicz (tblachowicz@gmail.com) * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("all") +@Sharable public class ProtobufVarint32LengthFieldPrepender extends OneToOneEncoder { @Override diff --git a/src/main/java/org/jboss/netty/handler/codec/replay/ReplayingDecoder.java b/src/main/java/org/jboss/netty/handler/codec/replay/ReplayingDecoder.java index e5cd5137b9..bf653c1e14 100644 --- a/src/main/java/org/jboss/netty/handler/codec/replay/ReplayingDecoder.java +++ b/src/main/java/org/jboss/netty/handler/codec/replay/ReplayingDecoder.java @@ -24,7 +24,6 @@ import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandler; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelPipeline; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.Channels; import org.jboss.netty.channel.ExceptionEvent; @@ -283,7 +282,6 @@ import org.jboss.netty.handler.codec.frame.FrameDecoder; * @apiviz.landmark * @apiviz.has org.jboss.netty.handler.codec.replay.UnreplayableOperationException oneway - - throws */ -@ChannelPipelineCoverage("one") public abstract class ReplayingDecoder> extends SimpleChannelUpstreamHandler { diff --git a/src/main/java/org/jboss/netty/handler/codec/rtsp/RtspMessageEncoder.java b/src/main/java/org/jboss/netty/handler/codec/rtsp/RtspMessageEncoder.java index 572eae0089..7ee2220df3 100644 --- a/src/main/java/org/jboss/netty/handler/codec/rtsp/RtspMessageEncoder.java +++ b/src/main/java/org/jboss/netty/handler/codec/rtsp/RtspMessageEncoder.java @@ -18,6 +18,7 @@ package org.jboss.netty.handler.codec.rtsp; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; +import org.jboss.netty.channel.ChannelHandler.Sharable; import org.jboss.netty.handler.codec.http.HttpMessage; import org.jboss.netty.handler.codec.http.HttpMessageEncoder; @@ -30,6 +31,7 @@ import org.jboss.netty.handler.codec.http.HttpMessageEncoder; * @author Trustin Lee * @version $Rev$, $Date$ */ +@Sharable public abstract class RtspMessageEncoder extends HttpMessageEncoder { /** diff --git a/src/main/java/org/jboss/netty/handler/codec/serialization/CompatibleObjectEncoder.java b/src/main/java/org/jboss/netty/handler/codec/serialization/CompatibleObjectEncoder.java index a42d48618c..6395898b9c 100644 --- a/src/main/java/org/jboss/netty/handler/codec/serialization/CompatibleObjectEncoder.java +++ b/src/main/java/org/jboss/netty/handler/codec/serialization/CompatibleObjectEncoder.java @@ -26,7 +26,6 @@ import org.jboss.netty.buffer.ChannelBufferOutputStream; import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; /** @@ -41,7 +40,6 @@ import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; * * @version $Rev:231 $, $Date:2008-06-12 16:44:50 +0900 (목, 12 6월 2008) $ */ -@ChannelPipelineCoverage("one") public class CompatibleObjectEncoder extends OneToOneEncoder { private final AtomicReference buffer = diff --git a/src/main/java/org/jboss/netty/handler/codec/serialization/ObjectEncoder.java b/src/main/java/org/jboss/netty/handler/codec/serialization/ObjectEncoder.java index 53c28e884c..4f24179753 100644 --- a/src/main/java/org/jboss/netty/handler/codec/serialization/ObjectEncoder.java +++ b/src/main/java/org/jboss/netty/handler/codec/serialization/ObjectEncoder.java @@ -24,7 +24,7 @@ import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBufferOutputStream; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; +import org.jboss.netty.channel.ChannelHandler.Sharable; import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; /** @@ -43,7 +43,7 @@ import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; * @apiviz.landmark * @apiviz.has org.jboss.netty.handler.codec.serialization.ObjectEncoderOutputStream - - - compatible with */ -@ChannelPipelineCoverage("all") +@Sharable public class ObjectEncoder extends OneToOneEncoder { private static final byte[] LENGTH_PLACEHOLDER = new byte[4]; diff --git a/src/main/java/org/jboss/netty/handler/codec/string/StringDecoder.java b/src/main/java/org/jboss/netty/handler/codec/string/StringDecoder.java index 24e48b3924..c0dfd83342 100644 --- a/src/main/java/org/jboss/netty/handler/codec/string/StringDecoder.java +++ b/src/main/java/org/jboss/netty/handler/codec/string/StringDecoder.java @@ -21,7 +21,7 @@ import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelPipeline; -import org.jboss.netty.channel.ChannelPipelineCoverage; +import org.jboss.netty.channel.ChannelHandler.Sharable; import org.jboss.netty.handler.codec.frame.DelimiterBasedFrameDecoder; import org.jboss.netty.handler.codec.frame.Delimiters; import org.jboss.netty.handler.codec.frame.FrameDecoder; @@ -59,7 +59,7 @@ import org.jboss.netty.handler.codec.oneone.OneToOneDecoder; * * @apiviz.landmark */ -@ChannelPipelineCoverage("all") +@Sharable public class StringDecoder extends OneToOneDecoder { // TODO Use CharsetDecoder instead. diff --git a/src/main/java/org/jboss/netty/handler/codec/string/StringEncoder.java b/src/main/java/org/jboss/netty/handler/codec/string/StringEncoder.java index cde0bb67e3..9308a870d6 100644 --- a/src/main/java/org/jboss/netty/handler/codec/string/StringEncoder.java +++ b/src/main/java/org/jboss/netty/handler/codec/string/StringEncoder.java @@ -23,7 +23,7 @@ import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelPipeline; -import org.jboss.netty.channel.ChannelPipelineCoverage; +import org.jboss.netty.channel.ChannelHandler.Sharable; import org.jboss.netty.handler.codec.frame.DelimiterBasedFrameDecoder; import org.jboss.netty.handler.codec.frame.Delimiters; import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; @@ -57,7 +57,7 @@ import org.jboss.netty.handler.codec.oneone.OneToOneEncoder; * * @apiviz.landmark */ -@ChannelPipelineCoverage("all") +@Sharable public class StringEncoder extends OneToOneEncoder { // TODO Use CharsetEncoder instead. diff --git a/src/main/java/org/jboss/netty/handler/execution/ExecutionHandler.java b/src/main/java/org/jboss/netty/handler/execution/ExecutionHandler.java index 8581cfe7f5..05b9e687bf 100644 --- a/src/main/java/org/jboss/netty/handler/execution/ExecutionHandler.java +++ b/src/main/java/org/jboss/netty/handler/execution/ExecutionHandler.java @@ -22,10 +22,10 @@ import org.jboss.netty.channel.ChannelDownstreamHandler; import org.jboss.netty.channel.ChannelEvent; import org.jboss.netty.channel.ChannelHandler; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelState; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ChannelUpstreamHandler; +import org.jboss.netty.channel.ChannelHandler.Sharable; import org.jboss.netty.util.ExternalResourceReleasable; import org.jboss.netty.util.internal.ExecutorUtil; @@ -106,7 +106,7 @@ import org.jboss.netty.util.internal.ExecutorUtil; * @apiviz.landmark * @apiviz.has java.util.concurrent.ThreadPoolExecutor */ -@ChannelPipelineCoverage("all") +@Sharable public class ExecutionHandler implements ChannelUpstreamHandler, ChannelDownstreamHandler, ExternalResourceReleasable { private final Executor executor; diff --git a/src/main/java/org/jboss/netty/handler/logging/LoggingHandler.java b/src/main/java/org/jboss/netty/handler/logging/LoggingHandler.java index f15274042e..d6050d1970 100644 --- a/src/main/java/org/jboss/netty/handler/logging/LoggingHandler.java +++ b/src/main/java/org/jboss/netty/handler/logging/LoggingHandler.java @@ -22,10 +22,10 @@ import org.jboss.netty.channel.ChannelDownstreamHandler; import org.jboss.netty.channel.ChannelEvent; import org.jboss.netty.channel.ChannelHandler; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelUpstreamHandler; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; +import org.jboss.netty.channel.ChannelHandler.Sharable; import org.jboss.netty.logging.InternalLogLevel; import org.jboss.netty.logging.InternalLogger; import org.jboss.netty.logging.InternalLoggerFactory; @@ -42,7 +42,7 @@ import org.jboss.netty.logging.InternalLoggerFactory; * * @apiviz.landmark */ -@ChannelPipelineCoverage("all") +@Sharable public class LoggingHandler implements ChannelUpstreamHandler, ChannelDownstreamHandler { private static final InternalLogLevel DEFAULT_LEVEL = InternalLogLevel.DEBUG; diff --git a/src/main/java/org/jboss/netty/handler/queue/BlockingReadHandler.java b/src/main/java/org/jboss/netty/handler/queue/BlockingReadHandler.java index 2f1847f2c2..fa8eeb9928 100644 --- a/src/main/java/org/jboss/netty/handler/queue/BlockingReadHandler.java +++ b/src/main/java/org/jboss/netty/handler/queue/BlockingReadHandler.java @@ -23,7 +23,6 @@ import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelEvent; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelPipeline; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; @@ -75,7 +74,6 @@ import org.jboss.netty.util.internal.LinkedTransferQueue; * @author Trustin Lee * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("one") public class BlockingReadHandler extends SimpleChannelUpstreamHandler { private final BlockingQueue queue; diff --git a/src/main/java/org/jboss/netty/handler/queue/BufferedWriteHandler.java b/src/main/java/org/jboss/netty/handler/queue/BufferedWriteHandler.java index ab108586f6..4048a03f9d 100644 --- a/src/main/java/org/jboss/netty/handler/queue/BufferedWriteHandler.java +++ b/src/main/java/org/jboss/netty/handler/queue/BufferedWriteHandler.java @@ -20,7 +20,6 @@ import java.util.concurrent.BlockingQueue; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.SimpleChannelDownstreamHandler; @@ -88,7 +87,6 @@ import org.jboss.netty.util.internal.LinkedTransferQueue; * @author Trustin Lee * @version $Rev$, $Date$ */ -@ChannelPipelineCoverage("one") public class BufferedWriteHandler extends SimpleChannelDownstreamHandler { private final Queue queue; diff --git a/src/main/java/org/jboss/netty/handler/stream/ChunkedWriteHandler.java b/src/main/java/org/jboss/netty/handler/stream/ChunkedWriteHandler.java index 373d598286..8c8adbc8f0 100644 --- a/src/main/java/org/jboss/netty/handler/stream/ChunkedWriteHandler.java +++ b/src/main/java/org/jboss/netty/handler/stream/ChunkedWriteHandler.java @@ -27,7 +27,6 @@ import org.jboss.netty.channel.ChannelFuture; import org.jboss.netty.channel.ChannelFutureListener; import org.jboss.netty.channel.ChannelHandler; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.ChannelUpstreamHandler; import org.jboss.netty.channel.Channels; @@ -66,7 +65,6 @@ import org.jboss.netty.util.internal.LinkedTransferQueue; * @apiviz.landmark * @apiviz.has org.jboss.netty.handler.stream.ChunkedInput oneway - - reads from */ -@ChannelPipelineCoverage("one") public class ChunkedWriteHandler implements ChannelUpstreamHandler, ChannelDownstreamHandler { private static final InternalLogger logger = diff --git a/src/main/java/org/jboss/netty/handler/timeout/IdleStateHandler.java b/src/main/java/org/jboss/netty/handler/timeout/IdleStateHandler.java index 3e4ced6ecf..5ffd6f34e8 100644 --- a/src/main/java/org/jboss/netty/handler/timeout/IdleStateHandler.java +++ b/src/main/java/org/jboss/netty/handler/timeout/IdleStateHandler.java @@ -21,7 +21,6 @@ import java.util.concurrent.TimeUnit; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.LifeCycleAwareChannelHandler; import org.jboss.netty.channel.MessageEvent; @@ -65,10 +64,19 @@ import org.jboss.netty.util.TimerTask; *
  * // An example that sends a ping message when there is no traffic
  * // (either inbound or outbound) for 30 seconds.
- * ChannelPipeline p = ...;
- * Timer timer = new HashedWheelTimer();
- * p.addLast("timeout", new IdleStateHandler(timer, 30, 30, 0));
- * p.addLast("handler", new MyHandler());
+ *
+ * public class MyPipelineFactory implements ChannelPipelineFactory {
+ *
+ *     public MyPipelineFactory(Timer timer) {
+ *         this.timer = timer;
+ *     }
+ *
+ *     public ChannelPipeline getPipeline() {
+ *         return Channels.pipeline(
+ *             new IdleStateHandler(timer, 30, 30, 0),
+ *             new MyHandler());
+ *     }
+ * }
  *
  * // Handler should handle the IdleStateEvent triggered by IdleStateHandler.
  * public class MyHandler extends IdleStateAwareChannelHandler {
@@ -77,6 +85,11 @@ import org.jboss.netty.util.TimerTask;
  *     }
  * }
  *
+ * ServerBootstrap bootstrap = ...;
+ * Timer timer = new HashedWheelTimer();
+ * ...
+ * bootstrap.setPipelineFactory(new MyPipelineFactory(timer));
+ * ...
  * // To shut down, call {@link #releaseExternalResources()} or {@link Timer#stop()}.
  * 
* @@ -91,7 +104,6 @@ import org.jboss.netty.util.TimerTask; * @apiviz.uses org.jboss.netty.util.HashedWheelTimer * @apiviz.has org.jboss.netty.handler.timeout.IdleStateEvent oneway - - triggers */ -@ChannelPipelineCoverage("one") public class IdleStateHandler extends SimpleChannelUpstreamHandler implements LifeCycleAwareChannelHandler, ExternalResourceReleasable { diff --git a/src/main/java/org/jboss/netty/handler/timeout/ReadTimeoutHandler.java b/src/main/java/org/jboss/netty/handler/timeout/ReadTimeoutHandler.java index c127109793..5997bd3ecf 100644 --- a/src/main/java/org/jboss/netty/handler/timeout/ReadTimeoutHandler.java +++ b/src/main/java/org/jboss/netty/handler/timeout/ReadTimeoutHandler.java @@ -20,7 +20,6 @@ import static org.jboss.netty.channel.Channels.*; import java.util.concurrent.TimeUnit; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.Channels; import org.jboss.netty.channel.LifeCycleAwareChannelHandler; @@ -37,14 +36,26 @@ import org.jboss.netty.util.TimerTask; * period of time. * *
- * // An example configuration that implements 30-second read timeout:
- * ChannelPipeline p = ...;
- * Timer timer = new HashedWheelTimer();
- * p.addLast("timeout", new ReadTimeoutHandler(timer, 30));
- * p.addLast("handler", new MyHandler());
+ * public class MyPipelineFactory implements ChannelPipelineFactory {
  *
+ *     public MyPipelineFactory(Timer timer) {
+ *         this.timer = timer;
+ *     }
+ *
+ *     public ChannelPipeline getPipeline() {
+ *         // An example configuration that implements 30-second read timeout:
+ *         return Channels.pipeline(
+ *             new ReadTimeoutHandler(timer, 30),
+ *             new MyHandler());
+ *     }
+ * }
+ *
+ * ServerBootstrap bootstrap = ...;
+ * Timer timer = new HashedWheelTimer();
+ * ...
+ * bootstrap.setPipelineFactory(new MyPipelineFactory(timer));
+ * ...
  * // To shut down, call {@link #releaseExternalResources()} or {@link Timer#stop()}.
- * 
* * @author The Netty Project * @author Trustin Lee @@ -57,7 +68,6 @@ import org.jboss.netty.util.TimerTask; * @apiviz.uses org.jboss.netty.util.HashedWheelTimer * @apiviz.has org.jboss.netty.handler.timeout.TimeoutException oneway - - raises */ -@ChannelPipelineCoverage("one") public class ReadTimeoutHandler extends SimpleChannelUpstreamHandler implements LifeCycleAwareChannelHandler, ExternalResourceReleasable { diff --git a/src/main/java/org/jboss/netty/handler/timeout/WriteTimeoutHandler.java b/src/main/java/org/jboss/netty/handler/timeout/WriteTimeoutHandler.java index 91fac2fb50..79ea7d7775 100644 --- a/src/main/java/org/jboss/netty/handler/timeout/WriteTimeoutHandler.java +++ b/src/main/java/org/jboss/netty/handler/timeout/WriteTimeoutHandler.java @@ -22,10 +22,10 @@ import java.util.concurrent.TimeUnit; import org.jboss.netty.channel.ChannelFuture; import org.jboss.netty.channel.ChannelFutureListener; import org.jboss.netty.channel.ChannelHandlerContext; -import org.jboss.netty.channel.ChannelPipelineCoverage; import org.jboss.netty.channel.Channels; import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.SimpleChannelDownstreamHandler; +import org.jboss.netty.channel.ChannelHandler.Sharable; import org.jboss.netty.util.ExternalResourceReleasable; import org.jboss.netty.util.HashedWheelTimer; import org.jboss.netty.util.Timeout; @@ -37,12 +37,25 @@ import org.jboss.netty.util.TimerTask; * certain period of time. * *
- * // An example configuration that implements 30-second write timeout:
- * ChannelPipeline p = ...;
- * Timer timer = new HashedWheelTimer();
- * p.addLast("timeout", new WriteTimeoutHandler(timer, 30));
- * p.addLast("handler", new MyHandler());
+ * public class MyPipelineFactory implements ChannelPipelineFactory {
  *
+ *     public MyPipelineFactory(Timer timer) {
+ *         this.timer = timer;
+ *     }
+ *
+ *     public ChannelPipeline getPipeline() {
+ *         // An example configuration that implements 30-second write timeout:
+ *         return Channels.pipeline(
+ *             new WriteTimeoutHandler(timer, 30),
+ *             new MyHandler());
+ *     }
+ * }
+ *
+ * ServerBootstrap bootstrap = ...;
+ * Timer timer = new HashedWheelTimer();
+ * ...
+ * bootstrap.setPipelineFactory(new MyPipelineFactory(timer));
+ * ...
  * // To shut down, call {@link #releaseExternalResources()} or {@link Timer#stop()}.
  * 
* @@ -57,7 +70,7 @@ import org.jboss.netty.util.TimerTask; * @apiviz.uses org.jboss.netty.util.HashedWheelTimer * @apiviz.has org.jboss.netty.handler.timeout.TimeoutException oneway - - raises */ -@ChannelPipelineCoverage("all") +@Sharable public class WriteTimeoutHandler extends SimpleChannelDownstreamHandler implements ExternalResourceReleasable {