Commit Graph

494 Commits

Author SHA1 Message Date
rstoyanchev
1559c5989e Adapt CodecConfigurer to JSONPath MappingProvider
The JSON Encoder and Decoder implementations configured via
CodecConfigurer for HTTP and WebSocket are adapted to a JSONPath
MappingProvider and now automatically registered in JSONPath
configuration.

See gh-10, see gh-317
2022-03-07 10:39:59 +00:00
rstoyanchev
abb51ee5e2 Refactoring in testFixtures 2022-03-07 10:39:59 +00:00
rstoyanchev
50c71d03fc Move TestWebSocketClient to testFixtures 2022-03-07 10:39:59 +00:00
rstoyanchev
d063eb760a Simplify filtered error handling in GraphQlTester
See gh-317
2022-03-07 10:39:59 +00:00
rstoyanchev
6480ab7e9f Polishing in GraphQlClient and GraphQlTester
See gh-10, see gh-317
2022-03-07 10:39:59 +00:00
rstoyanchev
e67cb5885e Rename ~Spec in GraphQlClient and GraphQlTester
As these are expected to be used as local variables, "Spec" reduces
readability and the IDE creates variables called "spec", which
increases that effect. Given those are nested within `GraphQlClient`
and `GraphQlTester`, it makes sense to drop the spec part and local
variable names such as request and response make sense.

See gh-10, see gh-317
2022-03-07 10:39:59 +00:00
rstoyanchev
53fb1d4dc0 Update and expand GraphQlTester tests
See gh-317
2022-03-07 10:39:59 +00:00
rstoyanchev
29b1aa2cc7 Introduce transport specific GraphQlTester extensions
See gh-317
2022-03-07 10:39:59 +00:00
rstoyanchev
1ae7eb742f Replace RequestStrategy with GraphQlTransport hierarchy
See gh-317
2022-03-07 10:39:59 +00:00
rstoyanchev
9318eade52 Update and expand GraphQlClient tests
See gh-10
2022-03-07 10:39:59 +00:00
rstoyanchev
d7f5e44ad6 Simplify GraphQlClient hierarchy and implementations
Add WebGraphQlClient as a common representation for a Web GraphQlClient
extension and its builders that has to be started through the HTTP or
WebSocket implementations.

Remove the common base builder for HTTP and WebSocket, with HTTP simply
delegating to the underlying WebClient builder For WebSocket, builder
state is exposed from the transport to simplify the mutation logic.

DefaultGraphQlClientBuilder is now abstract, leaving subclasses to
implement the build method.

See gh-10
2022-03-07 10:39:59 +00:00
rstoyanchev
347f51941a Make transports private and drop builders
Now that transport specific GraphQlClient extensions provide a unified
builder for GraphQlClient and transport configuration, the transports
become a private implementation detail.

See gh-10
2022-03-07 10:39:59 +00:00
rstoyanchev
5a73e05040 Add transport specific GraphQlClient extensions
Add HttpGraphQlClient and WebSocketGraphQlClient extensions along with
a builder hierarchy that combines GraphQlClient and transport specific
configuration.

See gh-10
2022-03-07 10:39:59 +00:00
rstoyanchev
328d5c2b3e DocumentSource is async and supports caching
See gh-10
2022-03-07 10:39:59 +00:00
rstoyanchev
087202d9cb Simplify creation of RequestInput in tests
Introduce a TestRequestInput subclass to make the creation of
RequestInput in tests convenient.

See gh-310
2022-03-07 10:39:59 +00:00
rstoyanchev
b49c63f376 Extract GraphQlRequest and rename "query" to "document"
Extract GraphQlRequest, as a parent of RequestInput, that holds the
actual request inputs sent from the client side. RequestInput then
adds server-side transport details and ExecutionInput support.

Also replace "query" with "document" in GraphQlRequest and in
GraphQlClient.

Closes gh-310
2022-03-07 10:39:59 +00:00
dugenkui03
bc7500f33a Provide location information for missing/invalid schema resources
This commit ensures that the `Resource` description is provided when
a schema resource is missing, cannot be read, or is invalid.
This is useful when the application holds multiple schema files and
an error is thrown because of a particular file.

Close gh-307
2022-03-03 14:43:44 +01:00
Brian Clozel
c10aed82a3 Configure Gradle Enterprise 2022-03-03 14:37:56 +01:00
rstoyanchev
bdaaa0f2dd Add missing Javadoc 2022-02-24 22:26:17 +00:00
rstoyanchev
736c33aa4e Add GraphQlClient support for WebSocket
See gh-10
2022-02-24 22:15:44 +00:00
rstoyanchev
371c601c9d Add GraphQlClient and GraphQlTransport for HTTP
See gh-10
2022-02-24 22:15:20 +00:00
rstoyanchev
2729ea685a Add TestWebSocketClient and TestWebSocketConnection
Provides support for WebSocket tests without a running server.

