Commit Graph

1177 Commits

Author SHA1 Message Date
Brian Clozel
29f2e71ace Upgrade to Micrometer Tracing 1.2.3
See gh-890
2024-02-17 20:10:19 +01:00
Brian Clozel
f09c20f701 Upgrade to Micrometer 1.12.3
See gh-886
2024-02-17 20:09:19 +01:00
Brian Clozel
ae4c9c4211 Upgrade to Reactor 2023.0.3
See gh-885
2024-02-17 20:07:31 +01:00
Brian Clozel
97b1c64098 Upgrade to Spring Framework 6.1.4
See gh-883
2024-02-17 20:05:37 +01:00
Brian Clozel
8a7938c29a Merge branch '1.2.x' 2024-02-17 19:09:40 +01:00
Brian Clozel
c72415f361 Upgrade optional dependencies 2024-02-17 19:08:59 +01:00
Brian Clozel
05947f92e0 Upgrade to Spring Security 6.1.7
Closes gh-913
2024-02-17 19:08:37 +01:00
Brian Clozel
5b1be8f556 Upgrade to Spring Data 2023.0.9
Closes gh-912
2024-02-17 19:08:05 +01:00
Brian Clozel
ad63bad767 Upgrade to Micrometer 1.11.9 and Tracing 1.1.10
Closes gh-911
2024-02-17 19:05:46 +01:00
Brian Clozel
375c26598c Upgrade to Reactor 2022.0.16
Closes gh-910
2024-02-17 19:03:57 +01:00
Brian Clozel
f054149e35 Upgrade to Spring Framework 6.0.17
Closes gh-909
2024-02-17 19:01:25 +01:00
Brian Clozel
698ca0356c Upgrade to Kotlin 1.9.22
Closes gh-908
2024-02-17 19:00:27 +01:00
Brian Clozel
083fec96a4 Create optimized RequestPredicate for GraphQL endpoints
Prior to this commit, Spring Boot applications would wire the GraphQL
handlers (for various transports and both WebFlux and WebMVC) with
standard `RequestPredicates` chained into a `RouterFunction`.

While this is the expected way for custom application endpoints, stock
predicates are more general purpose and require some overhead when
copying attributes.

This commit introduces custom predicates, optimized for faster and lower
overhead matching. The new `GraphQlRequestPredicates` classes provide
factory methods for HTTP and SSE predicates.

Closes gh-906
2024-02-17 18:08:31 +01:00
Brian Clozel
a5fb4fac31 Upgrade to Gradle 8.6 2024-02-17 18:02:44 +01:00
Brian Clozel
1f7063c9b4 Add Server-Sent Events transport
Prior to this commit, the WebFlux and WebMVC infrastructure would only
support subscriptions over the WebSocket and RSocket transports.

This commit adds the `GraphQlSseHandler` implementations for both web
frameworks. This handler will send GraphQL responses as as stream of
Server-Sent Events, over an HTTP response with the "text/event-stream"
content type.

This implementation only supports the "Distinct connections mode" and
will reject all operations other than Subscriptions.

This commit also enhances the `HttpGraphQlTransport` client transport to
support subscriptions over this new protocol.

Closes gh-309
2024-02-15 21:09:27 +01:00
rstoyanchev
3dcbd8c2e9 Merge branch '1.2.x' 2024-02-14 13:20:25 +00:00
rstoyanchev
dab10e7383 Apply default ScrollSubrange correctly
The defaults are now applied before the call to ScrollSubrange#create.
After is too late given that for offset positions, the direction may
switch from backward to forward.

Closes gh-900
2024-02-14 13:17:26 +00:00
Brian Clozel
c55de8d091 Record response errors as events in Request Observations
Prior to this commit, GraphQL Request Observations would not record
errors as Observation errors, because with GraphQL errors can partially
affect the response and there can be multiple. Instead, an invalid
request (for example) would lead to a `"graphql.outcome", "REQUEST_ERROR"`
low cardinality KeyValue. In this case, developers would not know what
type of error occured nor if there were multiple.

This commit records all errors listed in the GraphQL as
Observation.Event on the request Observation. Such events are usually
handled by the tracing handler and are recorded as span annotations for
traces. Other `ObservationHandler` annotations can leverage events in a
different fashion.

Closes gh-859
2024-02-14 14:06:21 +01:00
Brian Clozel
98d39bc21d Remove Context Propagation deprecated API usage
Prior to this commit, gh-676 fixed the local and global context
inheritance in the `ContextDataFetcherDecorator` with a workaround.
This commit undoes this workaround and uses the new Context Propagation
API for this, effectively raising the requirement for version 1.0.3 and
removing all deprecated APIs in the meantime.

