From 3efaccd81ff47a46400badcd51a8abf39c9262f8 Mon Sep 17 00:00:00 2001 From: Carl Mastrangelo Date: Thu, 27 Jul 2017 12:17:27 -0700 Subject: [PATCH] netty: support `status()` on Headers * netty: support `status()` on Headers Recent Netty change https://github.com/netty/netty/commit/a91df58ca17d5b30c57c46dde5b1d60bb659b029 caused the `status()` method to be invoked, which AbstractHttp2Headers does not implement. This change is necesary to upgrade to Netty 4.1.14 --- .../main/java/io/grpc/netty/GrpcHttp2HeadersUtils.java | 5 +++++ .../java/io/grpc/netty/GrpcHttp2OutboundHeaders.java | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/netty/src/main/java/io/grpc/netty/GrpcHttp2HeadersUtils.java b/netty/src/main/java/io/grpc/netty/GrpcHttp2HeadersUtils.java index 4be5dbdb71..405f1e59fe 100644 --- a/netty/src/main/java/io/grpc/netty/GrpcHttp2HeadersUtils.java +++ b/netty/src/main/java/io/grpc/netty/GrpcHttp2HeadersUtils.java @@ -124,6 +124,11 @@ class GrpcHttp2HeadersUtils { return null; } + @Override + public CharSequence status() { + return get(Http2Headers.PseudoHeaderName.STATUS.value()); + } + @Override public List getAll(CharSequence csName) { AsciiString name = requireAsciiString(csName); diff --git a/netty/src/main/java/io/grpc/netty/GrpcHttp2OutboundHeaders.java b/netty/src/main/java/io/grpc/netty/GrpcHttp2OutboundHeaders.java index 25c833d025..affa6fb1d8 100644 --- a/netty/src/main/java/io/grpc/netty/GrpcHttp2OutboundHeaders.java +++ b/netty/src/main/java/io/grpc/netty/GrpcHttp2OutboundHeaders.java @@ -66,6 +66,16 @@ final class GrpcHttp2OutboundHeaders extends AbstractHttp2Headers { this.preHeaders = preHeaders; } + @Override + @SuppressWarnings("ReferenceEquality") // STATUS.value() never changes. + public CharSequence status() { + // preHeaders is never null. It has status as the first element or not at all. + if (preHeaders.length >= 2 && preHeaders[0] == Http2Headers.PseudoHeaderName.STATUS.value()) { + return preHeaders[1]; + } + return null; + } + @Override public Iterator> iterator() { return new Itr();