@Override public int getRawStatusCode() { // Return the status code even if it is unknown. return status.code(); }
/** * Returns {@code true} if the content of the response with the given {@link HttpStatus} is expected to * be always empty (1xx, 204, 205 and 304 responses.) */ public static boolean isContentAlwaysEmpty(HttpStatus status) { if (status.codeClass() == HttpStatusClass.INFORMATIONAL) { return true; } switch (status.code()) { case 204: case 205: case 304: return true; } return false; }
@Override public int hashCode() { return code(); }
responseBuilder.code(status.code()); responseBuilder.message(status.reasonPhrase());
final HttpResponseStatus nettyStatus = HttpResponseStatus.valueOf(status.code());
/** * Returns whether the specified object is "equal to" this status. * * <p>Equality of {@link HttpStatus} only depends on {@link #code()}. The reason phrase is not considered * for equality. */ @Override public boolean equals(@Nullable Object o) { if (!(o instanceof HttpStatus)) { return false; } return code() == ((HttpStatus) o).code(); }
GrpcStatus.httpStatusToGrpcStatus(status.code())); return;
/** * Returns the status code of the {@link Response}. * * @return the integer value of the {@link #status()}. {@code 0} if the {@link Response} has failed even * before receiving its first non-informational headers. */ default int statusCode() { return status().code(); }
final int statusCode = status.code(); switch (statusCode) { case 204:
@Override public HttpStatus getStatusCode() { // Raise an IllegalArgumentException if the status code is unknown. return HttpStatus.valueOf(status.code()); }
/** * Returns a new {@link HttpStatusException} instance with the specified {@link HttpStatus}. */ public static HttpStatusException of(HttpStatus httpStatus) { requireNonNull(httpStatus, "httpStatus"); return of(httpStatus.code()); }
logger.warn("A response with HTTP status code '{}' cannot have a content. " + "Trailing headers defined at '{}' might be ignored.", defaultHeaders.status().code(), methodAlias);
final StringBuilder message = new StringBuilder("http-status: " + httpStatus.code()); message.append(", ").append(httpStatus.reasonPhrase()).append(LINE_SEPARATOR); message.append("Caused by: ").append(LINE_SEPARATOR);
private void respond(ChannelHandlerContext ctx, DecodedHttpRequest req, HttpStatus status, RequestContext reqCtx, @Nullable Throwable cause) { if (status.code() < 400) { respond(ctx, req, AggregatedHttpMessage.of(HttpHeaders.of(status)), reqCtx, cause); return; } final HttpData content; if (req.method() == HttpMethod.HEAD || ArmeriaHttpUtil.isContentAlwaysEmpty(status)) { content = HttpData.EMPTY_DATA; } else { content = status.toHttpData(); } respond(ctx, req, AggregatedHttpMessage.of( HttpHeaders.of(status) .contentType(ERROR_CONTENT_TYPE), content), reqCtx, cause); }
@Test public void grpcCodeToHttpStatus() { for (Status.Code code : Status.Code.values()) { assertThat(GrpcStatus.grpcCodeToHttpStatus(code).code()) .as("gRPC code: {}", code) .isEqualTo(GrpcStatusCode.of(code).getCode().getHttpStatusCode()); } } }
private static void invoke0(THttpService service, HttpData content, CompletableFuture<HttpData> promise) throws Exception { final HttpRequestWriter req = HttpRequest.streaming(HttpHeaders.of(HttpMethod.POST, "/")); req.write(content); req.close(); final ServiceRequestContext ctx = ServiceRequestContextBuilder.of(req) .eventLoop(eventLoop.get()) .serverConfigurator(builder -> { builder.blockingTaskExecutor(ImmediateEventExecutor.INSTANCE); builder.verboseResponses(true); }) .build(); final HttpResponse res = service.serve(ctx, req); res.aggregate().handle(voidFunction((aReq, cause) -> { if (cause == null) { if (aReq.headers().status().code() == 200) { promise.complete(aReq.content()); } else { promise.completeExceptionally(new AssertionError( aReq.headers().status() + ", " + aReq.content().toString(StandardCharsets.UTF_8))); } } else { promise.completeExceptionally(cause); } })).exceptionally(CompletionActions::log); }