info
You're seeing the release note of an old version. Check out the latest release note.
v1.18.0
August 8, 2022
🌟 New features
-
DocServicecan now render Markdown and Mermaid formatted documentation for annotated services. #4299 #4304@Description(value = "### Markdown format", markup = Markup.MARKDOWN)
@Get("/markdown")
public HttpResponse markdown() {
return HttpResponse.of(200);
}@Description(value = "graph TD;\n" +
" A-->B;\n" +
" A-->C;\n" +
" B-->D;\n" +
" C-->D;",
markup = Markup.MERMAID)
@Get("/mermaid")
public HttpResponse mermaid() {
return HttpResponse.of(200);
} -
You can now bind decorators to each gRPC service using
GrpcServiceBuilder.addService(). #4311 #4316GrpcService.builder()
.addService(myGrpcService, List.of(decorator)) // 👈👈👈
.build(); -
UnframedGrpcErrorHandler.ofJson()now conforms to Google's error model. #4231 #4384GrpcService
.builder()
.addService(myGrpcServiceImpl)
.unframedGrpcErrorHandler(
UnframedGrpcErrorHandler.ofJson()) // 👈👈👈
.build();{
"code": 2,
"message": "A custom message!",
...
} -
You can now extract the innermost element of
Unwrappabletype objects easily usingUnwrappable.unwrapAll(). #4338Foo foo = new Foo();
Bar<Foo> bar = new Bar<>(foo);
Qux<Bar<Foo>> qux = new Qux<>(bar);
assert qux.unwrapAll() == foo; // 👈👈👈
📈 Improvements
RequestContextnow extendsUnwrappable. #4308
🛠️ Bug fixes
- You no longer see an intermittent
IllegalStateExceptionfor gRPC services whenGrpcServiceBuilder.useBlockingTaskExecutor()is enabled. #4367 #4374 - Requests no longer hang when gRPC-JSON transcoding is enabled and gRPC decorators return an unframed response. #4337 #4348
- You can now use
HttpFileto serve files from the OSGI bundle. #4371 #4373 - A request's start time on the server side is now correctly recorded when a server receives the first header. #4365 #4372
- You no longer see a false positive warning of unknown
MethodTypewhen using gRPC clients. #4363 - You no longer see a
NoSuchElementExceptionwhile aHealthCheckedEndpointGroupis closed. #4349 ClosedSessionExceptionandClosedStreamExceptionare raised correctly according to their usage. #4380- The timeout for client's endpoint selection isn't clamped by
responseTimeoutanymore. #4383
⛓ Dependencies
- Brave 5.13.9 → 5.13.10
- Bucket4j 7.5.0 → 7.6.0
- Curator 5.2.1 → 5.3.0
- Dropwizard metrics 2.1.0 → 2.1.1
- GraphQL-Java 18.2 → 19.0
- GraphQL-Kotlin 5.3.2 → 6.1.0
- gRPC-Java 1.47.0 → 1.48.0
- java-jwt 3.19.1 → 4.0.0
- Jetty 9.4.46.v20220331 → 9.4.48.v20220622
- kafka-clients 3.2.0 → 3.2.1
- Kotlin 1.7.0 → 1.7.10
- Kotlin Coroutine 1.6.3 → 1.6.4
- Micrometer 1.9.1 → 1.9.2
- Netty 4.1.78.Final → 4.1.79.Final
- Protobuf 3.19.2 → 3.21.1
- Reactor 3.4.19 → 3.4.21
- RESTEasy 5.0.2.Final → 5.0.4.Final
- Sangria 3.0.0 → 3.0.1
- Scala 2.12.15 → 2.12.16, 3.1.2 → 3.1.3
- scala-collection-compat 2.7.0 → 2.8.1
- Spring Boot 2.7.1 → 2.7.2
- Spring Web 5.3.21 → 5.3.22
- Tomcat8 8.5.78 → 8.5.81
- Tomcat9 9.0.62 → 9.0.65
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:











