#400: Add support for GraphQL union type#1469
Merged
Merged
Conversation
Member
|
@t1 @andymc12 @jmartisk @WhiteCat22 @kaqqao any thoughts on this ? |
Member
|
@craig-day the current main in SmallRye is using jakarta and are not yet release. Maybe you can also open a PR for the 1.6.x (javax) branch ? |
Contributor
Author
|
@phillip-kruger done! #1470 |
Collaborator
|
I like the idea of using an interface. My first thought had been to use a wrapper type where exactly one field can be set, but the interface is better. Thanks @craig-day ! |
Member
|
The failure of Quarkus build is expected with the Jakarta branch |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I eagerly started with defining the spec, but also wanted to get an implementation done.
This adds support for creating GraphQL union types using an annotation
@Unionon a Java interface. I chose an empty Java interface so there would be an explicit layer of abstraction to represent the union itself.Example:
would create
An alternative could have been to directly annotate a type with the name of the union(s) it should be a member of, then generate the union from there.
Expand for alternative Java example
Event thought this is a little less code, I didn't like it because the
@Unionannotation no longer describes an object directly, rather a relationship between objects. This relationship now only exists in the world of strings, and has no concrete representation in code.For lots more thoughts, see the PR description here: microprofile/microprofile-graphql#459
Resolves #400