1.18.0 release notes
8th August 2022
🌟 New features
DocService
can 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
Unwrappable
type 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
RequestContext
now extendsUnwrappable
. #4308
🛠️ Bug fixes
- You no longer see an intermittent
IllegalStateException
for 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
HttpFile
to 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
MethodType
when using gRPC clients. #4363 - You no longer see a
NoSuchElementException
while aHealthCheckedEndpointGroup
is closed. #4349 ClosedSessionException
andClosedStreamException
are raised correctly according to their usage. #4380- The timeout for client's endpoint selection isn't clamped by
responseTimeout
anymore. #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