From c4f44ff779d8809ba07d12674ba80b6e11c73737 Mon Sep 17 00:00:00 2001 From: liyixin <601947961@qq.com> Date: Fri, 27 Sep 2019 18:10:37 +0800 Subject: [PATCH 1/4] resolve the errorprone warning. --- src/main/java/reactor/netty/ReactorNetty.java | 2 +- .../java/reactor/netty/channel/BootstrapHandlers.java | 1 + .../netty/channel/ChannelOperationsHandler.java | 2 +- src/main/java/reactor/netty/channel/MonoSendMany.java | 7 +++++++ src/main/java/reactor/netty/http/HttpOperations.java | 1 + .../reactor/netty/http/client/HttpClientConnect.java | 3 ++- .../netty/http/client/HttpClientOperations.java | 2 +- .../java/reactor/netty/http/server/ConnectionInfo.java | 10 +++++----- .../netty/http/server/HttpServerMetricsHandler.java | 2 +- .../netty/resources/PooledConnectionProvider.java | 1 + src/main/java/reactor/netty/tcp/TcpServerBind.java | 1 + 11 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/main/java/reactor/netty/ReactorNetty.java b/src/main/java/reactor/netty/ReactorNetty.java index 1ebc691078..95bae62348 100644 --- a/src/main/java/reactor/netty/ReactorNetty.java +++ b/src/main/java/reactor/netty/ReactorNetty.java @@ -794,6 +794,6 @@ public synchronized Throwable fillInStackTrace() { static final ByteBuf BOUNDARY = Unpooled.EMPTY_BUFFER; - public static final Predicate PREDICATE_GROUP_FLUSH = b -> b == BOUNDARY; + public static final Predicate PREDICATE_GROUP_FLUSH = BOUNDARY::equals; } diff --git a/src/main/java/reactor/netty/channel/BootstrapHandlers.java b/src/main/java/reactor/netty/channel/BootstrapHandlers.java index 19f3c07b3c..4a55f7a6cb 100644 --- a/src/main/java/reactor/netty/channel/BootstrapHandlers.java +++ b/src/main/java/reactor/netty/channel/BootstrapHandlers.java @@ -614,6 +614,7 @@ public void handlerRemoved(ChannelHandlerContext ctx) { "BootstrapHandlers.finalizeHandler() call"); } + @SuppressWarnings("deprecation") @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { throw Exceptions.propagate(cause); diff --git a/src/main/java/reactor/netty/channel/ChannelOperationsHandler.java b/src/main/java/reactor/netty/channel/ChannelOperationsHandler.java index 597d0300d5..404d1cfcfa 100755 --- a/src/main/java/reactor/netty/channel/ChannelOperationsHandler.java +++ b/src/main/java/reactor/netty/channel/ChannelOperationsHandler.java @@ -100,7 +100,7 @@ final public void channelRead(ChannelHandlerContext ctx, Object msg) { } } String loggingMsg; - if (msg instanceof ByteBufHolder && ((ByteBufHolder)msg).content() != Unpooled.EMPTY_BUFFER) { + if (msg instanceof ByteBufHolder && !Unpooled.EMPTY_BUFFER.equals(((ByteBufHolder) msg).content())) { ByteBuf buffer = ((ByteBufHolder) msg).content(); loggingMsg = "\n"+ByteBufUtil.prettyHexDump(buffer); } diff --git a/src/main/java/reactor/netty/channel/MonoSendMany.java b/src/main/java/reactor/netty/channel/MonoSendMany.java index bc7b8c37d3..c7f6d7442b 100644 --- a/src/main/java/reactor/netty/channel/MonoSendMany.java +++ b/src/main/java/reactor/netty/channel/MonoSendMany.java @@ -83,6 +83,7 @@ public void subscribe(CoreSubscriber destination) { @Override @Nullable + @SuppressWarnings("rawtypes") public Object scanUnsafe(Attr key) { if (key == Attr.PREFETCH) return MAX_SIZE; if (key == Attr.PARENT) return source; @@ -388,6 +389,7 @@ void trySchedule(@Nullable Object data) { } @Override + @SuppressWarnings("rawtypes") public Object scanUnsafe(Attr key) { if (key == Attr.PARENT) return s; if (key == Attr.ACTUAL) return actual; @@ -437,6 +439,7 @@ public ChannelPromise addListener(GenericFutureListener>... listeners) { throw new UnsupportedOperationException(); @@ -447,6 +450,7 @@ public ChannelPromise removeListener(GenericFutureListener>... listeners) { return this; @@ -605,12 +609,15 @@ public Void get() { } @Override + @SuppressWarnings("rawtypes") public Void get(long timeout, TimeUnit unit) { throw new UnsupportedOperationException(); } + @SuppressWarnings("rawtypes") static final AtomicIntegerFieldUpdater WIP = AtomicIntegerFieldUpdater.newUpdater(SendManyInner.class, "wip"); + @SuppressWarnings("rawtypes") static final AtomicReferenceFieldUpdater SUBSCRIPTION = AtomicReferenceFieldUpdater.newUpdater(SendManyInner.class, Subscription.class, "s"); diff --git a/src/main/java/reactor/netty/http/HttpOperations.java b/src/main/java/reactor/netty/http/HttpOperations.java index f95960c443..87314f98a3 100644 --- a/src/main/java/reactor/netty/http/HttpOperations.java +++ b/src/main/java/reactor/netty/http/HttpOperations.java @@ -267,6 +267,7 @@ protected final boolean markSentHeaderAndBody() { */ protected abstract HttpMessage outboundHttpMessage(); + @SuppressWarnings("rawtypes") final static AtomicIntegerFieldUpdater HTTP_STATE = AtomicIntegerFieldUpdater.newUpdater(HttpOperations.class, "statusAndHeadersSent"); diff --git a/src/main/java/reactor/netty/http/client/HttpClientConnect.java b/src/main/java/reactor/netty/http/client/HttpClientConnect.java index e6a9901b0b..f9154ea8dd 100644 --- a/src/main/java/reactor/netty/http/client/HttpClientConnect.java +++ b/src/main/java/reactor/netty/http/client/HttpClientConnect.java @@ -624,7 +624,7 @@ void redirect(String to) { this.redirectedFrom = addToRedirectedFromArray(redirectedFrom, from); } - @SuppressWarnings("unchecked") + @SuppressWarnings({"unchecked","rawtypes"}) static Supplier[] addToRedirectedFromArray(@Nullable Supplier[] redirectedFrom, UriEndpoint from) { Supplier fromUrlSupplier = from::toExternalForm; @@ -955,6 +955,7 @@ else if (channelMetricsRecorder instanceof HttpClientMetricsRecorder) { } + @SuppressWarnings("rawtypes") static void openStream(Channel ch, ConnectionObserver listener, HttpClientInitializer initializer) { Http2StreamChannelBootstrap http2StreamChannelBootstrap = diff --git a/src/main/java/reactor/netty/http/client/HttpClientOperations.java b/src/main/java/reactor/netty/http/client/HttpClientOperations.java index 8dd2661dac..44a7ca4672 100644 --- a/src/main/java/reactor/netty/http/client/HttpClientOperations.java +++ b/src/main/java/reactor/netty/http/client/HttpClientOperations.java @@ -769,7 +769,7 @@ void _subscribe(CoreSubscriber s) { } static final int MAX_REDIRECTS = 50; - @SuppressWarnings("unchecked") + @SuppressWarnings({"unchecked","rawtypes"}) static final Supplier[] EMPTY_REDIRECTIONS = (Supplier[])new Supplier[0]; static final Logger log = Loggers.getLogger(HttpClientOperations.class); } diff --git a/src/main/java/reactor/netty/http/server/ConnectionInfo.java b/src/main/java/reactor/netty/http/server/ConnectionInfo.java index c1db0e7b88..eb0942d432 100644 --- a/src/main/java/reactor/netty/http/server/ConnectionInfo.java +++ b/src/main/java/reactor/netty/http/server/ConnectionInfo.java @@ -102,7 +102,7 @@ static ConnectionInfo parseForwardedInfo(HttpRequest request, SocketChannel chan InetSocketAddress hostAddress = channel.localAddress(); String scheme = secured ? "https" : "http"; - String forwarded = request.headers().get(FORWARDED_HEADER).split(",")[0]; + String forwarded = request.headers().get(FORWARDED_HEADER).split(",",2)[0]; Matcher hostMatcher = FORWARDED_HOST_PATTERN.matcher(forwarded); if (hostMatcher.find()) { hostAddress = parseAddress(hostMatcher.group(1), hostAddress.getPort()); @@ -141,18 +141,18 @@ static ConnectionInfo parseXForwardedInfo(HttpRequest request, SocketChannel cha InetSocketAddress hostAddress = channel.localAddress(); String scheme = secured ? "https" : "http"; if (request.headers().contains(XFORWARDED_IP_HEADER)) { - String remoteIpValue = request.headers().get(XFORWARDED_IP_HEADER).split(",")[0]; + String remoteIpValue = request.headers().get(XFORWARDED_IP_HEADER).split(",",2)[0]; remoteAddress = parseAddress(remoteIpValue, remoteAddress.getPort()); } if(request.headers().contains(XFORWARDED_HOST_HEADER)) { if(request.headers().contains(XFORWARDED_PORT_HEADER)) { hostAddress = InetSocketAddressUtil.createUnresolved( - request.headers().get(XFORWARDED_HOST_HEADER).split(",")[0].trim(), - Integer.parseInt(request.headers().get(XFORWARDED_PORT_HEADER).split(",")[0].trim())); + request.headers().get(XFORWARDED_HOST_HEADER).split(",",2)[0].trim(), + Integer.parseInt(request.headers().get(XFORWARDED_PORT_HEADER).split(",",2)[0].trim())); } else { hostAddress = InetSocketAddressUtil.createUnresolved( - request.headers().get(XFORWARDED_HOST_HEADER).split(",")[0].trim(), + request.headers().get(XFORWARDED_HOST_HEADER).split(",",2)[0].trim(), channel.localAddress().getPort()); } } diff --git a/src/main/java/reactor/netty/http/server/HttpServerMetricsHandler.java b/src/main/java/reactor/netty/http/server/HttpServerMetricsHandler.java index e8b422c52a..585f6c74f4 100644 --- a/src/main/java/reactor/netty/http/server/HttpServerMetricsHandler.java +++ b/src/main/java/reactor/netty/http/server/HttpServerMetricsHandler.java @@ -73,7 +73,7 @@ else if (msg instanceof ByteBuf) { if (msg instanceof LastHttpContent) { promise.addListener(future -> { - ChannelOperations channelOps = ChannelOperations.get(ctx.channel()); + ChannelOperations channelOps = ChannelOperations.get(ctx.channel()); if (channelOps instanceof HttpServerOperations) { HttpServerOperations ops = (HttpServerOperations) channelOps; recorder.recordDataSentTime( diff --git a/src/main/java/reactor/netty/resources/PooledConnectionProvider.java b/src/main/java/reactor/netty/resources/PooledConnectionProvider.java index 38351a1c6e..719a597edd 100644 --- a/src/main/java/reactor/netty/resources/PooledConnectionProvider.java +++ b/src/main/java/reactor/netty/resources/PooledConnectionProvider.java @@ -290,6 +290,7 @@ public void handlerAdded(ChannelHandlerContext ctx) { public void handlerRemoved(ChannelHandlerContext ctx) { } + @SuppressWarnings("deprecation") @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { ctx.pipeline().remove(this); diff --git a/src/main/java/reactor/netty/tcp/TcpServerBind.java b/src/main/java/reactor/netty/tcp/TcpServerBind.java index a2c7fa4f15..9a3c66c109 100644 --- a/src/main/java/reactor/netty/tcp/TcpServerBind.java +++ b/src/main/java/reactor/netty/tcp/TcpServerBind.java @@ -200,6 +200,7 @@ final static class ChildObserver implements ConnectionObserver { this.childObs = childObs; } + @SuppressWarnings("rawtypes") @Override public void onUncaughtException(Connection connection, Throwable error) { ChannelOperations ops = ChannelOperations.get(connection.channel()); From 89a258e187b6dde3526818cd2210cd070eb74bf8 Mon Sep 17 00:00:00 2001 From: Liyixin <601947961@qq.com> Date: Sat, 28 Sep 2019 12:30:04 +0800 Subject: [PATCH 2/4] modify some requested change --- src/main/java/reactor/netty/ReactorNetty.java | 2 +- src/main/java/reactor/netty/channel/MonoSendMany.java | 1 - src/main/java/reactor/netty/tcp/TcpServerBind.java | 3 +-- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/reactor/netty/ReactorNetty.java b/src/main/java/reactor/netty/ReactorNetty.java index 95bae62348..1ebc691078 100644 --- a/src/main/java/reactor/netty/ReactorNetty.java +++ b/src/main/java/reactor/netty/ReactorNetty.java @@ -794,6 +794,6 @@ public synchronized Throwable fillInStackTrace() { static final ByteBuf BOUNDARY = Unpooled.EMPTY_BUFFER; - public static final Predicate PREDICATE_GROUP_FLUSH = BOUNDARY::equals; + public static final Predicate PREDICATE_GROUP_FLUSH = b -> b == BOUNDARY; } diff --git a/src/main/java/reactor/netty/channel/MonoSendMany.java b/src/main/java/reactor/netty/channel/MonoSendMany.java index c7f6d7442b..99061a3a39 100644 --- a/src/main/java/reactor/netty/channel/MonoSendMany.java +++ b/src/main/java/reactor/netty/channel/MonoSendMany.java @@ -609,7 +609,6 @@ public Void get() { } @Override - @SuppressWarnings("rawtypes") public Void get(long timeout, TimeUnit unit) { throw new UnsupportedOperationException(); } diff --git a/src/main/java/reactor/netty/tcp/TcpServerBind.java b/src/main/java/reactor/netty/tcp/TcpServerBind.java index 9a3c66c109..52240971d2 100644 --- a/src/main/java/reactor/netty/tcp/TcpServerBind.java +++ b/src/main/java/reactor/netty/tcp/TcpServerBind.java @@ -200,10 +200,9 @@ final static class ChildObserver implements ConnectionObserver { this.childObs = childObs; } - @SuppressWarnings("rawtypes") @Override public void onUncaughtException(Connection connection, Throwable error) { - ChannelOperations ops = ChannelOperations.get(connection.channel()); + ChannelOperations ops = ChannelOperations.get(connection.channel()); if (ops == null && (error instanceof IOException || AbortedException.isConnectionReset(error))) { if (log.isDebugEnabled()) { log.debug(format(connection.channel(), "onUncaughtException(" + connection + ")"), error); From 8c09fa18ac579a2921605306bcd53555138eac46 Mon Sep 17 00:00:00 2001 From: Liyixin <601947961@qq.com> Date: Sat, 28 Sep 2019 14:01:12 +0800 Subject: [PATCH 3/4] suppress the reference equality warning. --- src/main/java/reactor/netty/ReactorNetty.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/reactor/netty/ReactorNetty.java b/src/main/java/reactor/netty/ReactorNetty.java index 1ebc691078..ce3816e9d7 100644 --- a/src/main/java/reactor/netty/ReactorNetty.java +++ b/src/main/java/reactor/netty/ReactorNetty.java @@ -794,6 +794,8 @@ public synchronized Throwable fillInStackTrace() { static final ByteBuf BOUNDARY = Unpooled.EMPTY_BUFFER; + @SuppressWarnings("ReferenceEquality") + //Desigin to use reference comparison here public static final Predicate PREDICATE_GROUP_FLUSH = b -> b == BOUNDARY; } From c05f681d9d1bdd291ccf6be8029939558083e81a Mon Sep 17 00:00:00 2001 From: Liyixin <601947961@qq.com> Date: Sat, 28 Sep 2019 19:55:54 +0800 Subject: [PATCH 4/4] use Objects.equals instead of ByteBuf.equals --- .../java/reactor/netty/channel/ChannelOperationsHandler.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/reactor/netty/channel/ChannelOperationsHandler.java b/src/main/java/reactor/netty/channel/ChannelOperationsHandler.java index 404d1cfcfa..90bcaa4003 100755 --- a/src/main/java/reactor/netty/channel/ChannelOperationsHandler.java +++ b/src/main/java/reactor/netty/channel/ChannelOperationsHandler.java @@ -32,6 +32,8 @@ import reactor.util.Logger; import reactor.util.Loggers; +import java.util.Objects; + import static reactor.netty.ReactorNetty.format; /** @@ -100,7 +102,7 @@ final public void channelRead(ChannelHandlerContext ctx, Object msg) { } } String loggingMsg; - if (msg instanceof ByteBufHolder && !Unpooled.EMPTY_BUFFER.equals(((ByteBufHolder) msg).content())) { + if (msg instanceof ByteBufHolder && !Objects.equals(Unpooled.EMPTY_BUFFER,((ByteBufHolder) msg).content())) { ByteBuf buffer = ((ByteBufHolder) msg).content(); loggingMsg = "\n"+ByteBufUtil.prettyHexDump(buffer); }