Closes gh-688
2024-02-14 14:06:13 +01:00
Brian Clozel
610898c4c3 Merge branch '1.2.x' 2024-02-14 14:05:45 +01:00
Brian Clozel
5248a3253b Polish SerializableGraphQlRequest for GraalVM support
This commit improves the `SerializableGraphQlRequest` by declaring its
reflection usage for GraalVM native applications.

See gh-905
2024-02-14 14:05:36 +01:00
Brian Clozel
5b7e2633c7 Merge branch '1.2.x' 2024-02-14 14:02:08 +01:00
rstoyanchev
fb1f0ee0e7 Deserialize HTTP request body to POJO
Closes gh-905
2024-02-08 20:54:55 +00:00
rstoyanchev
b983095005 Merge branch '1.2.x' 2024-02-08 11:50:06 +00:00
rstoyanchev
1736d2abf0 WebMvc handler skips ASYNC if possible
Closes gh-904
2024-02-08 11:14:38 +00:00
rstoyanchev
d836f6879e Add documentation for federation support
Closes gh-864
2024-02-06 20:46:59 +00:00
Dariusz Kuc
784b637e41 chore: update to federation jvm 4.4.0
`v4.4.0` adds support for Federation v2.6 and v2.7. This version also includes performance fix to federating tracing instrumentation (`ftv1`) that skips unnecessary computations.
2024-02-06 12:31:01 +00:00
rstoyanchev
159ebaa278 Add federation support
See gh-864
2024-02-05 17:12:33 +00:00
rstoyanchev
254d0c87c5 Refactoring in argument binding
GraphQlArgumentBinder allows external determination of the raw value to use,
and ArgumentMethodArgumentResolver allows customizing the invocation of
the binder.

See gh-864
2024-02-05 17:12:04 +00:00
rstoyanchev
038217a686 Move AnnotatedControllerExceptionResolver to base class
See gh-864
2024-02-05 17:10:51 +00:00
rstoyanchev
9aa506a280 Extract base classes for annotated controller methods
See gh-864
2024-02-05 17:09:24 +00:00
rstoyanchev
19da1deea9 Merge branch '1.2.x' 2024-01-31 20:02:35 +00:00
rstoyanchev
3279332901 SchemaMappingInspector accepts Map of registrations
Closes gh-894
2024-01-31 20:02:20 +00:00
rstoyanchev
87aa98b1d8 Update docs for synchronous GraphQlClient
Closes gh-771
2024-01-31 18:43:34 +00:00
rstoyanchev
08d831aed3 Polishing
See gh-771
2024-01-31 15:08:54 +00:00
rstoyanchev
a38fac0bb1 Introduce blocking execution in GraphQlClient
See gh-771
2024-01-31 15:07:42 +00:00
rstoyanchev
117445b962 Add SyncGraphQlTransport and Interceptor
See gh-771
2024-01-31 15:07:28 +00:00
rstoyanchev
d460cf0b9b Add RestClient transport and GraphQlClient builder
See gh-771
2024-01-31 15:07:11 +00:00
rstoyanchev
c48b2979c8 Merge branch '1.2.x' 2024-01-30 09:25:13 +00:00
rstoyanchev
78f7df2736 Consistently check errors in GraphQlTester
Closes gh-891
2024-01-30 09:24:26 +00:00
rstoyanchev
1e2b5f8bc5 Upgrade dependencies
Closes gh-883
Closes gh-884
Closes gh-885
Closes gh-886
Closes gh-887
Closes gh-888
Closes gh-889
Closes gh-890
2024-01-26 11:42:29 +00:00
rstoyanchev
84964544dc Merge branch '1.2.x' 2024-01-26 10:02:04 +00:00
Nils Hartmann
b37a06bf59 ExecutionGraphQlService instead of GraphqlService
See gh-877
2024-01-26 09:59:53 +00:00
Brian Clozel
2e5090a0e3 Start Publishing 1.3.0-SNAPSHOT 2024-01-26 10:12:45 +01:00
Brian Clozel
e3f672e019 Track 1.2.x branch in CI pipeline 2024-01-26 10:09:53 +01:00
Brian Clozel
311e5647b4 Upgrade CI to JDK 17.0.10+13 and 21.0.2+14 2024-01-26 10:06:06 +01:00
Brian Clozel
9908707430 Upgrade CI to Docker 25.0.1 2024-01-26 10:05:06 +01:00
Brian Clozel
5b07edc81d Upgrade CI to Ubunutu Jammy 20240111 2024-01-26 10:04:38 +01:00
rstoyanchev
1126893f72 SchemaMappingInspector is public
Closes gh-881
2024-01-23 19:24:49 +00:00
Eric Haag
4ccf8fa84d Add Revved up by Develocity badge 2024-01-23 18:46:23 +00:00