diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2DataFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2DataFrame.java
index 742f3f187d7..0e77e5304fc 100644
--- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2DataFrame.java
+++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2DataFrame.java
@@ -87,6 +87,11 @@ public DefaultHttp2DataFrame stream(Http2FrameStream stream) {
return this;
}
+ @Override
+ public byte frameType() {
+ return Http2FrameTypes.DATA;
+ }
+
@Override
public String name() {
return "DATA";
diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2GoAwayFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2GoAwayFrame.java
index 8940d06fb60..aa9b1c2c2cd 100644
--- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2GoAwayFrame.java
+++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2GoAwayFrame.java
@@ -83,6 +83,11 @@ public DefaultHttp2GoAwayFrame(long errorCode, ByteBuf content) {
this.lastStreamId = lastStreamId;
}
+ @Override
+ public byte frameType() {
+ return Http2FrameTypes.GO_AWAY;
+ }
+
@Override
public String name() {
return "GOAWAY";
diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2HeadersFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2HeadersFrame.java
index c06d8ad959a..ff52e8fc794 100644
--- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2HeadersFrame.java
+++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2HeadersFrame.java
@@ -69,6 +69,11 @@ public DefaultHttp2HeadersFrame stream(Http2FrameStream stream) {
return this;
}
+ @Override
+ public byte frameType() {
+ return Http2FrameTypes.HEADERS;
+ }
+
@Override
public String name() {
return "HEADERS";
diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PingFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PingFrame.java
index f102bd1da30..70633754bd5 100644
--- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PingFrame.java
+++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PingFrame.java
@@ -42,6 +42,11 @@ public boolean ack() {
return ack;
}
+ @Override
+ public byte frameType() {
+ return Http2FrameTypes.PING;
+ }
+
@Override
public String name() {
return "PING";
diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PriorityFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PriorityFrame.java
index 5e073d56af6..6622d069d2d 100644
--- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PriorityFrame.java
+++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PriorityFrame.java
@@ -54,6 +54,11 @@ public DefaultHttp2PriorityFrame stream(Http2FrameStream stream) {
return this;
}
+ @Override
+ public byte frameType() {
+ return Http2FrameTypes.PRIORITY;
+ }
+
@Override
public String name() {
return "PRIORITY_FRAME";
diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PushPromiseFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PushPromiseFrame.java
index f9fd9871093..8911119e540 100644
--- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PushPromiseFrame.java
+++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2PushPromiseFrame.java
@@ -84,6 +84,11 @@ public Http2FrameStream stream() {
return streamFrame;
}
+ @Override
+ public byte frameType() {
+ return Http2FrameTypes.PUSH_PROMISE;
+ }
+
@Override
public String name() {
return "PUSH_PROMISE_FRAME";
diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2ResetFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2ResetFrame.java
index ddc1b22bb59..a2af71e759b 100644
--- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2ResetFrame.java
+++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2ResetFrame.java
@@ -52,6 +52,11 @@ public DefaultHttp2ResetFrame stream(Http2FrameStream stream) {
return this;
}
+ @Override
+ public byte frameType() {
+ return Http2FrameTypes.RST_STREAM;
+ }
+
@Override
public String name() {
return "RST_STREAM";
diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2SettingsAckFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2SettingsAckFrame.java
index ea1c9ba9002..def1a3db771 100644
--- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2SettingsAckFrame.java
+++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2SettingsAckFrame.java
@@ -21,6 +21,12 @@
* The default {@link Http2SettingsAckFrame} implementation.
*/
final class DefaultHttp2SettingsAckFrame implements Http2SettingsAckFrame {
+
+ @Override
+ public byte frameType() {
+ return Http2FrameTypes.SETTINGS;
+ }
+
@Override
public String name() {
return "SETTINGS(ACK)";
diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2SettingsFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2SettingsFrame.java
index 565c28edae7..4487f3d2ab6 100644
--- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2SettingsFrame.java
+++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2SettingsFrame.java
@@ -37,6 +37,11 @@ public Http2Settings settings() {
return settings;
}
+ @Override
+ public byte frameType() {
+ return Http2FrameTypes.SETTINGS;
+ }
+
@Override
public String name() {
return "SETTINGS";
diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2WindowUpdateFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2WindowUpdateFrame.java
index 1c98dd471c1..ed7ad713e7b 100644
--- a/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2WindowUpdateFrame.java
+++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/DefaultHttp2WindowUpdateFrame.java
@@ -36,6 +36,11 @@ public DefaultHttp2WindowUpdateFrame stream(Http2FrameStream stream) {
return this;
}
+ @Override
+ public byte frameType() {
+ return Http2FrameTypes.WINDOW_UPDATE;
+ }
+
@Override
public String name() {
return "WINDOW_UPDATE";
diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2Frame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2Frame.java
index 799edaf7b78..57ae80cfdca 100644
--- a/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2Frame.java
+++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2Frame.java
@@ -21,6 +21,11 @@
@UnstableApi
public interface Http2Frame {
+ /**
+ * Returns the type of the HTTP/2 frame e.g. DATA, GOAWAY, etc.
+ */
+ byte frameType();
+
/**
* Returns the name of the HTTP/2 frame e.g. DATA, GOAWAY, etc.
*/
diff --git a/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2UnknownFrame.java b/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2UnknownFrame.java
index 9ce1ecdd631..9f79b526011 100644
--- a/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2UnknownFrame.java
+++ b/codec-http2/src/main/java/io/netty/handler/codec/http2/Http2UnknownFrame.java
@@ -28,6 +28,7 @@ public interface Http2UnknownFrame extends Http2StreamFrame, ByteBufHolder {
@Override
Http2UnknownFrame stream(Http2FrameStream stream);
+ @Override
byte frameType();
Http2Flags flags();
diff --git a/codec-http2/src/test/java/io/netty/handler/codec/http2/Http2FrameCodecTest.java b/codec-http2/src/test/java/io/netty/handler/codec/http2/Http2FrameCodecTest.java
index 619b1d9903b..2e88b5f3316 100644
--- a/codec-http2/src/test/java/io/netty/handler/codec/http2/Http2FrameCodecTest.java
+++ b/codec-http2/src/test/java/io/netty/handler/codec/http2/Http2FrameCodecTest.java
@@ -352,6 +352,11 @@ public void receiveGoaway() throws Exception {
@Test
public void unknownFrameTypeShouldThrowAndBeReleased() throws Exception {
class UnknownHttp2Frame extends AbstractReferenceCounted implements Http2Frame {
+ @Override
+ public byte frameType() {
+ return 0xA;
+ }
+
@Override
public String name() {
return "UNKNOWN";
diff --git a/pom.xml b/pom.xml
index c4f2279349c..e621d1d9d24 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1359,6 +1359,12 @@
method io.netty.handler.codec.http2.Http2ConnectionHandlerBuilder io.netty.handler.codec.http2.Http2ConnectionHandlerBuilder::decoderEnforceMaxRstFramesPerWindow(int, int)
Acceptable incompatibility for required change, because the method was not previously exposed; protected visiblity in super-class, not made public in final sub-class until now
+ -
+ true
+
java.method.addedToInterface
+ method byte io.netty.handler.codec.http2.Http2Frame::frameType()
+ Acceptable incompatibility for required change
+