See gh-10
2022-02-24 22:13:54 +00:00
rstoyanchev
6c0bbdd132 Extract GraphQlWebSocketMessage and WebSocketCodecDelegate
Allows some reuse between WebFlux and WebMVC and between client and server.

See gh-10
2022-02-24 22:12:24 +00:00
rstoyanchev
afb0b64d3a Add section on directives in reference docs
Closes gh-262
2022-02-17 15:19:01 +00:00
rstoyanchev
194126dc6b Polishing contribution
Closes gh-233
2022-02-17 14:45:09 +00:00
rstoyanchev
1939021ec3 Summarize Boot starter features for GraphQlSource.Builder
Important to mention the `GraphQlSourceBuilderCustomizer` which is
otherwise mentioned neither in the Boot starter nor the reference here.
It is the path to a number of customizations that are discussed in
`GraphQlSource` subsections.

See gh-233
2022-02-17 14:44:57 +00:00
Jordie
a9cd0a9958 Update docs for PreparsedDocumentSupport
See gh-233
2022-02-17 14:44:57 +00:00
rstoyanchev
1f9afa9be5 Shortcut annotations target method level only again
Closes gh-290
2022-02-17 12:32:18 +00:00
rstoyanchev
937c265091 Support List arguments in QuerydslDataFetcher
Closes gh-281
2022-02-17 12:24:42 +00:00
rstoyanchev
4c6ec7df11 Invoke validation on resolved argument values
Closes gh-289
2022-02-16 21:53:18 +00:00
rstoyanchev
16f4390d22 Ignore duplicate schema resource registrations
Closes gh-230
2022-02-10 12:50:31 +00:00
rstoyanchev
30f86d74f2 Move classes from security to execution package
Security classes should be integrated in their respective areas by
functionality rather than exist as a separate, external layer.
2022-02-10 12:37:13 +00:00
rstoyanchev
6df6ab78c8 Support for @Arguments method parameter
Closes gh-258
2022-02-10 12:19:31 +00:00
rstoyanchev
32930f7e88 Add logo to README.md 2022-02-09 10:51:32 +00:00
rstoyanchev
b17d4e2425 Add @AuthenticationPrincipal to reference
See gh-272
2022-02-08 20:58:55 +00:00
rstoyanchev
0842deb593 Polishing
See gh-272
2022-02-08 20:50:55 +00:00
Rob Winch
db1570909f Add AuthenticationPrincipalArgumentResolver
Closes gh-272
2022-02-08 20:50:55 +00:00
rstoyanchev
5bc9d9ab24 Fix arguments to Assert.isInstanceOf
Closes gh-282
2022-02-08 17:04:58 +00:00
rstoyanchev
2095e1795f Refine valueIsEmpty check 2022-02-08 17:02:30 +00:00
rstoyanchev
0b449d89e1 Callbacks for ConversionService customization
Closes gh-271
2022-02-03 10:16:57 +00:00
rstoyanchev
d2cad053ac Polishing 2022-02-03 10:16:57 +00:00
Brian Clozel
a89ae5034f Upgrade JDK versions in CI image 2022-02-03 10:26:22 +01:00
Brian Clozel
e2d3b61b8d Upgrade Ubuntu version in CI image 2022-02-03 10:24:14 +01:00
rstoyanchev
cc3c1d163e Improvements in data section of reference docs
See gh-248
2022-01-21 17:32:28 +00:00
rstoyanchev
4a031ba519 Create dedicated section on projections
Closes gh-264
2022-01-21 17:32:28 +00:00
Mark Paluch
f34da2589b Describe aggregates and projections
See gh-264
2022-01-21 16:53:42 +00:00
rstoyanchev
50b794cae0 Minor refactoring in RequestInput 2022-01-21 13:16:44 +00:00
Brian Clozel
76940c279e Configure Javadoc links to external sources 2022-01-19 15:48:06 +01:00
Brian Clozel
c86ea72b5e Temporarily add SNAPSHOT plugin repository
This is required as otherwise they're deactivated during the staging of
a release. We should reconsider our dependency on Spring Boot SNAPSHOTs
in our samples.
2022-01-19 15:17:44 +01:00
Brian Clozel
641b0f0506 Align Kotlin dependency on Spring Framework 5.3.x
Prior to this commit, spring-graphql would depend on Kotlin 1.6, which
is not in line with Spring Framework 5.3.x requirements. This commit
realigns our dependency management on Kotlin 1.5.x.

Also, this commit configures the build to not publish a kotlin-stdlib
runtime dependency in our POM.

Closes gh-265
2022-01-19 14:54:36 +01:00