From 6680d548689dafdd2e3d2cc955a11bdd1d952f61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=CC=88rg=20Prante?= Date: Fri, 23 Apr 2021 22:29:14 +0200 Subject: [PATCH] fix module deps, simpler server API without exposing netty classes --- gradle.properties | 2 +- gradle/compile/java.gradle | 2 +- .../src/main/java/module-info.java | 4 +- .../src/main/java/module-info.java | 3 + .../netty/http/server/api/ServerRequest.java | 5 ++ .../netty/http/server/api/ServerResponse.java | 3 +- .../src/main/java/module-info.java | 9 ++- .../netty/http/server/HttpServerDomain.java | 4 +- .../netty/http/server/HttpServerRequest.java | 10 ++++ .../org/xbib/netty/http/server/Server.java | 4 ++ .../endpoint/service/ResourceService.java | 56 +++++++++---------- .../server/protocol/http1/Http1Transport.java | 6 +- .../protocol/http1/HttpServerResponse.java | 10 ++-- .../protocol/http2/Http2ServerResponse.java | 10 ++-- .../server/protocol/http2/Http2Transport.java | 6 +- 15 files changed, 78 insertions(+), 56 deletions(-) diff --git a/gradle.properties b/gradle.properties index 75a8818..af5bbd9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ group = org.xbib name = netty-http -version = 4.1.63.0 +version = 4.1.63.1 gradle.wrapper.version = 6.6.1 netty.version = 4.1.63.Final diff --git a/gradle/compile/java.gradle b/gradle/compile/java.gradle index ec9f2e2..d6b52f8 100644 --- a/gradle/compile/java.gradle +++ b/gradle/compile/java.gradle @@ -38,7 +38,7 @@ artifacts { } tasks.withType(JavaCompile) { - options.compilerArgs << '-Xlint:all' + options.compilerArgs << '-Xlint:all,-exports' } javadoc { diff --git a/netty-http-client/src/main/java/module-info.java b/netty-http-client/src/main/java/module-info.java index ab734b8..7e025a8 100644 --- a/netty-http-client/src/main/java/module-info.java +++ b/netty-http-client/src/main/java/module-info.java @@ -11,8 +11,8 @@ module org.xbib.netty.http.client { exports org.xbib.netty.http.client.pool; exports org.xbib.netty.http.client.retry; exports org.xbib.netty.http.client.transport; - requires org.xbib.netty.http.client.api; - requires org.xbib.netty.http.common; + requires transitive org.xbib.netty.http.client.api; + requires transitive org.xbib.netty.http.common; requires org.xbib.net.url; requires io.netty.handler.proxy; requires java.logging; diff --git a/netty-http-server-api/src/main/java/module-info.java b/netty-http-server-api/src/main/java/module-info.java index 63c4052..f74d26d 100644 --- a/netty-http-server-api/src/main/java/module-info.java +++ b/netty-http-server-api/src/main/java/module-info.java @@ -5,5 +5,8 @@ module org.xbib.netty.http.server.api { requires org.xbib.netty.http.common; requires org.xbib.net.url; requires io.netty.buffer; + requires io.netty.handler; + requires io.netty.transport; requires io.netty.codec.http; + requires io.netty.codec.http2; } diff --git a/netty-http-server-api/src/main/java/org/xbib/netty/http/server/api/ServerRequest.java b/netty-http-server-api/src/main/java/org/xbib/netty/http/server/api/ServerRequest.java index 2b08959..54e89b5 100644 --- a/netty-http-server-api/src/main/java/org/xbib/netty/http/server/api/ServerRequest.java +++ b/netty-http-server-api/src/main/java/org/xbib/netty/http/server/api/ServerRequest.java @@ -8,6 +8,7 @@ import org.xbib.net.URL; import org.xbib.netty.http.common.HttpParameters; import javax.net.ssl.SSLSession; import java.net.InetSocketAddress; +import java.nio.charset.Charset; import java.util.List; import java.util.Map; @@ -31,6 +32,8 @@ public interface ServerRequest { HttpHeaders getHeaders(); + String getHeader(String name); + HttpParameters getParameters(); String getContextPath(); @@ -45,6 +48,8 @@ public interface ServerRequest { ByteBuf getContent(); + String getContent(Charset charset); + ByteBufInputStream getInputStream(); SSLSession getSession(); diff --git a/netty-http-server-api/src/main/java/org/xbib/netty/http/server/api/ServerResponse.java b/netty-http-server-api/src/main/java/org/xbib/netty/http/server/api/ServerResponse.java index fe32b1f..ce6c871 100644 --- a/netty-http-server-api/src/main/java/org/xbib/netty/http/server/api/ServerResponse.java +++ b/netty-http-server-api/src/main/java/org/xbib/netty/http/server/api/ServerResponse.java @@ -2,7 +2,6 @@ package org.xbib.netty.http.server.api; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufOutputStream; -import io.netty.handler.codec.http.HttpResponseStatus; import io.netty.handler.stream.ChunkedInput; import org.xbib.netty.http.common.cookie.Cookie; import java.io.Flushable; @@ -41,7 +40,7 @@ public interface ServerResponse extends Flushable { interface Builder { - Builder setStatus(HttpResponseStatus httpResponseStatus); + Builder setStatus(int statusCode); Builder setContentType(CharSequence contentType); diff --git a/netty-http-server/src/main/java/module-info.java b/netty-http-server/src/main/java/module-info.java index b9da18d..09f2f9a 100644 --- a/netty-http-server/src/main/java/module-info.java +++ b/netty-http-server/src/main/java/module-info.java @@ -13,10 +13,15 @@ module org.xbib.netty.http.server { exports org.xbib.netty.http.server.protocol.http1; exports org.xbib.netty.http.server.protocol.http2; exports org.xbib.netty.http.server.util; - requires org.xbib.netty.http.server.api; - requires org.xbib.netty.http.common; + requires transitive org.xbib.netty.http.server.api; + requires transitive org.xbib.netty.http.common; requires org.xbib.net.url; requires java.logging; + requires io.netty.buffer; + requires io.netty.common; + requires io.netty.handler; requires io.netty.transport; + requires io.netty.codec.http; + requires io.netty.codec.http2; provides org.xbib.netty.http.server.api.ServerProtocolProvider with Http1, Http2; } diff --git a/netty-http-server/src/main/java/org/xbib/netty/http/server/HttpServerDomain.java b/netty-http-server/src/main/java/org/xbib/netty/http/server/HttpServerDomain.java index ec3d829..e6d5dc8 100644 --- a/netty-http-server/src/main/java/org/xbib/netty/http/server/HttpServerDomain.java +++ b/netty-http-server/src/main/java/org/xbib/netty/http/server/HttpServerDomain.java @@ -168,7 +168,7 @@ public class HttpServerDomain implements Domain { } } else { if (serverResponseBuilder != null) { - serverResponseBuilder.setStatus(HttpResponseStatus.NOT_FOUND) + serverResponseBuilder.setStatus(HttpResponseStatus.NOT_FOUND.code()) .setContentType("text/plain;charset=utf-8") .build().write("no endpoint found to match request"); } @@ -178,7 +178,7 @@ public class HttpServerDomain implements Domain { @Override public void handleAfterError(ServerRequest.Builder serverRequestBuilder, ServerResponse.Builder serverResponseBuilder, Throwable throwable) { logger.log(Level.SEVERE, throwable.getMessage(), throwable); - serverResponseBuilder.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR) + serverResponseBuilder.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR.code()) .setContentType("text/plain;charset=utf-8") .build().write(ExceptionFormatter.format(throwable)); } diff --git a/netty-http-server/src/main/java/org/xbib/netty/http/server/HttpServerRequest.java b/netty-http-server/src/main/java/org/xbib/netty/http/server/HttpServerRequest.java index d0099a3..a790cd5 100644 --- a/netty-http-server/src/main/java/org/xbib/netty/http/server/HttpServerRequest.java +++ b/netty-http-server/src/main/java/org/xbib/netty/http/server/HttpServerRequest.java @@ -129,11 +129,21 @@ public class HttpServerRequest implements ServerRequest { return httpRequest.headers(); } + @Override + public String getHeader(String name) { + return httpRequest.headers().get(name); + } + @Override public ByteBuf getContent() { return httpRequest.content(); } + @Override + public String getContent(Charset charset) { + return httpRequest.content().toString(charset); + } + @Override public ByteBufInputStream getInputStream() { return new ByteBufInputStream(httpRequest.content(), true); diff --git a/netty-http-server/src/main/java/org/xbib/netty/http/server/Server.java b/netty-http-server/src/main/java/org/xbib/netty/http/server/Server.java index 0b50b2e..2068642 100644 --- a/netty-http-server/src/main/java/org/xbib/netty/http/server/Server.java +++ b/netty-http-server/src/main/java/org/xbib/netty/http/server/Server.java @@ -159,6 +159,10 @@ public final class Server implements AutoCloseable { serverConfig.getAddress(), domainNameMapping)); } + public void loop() throws IOException, InterruptedException { + accept().channel().closeFuture().sync(); + } + @Override public void close() { try { diff --git a/netty-http-server/src/main/java/org/xbib/netty/http/server/endpoint/service/ResourceService.java b/netty-http-server/src/main/java/org/xbib/netty/http/server/endpoint/service/ResourceService.java index e92a4e6..9b6b638 100644 --- a/netty-http-server/src/main/java/org/xbib/netty/http/server/endpoint/service/ResourceService.java +++ b/netty-http-server/src/main/java/org/xbib/netty/http/server/endpoint/service/ResourceService.java @@ -6,7 +6,6 @@ import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpResponseStatus; import io.netty.handler.stream.ChunkedNioStream; -import io.netty.util.AsciiString; import org.xbib.netty.http.common.util.DateTimeUtil; import org.xbib.netty.http.server.api.Filter; import org.xbib.netty.http.server.api.FilterConfig; @@ -41,9 +40,6 @@ public abstract class ResourceService implements Filter { private static final Logger logger = Logger.getLogger(ResourceService.class.getName()); - public void initialize(FilterConfig filterConfig) { - } - @Override public void handle(ServerRequest serverRequest, ServerResponse serverResponse) throws IOException { handleCachedResource(serverRequest, serverResponse, createResource(serverRequest, serverResponse)); @@ -68,7 +64,7 @@ public abstract class ResourceService implements Filter { // external redirect to serverResponse.getBuilder() .setHeader(HttpHeaderNames.LOCATION, resource.getResourcePath() + "/") - .setStatus( HttpResponseStatus.MOVED_PERMANENTLY) + .setStatus( HttpResponseStatus.MOVED_PERMANENTLY.code()) .build() .flush(); return; @@ -76,14 +72,14 @@ public abstract class ResourceService implements Filter { // external redirect to default index file in this directory serverResponse.getBuilder() .setHeader(HttpHeaderNames.LOCATION, resource.indexFileName()) - .setStatus( HttpResponseStatus.MOVED_PERMANENTLY) + .setStatus( HttpResponseStatus.MOVED_PERMANENTLY.code()) .build() .flush(); return; } else { // send forbidden, we do not allow directory access serverResponse.getBuilder() - .setStatus(HttpResponseStatus.FORBIDDEN) + .setStatus(HttpResponseStatus.FORBIDDEN.code()) .build().flush(); return; } @@ -95,7 +91,7 @@ public abstract class ResourceService implements Filter { } HttpHeaders headers = serverRequest.getHeaders(); String contentType = MimeTypeUtils.guessFromPath(resource.getResourcePath(), false); - long expirationMillis = System.currentTimeMillis() + 1000 * getMaxAgeSeconds(); + long expirationMillis = System.currentTimeMillis() + 1000L * getMaxAgeSeconds(); if (isCacheResponseEnabled()) { serverResponse.getBuilder() .setHeader(HttpHeaderNames.EXPIRES, DateTimeUtil.formatRfc1123(expirationMillis)) @@ -109,14 +105,14 @@ public abstract class ResourceService implements Filter { if (ifUnmodifiedSinceInstant != null && ifUnmodifiedSinceInstant.plusMillis(1000L).isAfter(lastModifiedInstant)) { serverResponse.getBuilder() - .setStatus(HttpResponseStatus.PRECONDITION_FAILED) + .setStatus(HttpResponseStatus.PRECONDITION_FAILED.code()) .build().flush(); return; } String ifMatch = headers.get(HttpHeaderNames.IF_MATCH); if (ifMatch != null && !matches(ifMatch, eTag)) { serverResponse.getBuilder() - .setStatus(HttpResponseStatus.PRECONDITION_FAILED) + .setStatus(HttpResponseStatus.PRECONDITION_FAILED.code()) .build().flush(); return; } @@ -125,7 +121,7 @@ public abstract class ResourceService implements Filter { serverResponse.getBuilder() .setHeader(HttpHeaderNames.ETAG, eTag) .setHeader(HttpHeaderNames.EXPIRES, DateTimeUtil.formatRfc1123(expirationMillis)) - .setStatus(HttpResponseStatus.NOT_MODIFIED) + .setStatus(HttpResponseStatus.NOT_MODIFIED.code()) .build().flush(); return; } @@ -135,7 +131,7 @@ public abstract class ResourceService implements Filter { serverResponse.getBuilder() .setHeader(HttpHeaderNames.ETAG, eTag) .setHeader(HttpHeaderNames.EXPIRES, DateTimeUtil.formatRfc1123(expirationMillis)) - .setStatus(HttpResponseStatus.NOT_MODIFIED) + .setStatus(HttpResponseStatus.NOT_MODIFIED.code()) .build().flush(); return; } @@ -167,7 +163,7 @@ public abstract class ResourceService implements Filter { if (!range.matches("^bytes=\\d*-\\d*(,\\d*-\\d*)*$")) { serverResponse.getBuilder() .setHeader(HttpHeaderNames.CONTENT_RANGE, "bytes */" + length) - .setStatus(HttpResponseStatus.REQUESTED_RANGE_NOT_SATISFIABLE) + .setStatus(HttpResponseStatus.REQUESTED_RANGE_NOT_SATISFIABLE.code()) .build().flush(); return; } @@ -195,7 +191,7 @@ public abstract class ResourceService implements Filter { if (start > end) { serverResponse.getBuilder() .setHeader(HttpHeaderNames.CONTENT_RANGE, "bytes */" + length) - .setStatus(HttpResponseStatus.REQUESTED_RANGE_NOT_SATISFIABLE) + .setStatus(HttpResponseStatus.REQUESTED_RANGE_NOT_SATISFIABLE.code()) .build().flush(); return; } @@ -231,7 +227,7 @@ public abstract class ResourceService implements Filter { } } serverResponse.getBuilder() - .setStatus(HttpResponseStatus.OK) + .setStatus(HttpResponseStatus.OK.code()) .setContentType(contentType) .build() .write(CharBuffer.wrap(sb), StandardCharsets.ISO_8859_1); @@ -253,11 +249,11 @@ public abstract class ResourceService implements Filter { ServerRequest serverRequest, ServerResponse serverResponse) throws IOException { if (url == null) { serverResponse.getBuilder() - .setStatus( HttpResponseStatus.NOT_FOUND) + .setStatus( HttpResponseStatus.NOT_FOUND.code()) .build().flush(); } else if (serverRequest.getMethod() == HttpMethod.HEAD) { serverResponse.getBuilder() - .setStatus( HttpResponseStatus.OK) + .setStatus( HttpResponseStatus.OK.code()) .setContentType(contentType) .build().flush(); } else { @@ -267,7 +263,7 @@ public abstract class ResourceService implements Filter { } catch (URISyntaxException | IOException e) { logger.log(Level.SEVERE, e.getMessage(), e); serverResponse.getBuilder() - .setStatus( HttpResponseStatus.NOT_FOUND) + .setStatus( HttpResponseStatus.NOT_FOUND.code()) .build().flush(); } } else { @@ -276,7 +272,7 @@ public abstract class ResourceService implements Filter { } catch (IOException e) { logger.log(Level.SEVERE, e.getMessage(), e); serverResponse.getBuilder() - .setStatus( HttpResponseStatus.NOT_FOUND) + .setStatus( HttpResponseStatus.NOT_FOUND.code()) .build().flush(); } } @@ -287,11 +283,11 @@ public abstract class ResourceService implements Filter { ServerRequest serverRequest, ServerResponse serverResponse, long offset, long size) throws IOException { if (url == null) { serverResponse.getBuilder() - .setStatus( HttpResponseStatus.NOT_FOUND) + .setStatus( HttpResponseStatus.NOT_FOUND.code()) .build().flush(); } else if (serverRequest.getMethod() == HttpMethod.HEAD) { serverResponse.getBuilder() - .setStatus( HttpResponseStatus.OK) + .setStatus( HttpResponseStatus.OK.code()) .setContentType(contentType) .build().flush(); } else { @@ -304,7 +300,7 @@ public abstract class ResourceService implements Filter { } catch (URISyntaxException | IOException e) { logger.log(Level.SEVERE, e.getMessage() + " path=" + path, e); serverResponse.getBuilder() - .setStatus( HttpResponseStatus.NOT_FOUND) + .setStatus( HttpResponseStatus.NOT_FOUND.code()) .build().flush(); } } else { @@ -313,7 +309,7 @@ public abstract class ResourceService implements Filter { } catch (IOException e) { logger.log(Level.SEVERE, e.getMessage(), e); serverResponse.getBuilder() - .setStatus( HttpResponseStatus.NOT_FOUND) + .setStatus( HttpResponseStatus.NOT_FOUND.code()) .build().flush(); } } @@ -329,7 +325,7 @@ public abstract class ResourceService implements Filter { ServerResponse serverResponse, long offset, long size) throws IOException { if (fileChannel == null) { serverResponse.getBuilder() - .setStatus( HttpResponseStatus.NOT_FOUND) + .setStatus( HttpResponseStatus.NOT_FOUND.code()) .build().flush(); } else { MappedByteBuffer mappedByteBuffer = null; @@ -338,12 +334,12 @@ public abstract class ResourceService implements Filter { } catch (IOException e) { // resource is not a file that can be mapped serverResponse.getBuilder() - .setStatus(HttpResponseStatus.NOT_FOUND) + .setStatus(HttpResponseStatus.NOT_FOUND.code()) .build().flush(); } if (mappedByteBuffer != null) { serverResponse.getBuilder() - .setStatus(httpResponseStatus) + .setStatus(httpResponseStatus.code()) .setContentType(contentType) .build() .write(Unpooled.wrappedBuffer(mappedByteBuffer)); @@ -355,12 +351,12 @@ public abstract class ResourceService implements Filter { ServerResponse serverResponse) throws IOException { if (inputStream == null) { serverResponse.getBuilder() - .setStatus(HttpResponseStatus.NOT_FOUND) + .setStatus(HttpResponseStatus.NOT_FOUND.code()) .build().flush(); } else { try (ReadableByteChannel channel = Channels.newChannel(inputStream)) { serverResponse.getBuilder() - .setStatus(HttpResponseStatus.OK) + .setStatus(HttpResponseStatus.OK.code()) .setContentType(contentType) .build() .write(new ChunkedNioStream(channel)); @@ -372,11 +368,11 @@ public abstract class ResourceService implements Filter { ServerResponse serverResponse, long offset, long size) throws IOException { if (inputStream == null) { serverResponse.getBuilder() - .setStatus(HttpResponseStatus.NOT_FOUND) + .setStatus(HttpResponseStatus.NOT_FOUND.code()) .build().flush(); } else { serverResponse.getBuilder() - .setStatus(httpResponseStatus) + .setStatus(httpResponseStatus.code()) .setContentType(contentType) .build() .write(Unpooled.wrappedBuffer(readBuffer(inputStream, offset, size))); diff --git a/netty-http-server/src/main/java/org/xbib/netty/http/server/protocol/http1/Http1Transport.java b/netty-http-server/src/main/java/org/xbib/netty/http/server/protocol/http1/Http1Transport.java index 2a7d353..edfacec 100644 --- a/netty-http-server/src/main/java/org/xbib/netty/http/server/protocol/http1/Http1Transport.java +++ b/netty-http-server/src/main/java/org/xbib/netty/http/server/protocol/http1/Http1Transport.java @@ -45,21 +45,21 @@ public class Http1Transport extends BaseTransport { } case MISSING_HOST_HEADER: { HttpServerResponse.builder(ctx) - .setStatus(HttpResponseStatus.BAD_REQUEST) + .setStatus(HttpResponseStatus.BAD_REQUEST.code()) .setContentType("text/plain") .build() .write("missing 'Host' header"); } case EXPECTATION_FAILED: { HttpServerResponse.builder(ctx) - .setStatus(HttpResponseStatus.EXPECTATION_FAILED) + .setStatus(HttpResponseStatus.EXPECTATION_FAILED.code()) .build() .flush(); break; } case UNSUPPORTED_HTTP_VERSION: { HttpServerResponse.builder(ctx) - .setStatus(HttpResponseStatus.BAD_REQUEST) + .setStatus(HttpResponseStatus.BAD_REQUEST.code()) .setContentType("text/plain") .build() .write("unsupported HTTP version"); diff --git a/netty-http-server/src/main/java/org/xbib/netty/http/server/protocol/http1/HttpServerResponse.java b/netty-http-server/src/main/java/org/xbib/netty/http/server/protocol/http1/HttpServerResponse.java index 0e36987..b4b2cb1 100644 --- a/netty-http-server/src/main/java/org/xbib/netty/http/server/protocol/http1/HttpServerResponse.java +++ b/netty-http-server/src/main/java/org/xbib/netty/http/server/protocol/http1/HttpServerResponse.java @@ -64,7 +64,7 @@ public class HttpServerResponse implements ServerResponse { this.ctx = builder.ctx; this.headers = builder.headers; this.trailingHeaders = builder.trailingHeaders; - this.httpResponseStatus = builder.httpResponseStatus; + this.httpResponseStatus = HttpResponseStatus.valueOf(builder.statusCode); this.shouldClose = builder.shouldClose; this.shouldAddServerName = builder.shouldAddServerName; this.sequenceId = builder.sequenceId; @@ -201,7 +201,7 @@ public class HttpServerResponse implements ServerResponse { private final HttpHeaders trailingHeaders; - private HttpResponseStatus httpResponseStatus; + private int statusCode; private boolean shouldClose; @@ -217,15 +217,15 @@ public class HttpServerResponse implements ServerResponse { private Builder(ChannelHandlerContext ctx) { this.ctx = ctx; - this.httpResponseStatus = HttpResponseStatus.OK; + this.statusCode = HttpResponseStatus.OK.code(); this.headers = new DefaultHttpHeaders(); this.trailingHeaders = new DefaultHttpHeaders(); this.contentType = HttpHeaderValues.APPLICATION_OCTET_STREAM; } @Override - public Builder setStatus(HttpResponseStatus httpResponseStatus) { - this.httpResponseStatus = httpResponseStatus; + public Builder setStatus(int statusCode) { + this.statusCode = statusCode; return this; } diff --git a/netty-http-server/src/main/java/org/xbib/netty/http/server/protocol/http2/Http2ServerResponse.java b/netty-http-server/src/main/java/org/xbib/netty/http/server/protocol/http2/Http2ServerResponse.java index 96bc7fe..6838778 100644 --- a/netty-http-server/src/main/java/org/xbib/netty/http/server/protocol/http2/Http2ServerResponse.java +++ b/netty-http-server/src/main/java/org/xbib/netty/http/server/protocol/http2/Http2ServerResponse.java @@ -62,7 +62,7 @@ public class Http2ServerResponse implements ServerResponse { this.ctx = builder.ctx; this.headers = builder.headers; this.trailingHeaders = builder.trailingHeaders; - this.httpResponseStatus = builder.httpResponseStatus; + this.httpResponseStatus = HttpResponseStatus.valueOf(builder.statusCode); this.shouldClose = builder.shouldClose; this.shouldAddServerName = builder.shouldAddServerName; this.sequenceId = builder.sequenceId; @@ -204,7 +204,7 @@ public class Http2ServerResponse implements ServerResponse { private final Http2Headers trailingHeaders; - private HttpResponseStatus httpResponseStatus; + private int statusCode; private boolean shouldClose; @@ -220,15 +220,15 @@ public class Http2ServerResponse implements ServerResponse { private Builder(ChannelHandlerContext ctx) { this.ctx = ctx; - this.httpResponseStatus = HttpResponseStatus.OK; + this.statusCode = HttpResponseStatus.OK.code(); this.headers = new DefaultHttp2Headers(); this.trailingHeaders = new DefaultHttp2Headers(); this.contentType = HttpHeaderValues.APPLICATION_OCTET_STREAM; } @Override - public Builder setStatus(HttpResponseStatus httpResponseStatus) { - this.httpResponseStatus = httpResponseStatus; + public Builder setStatus(int statusCode) { + this.statusCode = statusCode; return this; } diff --git a/netty-http-server/src/main/java/org/xbib/netty/http/server/protocol/http2/Http2Transport.java b/netty-http-server/src/main/java/org/xbib/netty/http/server/protocol/http2/Http2Transport.java index 49089c0..95abbef 100644 --- a/netty-http-server/src/main/java/org/xbib/netty/http/server/protocol/http2/Http2Transport.java +++ b/netty-http-server/src/main/java/org/xbib/netty/http/server/protocol/http2/Http2Transport.java @@ -54,21 +54,21 @@ public class Http2Transport extends BaseTransport { } case MISSING_HOST_HEADER: { serverResponseBuilder - .setStatus(HttpResponseStatus.BAD_REQUEST) + .setStatus(HttpResponseStatus.BAD_REQUEST.code()) .setContentType("text/plain") .build() .write("missing 'Host' header"); } case EXPECTATION_FAILED: { serverResponseBuilder - .setStatus(HttpResponseStatus.EXPECTATION_FAILED) + .setStatus(HttpResponseStatus.EXPECTATION_FAILED.code()) .build() .flush(); break; } case UNSUPPORTED_HTTP_VERSION: { serverResponseBuilder - .setStatus(HttpResponseStatus.BAD_REQUEST) + .setStatus(HttpResponseStatus.BAD_REQUEST.code()) .setContentType("text/plain") .build() .write("unsupported HTTP version");