From 5a0e15178500e8455c4f93a8b7229253f720edde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Phillip=20Kr=C3=BCger?= Date: Wed, 18 Mar 2020 18:06:52 +0200 Subject: [PATCH 001/248] Update README.asciidoc --- README.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.asciidoc b/README.asciidoc index a6a519c2..89c878f9 100644 --- a/README.asciidoc +++ b/README.asciidoc @@ -22,7 +22,7 @@ image:https://badges.gitter.im/eclipse/microprofile-graphql.svg[link="https://gi = Microprofile GraphQL Specification -Read the https://download.eclipse.org/microprofile/microprofile-graphql-1.0/microprofile-graphql.html[MicroProfile GraphQL 1.0] Specification +Read the https://download.eclipse.org/microprofile/microprofile-graphql-1.0.1/microprofile-graphql.html[MicroProfile GraphQL 1.0.1] Specification == Generating the API and JavaDoc From 0b5c83ef099a28efde35bda26a66a7147ecdf8b2 Mon Sep 17 00:00:00 2001 From: Phillip Kruger Date: Sun, 22 Mar 2020 13:45:18 +0200 Subject: [PATCH 002/248] Structure change for client. This solves issue #200 Signed-off-by:Phillip Kruger --- .gitignore | 6 + client/api/pom.xml | 91 ++++++++ client/pom.xml | 36 ++++ client/spec/pom.xml | 67 ++++++ client/spec/src/main/asciidoc/client.asciidoc | 22 ++ client/spec/src/main/asciidoc/index.asciidoc | 37 ++++ .../src/main/asciidoc/license-alv2.asciidoc | 0 .../src/main/asciidoc/release_notes.asciidoc | 23 ++ .../spec}/src/main/resources/META-INF/LICENSE | 0 .../spec}/src/main/resources/META-INF/NOTICE | 0 client/tck/pom.xml | 77 +++++++ full/api/pom.xml | 42 ++++ full/pom.xml | 37 ++++ {spec => full/spec}/pom.xml | 48 +---- .../spec/src/main/asciidoc/index.asciidoc | 15 +- .../src/main/asciidoc/license-alv2.asciidoc | 42 ++++ full/spec/src/main/resources/META-INF/LICENSE | 201 ++++++++++++++++++ full/spec/src/main/resources/META-INF/NOTICE | 13 ++ full/tck/pom.xml | 42 ++++ pom.xml | 92 +++++++- {api => server/api}/.gitignore | 0 {api => server/api}/bnd.bnd | 0 {api => server/api}/pom.xml | 25 +-- .../microprofile/graphql/ConfigKey.java | 0 .../microprofile/graphql/DateFormat.java | 0 .../microprofile/graphql/DefaultValue.java | 0 .../microprofile/graphql/Description.java | 0 .../eclipse/microprofile/graphql/Enum.java | 0 .../microprofile/graphql/GraphQLApi.java | 0 .../graphql/GraphQLException.java | 0 .../org/eclipse/microprofile/graphql/Id.java | 0 .../eclipse/microprofile/graphql/Ignore.java | 0 .../eclipse/microprofile/graphql/Input.java | 0 .../microprofile/graphql/Interface.java | 0 .../microprofile/graphql/Mutation.java | 0 .../eclipse/microprofile/graphql/Name.java | 0 .../eclipse/microprofile/graphql/NonNull.java | 0 .../microprofile/graphql/NumberFormat.java | 0 .../eclipse/microprofile/graphql/Query.java | 0 .../eclipse/microprofile/graphql/Source.java | 0 .../eclipse/microprofile/graphql/Type.java | 0 .../microprofile/graphql/package-info.java | 0 .../main/resources/META-INF/placeholder.txt | 0 .../graphql/DefaultValueTest.java | 0 .../microprofile/graphql/EnumTest.java | 0 .../microprofile/graphql/IgnoreTest.java | 0 .../microprofile/graphql/InputTest.java | 0 .../microprofile/graphql/MutationTest.java | 0 .../microprofile/graphql/NameTest.java | 0 .../microprofile/graphql/QueryTest.java | 0 .../microprofile/graphql/TypeTest.java | 0 server/pom.xml | 37 ++++ {spec => server/spec}/.gitignore | 0 server/spec/pom.xml | 67 ++++++ .../src/main/asciidoc/components.asciidoc | 0 .../asciidoc/components/arguments.asciidoc | 0 .../components/generated_schema.asciidoc | 0 .../asciidoc/components/graphqlapi.asciidoc | 0 .../asciidoc/components/lifecycle.asciidoc | 0 .../asciidoc/components/mutations.asciidoc | 0 .../main/asciidoc/components/queries.asciidoc | 0 .../spec}/src/main/asciidoc/entities.asciidoc | 0 .../asciidoc/entities/default_values.asciidoc | 0 .../asciidoc/entities/description.asciidoc | 0 .../src/main/asciidoc/entities/enums.asciidoc | 0 .../entities/ignorable_fields.asciidoc | 0 .../main/asciidoc/entities/naming.asciidoc | 0 .../entities/non-nullable_fields.asciidoc | 0 .../main/asciidoc/entities/objects.asciidoc | 0 .../main/asciidoc/entities/scalars.asciidoc | 0 .../src/main/asciidoc/errorhandling.asciidoc | 0 server/spec/src/main/asciidoc/index.asciidoc | 37 ++++ .../spec}/src/main/asciidoc/intro.asciidoc | 0 .../src/main/asciidoc/license-alv2.asciidoc | 42 ++++ .../src/main/asciidoc/release_notes.asciidoc | 0 server/spec/src/main/asciidoc/server.asciidoc | 30 +++ .../spec/src/main/resources/META-INF/LICENSE | 201 ++++++++++++++++++ .../spec/src/main/resources/META-INF/NOTICE | 13 ++ {tck => server/tck}/.gitignore | 0 {tck => server/tck}/README.asciidoc | 0 {tck => server/tck}/high-level.drawio | 0 {tck => server/tck}/high-level.png | Bin {tck => server/tck}/pom.xml | 41 +--- {tck => server/tck}/running_the_tck.asciidoc | 0 .../graphql/tck/apps/basic/api/BasicEnum.java | 0 .../tck/apps/basic/api/BasicInput.java | 0 .../tck/apps/basic/api/BasicInterface.java | 0 .../graphql/tck/apps/basic/api/BasicType.java | 0 .../tck/apps/basic/api/ScalarHolder.java | 0 .../tck/apps/basic/api/ScalarTestApi.java | 0 .../apps/superhero/api/CsvIOException.java | 0 .../superhero/api/FlawNotFoundException.java | 0 .../tck/apps/superhero/api/HeroFinder.java | 0 .../api/SuperHeroLookupException.java | 0 .../api/WeaknessNotFoundException.java | 0 .../db/DuplicateSidekickException.java | 0 .../db/DuplicateSuperHeroException.java | 0 .../tck/apps/superhero/db/HeroDatabase.java | 0 .../tck/apps/superhero/db/HeroLocator.java | 0 .../apps/superhero/db/SidekickDatabase.java | 0 .../superhero/db/UnknownHeroException.java | 0 .../db/UnknownSidekickException.java | 0 .../superhero/db/UnknownTeamException.java | 0 .../tck/apps/superhero/model/Character.java | 0 .../tck/apps/superhero/model/Item.java | 0 .../tck/apps/superhero/model/Sidekick.java | 0 .../tck/apps/superhero/model/SuperHero.java | 0 .../tck/apps/superhero/model/Team.java | 0 .../tck/apps/superhero/model/Token.java | 0 .../model/UnknownCharacterException.java | 0 .../graphql/tck/dynamic/DeployableUnit.java | 0 .../graphql/tck/dynamic/DynamicPaths.java | 0 .../tck/dynamic/ExecutionDynamicTest.java | 0 .../dynamic/SchemaDynamicValidityTest.java | 0 .../execution/GraphQLTestDataProvider.java | 0 .../tck/dynamic/execution/PrintUtil.java | 0 .../tck/dynamic/execution/TestData.java | 0 .../schema/SchemaTestDataProvider.java | 0 .../graphql/tck/dynamic/schema/TestData.java | 0 .../src/main/resources/META-INF/beans.xml | 0 .../META-INF/microprofile-config.properties | 0 .../tests/addHeroToTeam/cleanup.graphql | 0 .../tests/addHeroToTeam/input.graphql | 0 .../resources/tests/addHeroToTeam/output.json | 0 .../tests/addHeroToTeam/test.properties | 0 .../cleanup.graphql | 0 .../addHeroToTeamWithVariables/input.graphql | 0 .../addHeroToTeamWithVariables/output.json | 0 .../test.properties | 0 .../addHeroToTeamWithVariables/variables.json | 0 .../tests/addItemToHero/cleanup.graphql | 0 .../tests/addItemToHero/input.graphql | 0 .../resources/tests/addItemToHero/output.json | 0 .../tests/addItemToHero/test.properties | 0 .../cleanup.graphql | 0 .../input.graphql | 0 .../output.json | 0 .../test.properties | 0 .../tests/allAvengers/httpHeader.properties | 0 .../resources/tests/allAvengers/input.graphql | 0 .../resources/tests/allAvengers/output.json | 0 .../tests/allAvengers/test.properties | 0 .../allAvengersWithVariables/input.graphql | 0 .../allAvengersWithVariables/output.json | 0 .../allAvengersWithVariables/test.properties | 0 .../allAvengersWithVariables/variables.json | 0 .../resources/tests/allHeroes/input.graphql | 0 .../resources/tests/allHeroes/output.json | 0 .../resources/tests/allHeroes/test.properties | 0 .../allHeroesInDefaultLocation/input.graphql | 0 .../allHeroesInDefaultLocation/output.json | 0 .../test.properties | 0 .../input.graphql | 0 .../allHeroesWithCurrentLocation/output.json | 0 .../test.properties | 0 .../resources/tests/bankbalance/input.graphql | 0 .../resources/tests/bankbalance/output.json | 0 .../tests/bankbalance/test.properties | 0 .../tests/bankbalanceUS/input.graphql | 0 .../resources/tests/bankbalanceUS/output.json | 0 .../tests/bankbalanceUS/test.properties | 0 .../resources/tests/basicScalar/input.graphql | 0 .../resources/tests/basicScalar/output.json | 0 .../input.graphql | 0 .../basicScalarDateTransformation/output.json | 0 .../tests/basicScalarMutation/input.graphql | 0 .../tests/basicScalarMutation/output.json | 0 .../input.graphql | 0 .../output.json | 0 .../tests/basicScalarShort/input.graphql | 0 .../tests/basicScalarShort/output.json | 0 .../basicScalarShortObject/input.graphql | 0 .../tests/basicScalarShortObject/output.json | 0 .../main/resources/tests/basicScalarTests.csv | 0 .../resources/tests/battle/cleanup.graphql | 0 .../main/resources/tests/battle/input.graphql | 0 .../main/resources/tests/battle/output.json | 0 .../resources/tests/battle/test.properties | 0 .../tests/battleWithFormat/cleanup.graphql | 0 .../tests/battleWithFormat/input.graphql | 0 .../tests/battleWithFormat/output.json | 0 .../tests/battleWithFormat/test.properties | 0 .../resources/tests/beenThere/cleanup.graphql | 0 .../resources/tests/beenThere/input.graphql | 0 .../resources/tests/beenThere/output.json | 0 .../resources/tests/beenThere/test.properties | 0 .../resources/tests/birthday/cleanup.graphql | 0 .../resources/tests/birthday/input.graphql | 0 .../main/resources/tests/birthday/output.json | 0 .../resources/tests/birthday/test.properties | 0 .../tests/calendarEntries/cleanup.graphql | 0 .../tests/calendarEntries/input.graphql | 0 .../tests/calendarEntries/output.json | 0 .../tests/calendarEntries/test.properties | 0 .../resources/tests/checkin/cleanup.graphql | 0 .../resources/tests/checkin/input.graphql | 0 .../main/resources/tests/checkin/output.json | 0 .../resources/tests/checkin/test.properties | 0 .../tests/checkinWithFormat/cleanup.graphql | 0 .../tests/checkinWithFormat/input.graphql | 0 .../tests/checkinWithFormat/output.json | 0 .../tests/checkinWithFormat/test.properties | 0 .../tests/createNewHero/cleanup.graphql | 0 .../tests/createNewHero/input.graphql | 0 .../resources/tests/createNewHero/output.json | 0 .../tests/createNewHero/test.properties | 0 .../cleanup.graphql | 0 .../createNewHeroWithVariables/input.graphql | 0 .../createNewHeroWithVariables/output.json | 0 .../test.properties | 0 .../createNewHeroWithVariables/variables.json | 0 .../cleanup.graphql | 0 .../input.graphql | 0 .../output.json | 0 .../test.properties | 0 .../tests/createNewHeros/cleanup.graphql | 0 .../tests/createNewHeros/input.graphql | 0 .../tests/createNewHeros/output.json | 0 .../tests/createNewHeros/test.properties | 0 .../tests/createNewHerosArray/cleanup.graphql | 0 .../tests/createNewHerosArray/input.graphql | 0 .../tests/createNewHerosArray/output.json | 0 .../tests/createNewHerosArray/test.properties | 0 .../errorHandling/blacklist/input.graphql | 0 .../tests/errorHandling/blacklist/output.json | 0 .../errorHandling/blacklist/test.properties | 0 .../blacklistTransitive/input.graphql | 0 .../blacklistTransitive/output.json | 0 .../blacklistTransitive/test.properties | 0 .../createNewNullNamedHero/input.graphql | 0 .../createNewNullNamedHero/output.json | 0 .../createNewNullNamedHero/test.properties | 0 .../createNewNullNamedTeam/cleanup.graphql | 0 .../createNewNullNamedTeam/input.graphql | 0 .../createNewNullNamedTeam/output.json | 0 .../createNewNullNamedTeam/prepare.graphql | 0 .../createNewNullNamedTeam/test.properties | 0 .../createNewUnnamedHero/input.graphql | 0 .../createNewUnnamedHero/output.json | 0 .../createNewUnnamedHero/test.properties | 0 .../invalidDataTypeValue/input.graphql | 0 .../invalidDataTypeValue/output.json | 0 .../invalidDataTypeValue/test.properties | 0 .../invalidEnumValue/cleanup.graphql | 0 .../invalidEnumValue/input.graphql | 0 .../invalidEnumValue/output.json | 0 .../invalidEnumValue/test.properties | 0 .../input.graphql | 0 .../output.json | 0 .../test.properties | 0 .../input.graphql | 0 .../output.json | 0 .../test.properties | 0 .../invalidLocalDateTimeValue/input.graphql | 0 .../invalidLocalDateTimeValue/output.json | 0 .../invalidLocalDateTimeValue/test.properties | 0 .../invalidLocalDateValue/input.graphql | 0 .../invalidLocalDateValue/output.json | 0 .../invalidLocalDateValue/test.properties | 0 .../input.graphql | 0 .../output.json | 0 .../test.properties | 0 .../invalidLocalTimeValue/input.graphql | 0 .../invalidLocalTimeValue/output.json | 0 .../invalidLocalTimeValue/test.properties | 0 .../errorHandling/javaError/input.graphql | 0 .../tests/errorHandling/javaError/output.json | 0 .../errorHandling/javaError/test.properties | 0 .../cleanup.graphql | 0 .../input.graphql | 0 .../output.json | 0 .../test.properties | 0 .../input.graphql | 0 .../output.json | 0 .../test.properties | 0 .../input.graphql | 0 .../output.json | 0 .../test.properties | 0 .../runtimeException/input.graphql | 0 .../runtimeException/output.json | 0 .../runtimeException/test.properties | 0 .../errorHandling/unknownField/input.graphql | 0 .../errorHandling/unknownField/output.json | 0 .../unknownField/test.properties | 0 .../input.graphql | 0 .../output.json | 0 .../test.properties | 0 .../unknownMutation/input.graphql | 0 .../errorHandling/unknownMutation/output.json | 0 .../unknownMutation/test.properties | 0 .../errorHandling/unknownQuery/input.graphql | 0 .../errorHandling/unknownQuery/output.json | 0 .../unknownQuery/test.properties | 0 .../errorHandling/whitelist/input.graphql | 0 .../tests/errorHandling/whitelist/output.json | 0 .../errorHandling/whitelist/test.properties | 0 .../whitelistTransitive/input.graphql | 0 .../whitelistTransitive/output.json | 0 .../whitelistTransitive/test.properties | 0 .../tests/favouriteDrinkSize/cleanup.graphql | 0 .../tests/favouriteDrinkSize/input.graphql | 0 .../tests/favouriteDrinkSize/output.json | 0 .../tests/favouriteDrinkSize/test.properties | 0 .../favouriteDrinkSizeML/cleanup.graphql | 0 .../tests/favouriteDrinkSizeML/input.graphql | 0 .../tests/favouriteDrinkSizeML/output.json | 0 .../favouriteDrinkSizeML/test.properties | 0 .../tests/getCharacter/input.graphql | 42 ++++ .../resources/tests/getCharacter/output.json | 37 ++++ .../tests/getCharacter}/test.properties | 0 .../resources/tests/getHero/input.graphql | 0 .../main/resources/tests/getHero/output.json | 0 .../resources/tests/getHero}/test.properties | 0 .../tests/getHeroWithItems/input.graphql | 0 .../tests/getHeroWithItems/output.json | 0 .../tests/getHeroWithItems/test.properties | 2 + .../tests/importantDates/cleanup.graphql | 0 .../tests/importantDates/input.graphql | 0 .../tests/importantDates/output.json | 0 .../tests/importantDates/test.properties | 0 .../tests/importantDatesUS/cleanup.graphql | 0 .../tests/importantDatesUS/input.graphql | 0 .../tests/importantDatesUS/output.json | 0 .../tests/importantDatesUS/test.properties | 0 .../resources/tests/jsonbProps/input.graphql | 0 .../resources/tests/jsonbProps/output.json | 0 .../tests/jsonbProps/test.properties | 0 .../resources/tests/kidsAges/cleanup.graphql | 0 .../resources/tests/kidsAges/input.graphql | 0 .../main/resources/tests/kidsAges/output.json | 0 .../resources/tests/kidsAges/test.properties | 0 .../resources/tests/location/cleanup.graphql | 0 .../resources/tests/location/input.graphql | 0 .../main/resources/tests/location/output.json | 0 .../resources/tests/location/test.properties | 0 .../tests/locationArray/cleanup.graphql | 0 .../tests/locationArray/input.graphql | 0 .../resources/tests/locationArray/output.json | 0 .../tests/locationArray/test.properties | 0 .../tests/locationLongLat/cleanup.graphql | 0 .../tests/locationLongLat/input.graphql | 0 .../tests/locationLongLat/output.json | 0 .../tests/locationLongLat/test.properties | 0 .../locationLongLatArray/cleanup.graphql | 0 .../tests/locationLongLatArray/input.graphql | 0 .../tests/locationLongLatArray/output.json | 0 .../locationLongLatArray/test.properties | 0 .../resources/tests/networth/cleanup.graphql | 0 .../resources/tests/networth/input.graphql | 0 .../main/resources/tests/networth/output.json | 0 .../resources/tests/networth/test.properties | 0 .../tests/networthUSD/cleanup.graphql | 0 .../resources/tests/networthUSD/input.graphql | 0 .../resources/tests/networthUSD/output.json | 0 .../tests/networthUSD/test.properties | 0 .../src/main/resources/tests/nonNullTests.csv | 0 .../resources/tests/nullField/cleanup.graphql | 0 .../resources/tests/nullField/input.graphql | 0 .../resources/tests/nullField/output.json | 0 .../resources/tests/nullField/prepare.graphql | 0 .../resources/tests/nullField/test.properties | 0 .../tests/removeHero/cleanup.graphql | 0 .../resources/tests/removeHero/input.graphql | 0 .../resources/tests/removeHero/output.json | 0 .../tests/removeHero/test.properties | 0 .../tests/removeHeroFromTeam/cleanup.graphql | 0 .../tests/removeHeroFromTeam/input.graphql | 0 .../tests/removeHeroFromTeam/output.json | 0 .../tests/removeHeroFromTeam/test.properties | 0 .../src/main/resources/tests/schemaTests.csv | 0 .../tests/setIdNumber/cleanup.graphql | 0 .../resources/tests/setIdNumber/input.graphql | 0 .../resources/tests/setIdNumber/output.json | 0 .../tests/setIdNumber/test.properties | 0 .../setIdNumberWithFormat/cleanup.graphql | 0 .../tests/setIdNumberWithFormat/input.graphql | 0 .../tests/setIdNumberWithFormat/output.json | 0 .../setIdNumberWithFormat/test.properties | 0 .../tests/setRivalTeam/cleanup.graphql | 0 .../tests/setRivalTeam/input.graphql | 0 .../resources/tests/setRivalTeam/output.json | 0 .../tests/setRivalTeam/test.properties | 0 .../tests/startPatrolling/cleanup.graphql | 0 .../tests/startPatrolling/input.graphql | 0 .../tests/startPatrolling/output.json | 0 .../tests/startPatrolling/test.properties | 0 .../startPatrollingWithFormat/cleanup.graphql | 0 .../startPatrollingWithFormat/input.graphql | 0 .../startPatrollingWithFormat/output.json | 0 .../startPatrollingWithFormat/test.properties | 0 .../resources/tests/track/cleanup.graphql | 0 .../main/resources/tests/track/input.graphql | 0 .../main/resources/tests/track/output.json | 0 .../resources/tests/track/test.properties | 0 .../tests/trackLongLat/cleanup.graphql | 0 .../tests/trackLongLat/input.graphql | 0 .../resources/tests/trackLongLat/output.json | 0 .../tests/trackLongLat/test.properties | 0 .../updateItemPowerLevel/cleanup.graphql | 0 .../tests/updateItemPowerLevel/input.graphql | 0 .../tests/updateItemPowerLevel/output.json | 0 .../updateItemPowerLevel/test.properties | 0 .../cleanup.graphql | 0 .../input.graphql | 0 .../output.json | 0 .../test.properties | 0 406 files changed, 1355 insertions(+), 110 deletions(-) create mode 100644 client/api/pom.xml create mode 100644 client/pom.xml create mode 100644 client/spec/pom.xml create mode 100644 client/spec/src/main/asciidoc/client.asciidoc create mode 100644 client/spec/src/main/asciidoc/index.asciidoc rename {spec => client/spec}/src/main/asciidoc/license-alv2.asciidoc (100%) create mode 100644 client/spec/src/main/asciidoc/release_notes.asciidoc rename {spec => client/spec}/src/main/resources/META-INF/LICENSE (100%) rename {spec => client/spec}/src/main/resources/META-INF/NOTICE (100%) create mode 100644 client/tck/pom.xml create mode 100644 full/api/pom.xml create mode 100644 full/pom.xml rename {spec => full/spec}/pom.xml (56%) rename spec/src/main/asciidoc/microprofile-graphql.asciidoc => full/spec/src/main/asciidoc/index.asciidoc (85%) create mode 100644 full/spec/src/main/asciidoc/license-alv2.asciidoc create mode 100644 full/spec/src/main/resources/META-INF/LICENSE create mode 100644 full/spec/src/main/resources/META-INF/NOTICE create mode 100644 full/tck/pom.xml rename {api => server/api}/.gitignore (100%) rename {api => server/api}/bnd.bnd (100%) rename {api => server/api}/pom.xml (81%) rename {api => server/api}/src/main/java/org/eclipse/microprofile/graphql/ConfigKey.java (100%) rename {api => server/api}/src/main/java/org/eclipse/microprofile/graphql/DateFormat.java (100%) rename {api => server/api}/src/main/java/org/eclipse/microprofile/graphql/DefaultValue.java (100%) rename {api => server/api}/src/main/java/org/eclipse/microprofile/graphql/Description.java (100%) rename {api => server/api}/src/main/java/org/eclipse/microprofile/graphql/Enum.java (100%) rename {api => server/api}/src/main/java/org/eclipse/microprofile/graphql/GraphQLApi.java (100%) rename {api => server/api}/src/main/java/org/eclipse/microprofile/graphql/GraphQLException.java (100%) rename {api => server/api}/src/main/java/org/eclipse/microprofile/graphql/Id.java (100%) rename {api => server/api}/src/main/java/org/eclipse/microprofile/graphql/Ignore.java (100%) rename {api => server/api}/src/main/java/org/eclipse/microprofile/graphql/Input.java (100%) rename {api => server/api}/src/main/java/org/eclipse/microprofile/graphql/Interface.java (100%) rename {api => server/api}/src/main/java/org/eclipse/microprofile/graphql/Mutation.java (100%) rename {api => server/api}/src/main/java/org/eclipse/microprofile/graphql/Name.java (100%) rename {api => server/api}/src/main/java/org/eclipse/microprofile/graphql/NonNull.java (100%) rename {api => server/api}/src/main/java/org/eclipse/microprofile/graphql/NumberFormat.java (100%) rename {api => server/api}/src/main/java/org/eclipse/microprofile/graphql/Query.java (100%) rename {api => server/api}/src/main/java/org/eclipse/microprofile/graphql/Source.java (100%) rename {api => server/api}/src/main/java/org/eclipse/microprofile/graphql/Type.java (100%) rename {api => server/api}/src/main/java/org/eclipse/microprofile/graphql/package-info.java (100%) rename {api => server/api}/src/main/resources/META-INF/placeholder.txt (100%) rename {api => server/api}/src/test/java/org/eclipse/microprofile/graphql/DefaultValueTest.java (100%) rename {api => server/api}/src/test/java/org/eclipse/microprofile/graphql/EnumTest.java (100%) rename {api => server/api}/src/test/java/org/eclipse/microprofile/graphql/IgnoreTest.java (100%) rename {api => server/api}/src/test/java/org/eclipse/microprofile/graphql/InputTest.java (100%) rename {api => server/api}/src/test/java/org/eclipse/microprofile/graphql/MutationTest.java (100%) rename {api => server/api}/src/test/java/org/eclipse/microprofile/graphql/NameTest.java (100%) rename {api => server/api}/src/test/java/org/eclipse/microprofile/graphql/QueryTest.java (100%) rename {api => server/api}/src/test/java/org/eclipse/microprofile/graphql/TypeTest.java (100%) create mode 100644 server/pom.xml rename {spec => server/spec}/.gitignore (100%) create mode 100644 server/spec/pom.xml rename {spec => server/spec}/src/main/asciidoc/components.asciidoc (100%) rename {spec => server/spec}/src/main/asciidoc/components/arguments.asciidoc (100%) rename {spec => server/spec}/src/main/asciidoc/components/generated_schema.asciidoc (100%) rename {spec => server/spec}/src/main/asciidoc/components/graphqlapi.asciidoc (100%) rename {spec => server/spec}/src/main/asciidoc/components/lifecycle.asciidoc (100%) rename {spec => server/spec}/src/main/asciidoc/components/mutations.asciidoc (100%) rename {spec => server/spec}/src/main/asciidoc/components/queries.asciidoc (100%) rename {spec => server/spec}/src/main/asciidoc/entities.asciidoc (100%) rename {spec => server/spec}/src/main/asciidoc/entities/default_values.asciidoc (100%) rename {spec => server/spec}/src/main/asciidoc/entities/description.asciidoc (100%) rename {spec => server/spec}/src/main/asciidoc/entities/enums.asciidoc (100%) rename {spec => server/spec}/src/main/asciidoc/entities/ignorable_fields.asciidoc (100%) rename {spec => server/spec}/src/main/asciidoc/entities/naming.asciidoc (100%) rename {spec => server/spec}/src/main/asciidoc/entities/non-nullable_fields.asciidoc (100%) rename {spec => server/spec}/src/main/asciidoc/entities/objects.asciidoc (100%) rename {spec => server/spec}/src/main/asciidoc/entities/scalars.asciidoc (100%) rename {spec => server/spec}/src/main/asciidoc/errorhandling.asciidoc (100%) create mode 100644 server/spec/src/main/asciidoc/index.asciidoc rename {spec => server/spec}/src/main/asciidoc/intro.asciidoc (100%) create mode 100644 server/spec/src/main/asciidoc/license-alv2.asciidoc rename {spec => server/spec}/src/main/asciidoc/release_notes.asciidoc (100%) create mode 100644 server/spec/src/main/asciidoc/server.asciidoc create mode 100644 server/spec/src/main/resources/META-INF/LICENSE create mode 100644 server/spec/src/main/resources/META-INF/NOTICE rename {tck => server/tck}/.gitignore (100%) rename {tck => server/tck}/README.asciidoc (100%) rename {tck => server/tck}/high-level.drawio (100%) rename {tck => server/tck}/high-level.png (100%) rename {tck => server/tck}/pom.xml (82%) rename {tck => server/tck}/running_the_tck.asciidoc (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicEnum.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicInput.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicInterface.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicType.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarHolder.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/CsvIOException.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/FlawNotFoundException.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/HeroFinder.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/SuperHeroLookupException.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/WeaknessNotFoundException.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/DuplicateSidekickException.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/DuplicateSuperHeroException.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/HeroDatabase.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/HeroLocator.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/SidekickDatabase.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownHeroException.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownSidekickException.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownTeamException.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Character.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Item.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Sidekick.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/SuperHero.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Team.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Token.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/UnknownCharacterException.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DeployableUnit.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DynamicPaths.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/SchemaDynamicValidityTest.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/PrintUtil.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java (100%) rename {tck => server/tck}/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/TestData.java (100%) rename {tck => server/tck}/src/main/resources/META-INF/beans.xml (100%) rename {tck => server/tck}/src/main/resources/META-INF/microprofile-config.properties (100%) rename {tck => server/tck}/src/main/resources/tests/addHeroToTeam/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/addHeroToTeam/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/addHeroToTeam/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/addHeroToTeam/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/addHeroToTeamWithVariables/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/addHeroToTeamWithVariables/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/addHeroToTeamWithVariables/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/addHeroToTeamWithVariables/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/addHeroToTeamWithVariables/variables.json (100%) rename {tck => server/tck}/src/main/resources/tests/addItemToHero/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/addItemToHero/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/addItemToHero/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/addItemToHero/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/addItemToHeroUsingDefaultValue/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/addItemToHeroUsingDefaultValue/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/addItemToHeroUsingDefaultValue/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/addItemToHeroUsingDefaultValue/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/allAvengers/httpHeader.properties (100%) rename {tck => server/tck}/src/main/resources/tests/allAvengers/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/allAvengers/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/allAvengers/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/allAvengersWithVariables/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/allAvengersWithVariables/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/allAvengersWithVariables/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/allAvengersWithVariables/variables.json (100%) rename {tck => server/tck}/src/main/resources/tests/allHeroes/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/allHeroes/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/allHeroes/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/allHeroesInDefaultLocation/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/allHeroesInDefaultLocation/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/allHeroesInDefaultLocation/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/allHeroesWithCurrentLocation/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/allHeroesWithCurrentLocation/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/allHeroesWithCurrentLocation/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/bankbalance/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/bankbalance/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/bankbalance/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/bankbalanceUS/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/bankbalanceUS/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/bankbalanceUS/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/basicScalar/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/basicScalar/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/basicScalarDateTransformation/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/basicScalarDateTransformation/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/basicScalarMutation/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/basicScalarMutation/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/basicScalarNumberTransformation/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/basicScalarNumberTransformation/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/basicScalarShort/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/basicScalarShort/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/basicScalarShortObject/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/basicScalarShortObject/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/basicScalarTests.csv (100%) rename {tck => server/tck}/src/main/resources/tests/battle/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/battle/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/battle/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/battle/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/battleWithFormat/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/battleWithFormat/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/battleWithFormat/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/battleWithFormat/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/beenThere/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/beenThere/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/beenThere/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/beenThere/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/birthday/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/birthday/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/birthday/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/birthday/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/calendarEntries/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/calendarEntries/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/calendarEntries/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/calendarEntries/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/checkin/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/checkin/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/checkin/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/checkin/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/checkinWithFormat/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/checkinWithFormat/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/checkinWithFormat/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/checkinWithFormat/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/createNewHero/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/createNewHero/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/createNewHero/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/createNewHero/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/createNewHeroWithVariables/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/createNewHeroWithVariables/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/createNewHeroWithVariables/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/createNewHeroWithVariables/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/createNewHeroWithVariables/variables.json (100%) rename {tck => server/tck}/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/createNewHeros/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/createNewHeros/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/createNewHeros/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/createNewHeros/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/createNewHerosArray/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/createNewHerosArray/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/createNewHerosArray/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/createNewHerosArray/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/blacklist/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/blacklist/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/blacklist/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/blacklistTransitive/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/blacklistTransitive/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/blacklistTransitive/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/createNewNullNamedHero/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/createNewNullNamedHero/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/createNewNullNamedHero/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/createNewNullNamedTeam/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/createNewNullNamedTeam/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/createNewNullNamedTeam/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/createNewNullNamedTeam/prepare.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/createNewNullNamedTeam/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/createNewUnnamedHero/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/createNewUnnamedHero/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/createNewUnnamedHero/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidDataTypeValue/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidDataTypeValue/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidDataTypeValue/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidEnumValue/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidEnumValue/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidEnumValue/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidEnumValue/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidLocalDateValue/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidLocalDateValue/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidLocalDateValue/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidLocalTimeValue/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidLocalTimeValue/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/invalidLocalTimeValue/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/javaError/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/javaError/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/javaError/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/runtimeException/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/runtimeException/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/runtimeException/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/unknownField/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/unknownField/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/unknownField/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/unknownMutation/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/unknownMutation/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/unknownMutation/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/unknownQuery/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/unknownQuery/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/unknownQuery/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/whitelist/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/whitelist/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/whitelist/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/whitelistTransitive/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/whitelistTransitive/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/errorHandling/whitelistTransitive/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/favouriteDrinkSize/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/favouriteDrinkSize/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/favouriteDrinkSize/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/favouriteDrinkSize/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/favouriteDrinkSizeML/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/favouriteDrinkSizeML/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/favouriteDrinkSizeML/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/favouriteDrinkSizeML/test.properties (100%) create mode 100644 server/tck/src/main/resources/tests/getCharacter/input.graphql create mode 100644 server/tck/src/main/resources/tests/getCharacter/output.json rename {tck/src/main/resources/tests/getHero => server/tck/src/main/resources/tests/getCharacter}/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/getHero/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/getHero/output.json (100%) rename {tck/src/main/resources/tests/getHeroWithItems => server/tck/src/main/resources/tests/getHero}/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/getHeroWithItems/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/getHeroWithItems/output.json (100%) create mode 100644 server/tck/src/main/resources/tests/getHeroWithItems/test.properties rename {tck => server/tck}/src/main/resources/tests/importantDates/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/importantDates/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/importantDates/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/importantDates/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/importantDatesUS/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/importantDatesUS/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/importantDatesUS/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/importantDatesUS/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/jsonbProps/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/jsonbProps/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/jsonbProps/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/kidsAges/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/kidsAges/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/kidsAges/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/kidsAges/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/location/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/location/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/location/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/location/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/locationArray/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/locationArray/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/locationArray/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/locationArray/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/locationLongLat/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/locationLongLat/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/locationLongLat/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/locationLongLat/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/locationLongLatArray/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/locationLongLatArray/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/locationLongLatArray/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/locationLongLatArray/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/networth/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/networth/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/networth/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/networth/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/networthUSD/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/networthUSD/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/networthUSD/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/networthUSD/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/nonNullTests.csv (100%) rename {tck => server/tck}/src/main/resources/tests/nullField/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/nullField/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/nullField/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/nullField/prepare.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/nullField/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/removeHero/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/removeHero/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/removeHero/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/removeHero/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/removeHeroFromTeam/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/removeHeroFromTeam/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/removeHeroFromTeam/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/removeHeroFromTeam/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/schemaTests.csv (100%) rename {tck => server/tck}/src/main/resources/tests/setIdNumber/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/setIdNumber/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/setIdNumber/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/setIdNumber/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/setIdNumberWithFormat/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/setIdNumberWithFormat/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/setIdNumberWithFormat/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/setIdNumberWithFormat/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/setRivalTeam/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/setRivalTeam/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/setRivalTeam/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/setRivalTeam/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/startPatrolling/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/startPatrolling/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/startPatrolling/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/startPatrolling/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/startPatrollingWithFormat/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/startPatrollingWithFormat/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/startPatrollingWithFormat/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/startPatrollingWithFormat/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/track/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/track/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/track/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/track/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/trackLongLat/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/trackLongLat/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/trackLongLat/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/trackLongLat/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/updateItemPowerLevel/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/updateItemPowerLevel/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/updateItemPowerLevel/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/updateItemPowerLevel/test.properties (100%) rename {tck => server/tck}/src/main/resources/tests/updateItemPowerLevelPercentage/cleanup.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/updateItemPowerLevelPercentage/input.graphql (100%) rename {tck => server/tck}/src/main/resources/tests/updateItemPowerLevelPercentage/output.json (100%) rename {tck => server/tck}/src/main/resources/tests/updateItemPowerLevelPercentage/test.properties (100%) diff --git a/.gitignore b/.gitignore index 0c9d7dba..64f7ca7b 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,9 @@ .idea .DS_Store **/*.iml +/server/target/ +/client/tck/target/ +/full/target/ +/full/api/target/ +/full/tck/target/ +/full/spec/target/ \ No newline at end of file diff --git a/client/api/pom.xml b/client/api/pom.xml new file mode 100644 index 00000000..d65e0da1 --- /dev/null +++ b/client/api/pom.xml @@ -0,0 +1,91 @@ + + + + 4.0.0 + + org.eclipse.microprofile.graphql + microprofile-graphql-client + 1.1-SNAPSHOT + ../ + + + microprofile-graphql-client-api + MicroProfile GraphQL Client :: API + Client-side code-first GraphQL APIs for MicroProfile :: API + + + + org.osgi + org.osgi.annotation.versioning + 1.1.0 + provided + + + org.testng + testng + test + + + + + + + biz.aQute.bnd + bnd-maven-plugin + + + + bnd-process + + + + + + org.apache.maven.plugins + maven-jar-plugin + + org.eclipse.microprofile.graphql.client + MicroProfile GraphQL Client bundle + + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + + + + + + + + + eclipse-jarsigner + + + + org.eclipse.cbi.maven.plugins + eclipse-jarsigner-plugin + + + + sign + + + + + + + + + \ No newline at end of file diff --git a/client/pom.xml b/client/pom.xml new file mode 100644 index 00000000..d30ad04c --- /dev/null +++ b/client/pom.xml @@ -0,0 +1,36 @@ + + + + 4.0.0 + + org.eclipse.microprofile.graphql + microprofile-graphql-parent + 1.1-SNAPSHOT + ../ + + + MicroProfile GraphQL Client + + Client-side code-first API for developing GraphQL services in MicroProfile + microprofile-graphql-client + pom + + spec + api + tck + + \ No newline at end of file diff --git a/client/spec/pom.xml b/client/spec/pom.xml new file mode 100644 index 00000000..f1cfb2a9 --- /dev/null +++ b/client/spec/pom.xml @@ -0,0 +1,67 @@ + + + + 4.0.0 + + org.eclipse.microprofile.graphql + microprofile-graphql-client + 1.1-SNAPSHOT + ../ + + + microprofile-graphql-client-spec + pom + + MicroProfile GraphQL Client :: Specification + Client-side code-first GraphQL APIs for MicroProfile :: Specification + + + clean package + + + + org.asciidoctor + asciidoctor-maven-plugin + + + + generate-pdf-doc + generate-resources + + process-asciidoc + + + pdf + + + + output-html + generate-resources + + process-asciidoc + + + html5 + + + + + + + + + \ No newline at end of file diff --git a/client/spec/src/main/asciidoc/client.asciidoc b/client/spec/src/main/asciidoc/client.asciidoc new file mode 100644 index 00000000..1377ed3a --- /dev/null +++ b/client/spec/src/main/asciidoc/client.asciidoc @@ -0,0 +1,22 @@ +// +// Copyright (c) 2020 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + += MicroProfile GraphQL Client + +Here add the client spec. \ No newline at end of file diff --git a/client/spec/src/main/asciidoc/index.asciidoc b/client/spec/src/main/asciidoc/index.asciidoc new file mode 100644 index 00000000..537b84dc --- /dev/null +++ b/client/spec/src/main/asciidoc/index.asciidoc @@ -0,0 +1,37 @@ +// +// Copyright (c) 2020 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + += MicroProfile GraphQL Client +:authors: Jean-Francois James, Phillip Krüger, Andy McCright, Jean-Baptiste Roux, Bojan Tomic, Adam Anderson +:email: microprofile@googlegroups.com +:version-label!: +:sectanchors: +:doctype: book +:license: Apache License v2.0 +:source-highlighter: coderay +:toc: left +:toclevels: 4 +:sectnumlevels: 4 +ifdef::backend-pdf[] +:pagenums: +endif::[] + +include::license-alv2.asciidoc[] + +include::client.asciidoc[] \ No newline at end of file diff --git a/spec/src/main/asciidoc/license-alv2.asciidoc b/client/spec/src/main/asciidoc/license-alv2.asciidoc similarity index 100% rename from spec/src/main/asciidoc/license-alv2.asciidoc rename to client/spec/src/main/asciidoc/license-alv2.asciidoc diff --git a/client/spec/src/main/asciidoc/release_notes.asciidoc b/client/spec/src/main/asciidoc/release_notes.asciidoc new file mode 100644 index 00000000..c260357b --- /dev/null +++ b/client/spec/src/main/asciidoc/release_notes.asciidoc @@ -0,0 +1,23 @@ +// +// Copyright (c) 2020 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// You may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// Contributors: +// Jean-Francois James, Phillip Krüger, Andy McCright, Jean-Baptiste Roux, Bojan Tomic, Adam Anderson + + +[[release_notes_11]] +== Release Notes for MicroProfile GraphQL Client 1.1 diff --git a/spec/src/main/resources/META-INF/LICENSE b/client/spec/src/main/resources/META-INF/LICENSE similarity index 100% rename from spec/src/main/resources/META-INF/LICENSE rename to client/spec/src/main/resources/META-INF/LICENSE diff --git a/spec/src/main/resources/META-INF/NOTICE b/client/spec/src/main/resources/META-INF/NOTICE similarity index 100% rename from spec/src/main/resources/META-INF/NOTICE rename to client/spec/src/main/resources/META-INF/NOTICE diff --git a/client/tck/pom.xml b/client/tck/pom.xml new file mode 100644 index 00000000..7ed2fa4d --- /dev/null +++ b/client/tck/pom.xml @@ -0,0 +1,77 @@ + + + + 4.0.0 + + org.eclipse.microprofile.graphql + microprofile-graphql-client + 1.1-SNAPSHOT + ../ + + + microprofile-graphql-client-tck + MicroProfile GraphQL Client :: TCK + Client-side code-first GraphQL APIs for MicroProfile :: TCK + + + + ${project.groupId} + microprofile-graphql-client-api + ${project.version} + provided + + + + + + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + + jar + + + + + + + + + + eclipse-jarsigner + + + + org.eclipse.cbi.maven.plugins + eclipse-jarsigner-plugin + + + + sign + + + + + + + + + \ No newline at end of file diff --git a/full/api/pom.xml b/full/api/pom.xml new file mode 100644 index 00000000..984d61c2 --- /dev/null +++ b/full/api/pom.xml @@ -0,0 +1,42 @@ + + + + 4.0.0 + + org.eclipse.microprofile.graphql + microprofile-graphql-full + 1.1-SNAPSHOT + ../ + + + microprofile-graphql-api + MicroProfile GraphQL Full :: API + Code-first GraphQL APIs for MicroProfile :: API + + + + ${project.groupId} + microprofile-graphql-server-api + ${project.version} + + + ${project.groupId} + microprofile-graphql-client-api + ${project.version} + + + \ No newline at end of file diff --git a/full/pom.xml b/full/pom.xml new file mode 100644 index 00000000..9ea0beae --- /dev/null +++ b/full/pom.xml @@ -0,0 +1,37 @@ + + + + 4.0.0 + + org.eclipse.microprofile.graphql + microprofile-graphql-parent + 1.1-SNAPSHOT + ../ + + + MicroProfile GraphQL Full + + Code-first API for developing GraphQL services in MicroProfile + microprofile-graphql-full + pom + + + spec + api + tck + + \ No newline at end of file diff --git a/spec/pom.xml b/full/spec/pom.xml similarity index 56% rename from spec/pom.xml rename to full/spec/pom.xml index 445a09f0..7c29b00f 100644 --- a/spec/pom.xml +++ b/full/spec/pom.xml @@ -18,27 +18,17 @@ 4.0.0 org.eclipse.microprofile.graphql - microprofile-graphql-parent + microprofile-graphql-full 1.1-SNAPSHOT ../ - + microprofile-graphql-spec pom - MicroProfile GraphQL :: Specification + MicroProfile GraphQL Full :: Specification Code-first GraphQL APIs for MicroProfile :: Specification - - 1.6.0 - 1.5.0 - - Apache License v 2.0 - MMMM dd, yyyy - ${maven.build.timestamp} - - - clean package @@ -46,25 +36,7 @@ org.asciidoctor asciidoctor-maven-plugin - ${asciidoctor-maven.version} - - - src/main/asciidoc - microprofile-graphql.asciidoc - coderay - true - - ${license} - - - - - org.asciidoctor - asciidoctorj-pdf - ${asciidoctorj-pdf.version} - - generate-pdf-doc @@ -74,11 +46,6 @@ pdf - - ${project.version} - ${revremark} - ${revisiondate} - @@ -89,11 +56,6 @@ html5 - - ${project.version} - ${revremark} - ${revisiondate} - @@ -102,6 +64,4 @@ - - - + \ No newline at end of file diff --git a/spec/src/main/asciidoc/microprofile-graphql.asciidoc b/full/spec/src/main/asciidoc/index.asciidoc similarity index 85% rename from spec/src/main/asciidoc/microprofile-graphql.asciidoc rename to full/spec/src/main/asciidoc/index.asciidoc index 99c01737..89937092 100644 --- a/spec/src/main/asciidoc/microprofile-graphql.asciidoc +++ b/full/spec/src/main/asciidoc/index.asciidoc @@ -30,18 +30,11 @@ :sectnumlevels: 4 ifdef::backend-pdf[] :pagenums: +:serverdir: ../../../../../server/spec/src/main/asciidoc +:clientdir: ../../../../../client/spec/src/main/asciidoc endif::[] - include::license-alv2.asciidoc[] -== MicroProfile GraphQL -include::intro.asciidoc[] - -include::entities.asciidoc[] - -include::components.asciidoc[] - -include::errorhandling.asciidoc[] - -include::release_notes.asciidoc[] +include::{serverdir}/server.asciidoc[] +include::{clientdir}/client.asciidoc[] \ No newline at end of file diff --git a/full/spec/src/main/asciidoc/license-alv2.asciidoc b/full/spec/src/main/asciidoc/license-alv2.asciidoc new file mode 100644 index 00000000..47793817 --- /dev/null +++ b/full/spec/src/main/asciidoc/license-alv2.asciidoc @@ -0,0 +1,42 @@ +// +// Copyright (c) 2020 Contributors to the Eclipse Foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +[subs="normal"] +.... + +Specification: {doctitle} + +Version: {revnumber} + +Status: {revremark} + +Release: {revdate} + +Copyright (c) 2020 Contributors to the Eclipse Foundation + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +.... diff --git a/full/spec/src/main/resources/META-INF/LICENSE b/full/spec/src/main/resources/META-INF/LICENSE new file mode 100644 index 00000000..fe731048 --- /dev/null +++ b/full/spec/src/main/resources/META-INF/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Contributors to the Eclipse Foundation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/full/spec/src/main/resources/META-INF/NOTICE b/full/spec/src/main/resources/META-INF/NOTICE new file mode 100644 index 00000000..37dc70ad --- /dev/null +++ b/full/spec/src/main/resources/META-INF/NOTICE @@ -0,0 +1,13 @@ +========================================================================= +== NOTICE file corresponding to section 4(d) of the Apache License, == +== Version 2.0, in this case for Microprofile GraphQL == +========================================================================= + +SPDXVersion: SPDX-2.1 +PackageName: Eclipse Microprofile +PackageHomePage: http://www.eclipse.org/microprofile +PackageLicenseDeclared: Apache-2.0 + +PackageCopyrightText: +J. Andrew McCright j.andrew.mccright@gmail.com + diff --git a/full/tck/pom.xml b/full/tck/pom.xml new file mode 100644 index 00000000..8f248570 --- /dev/null +++ b/full/tck/pom.xml @@ -0,0 +1,42 @@ + + + + 4.0.0 + + org.eclipse.microprofile.graphql + microprofile-graphql-full + 1.1-SNAPSHOT + ../ + + + microprofile-graphql-tck + MicroProfile GraphQL Full :: TCK + Code-first GraphQL APIs for MicroProfile :: TCK + + + + ${project.groupId} + microprofile-graphql-server-tck + ${project.version} + + + ${project.groupId} + microprofile-graphql-client-tck + ${project.version} + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index efa3badc..2cb40eaa 100644 --- a/pom.xml +++ b/pom.xml @@ -32,12 +32,23 @@ 1.8 1.8 + + 4.0 2.0.2 - - 7.0.0 + 1.1.6 + 1.0.2 + + + 7.1.0 1.6.0.Final + + 1.6.0 + 1.5.0 + MMMM dd, yyyy + ${maven.build.timestamp} Draft + Apache License v 2.0 @@ -90,13 +101,23 @@ - spec - api - tck + server + client + full + + + + jakarta.enterprise jakarta.enterprise.cdi-api @@ -109,6 +130,18 @@ + + jakarta.json.bind + jakarta.json.bind-api + ${jsonb-api.version} + provided + + + jakarta.json + jakarta.json-api + ${jsonp-api.version} + provided + @@ -172,9 +205,58 @@ maven-gpg-plugin 1.6 + + biz.aQute.bnd + bnd-maven-plugin + 4.3.1 + + + org.asciidoctor + asciidoctor-maven-plugin + ${asciidoctor-maven.version} + + + src/main/asciidoc + index.asciidoc + coderay + true + + ${license} + + + + ${project.version} + ${revremark} + ${revisiondate} + + + + + + org.asciidoctor + asciidoctorj-pdf + ${asciidoctorj-pdf.version} + + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + + org.apache.maven.plugins maven-checkstyle-plugin diff --git a/api/.gitignore b/server/api/.gitignore similarity index 100% rename from api/.gitignore rename to server/api/.gitignore diff --git a/api/bnd.bnd b/server/api/bnd.bnd similarity index 100% rename from api/bnd.bnd rename to server/api/bnd.bnd diff --git a/api/pom.xml b/server/api/pom.xml similarity index 81% rename from api/pom.xml rename to server/api/pom.xml index 6aac9619..c287a3a1 100644 --- a/api/pom.xml +++ b/server/api/pom.xml @@ -16,17 +16,16 @@ --> 4.0.0 - org.eclipse.microprofile.graphql - microprofile-graphql-parent + microprofile-graphql-server 1.1-SNAPSHOT ../ - microprofile-graphql-api - MicroProfile GraphQL :: API - Code-first GraphQL APIs for MicroProfile :: API + microprofile-graphql-server-api + MicroProfile GraphQL Server :: API + Server-side code-first GraphQL APIs for MicroProfile :: API @@ -44,23 +43,10 @@ - - org.apache.maven.plugins - maven-javadoc-plugin - - - attach-javadocs - - jar - - - - biz.aQute.bnd bnd-maven-plugin - 4.3.1 @@ -103,5 +89,4 @@ - - + \ No newline at end of file diff --git a/api/src/main/java/org/eclipse/microprofile/graphql/ConfigKey.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/ConfigKey.java similarity index 100% rename from api/src/main/java/org/eclipse/microprofile/graphql/ConfigKey.java rename to server/api/src/main/java/org/eclipse/microprofile/graphql/ConfigKey.java diff --git a/api/src/main/java/org/eclipse/microprofile/graphql/DateFormat.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/DateFormat.java similarity index 100% rename from api/src/main/java/org/eclipse/microprofile/graphql/DateFormat.java rename to server/api/src/main/java/org/eclipse/microprofile/graphql/DateFormat.java diff --git a/api/src/main/java/org/eclipse/microprofile/graphql/DefaultValue.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/DefaultValue.java similarity index 100% rename from api/src/main/java/org/eclipse/microprofile/graphql/DefaultValue.java rename to server/api/src/main/java/org/eclipse/microprofile/graphql/DefaultValue.java diff --git a/api/src/main/java/org/eclipse/microprofile/graphql/Description.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/Description.java similarity index 100% rename from api/src/main/java/org/eclipse/microprofile/graphql/Description.java rename to server/api/src/main/java/org/eclipse/microprofile/graphql/Description.java diff --git a/api/src/main/java/org/eclipse/microprofile/graphql/Enum.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/Enum.java similarity index 100% rename from api/src/main/java/org/eclipse/microprofile/graphql/Enum.java rename to server/api/src/main/java/org/eclipse/microprofile/graphql/Enum.java diff --git a/api/src/main/java/org/eclipse/microprofile/graphql/GraphQLApi.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/GraphQLApi.java similarity index 100% rename from api/src/main/java/org/eclipse/microprofile/graphql/GraphQLApi.java rename to server/api/src/main/java/org/eclipse/microprofile/graphql/GraphQLApi.java diff --git a/api/src/main/java/org/eclipse/microprofile/graphql/GraphQLException.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/GraphQLException.java similarity index 100% rename from api/src/main/java/org/eclipse/microprofile/graphql/GraphQLException.java rename to server/api/src/main/java/org/eclipse/microprofile/graphql/GraphQLException.java diff --git a/api/src/main/java/org/eclipse/microprofile/graphql/Id.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/Id.java similarity index 100% rename from api/src/main/java/org/eclipse/microprofile/graphql/Id.java rename to server/api/src/main/java/org/eclipse/microprofile/graphql/Id.java diff --git a/api/src/main/java/org/eclipse/microprofile/graphql/Ignore.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/Ignore.java similarity index 100% rename from api/src/main/java/org/eclipse/microprofile/graphql/Ignore.java rename to server/api/src/main/java/org/eclipse/microprofile/graphql/Ignore.java diff --git a/api/src/main/java/org/eclipse/microprofile/graphql/Input.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/Input.java similarity index 100% rename from api/src/main/java/org/eclipse/microprofile/graphql/Input.java rename to server/api/src/main/java/org/eclipse/microprofile/graphql/Input.java diff --git a/api/src/main/java/org/eclipse/microprofile/graphql/Interface.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/Interface.java similarity index 100% rename from api/src/main/java/org/eclipse/microprofile/graphql/Interface.java rename to server/api/src/main/java/org/eclipse/microprofile/graphql/Interface.java diff --git a/api/src/main/java/org/eclipse/microprofile/graphql/Mutation.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/Mutation.java similarity index 100% rename from api/src/main/java/org/eclipse/microprofile/graphql/Mutation.java rename to server/api/src/main/java/org/eclipse/microprofile/graphql/Mutation.java diff --git a/api/src/main/java/org/eclipse/microprofile/graphql/Name.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/Name.java similarity index 100% rename from api/src/main/java/org/eclipse/microprofile/graphql/Name.java rename to server/api/src/main/java/org/eclipse/microprofile/graphql/Name.java diff --git a/api/src/main/java/org/eclipse/microprofile/graphql/NonNull.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/NonNull.java similarity index 100% rename from api/src/main/java/org/eclipse/microprofile/graphql/NonNull.java rename to server/api/src/main/java/org/eclipse/microprofile/graphql/NonNull.java diff --git a/api/src/main/java/org/eclipse/microprofile/graphql/NumberFormat.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/NumberFormat.java similarity index 100% rename from api/src/main/java/org/eclipse/microprofile/graphql/NumberFormat.java rename to server/api/src/main/java/org/eclipse/microprofile/graphql/NumberFormat.java diff --git a/api/src/main/java/org/eclipse/microprofile/graphql/Query.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/Query.java similarity index 100% rename from api/src/main/java/org/eclipse/microprofile/graphql/Query.java rename to server/api/src/main/java/org/eclipse/microprofile/graphql/Query.java diff --git a/api/src/main/java/org/eclipse/microprofile/graphql/Source.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/Source.java similarity index 100% rename from api/src/main/java/org/eclipse/microprofile/graphql/Source.java rename to server/api/src/main/java/org/eclipse/microprofile/graphql/Source.java diff --git a/api/src/main/java/org/eclipse/microprofile/graphql/Type.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/Type.java similarity index 100% rename from api/src/main/java/org/eclipse/microprofile/graphql/Type.java rename to server/api/src/main/java/org/eclipse/microprofile/graphql/Type.java diff --git a/api/src/main/java/org/eclipse/microprofile/graphql/package-info.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/package-info.java similarity index 100% rename from api/src/main/java/org/eclipse/microprofile/graphql/package-info.java rename to server/api/src/main/java/org/eclipse/microprofile/graphql/package-info.java diff --git a/api/src/main/resources/META-INF/placeholder.txt b/server/api/src/main/resources/META-INF/placeholder.txt similarity index 100% rename from api/src/main/resources/META-INF/placeholder.txt rename to server/api/src/main/resources/META-INF/placeholder.txt diff --git a/api/src/test/java/org/eclipse/microprofile/graphql/DefaultValueTest.java b/server/api/src/test/java/org/eclipse/microprofile/graphql/DefaultValueTest.java similarity index 100% rename from api/src/test/java/org/eclipse/microprofile/graphql/DefaultValueTest.java rename to server/api/src/test/java/org/eclipse/microprofile/graphql/DefaultValueTest.java diff --git a/api/src/test/java/org/eclipse/microprofile/graphql/EnumTest.java b/server/api/src/test/java/org/eclipse/microprofile/graphql/EnumTest.java similarity index 100% rename from api/src/test/java/org/eclipse/microprofile/graphql/EnumTest.java rename to server/api/src/test/java/org/eclipse/microprofile/graphql/EnumTest.java diff --git a/api/src/test/java/org/eclipse/microprofile/graphql/IgnoreTest.java b/server/api/src/test/java/org/eclipse/microprofile/graphql/IgnoreTest.java similarity index 100% rename from api/src/test/java/org/eclipse/microprofile/graphql/IgnoreTest.java rename to server/api/src/test/java/org/eclipse/microprofile/graphql/IgnoreTest.java diff --git a/api/src/test/java/org/eclipse/microprofile/graphql/InputTest.java b/server/api/src/test/java/org/eclipse/microprofile/graphql/InputTest.java similarity index 100% rename from api/src/test/java/org/eclipse/microprofile/graphql/InputTest.java rename to server/api/src/test/java/org/eclipse/microprofile/graphql/InputTest.java diff --git a/api/src/test/java/org/eclipse/microprofile/graphql/MutationTest.java b/server/api/src/test/java/org/eclipse/microprofile/graphql/MutationTest.java similarity index 100% rename from api/src/test/java/org/eclipse/microprofile/graphql/MutationTest.java rename to server/api/src/test/java/org/eclipse/microprofile/graphql/MutationTest.java diff --git a/api/src/test/java/org/eclipse/microprofile/graphql/NameTest.java b/server/api/src/test/java/org/eclipse/microprofile/graphql/NameTest.java similarity index 100% rename from api/src/test/java/org/eclipse/microprofile/graphql/NameTest.java rename to server/api/src/test/java/org/eclipse/microprofile/graphql/NameTest.java diff --git a/api/src/test/java/org/eclipse/microprofile/graphql/QueryTest.java b/server/api/src/test/java/org/eclipse/microprofile/graphql/QueryTest.java similarity index 100% rename from api/src/test/java/org/eclipse/microprofile/graphql/QueryTest.java rename to server/api/src/test/java/org/eclipse/microprofile/graphql/QueryTest.java diff --git a/api/src/test/java/org/eclipse/microprofile/graphql/TypeTest.java b/server/api/src/test/java/org/eclipse/microprofile/graphql/TypeTest.java similarity index 100% rename from api/src/test/java/org/eclipse/microprofile/graphql/TypeTest.java rename to server/api/src/test/java/org/eclipse/microprofile/graphql/TypeTest.java diff --git a/server/pom.xml b/server/pom.xml new file mode 100644 index 00000000..81f887a7 --- /dev/null +++ b/server/pom.xml @@ -0,0 +1,37 @@ + + + + 4.0.0 + + org.eclipse.microprofile.graphql + microprofile-graphql-parent + 1.1-SNAPSHOT + ../ + + + MicroProfile GraphQL Server + + Server-side code-first API for developing GraphQL services in MicroProfile + microprofile-graphql-server + pom + + + spec + api + tck + + \ No newline at end of file diff --git a/spec/.gitignore b/server/spec/.gitignore similarity index 100% rename from spec/.gitignore rename to server/spec/.gitignore diff --git a/server/spec/pom.xml b/server/spec/pom.xml new file mode 100644 index 00000000..51073280 --- /dev/null +++ b/server/spec/pom.xml @@ -0,0 +1,67 @@ + + + + 4.0.0 + + org.eclipse.microprofile.graphql + microprofile-graphql-server + 1.1-SNAPSHOT + ../ + + + microprofile-graphql-server-spec + pom + + MicroProfile GraphQL Server :: Specification + Server-side code-first GraphQL APIs for MicroProfile :: Specification + + + clean package + + + + org.asciidoctor + asciidoctor-maven-plugin + + + + generate-pdf-doc + generate-resources + + process-asciidoc + + + pdf + + + + output-html + generate-resources + + process-asciidoc + + + html5 + + + + + + + + + \ No newline at end of file diff --git a/spec/src/main/asciidoc/components.asciidoc b/server/spec/src/main/asciidoc/components.asciidoc similarity index 100% rename from spec/src/main/asciidoc/components.asciidoc rename to server/spec/src/main/asciidoc/components.asciidoc diff --git a/spec/src/main/asciidoc/components/arguments.asciidoc b/server/spec/src/main/asciidoc/components/arguments.asciidoc similarity index 100% rename from spec/src/main/asciidoc/components/arguments.asciidoc rename to server/spec/src/main/asciidoc/components/arguments.asciidoc diff --git a/spec/src/main/asciidoc/components/generated_schema.asciidoc b/server/spec/src/main/asciidoc/components/generated_schema.asciidoc similarity index 100% rename from spec/src/main/asciidoc/components/generated_schema.asciidoc rename to server/spec/src/main/asciidoc/components/generated_schema.asciidoc diff --git a/spec/src/main/asciidoc/components/graphqlapi.asciidoc b/server/spec/src/main/asciidoc/components/graphqlapi.asciidoc similarity index 100% rename from spec/src/main/asciidoc/components/graphqlapi.asciidoc rename to server/spec/src/main/asciidoc/components/graphqlapi.asciidoc diff --git a/spec/src/main/asciidoc/components/lifecycle.asciidoc b/server/spec/src/main/asciidoc/components/lifecycle.asciidoc similarity index 100% rename from spec/src/main/asciidoc/components/lifecycle.asciidoc rename to server/spec/src/main/asciidoc/components/lifecycle.asciidoc diff --git a/spec/src/main/asciidoc/components/mutations.asciidoc b/server/spec/src/main/asciidoc/components/mutations.asciidoc similarity index 100% rename from spec/src/main/asciidoc/components/mutations.asciidoc rename to server/spec/src/main/asciidoc/components/mutations.asciidoc diff --git a/spec/src/main/asciidoc/components/queries.asciidoc b/server/spec/src/main/asciidoc/components/queries.asciidoc similarity index 100% rename from spec/src/main/asciidoc/components/queries.asciidoc rename to server/spec/src/main/asciidoc/components/queries.asciidoc diff --git a/spec/src/main/asciidoc/entities.asciidoc b/server/spec/src/main/asciidoc/entities.asciidoc similarity index 100% rename from spec/src/main/asciidoc/entities.asciidoc rename to server/spec/src/main/asciidoc/entities.asciidoc diff --git a/spec/src/main/asciidoc/entities/default_values.asciidoc b/server/spec/src/main/asciidoc/entities/default_values.asciidoc similarity index 100% rename from spec/src/main/asciidoc/entities/default_values.asciidoc rename to server/spec/src/main/asciidoc/entities/default_values.asciidoc diff --git a/spec/src/main/asciidoc/entities/description.asciidoc b/server/spec/src/main/asciidoc/entities/description.asciidoc similarity index 100% rename from spec/src/main/asciidoc/entities/description.asciidoc rename to server/spec/src/main/asciidoc/entities/description.asciidoc diff --git a/spec/src/main/asciidoc/entities/enums.asciidoc b/server/spec/src/main/asciidoc/entities/enums.asciidoc similarity index 100% rename from spec/src/main/asciidoc/entities/enums.asciidoc rename to server/spec/src/main/asciidoc/entities/enums.asciidoc diff --git a/spec/src/main/asciidoc/entities/ignorable_fields.asciidoc b/server/spec/src/main/asciidoc/entities/ignorable_fields.asciidoc similarity index 100% rename from spec/src/main/asciidoc/entities/ignorable_fields.asciidoc rename to server/spec/src/main/asciidoc/entities/ignorable_fields.asciidoc diff --git a/spec/src/main/asciidoc/entities/naming.asciidoc b/server/spec/src/main/asciidoc/entities/naming.asciidoc similarity index 100% rename from spec/src/main/asciidoc/entities/naming.asciidoc rename to server/spec/src/main/asciidoc/entities/naming.asciidoc diff --git a/spec/src/main/asciidoc/entities/non-nullable_fields.asciidoc b/server/spec/src/main/asciidoc/entities/non-nullable_fields.asciidoc similarity index 100% rename from spec/src/main/asciidoc/entities/non-nullable_fields.asciidoc rename to server/spec/src/main/asciidoc/entities/non-nullable_fields.asciidoc diff --git a/spec/src/main/asciidoc/entities/objects.asciidoc b/server/spec/src/main/asciidoc/entities/objects.asciidoc similarity index 100% rename from spec/src/main/asciidoc/entities/objects.asciidoc rename to server/spec/src/main/asciidoc/entities/objects.asciidoc diff --git a/spec/src/main/asciidoc/entities/scalars.asciidoc b/server/spec/src/main/asciidoc/entities/scalars.asciidoc similarity index 100% rename from spec/src/main/asciidoc/entities/scalars.asciidoc rename to server/spec/src/main/asciidoc/entities/scalars.asciidoc diff --git a/spec/src/main/asciidoc/errorhandling.asciidoc b/server/spec/src/main/asciidoc/errorhandling.asciidoc similarity index 100% rename from spec/src/main/asciidoc/errorhandling.asciidoc rename to server/spec/src/main/asciidoc/errorhandling.asciidoc diff --git a/server/spec/src/main/asciidoc/index.asciidoc b/server/spec/src/main/asciidoc/index.asciidoc new file mode 100644 index 00000000..2ef908a5 --- /dev/null +++ b/server/spec/src/main/asciidoc/index.asciidoc @@ -0,0 +1,37 @@ +// +// Copyright (c) 2020 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + += MicroProfile GraphQL Server +:authors: Jean-Francois James, Phillip Krüger, Andy McCright, Jean-Baptiste Roux, Bojan Tomic, Adam Anderson +:email: microprofile@googlegroups.com +:version-label!: +:sectanchors: +:doctype: book +:license: Apache License v2.0 +:source-highlighter: coderay +:toc: left +:toclevels: 4 +:sectnumlevels: 4 +ifdef::backend-pdf[] +:pagenums: +endif::[] + +include::license-alv2.asciidoc[] + +include::server.asciidoc[] diff --git a/spec/src/main/asciidoc/intro.asciidoc b/server/spec/src/main/asciidoc/intro.asciidoc similarity index 100% rename from spec/src/main/asciidoc/intro.asciidoc rename to server/spec/src/main/asciidoc/intro.asciidoc diff --git a/server/spec/src/main/asciidoc/license-alv2.asciidoc b/server/spec/src/main/asciidoc/license-alv2.asciidoc new file mode 100644 index 00000000..47793817 --- /dev/null +++ b/server/spec/src/main/asciidoc/license-alv2.asciidoc @@ -0,0 +1,42 @@ +// +// Copyright (c) 2020 Contributors to the Eclipse Foundation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +[subs="normal"] +.... + +Specification: {doctitle} + +Version: {revnumber} + +Status: {revremark} + +Release: {revdate} + +Copyright (c) 2020 Contributors to the Eclipse Foundation + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +.... diff --git a/spec/src/main/asciidoc/release_notes.asciidoc b/server/spec/src/main/asciidoc/release_notes.asciidoc similarity index 100% rename from spec/src/main/asciidoc/release_notes.asciidoc rename to server/spec/src/main/asciidoc/release_notes.asciidoc diff --git a/server/spec/src/main/asciidoc/server.asciidoc b/server/spec/src/main/asciidoc/server.asciidoc new file mode 100644 index 00000000..d9e76b87 --- /dev/null +++ b/server/spec/src/main/asciidoc/server.asciidoc @@ -0,0 +1,30 @@ +// +// Copyright (c) 2020 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + += MicroProfile GraphQL Server + +include::intro.asciidoc[] + +include::entities.asciidoc[] + +include::components.asciidoc[] + +include::errorhandling.asciidoc[] + +include::release_notes.asciidoc[] \ No newline at end of file diff --git a/server/spec/src/main/resources/META-INF/LICENSE b/server/spec/src/main/resources/META-INF/LICENSE new file mode 100644 index 00000000..fe731048 --- /dev/null +++ b/server/spec/src/main/resources/META-INF/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Contributors to the Eclipse Foundation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/server/spec/src/main/resources/META-INF/NOTICE b/server/spec/src/main/resources/META-INF/NOTICE new file mode 100644 index 00000000..37dc70ad --- /dev/null +++ b/server/spec/src/main/resources/META-INF/NOTICE @@ -0,0 +1,13 @@ +========================================================================= +== NOTICE file corresponding to section 4(d) of the Apache License, == +== Version 2.0, in this case for Microprofile GraphQL == +========================================================================= + +SPDXVersion: SPDX-2.1 +PackageName: Eclipse Microprofile +PackageHomePage: http://www.eclipse.org/microprofile +PackageLicenseDeclared: Apache-2.0 + +PackageCopyrightText: +J. Andrew McCright j.andrew.mccright@gmail.com + diff --git a/tck/.gitignore b/server/tck/.gitignore similarity index 100% rename from tck/.gitignore rename to server/tck/.gitignore diff --git a/tck/README.asciidoc b/server/tck/README.asciidoc similarity index 100% rename from tck/README.asciidoc rename to server/tck/README.asciidoc diff --git a/tck/high-level.drawio b/server/tck/high-level.drawio similarity index 100% rename from tck/high-level.drawio rename to server/tck/high-level.drawio diff --git a/tck/high-level.png b/server/tck/high-level.png similarity index 100% rename from tck/high-level.png rename to server/tck/high-level.png diff --git a/tck/pom.xml b/server/tck/pom.xml similarity index 82% rename from tck/pom.xml rename to server/tck/pom.xml index ea454a06..c6c905e6 100644 --- a/tck/pom.xml +++ b/server/tck/pom.xml @@ -16,33 +16,32 @@ --> 4.0.0 - org.eclipse.microprofile.graphql - microprofile-graphql-parent + microprofile-graphql-server 1.1-SNAPSHOT ../ - - microprofile-graphql-tck - MicroProfile GraphQL :: TCK - Code-first GraphQL APIs for MicroProfile :: TCK + + microprofile-graphql-server-tck + MicroProfile GraphQL Server :: TCK + Server-side code-first GraphQL APIs for MicroProfile :: TCK - 1.1.6 - 1.0.2 2.6 1.5.0 + ${project.groupId} - microprofile-graphql-api + microprofile-graphql-server-api ${project.version} provided + jakarta.enterprise jakarta.enterprise.cdi-api @@ -51,45 +50,39 @@ jakarta.json.bind jakarta.json.bind-api - ${jsonb-api.version} provided jakarta.json jakarta.json-api - ${jsonp-api.version} provided + org.jboss.arquillian.testng arquillian-testng-container - org.jboss.arquillian.container arquillian-container-test-spi - org.testng testng compile - org.jboss.shrinkwrap shrinkwrap-api compile - commons-io commons-io ${commons-io.version} - org.skyscreamer jsonassert @@ -109,18 +102,7 @@ - - org.apache.maven.plugins - maven-javadoc-plugin - - - attach-javadocs - - jar - - - - + org.apache.maven.plugins maven-source-plugin @@ -156,5 +138,4 @@ - - + \ No newline at end of file diff --git a/tck/running_the_tck.asciidoc b/server/tck/running_the_tck.asciidoc similarity index 100% rename from tck/running_the_tck.asciidoc rename to server/tck/running_the_tck.asciidoc diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicEnum.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicEnum.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicEnum.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicEnum.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicInput.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicInput.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicInput.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicInput.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicInterface.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicInterface.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicInterface.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicInterface.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicType.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicType.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicType.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/BasicType.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarHolder.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarHolder.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarHolder.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarHolder.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/CsvIOException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/CsvIOException.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/CsvIOException.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/CsvIOException.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/FlawNotFoundException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/FlawNotFoundException.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/FlawNotFoundException.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/FlawNotFoundException.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/HeroFinder.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/HeroFinder.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/HeroFinder.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/HeroFinder.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/SuperHeroLookupException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/SuperHeroLookupException.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/SuperHeroLookupException.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/SuperHeroLookupException.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/WeaknessNotFoundException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/WeaknessNotFoundException.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/WeaknessNotFoundException.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/WeaknessNotFoundException.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/DuplicateSidekickException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/DuplicateSidekickException.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/DuplicateSidekickException.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/DuplicateSidekickException.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/DuplicateSuperHeroException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/DuplicateSuperHeroException.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/DuplicateSuperHeroException.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/DuplicateSuperHeroException.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/HeroDatabase.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/HeroDatabase.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/HeroDatabase.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/HeroDatabase.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/HeroLocator.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/HeroLocator.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/HeroLocator.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/HeroLocator.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/SidekickDatabase.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/SidekickDatabase.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/SidekickDatabase.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/SidekickDatabase.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownHeroException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownHeroException.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownHeroException.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownHeroException.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownSidekickException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownSidekickException.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownSidekickException.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownSidekickException.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownTeamException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownTeamException.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownTeamException.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/db/UnknownTeamException.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Character.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Character.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Character.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Character.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Item.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Item.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Item.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Item.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Sidekick.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Sidekick.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Sidekick.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Sidekick.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/SuperHero.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/SuperHero.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/SuperHero.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/SuperHero.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Team.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Team.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Team.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Team.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Token.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Token.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Token.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/Token.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/UnknownCharacterException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/UnknownCharacterException.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/UnknownCharacterException.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/model/UnknownCharacterException.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DeployableUnit.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DeployableUnit.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DeployableUnit.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DeployableUnit.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DynamicPaths.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DynamicPaths.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DynamicPaths.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DynamicPaths.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/SchemaDynamicValidityTest.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/SchemaDynamicValidityTest.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/SchemaDynamicValidityTest.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/SchemaDynamicValidityTest.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/PrintUtil.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/PrintUtil.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/PrintUtil.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/PrintUtil.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java diff --git a/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/TestData.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/TestData.java similarity index 100% rename from tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/TestData.java rename to server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/TestData.java diff --git a/tck/src/main/resources/META-INF/beans.xml b/server/tck/src/main/resources/META-INF/beans.xml similarity index 100% rename from tck/src/main/resources/META-INF/beans.xml rename to server/tck/src/main/resources/META-INF/beans.xml diff --git a/tck/src/main/resources/META-INF/microprofile-config.properties b/server/tck/src/main/resources/META-INF/microprofile-config.properties similarity index 100% rename from tck/src/main/resources/META-INF/microprofile-config.properties rename to server/tck/src/main/resources/META-INF/microprofile-config.properties diff --git a/tck/src/main/resources/tests/addHeroToTeam/cleanup.graphql b/server/tck/src/main/resources/tests/addHeroToTeam/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/addHeroToTeam/cleanup.graphql rename to server/tck/src/main/resources/tests/addHeroToTeam/cleanup.graphql diff --git a/tck/src/main/resources/tests/addHeroToTeam/input.graphql b/server/tck/src/main/resources/tests/addHeroToTeam/input.graphql similarity index 100% rename from tck/src/main/resources/tests/addHeroToTeam/input.graphql rename to server/tck/src/main/resources/tests/addHeroToTeam/input.graphql diff --git a/tck/src/main/resources/tests/addHeroToTeam/output.json b/server/tck/src/main/resources/tests/addHeroToTeam/output.json similarity index 100% rename from tck/src/main/resources/tests/addHeroToTeam/output.json rename to server/tck/src/main/resources/tests/addHeroToTeam/output.json diff --git a/tck/src/main/resources/tests/addHeroToTeam/test.properties b/server/tck/src/main/resources/tests/addHeroToTeam/test.properties similarity index 100% rename from tck/src/main/resources/tests/addHeroToTeam/test.properties rename to server/tck/src/main/resources/tests/addHeroToTeam/test.properties diff --git a/tck/src/main/resources/tests/addHeroToTeamWithVariables/cleanup.graphql b/server/tck/src/main/resources/tests/addHeroToTeamWithVariables/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/addHeroToTeamWithVariables/cleanup.graphql rename to server/tck/src/main/resources/tests/addHeroToTeamWithVariables/cleanup.graphql diff --git a/tck/src/main/resources/tests/addHeroToTeamWithVariables/input.graphql b/server/tck/src/main/resources/tests/addHeroToTeamWithVariables/input.graphql similarity index 100% rename from tck/src/main/resources/tests/addHeroToTeamWithVariables/input.graphql rename to server/tck/src/main/resources/tests/addHeroToTeamWithVariables/input.graphql diff --git a/tck/src/main/resources/tests/addHeroToTeamWithVariables/output.json b/server/tck/src/main/resources/tests/addHeroToTeamWithVariables/output.json similarity index 100% rename from tck/src/main/resources/tests/addHeroToTeamWithVariables/output.json rename to server/tck/src/main/resources/tests/addHeroToTeamWithVariables/output.json diff --git a/tck/src/main/resources/tests/addHeroToTeamWithVariables/test.properties b/server/tck/src/main/resources/tests/addHeroToTeamWithVariables/test.properties similarity index 100% rename from tck/src/main/resources/tests/addHeroToTeamWithVariables/test.properties rename to server/tck/src/main/resources/tests/addHeroToTeamWithVariables/test.properties diff --git a/tck/src/main/resources/tests/addHeroToTeamWithVariables/variables.json b/server/tck/src/main/resources/tests/addHeroToTeamWithVariables/variables.json similarity index 100% rename from tck/src/main/resources/tests/addHeroToTeamWithVariables/variables.json rename to server/tck/src/main/resources/tests/addHeroToTeamWithVariables/variables.json diff --git a/tck/src/main/resources/tests/addItemToHero/cleanup.graphql b/server/tck/src/main/resources/tests/addItemToHero/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/addItemToHero/cleanup.graphql rename to server/tck/src/main/resources/tests/addItemToHero/cleanup.graphql diff --git a/tck/src/main/resources/tests/addItemToHero/input.graphql b/server/tck/src/main/resources/tests/addItemToHero/input.graphql similarity index 100% rename from tck/src/main/resources/tests/addItemToHero/input.graphql rename to server/tck/src/main/resources/tests/addItemToHero/input.graphql diff --git a/tck/src/main/resources/tests/addItemToHero/output.json b/server/tck/src/main/resources/tests/addItemToHero/output.json similarity index 100% rename from tck/src/main/resources/tests/addItemToHero/output.json rename to server/tck/src/main/resources/tests/addItemToHero/output.json diff --git a/tck/src/main/resources/tests/addItemToHero/test.properties b/server/tck/src/main/resources/tests/addItemToHero/test.properties similarity index 100% rename from tck/src/main/resources/tests/addItemToHero/test.properties rename to server/tck/src/main/resources/tests/addItemToHero/test.properties diff --git a/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/cleanup.graphql b/server/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/cleanup.graphql rename to server/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/cleanup.graphql diff --git a/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/input.graphql b/server/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/input.graphql similarity index 100% rename from tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/input.graphql rename to server/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/input.graphql diff --git a/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/output.json b/server/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/output.json similarity index 100% rename from tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/output.json rename to server/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/output.json diff --git a/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/test.properties b/server/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/test.properties similarity index 100% rename from tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/test.properties rename to server/tck/src/main/resources/tests/addItemToHeroUsingDefaultValue/test.properties diff --git a/tck/src/main/resources/tests/allAvengers/httpHeader.properties b/server/tck/src/main/resources/tests/allAvengers/httpHeader.properties similarity index 100% rename from tck/src/main/resources/tests/allAvengers/httpHeader.properties rename to server/tck/src/main/resources/tests/allAvengers/httpHeader.properties diff --git a/tck/src/main/resources/tests/allAvengers/input.graphql b/server/tck/src/main/resources/tests/allAvengers/input.graphql similarity index 100% rename from tck/src/main/resources/tests/allAvengers/input.graphql rename to server/tck/src/main/resources/tests/allAvengers/input.graphql diff --git a/tck/src/main/resources/tests/allAvengers/output.json b/server/tck/src/main/resources/tests/allAvengers/output.json similarity index 100% rename from tck/src/main/resources/tests/allAvengers/output.json rename to server/tck/src/main/resources/tests/allAvengers/output.json diff --git a/tck/src/main/resources/tests/allAvengers/test.properties b/server/tck/src/main/resources/tests/allAvengers/test.properties similarity index 100% rename from tck/src/main/resources/tests/allAvengers/test.properties rename to server/tck/src/main/resources/tests/allAvengers/test.properties diff --git a/tck/src/main/resources/tests/allAvengersWithVariables/input.graphql b/server/tck/src/main/resources/tests/allAvengersWithVariables/input.graphql similarity index 100% rename from tck/src/main/resources/tests/allAvengersWithVariables/input.graphql rename to server/tck/src/main/resources/tests/allAvengersWithVariables/input.graphql diff --git a/tck/src/main/resources/tests/allAvengersWithVariables/output.json b/server/tck/src/main/resources/tests/allAvengersWithVariables/output.json similarity index 100% rename from tck/src/main/resources/tests/allAvengersWithVariables/output.json rename to server/tck/src/main/resources/tests/allAvengersWithVariables/output.json diff --git a/tck/src/main/resources/tests/allAvengersWithVariables/test.properties b/server/tck/src/main/resources/tests/allAvengersWithVariables/test.properties similarity index 100% rename from tck/src/main/resources/tests/allAvengersWithVariables/test.properties rename to server/tck/src/main/resources/tests/allAvengersWithVariables/test.properties diff --git a/tck/src/main/resources/tests/allAvengersWithVariables/variables.json b/server/tck/src/main/resources/tests/allAvengersWithVariables/variables.json similarity index 100% rename from tck/src/main/resources/tests/allAvengersWithVariables/variables.json rename to server/tck/src/main/resources/tests/allAvengersWithVariables/variables.json diff --git a/tck/src/main/resources/tests/allHeroes/input.graphql b/server/tck/src/main/resources/tests/allHeroes/input.graphql similarity index 100% rename from tck/src/main/resources/tests/allHeroes/input.graphql rename to server/tck/src/main/resources/tests/allHeroes/input.graphql diff --git a/tck/src/main/resources/tests/allHeroes/output.json b/server/tck/src/main/resources/tests/allHeroes/output.json similarity index 100% rename from tck/src/main/resources/tests/allHeroes/output.json rename to server/tck/src/main/resources/tests/allHeroes/output.json diff --git a/tck/src/main/resources/tests/allHeroes/test.properties b/server/tck/src/main/resources/tests/allHeroes/test.properties similarity index 100% rename from tck/src/main/resources/tests/allHeroes/test.properties rename to server/tck/src/main/resources/tests/allHeroes/test.properties diff --git a/tck/src/main/resources/tests/allHeroesInDefaultLocation/input.graphql b/server/tck/src/main/resources/tests/allHeroesInDefaultLocation/input.graphql similarity index 100% rename from tck/src/main/resources/tests/allHeroesInDefaultLocation/input.graphql rename to server/tck/src/main/resources/tests/allHeroesInDefaultLocation/input.graphql diff --git a/tck/src/main/resources/tests/allHeroesInDefaultLocation/output.json b/server/tck/src/main/resources/tests/allHeroesInDefaultLocation/output.json similarity index 100% rename from tck/src/main/resources/tests/allHeroesInDefaultLocation/output.json rename to server/tck/src/main/resources/tests/allHeroesInDefaultLocation/output.json diff --git a/tck/src/main/resources/tests/allHeroesInDefaultLocation/test.properties b/server/tck/src/main/resources/tests/allHeroesInDefaultLocation/test.properties similarity index 100% rename from tck/src/main/resources/tests/allHeroesInDefaultLocation/test.properties rename to server/tck/src/main/resources/tests/allHeroesInDefaultLocation/test.properties diff --git a/tck/src/main/resources/tests/allHeroesWithCurrentLocation/input.graphql b/server/tck/src/main/resources/tests/allHeroesWithCurrentLocation/input.graphql similarity index 100% rename from tck/src/main/resources/tests/allHeroesWithCurrentLocation/input.graphql rename to server/tck/src/main/resources/tests/allHeroesWithCurrentLocation/input.graphql diff --git a/tck/src/main/resources/tests/allHeroesWithCurrentLocation/output.json b/server/tck/src/main/resources/tests/allHeroesWithCurrentLocation/output.json similarity index 100% rename from tck/src/main/resources/tests/allHeroesWithCurrentLocation/output.json rename to server/tck/src/main/resources/tests/allHeroesWithCurrentLocation/output.json diff --git a/tck/src/main/resources/tests/allHeroesWithCurrentLocation/test.properties b/server/tck/src/main/resources/tests/allHeroesWithCurrentLocation/test.properties similarity index 100% rename from tck/src/main/resources/tests/allHeroesWithCurrentLocation/test.properties rename to server/tck/src/main/resources/tests/allHeroesWithCurrentLocation/test.properties diff --git a/tck/src/main/resources/tests/bankbalance/input.graphql b/server/tck/src/main/resources/tests/bankbalance/input.graphql similarity index 100% rename from tck/src/main/resources/tests/bankbalance/input.graphql rename to server/tck/src/main/resources/tests/bankbalance/input.graphql diff --git a/tck/src/main/resources/tests/bankbalance/output.json b/server/tck/src/main/resources/tests/bankbalance/output.json similarity index 100% rename from tck/src/main/resources/tests/bankbalance/output.json rename to server/tck/src/main/resources/tests/bankbalance/output.json diff --git a/tck/src/main/resources/tests/bankbalance/test.properties b/server/tck/src/main/resources/tests/bankbalance/test.properties similarity index 100% rename from tck/src/main/resources/tests/bankbalance/test.properties rename to server/tck/src/main/resources/tests/bankbalance/test.properties diff --git a/tck/src/main/resources/tests/bankbalanceUS/input.graphql b/server/tck/src/main/resources/tests/bankbalanceUS/input.graphql similarity index 100% rename from tck/src/main/resources/tests/bankbalanceUS/input.graphql rename to server/tck/src/main/resources/tests/bankbalanceUS/input.graphql diff --git a/tck/src/main/resources/tests/bankbalanceUS/output.json b/server/tck/src/main/resources/tests/bankbalanceUS/output.json similarity index 100% rename from tck/src/main/resources/tests/bankbalanceUS/output.json rename to server/tck/src/main/resources/tests/bankbalanceUS/output.json diff --git a/tck/src/main/resources/tests/bankbalanceUS/test.properties b/server/tck/src/main/resources/tests/bankbalanceUS/test.properties similarity index 100% rename from tck/src/main/resources/tests/bankbalanceUS/test.properties rename to server/tck/src/main/resources/tests/bankbalanceUS/test.properties diff --git a/tck/src/main/resources/tests/basicScalar/input.graphql b/server/tck/src/main/resources/tests/basicScalar/input.graphql similarity index 100% rename from tck/src/main/resources/tests/basicScalar/input.graphql rename to server/tck/src/main/resources/tests/basicScalar/input.graphql diff --git a/tck/src/main/resources/tests/basicScalar/output.json b/server/tck/src/main/resources/tests/basicScalar/output.json similarity index 100% rename from tck/src/main/resources/tests/basicScalar/output.json rename to server/tck/src/main/resources/tests/basicScalar/output.json diff --git a/tck/src/main/resources/tests/basicScalarDateTransformation/input.graphql b/server/tck/src/main/resources/tests/basicScalarDateTransformation/input.graphql similarity index 100% rename from tck/src/main/resources/tests/basicScalarDateTransformation/input.graphql rename to server/tck/src/main/resources/tests/basicScalarDateTransformation/input.graphql diff --git a/tck/src/main/resources/tests/basicScalarDateTransformation/output.json b/server/tck/src/main/resources/tests/basicScalarDateTransformation/output.json similarity index 100% rename from tck/src/main/resources/tests/basicScalarDateTransformation/output.json rename to server/tck/src/main/resources/tests/basicScalarDateTransformation/output.json diff --git a/tck/src/main/resources/tests/basicScalarMutation/input.graphql b/server/tck/src/main/resources/tests/basicScalarMutation/input.graphql similarity index 100% rename from tck/src/main/resources/tests/basicScalarMutation/input.graphql rename to server/tck/src/main/resources/tests/basicScalarMutation/input.graphql diff --git a/tck/src/main/resources/tests/basicScalarMutation/output.json b/server/tck/src/main/resources/tests/basicScalarMutation/output.json similarity index 100% rename from tck/src/main/resources/tests/basicScalarMutation/output.json rename to server/tck/src/main/resources/tests/basicScalarMutation/output.json diff --git a/tck/src/main/resources/tests/basicScalarNumberTransformation/input.graphql b/server/tck/src/main/resources/tests/basicScalarNumberTransformation/input.graphql similarity index 100% rename from tck/src/main/resources/tests/basicScalarNumberTransformation/input.graphql rename to server/tck/src/main/resources/tests/basicScalarNumberTransformation/input.graphql diff --git a/tck/src/main/resources/tests/basicScalarNumberTransformation/output.json b/server/tck/src/main/resources/tests/basicScalarNumberTransformation/output.json similarity index 100% rename from tck/src/main/resources/tests/basicScalarNumberTransformation/output.json rename to server/tck/src/main/resources/tests/basicScalarNumberTransformation/output.json diff --git a/tck/src/main/resources/tests/basicScalarShort/input.graphql b/server/tck/src/main/resources/tests/basicScalarShort/input.graphql similarity index 100% rename from tck/src/main/resources/tests/basicScalarShort/input.graphql rename to server/tck/src/main/resources/tests/basicScalarShort/input.graphql diff --git a/tck/src/main/resources/tests/basicScalarShort/output.json b/server/tck/src/main/resources/tests/basicScalarShort/output.json similarity index 100% rename from tck/src/main/resources/tests/basicScalarShort/output.json rename to server/tck/src/main/resources/tests/basicScalarShort/output.json diff --git a/tck/src/main/resources/tests/basicScalarShortObject/input.graphql b/server/tck/src/main/resources/tests/basicScalarShortObject/input.graphql similarity index 100% rename from tck/src/main/resources/tests/basicScalarShortObject/input.graphql rename to server/tck/src/main/resources/tests/basicScalarShortObject/input.graphql diff --git a/tck/src/main/resources/tests/basicScalarShortObject/output.json b/server/tck/src/main/resources/tests/basicScalarShortObject/output.json similarity index 100% rename from tck/src/main/resources/tests/basicScalarShortObject/output.json rename to server/tck/src/main/resources/tests/basicScalarShortObject/output.json diff --git a/tck/src/main/resources/tests/basicScalarTests.csv b/server/tck/src/main/resources/tests/basicScalarTests.csv similarity index 100% rename from tck/src/main/resources/tests/basicScalarTests.csv rename to server/tck/src/main/resources/tests/basicScalarTests.csv diff --git a/tck/src/main/resources/tests/battle/cleanup.graphql b/server/tck/src/main/resources/tests/battle/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/battle/cleanup.graphql rename to server/tck/src/main/resources/tests/battle/cleanup.graphql diff --git a/tck/src/main/resources/tests/battle/input.graphql b/server/tck/src/main/resources/tests/battle/input.graphql similarity index 100% rename from tck/src/main/resources/tests/battle/input.graphql rename to server/tck/src/main/resources/tests/battle/input.graphql diff --git a/tck/src/main/resources/tests/battle/output.json b/server/tck/src/main/resources/tests/battle/output.json similarity index 100% rename from tck/src/main/resources/tests/battle/output.json rename to server/tck/src/main/resources/tests/battle/output.json diff --git a/tck/src/main/resources/tests/battle/test.properties b/server/tck/src/main/resources/tests/battle/test.properties similarity index 100% rename from tck/src/main/resources/tests/battle/test.properties rename to server/tck/src/main/resources/tests/battle/test.properties diff --git a/tck/src/main/resources/tests/battleWithFormat/cleanup.graphql b/server/tck/src/main/resources/tests/battleWithFormat/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/battleWithFormat/cleanup.graphql rename to server/tck/src/main/resources/tests/battleWithFormat/cleanup.graphql diff --git a/tck/src/main/resources/tests/battleWithFormat/input.graphql b/server/tck/src/main/resources/tests/battleWithFormat/input.graphql similarity index 100% rename from tck/src/main/resources/tests/battleWithFormat/input.graphql rename to server/tck/src/main/resources/tests/battleWithFormat/input.graphql diff --git a/tck/src/main/resources/tests/battleWithFormat/output.json b/server/tck/src/main/resources/tests/battleWithFormat/output.json similarity index 100% rename from tck/src/main/resources/tests/battleWithFormat/output.json rename to server/tck/src/main/resources/tests/battleWithFormat/output.json diff --git a/tck/src/main/resources/tests/battleWithFormat/test.properties b/server/tck/src/main/resources/tests/battleWithFormat/test.properties similarity index 100% rename from tck/src/main/resources/tests/battleWithFormat/test.properties rename to server/tck/src/main/resources/tests/battleWithFormat/test.properties diff --git a/tck/src/main/resources/tests/beenThere/cleanup.graphql b/server/tck/src/main/resources/tests/beenThere/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/beenThere/cleanup.graphql rename to server/tck/src/main/resources/tests/beenThere/cleanup.graphql diff --git a/tck/src/main/resources/tests/beenThere/input.graphql b/server/tck/src/main/resources/tests/beenThere/input.graphql similarity index 100% rename from tck/src/main/resources/tests/beenThere/input.graphql rename to server/tck/src/main/resources/tests/beenThere/input.graphql diff --git a/tck/src/main/resources/tests/beenThere/output.json b/server/tck/src/main/resources/tests/beenThere/output.json similarity index 100% rename from tck/src/main/resources/tests/beenThere/output.json rename to server/tck/src/main/resources/tests/beenThere/output.json diff --git a/tck/src/main/resources/tests/beenThere/test.properties b/server/tck/src/main/resources/tests/beenThere/test.properties similarity index 100% rename from tck/src/main/resources/tests/beenThere/test.properties rename to server/tck/src/main/resources/tests/beenThere/test.properties diff --git a/tck/src/main/resources/tests/birthday/cleanup.graphql b/server/tck/src/main/resources/tests/birthday/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/birthday/cleanup.graphql rename to server/tck/src/main/resources/tests/birthday/cleanup.graphql diff --git a/tck/src/main/resources/tests/birthday/input.graphql b/server/tck/src/main/resources/tests/birthday/input.graphql similarity index 100% rename from tck/src/main/resources/tests/birthday/input.graphql rename to server/tck/src/main/resources/tests/birthday/input.graphql diff --git a/tck/src/main/resources/tests/birthday/output.json b/server/tck/src/main/resources/tests/birthday/output.json similarity index 100% rename from tck/src/main/resources/tests/birthday/output.json rename to server/tck/src/main/resources/tests/birthday/output.json diff --git a/tck/src/main/resources/tests/birthday/test.properties b/server/tck/src/main/resources/tests/birthday/test.properties similarity index 100% rename from tck/src/main/resources/tests/birthday/test.properties rename to server/tck/src/main/resources/tests/birthday/test.properties diff --git a/tck/src/main/resources/tests/calendarEntries/cleanup.graphql b/server/tck/src/main/resources/tests/calendarEntries/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/calendarEntries/cleanup.graphql rename to server/tck/src/main/resources/tests/calendarEntries/cleanup.graphql diff --git a/tck/src/main/resources/tests/calendarEntries/input.graphql b/server/tck/src/main/resources/tests/calendarEntries/input.graphql similarity index 100% rename from tck/src/main/resources/tests/calendarEntries/input.graphql rename to server/tck/src/main/resources/tests/calendarEntries/input.graphql diff --git a/tck/src/main/resources/tests/calendarEntries/output.json b/server/tck/src/main/resources/tests/calendarEntries/output.json similarity index 100% rename from tck/src/main/resources/tests/calendarEntries/output.json rename to server/tck/src/main/resources/tests/calendarEntries/output.json diff --git a/tck/src/main/resources/tests/calendarEntries/test.properties b/server/tck/src/main/resources/tests/calendarEntries/test.properties similarity index 100% rename from tck/src/main/resources/tests/calendarEntries/test.properties rename to server/tck/src/main/resources/tests/calendarEntries/test.properties diff --git a/tck/src/main/resources/tests/checkin/cleanup.graphql b/server/tck/src/main/resources/tests/checkin/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/checkin/cleanup.graphql rename to server/tck/src/main/resources/tests/checkin/cleanup.graphql diff --git a/tck/src/main/resources/tests/checkin/input.graphql b/server/tck/src/main/resources/tests/checkin/input.graphql similarity index 100% rename from tck/src/main/resources/tests/checkin/input.graphql rename to server/tck/src/main/resources/tests/checkin/input.graphql diff --git a/tck/src/main/resources/tests/checkin/output.json b/server/tck/src/main/resources/tests/checkin/output.json similarity index 100% rename from tck/src/main/resources/tests/checkin/output.json rename to server/tck/src/main/resources/tests/checkin/output.json diff --git a/tck/src/main/resources/tests/checkin/test.properties b/server/tck/src/main/resources/tests/checkin/test.properties similarity index 100% rename from tck/src/main/resources/tests/checkin/test.properties rename to server/tck/src/main/resources/tests/checkin/test.properties diff --git a/tck/src/main/resources/tests/checkinWithFormat/cleanup.graphql b/server/tck/src/main/resources/tests/checkinWithFormat/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/checkinWithFormat/cleanup.graphql rename to server/tck/src/main/resources/tests/checkinWithFormat/cleanup.graphql diff --git a/tck/src/main/resources/tests/checkinWithFormat/input.graphql b/server/tck/src/main/resources/tests/checkinWithFormat/input.graphql similarity index 100% rename from tck/src/main/resources/tests/checkinWithFormat/input.graphql rename to server/tck/src/main/resources/tests/checkinWithFormat/input.graphql diff --git a/tck/src/main/resources/tests/checkinWithFormat/output.json b/server/tck/src/main/resources/tests/checkinWithFormat/output.json similarity index 100% rename from tck/src/main/resources/tests/checkinWithFormat/output.json rename to server/tck/src/main/resources/tests/checkinWithFormat/output.json diff --git a/tck/src/main/resources/tests/checkinWithFormat/test.properties b/server/tck/src/main/resources/tests/checkinWithFormat/test.properties similarity index 100% rename from tck/src/main/resources/tests/checkinWithFormat/test.properties rename to server/tck/src/main/resources/tests/checkinWithFormat/test.properties diff --git a/tck/src/main/resources/tests/createNewHero/cleanup.graphql b/server/tck/src/main/resources/tests/createNewHero/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/createNewHero/cleanup.graphql rename to server/tck/src/main/resources/tests/createNewHero/cleanup.graphql diff --git a/tck/src/main/resources/tests/createNewHero/input.graphql b/server/tck/src/main/resources/tests/createNewHero/input.graphql similarity index 100% rename from tck/src/main/resources/tests/createNewHero/input.graphql rename to server/tck/src/main/resources/tests/createNewHero/input.graphql diff --git a/tck/src/main/resources/tests/createNewHero/output.json b/server/tck/src/main/resources/tests/createNewHero/output.json similarity index 100% rename from tck/src/main/resources/tests/createNewHero/output.json rename to server/tck/src/main/resources/tests/createNewHero/output.json diff --git a/tck/src/main/resources/tests/createNewHero/test.properties b/server/tck/src/main/resources/tests/createNewHero/test.properties similarity index 100% rename from tck/src/main/resources/tests/createNewHero/test.properties rename to server/tck/src/main/resources/tests/createNewHero/test.properties diff --git a/tck/src/main/resources/tests/createNewHeroWithVariables/cleanup.graphql b/server/tck/src/main/resources/tests/createNewHeroWithVariables/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/createNewHeroWithVariables/cleanup.graphql rename to server/tck/src/main/resources/tests/createNewHeroWithVariables/cleanup.graphql diff --git a/tck/src/main/resources/tests/createNewHeroWithVariables/input.graphql b/server/tck/src/main/resources/tests/createNewHeroWithVariables/input.graphql similarity index 100% rename from tck/src/main/resources/tests/createNewHeroWithVariables/input.graphql rename to server/tck/src/main/resources/tests/createNewHeroWithVariables/input.graphql diff --git a/tck/src/main/resources/tests/createNewHeroWithVariables/output.json b/server/tck/src/main/resources/tests/createNewHeroWithVariables/output.json similarity index 100% rename from tck/src/main/resources/tests/createNewHeroWithVariables/output.json rename to server/tck/src/main/resources/tests/createNewHeroWithVariables/output.json diff --git a/tck/src/main/resources/tests/createNewHeroWithVariables/test.properties b/server/tck/src/main/resources/tests/createNewHeroWithVariables/test.properties similarity index 100% rename from tck/src/main/resources/tests/createNewHeroWithVariables/test.properties rename to server/tck/src/main/resources/tests/createNewHeroWithVariables/test.properties diff --git a/tck/src/main/resources/tests/createNewHeroWithVariables/variables.json b/server/tck/src/main/resources/tests/createNewHeroWithVariables/variables.json similarity index 100% rename from tck/src/main/resources/tests/createNewHeroWithVariables/variables.json rename to server/tck/src/main/resources/tests/createNewHeroWithVariables/variables.json diff --git a/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/cleanup.graphql b/server/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/cleanup.graphql rename to server/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/cleanup.graphql diff --git a/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/input.graphql b/server/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/input.graphql similarity index 100% rename from tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/input.graphql rename to server/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/input.graphql diff --git a/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/output.json b/server/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/output.json similarity index 100% rename from tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/output.json rename to server/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/output.json diff --git a/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/test.properties b/server/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/test.properties similarity index 100% rename from tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/test.properties rename to server/tck/src/main/resources/tests/createNewHero_inputFieldWithDifferentName/test.properties diff --git a/tck/src/main/resources/tests/createNewHeros/cleanup.graphql b/server/tck/src/main/resources/tests/createNewHeros/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/createNewHeros/cleanup.graphql rename to server/tck/src/main/resources/tests/createNewHeros/cleanup.graphql diff --git a/tck/src/main/resources/tests/createNewHeros/input.graphql b/server/tck/src/main/resources/tests/createNewHeros/input.graphql similarity index 100% rename from tck/src/main/resources/tests/createNewHeros/input.graphql rename to server/tck/src/main/resources/tests/createNewHeros/input.graphql diff --git a/tck/src/main/resources/tests/createNewHeros/output.json b/server/tck/src/main/resources/tests/createNewHeros/output.json similarity index 100% rename from tck/src/main/resources/tests/createNewHeros/output.json rename to server/tck/src/main/resources/tests/createNewHeros/output.json diff --git a/tck/src/main/resources/tests/createNewHeros/test.properties b/server/tck/src/main/resources/tests/createNewHeros/test.properties similarity index 100% rename from tck/src/main/resources/tests/createNewHeros/test.properties rename to server/tck/src/main/resources/tests/createNewHeros/test.properties diff --git a/tck/src/main/resources/tests/createNewHerosArray/cleanup.graphql b/server/tck/src/main/resources/tests/createNewHerosArray/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/createNewHerosArray/cleanup.graphql rename to server/tck/src/main/resources/tests/createNewHerosArray/cleanup.graphql diff --git a/tck/src/main/resources/tests/createNewHerosArray/input.graphql b/server/tck/src/main/resources/tests/createNewHerosArray/input.graphql similarity index 100% rename from tck/src/main/resources/tests/createNewHerosArray/input.graphql rename to server/tck/src/main/resources/tests/createNewHerosArray/input.graphql diff --git a/tck/src/main/resources/tests/createNewHerosArray/output.json b/server/tck/src/main/resources/tests/createNewHerosArray/output.json similarity index 100% rename from tck/src/main/resources/tests/createNewHerosArray/output.json rename to server/tck/src/main/resources/tests/createNewHerosArray/output.json diff --git a/tck/src/main/resources/tests/createNewHerosArray/test.properties b/server/tck/src/main/resources/tests/createNewHerosArray/test.properties similarity index 100% rename from tck/src/main/resources/tests/createNewHerosArray/test.properties rename to server/tck/src/main/resources/tests/createNewHerosArray/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/blacklist/input.graphql b/server/tck/src/main/resources/tests/errorHandling/blacklist/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/blacklist/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/blacklist/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/blacklist/output.json b/server/tck/src/main/resources/tests/errorHandling/blacklist/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/blacklist/output.json rename to server/tck/src/main/resources/tests/errorHandling/blacklist/output.json diff --git a/tck/src/main/resources/tests/errorHandling/blacklist/test.properties b/server/tck/src/main/resources/tests/errorHandling/blacklist/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/blacklist/test.properties rename to server/tck/src/main/resources/tests/errorHandling/blacklist/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/blacklistTransitive/input.graphql b/server/tck/src/main/resources/tests/errorHandling/blacklistTransitive/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/blacklistTransitive/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/blacklistTransitive/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/blacklistTransitive/output.json b/server/tck/src/main/resources/tests/errorHandling/blacklistTransitive/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/blacklistTransitive/output.json rename to server/tck/src/main/resources/tests/errorHandling/blacklistTransitive/output.json diff --git a/tck/src/main/resources/tests/errorHandling/blacklistTransitive/test.properties b/server/tck/src/main/resources/tests/errorHandling/blacklistTransitive/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/blacklistTransitive/test.properties rename to server/tck/src/main/resources/tests/errorHandling/blacklistTransitive/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/input.graphql b/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/output.json b/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/output.json rename to server/tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/output.json diff --git a/tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/test.properties b/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/test.properties rename to server/tck/src/main/resources/tests/errorHandling/createNewNullNamedHero/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/cleanup.graphql b/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/cleanup.graphql rename to server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/cleanup.graphql diff --git a/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/input.graphql b/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/output.json b/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/output.json rename to server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/output.json diff --git a/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/prepare.graphql b/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/prepare.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/prepare.graphql rename to server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/prepare.graphql diff --git a/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/test.properties b/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/test.properties rename to server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/input.graphql b/server/tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/output.json b/server/tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/output.json rename to server/tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/output.json diff --git a/tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/test.properties b/server/tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/test.properties rename to server/tck/src/main/resources/tests/errorHandling/createNewUnnamedHero/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/input.graphql b/server/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/output.json b/server/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/output.json rename to server/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/output.json diff --git a/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/test.properties b/server/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/test.properties rename to server/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/invalidEnumValue/cleanup.graphql b/server/tck/src/main/resources/tests/errorHandling/invalidEnumValue/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidEnumValue/cleanup.graphql rename to server/tck/src/main/resources/tests/errorHandling/invalidEnumValue/cleanup.graphql diff --git a/tck/src/main/resources/tests/errorHandling/invalidEnumValue/input.graphql b/server/tck/src/main/resources/tests/errorHandling/invalidEnumValue/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidEnumValue/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/invalidEnumValue/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/invalidEnumValue/output.json b/server/tck/src/main/resources/tests/errorHandling/invalidEnumValue/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidEnumValue/output.json rename to server/tck/src/main/resources/tests/errorHandling/invalidEnumValue/output.json diff --git a/tck/src/main/resources/tests/errorHandling/invalidEnumValue/test.properties b/server/tck/src/main/resources/tests/errorHandling/invalidEnumValue/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidEnumValue/test.properties rename to server/tck/src/main/resources/tests/errorHandling/invalidEnumValue/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/input.graphql b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/output.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/output.json rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/output.json diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/test.properties b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/test.properties rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/input.graphql b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/output.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/output.json rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/output.json diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/test.properties b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/test.properties rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/input.graphql b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/output.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/output.json rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/output.json diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/test.properties b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/test.properties rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/input.graphql b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/output.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/output.json rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/output.json diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/test.properties b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/test.properties rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/input.graphql b/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/output.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/output.json rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/output.json diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/test.properties b/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/test.properties rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/input.graphql b/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/output.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/output.json rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/output.json diff --git a/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/test.properties b/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/test.properties rename to server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/javaError/input.graphql b/server/tck/src/main/resources/tests/errorHandling/javaError/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/javaError/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/javaError/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/javaError/output.json b/server/tck/src/main/resources/tests/errorHandling/javaError/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/javaError/output.json rename to server/tck/src/main/resources/tests/errorHandling/javaError/output.json diff --git a/tck/src/main/resources/tests/errorHandling/javaError/test.properties b/server/tck/src/main/resources/tests/errorHandling/javaError/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/javaError/test.properties rename to server/tck/src/main/resources/tests/errorHandling/javaError/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/cleanup.graphql b/server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/cleanup.graphql rename to server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/cleanup.graphql diff --git a/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/input.graphql b/server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/output.json b/server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/output.json rename to server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/output.json diff --git a/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/test.properties b/server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/test.properties rename to server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/input.graphql b/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/output.json b/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/output.json rename to server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/output.json diff --git a/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/test.properties b/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/test.properties rename to server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/input.graphql b/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/output.json b/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/output.json rename to server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/output.json diff --git a/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/test.properties b/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/test.properties rename to server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/runtimeException/input.graphql b/server/tck/src/main/resources/tests/errorHandling/runtimeException/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/runtimeException/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/runtimeException/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/runtimeException/output.json b/server/tck/src/main/resources/tests/errorHandling/runtimeException/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/runtimeException/output.json rename to server/tck/src/main/resources/tests/errorHandling/runtimeException/output.json diff --git a/tck/src/main/resources/tests/errorHandling/runtimeException/test.properties b/server/tck/src/main/resources/tests/errorHandling/runtimeException/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/runtimeException/test.properties rename to server/tck/src/main/resources/tests/errorHandling/runtimeException/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/unknownField/input.graphql b/server/tck/src/main/resources/tests/errorHandling/unknownField/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/unknownField/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/unknownField/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/unknownField/output.json b/server/tck/src/main/resources/tests/errorHandling/unknownField/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/unknownField/output.json rename to server/tck/src/main/resources/tests/errorHandling/unknownField/output.json diff --git a/tck/src/main/resources/tests/errorHandling/unknownField/test.properties b/server/tck/src/main/resources/tests/errorHandling/unknownField/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/unknownField/test.properties rename to server/tck/src/main/resources/tests/errorHandling/unknownField/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/input.graphql b/server/tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/output.json b/server/tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/output.json rename to server/tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/output.json diff --git a/tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/test.properties b/server/tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/test.properties rename to server/tck/src/main/resources/tests/errorHandling/unknownHeroNonGraphQLException/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/unknownMutation/input.graphql b/server/tck/src/main/resources/tests/errorHandling/unknownMutation/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/unknownMutation/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/unknownMutation/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/unknownMutation/output.json b/server/tck/src/main/resources/tests/errorHandling/unknownMutation/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/unknownMutation/output.json rename to server/tck/src/main/resources/tests/errorHandling/unknownMutation/output.json diff --git a/tck/src/main/resources/tests/errorHandling/unknownMutation/test.properties b/server/tck/src/main/resources/tests/errorHandling/unknownMutation/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/unknownMutation/test.properties rename to server/tck/src/main/resources/tests/errorHandling/unknownMutation/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/unknownQuery/input.graphql b/server/tck/src/main/resources/tests/errorHandling/unknownQuery/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/unknownQuery/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/unknownQuery/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/unknownQuery/output.json b/server/tck/src/main/resources/tests/errorHandling/unknownQuery/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/unknownQuery/output.json rename to server/tck/src/main/resources/tests/errorHandling/unknownQuery/output.json diff --git a/tck/src/main/resources/tests/errorHandling/unknownQuery/test.properties b/server/tck/src/main/resources/tests/errorHandling/unknownQuery/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/unknownQuery/test.properties rename to server/tck/src/main/resources/tests/errorHandling/unknownQuery/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/whitelist/input.graphql b/server/tck/src/main/resources/tests/errorHandling/whitelist/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/whitelist/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/whitelist/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/whitelist/output.json b/server/tck/src/main/resources/tests/errorHandling/whitelist/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/whitelist/output.json rename to server/tck/src/main/resources/tests/errorHandling/whitelist/output.json diff --git a/tck/src/main/resources/tests/errorHandling/whitelist/test.properties b/server/tck/src/main/resources/tests/errorHandling/whitelist/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/whitelist/test.properties rename to server/tck/src/main/resources/tests/errorHandling/whitelist/test.properties diff --git a/tck/src/main/resources/tests/errorHandling/whitelistTransitive/input.graphql b/server/tck/src/main/resources/tests/errorHandling/whitelistTransitive/input.graphql similarity index 100% rename from tck/src/main/resources/tests/errorHandling/whitelistTransitive/input.graphql rename to server/tck/src/main/resources/tests/errorHandling/whitelistTransitive/input.graphql diff --git a/tck/src/main/resources/tests/errorHandling/whitelistTransitive/output.json b/server/tck/src/main/resources/tests/errorHandling/whitelistTransitive/output.json similarity index 100% rename from tck/src/main/resources/tests/errorHandling/whitelistTransitive/output.json rename to server/tck/src/main/resources/tests/errorHandling/whitelistTransitive/output.json diff --git a/tck/src/main/resources/tests/errorHandling/whitelistTransitive/test.properties b/server/tck/src/main/resources/tests/errorHandling/whitelistTransitive/test.properties similarity index 100% rename from tck/src/main/resources/tests/errorHandling/whitelistTransitive/test.properties rename to server/tck/src/main/resources/tests/errorHandling/whitelistTransitive/test.properties diff --git a/tck/src/main/resources/tests/favouriteDrinkSize/cleanup.graphql b/server/tck/src/main/resources/tests/favouriteDrinkSize/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/favouriteDrinkSize/cleanup.graphql rename to server/tck/src/main/resources/tests/favouriteDrinkSize/cleanup.graphql diff --git a/tck/src/main/resources/tests/favouriteDrinkSize/input.graphql b/server/tck/src/main/resources/tests/favouriteDrinkSize/input.graphql similarity index 100% rename from tck/src/main/resources/tests/favouriteDrinkSize/input.graphql rename to server/tck/src/main/resources/tests/favouriteDrinkSize/input.graphql diff --git a/tck/src/main/resources/tests/favouriteDrinkSize/output.json b/server/tck/src/main/resources/tests/favouriteDrinkSize/output.json similarity index 100% rename from tck/src/main/resources/tests/favouriteDrinkSize/output.json rename to server/tck/src/main/resources/tests/favouriteDrinkSize/output.json diff --git a/tck/src/main/resources/tests/favouriteDrinkSize/test.properties b/server/tck/src/main/resources/tests/favouriteDrinkSize/test.properties similarity index 100% rename from tck/src/main/resources/tests/favouriteDrinkSize/test.properties rename to server/tck/src/main/resources/tests/favouriteDrinkSize/test.properties diff --git a/tck/src/main/resources/tests/favouriteDrinkSizeML/cleanup.graphql b/server/tck/src/main/resources/tests/favouriteDrinkSizeML/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/favouriteDrinkSizeML/cleanup.graphql rename to server/tck/src/main/resources/tests/favouriteDrinkSizeML/cleanup.graphql diff --git a/tck/src/main/resources/tests/favouriteDrinkSizeML/input.graphql b/server/tck/src/main/resources/tests/favouriteDrinkSizeML/input.graphql similarity index 100% rename from tck/src/main/resources/tests/favouriteDrinkSizeML/input.graphql rename to server/tck/src/main/resources/tests/favouriteDrinkSizeML/input.graphql diff --git a/tck/src/main/resources/tests/favouriteDrinkSizeML/output.json b/server/tck/src/main/resources/tests/favouriteDrinkSizeML/output.json similarity index 100% rename from tck/src/main/resources/tests/favouriteDrinkSizeML/output.json rename to server/tck/src/main/resources/tests/favouriteDrinkSizeML/output.json diff --git a/tck/src/main/resources/tests/favouriteDrinkSizeML/test.properties b/server/tck/src/main/resources/tests/favouriteDrinkSizeML/test.properties similarity index 100% rename from tck/src/main/resources/tests/favouriteDrinkSizeML/test.properties rename to server/tck/src/main/resources/tests/favouriteDrinkSizeML/test.properties diff --git a/server/tck/src/main/resources/tests/getCharacter/input.graphql b/server/tck/src/main/resources/tests/getCharacter/input.graphql new file mode 100644 index 00000000..b7d157a1 --- /dev/null +++ b/server/tck/src/main/resources/tests/getCharacter/input.graphql @@ -0,0 +1,42 @@ +{ + spiderman: character(name: "Spider Man") { + ... on SuperHero { + name + primaryLocation + realName + superPowers + teamAffiliations { + name + members { + name + } + } + } + ... on Sidekick { + name + superHeroSidekicked { + name + } + } + } + jamesrhodes: character(name: "James Rhodes") { + ... on SuperHero { + name + primaryLocation + realName + superPowers + teamAffiliations { + name + members { + name + } + } + } + ... on Sidekick { + name + superHeroSidekicked { + name + } + } + } +} diff --git a/server/tck/src/main/resources/tests/getCharacter/output.json b/server/tck/src/main/resources/tests/getCharacter/output.json new file mode 100644 index 00000000..1eda799e --- /dev/null +++ b/server/tck/src/main/resources/tests/getCharacter/output.json @@ -0,0 +1,37 @@ +{ + "data": { + "spiderman": { + "name": "Spider Man", + "primaryLocation": "New York, NY", + "realName": "Peter Parker", + "superPowers": [ + "Spidey Sense", + "Wall-Crawling", + "Super Strength", + "Web-shooting" + ], + "teamAffiliations": [ + { + "name": "Avengers", + "members": [ + { + "name": "Iron Man" + }, + { + "name": "Spider Man" + }, + { + "name": "Wolverine" + } + ] + } + ] + }, + "jamesrhodes": { + "name": "James Rhodes", + "superHeroSidekicked": { + "name": "Iron Man" + } + } + } +} \ No newline at end of file diff --git a/tck/src/main/resources/tests/getHero/test.properties b/server/tck/src/main/resources/tests/getCharacter/test.properties similarity index 100% rename from tck/src/main/resources/tests/getHero/test.properties rename to server/tck/src/main/resources/tests/getCharacter/test.properties diff --git a/tck/src/main/resources/tests/getHero/input.graphql b/server/tck/src/main/resources/tests/getHero/input.graphql similarity index 100% rename from tck/src/main/resources/tests/getHero/input.graphql rename to server/tck/src/main/resources/tests/getHero/input.graphql diff --git a/tck/src/main/resources/tests/getHero/output.json b/server/tck/src/main/resources/tests/getHero/output.json similarity index 100% rename from tck/src/main/resources/tests/getHero/output.json rename to server/tck/src/main/resources/tests/getHero/output.json diff --git a/tck/src/main/resources/tests/getHeroWithItems/test.properties b/server/tck/src/main/resources/tests/getHero/test.properties similarity index 100% rename from tck/src/main/resources/tests/getHeroWithItems/test.properties rename to server/tck/src/main/resources/tests/getHero/test.properties diff --git a/tck/src/main/resources/tests/getHeroWithItems/input.graphql b/server/tck/src/main/resources/tests/getHeroWithItems/input.graphql similarity index 100% rename from tck/src/main/resources/tests/getHeroWithItems/input.graphql rename to server/tck/src/main/resources/tests/getHeroWithItems/input.graphql diff --git a/tck/src/main/resources/tests/getHeroWithItems/output.json b/server/tck/src/main/resources/tests/getHeroWithItems/output.json similarity index 100% rename from tck/src/main/resources/tests/getHeroWithItems/output.json rename to server/tck/src/main/resources/tests/getHeroWithItems/output.json diff --git a/server/tck/src/main/resources/tests/getHeroWithItems/test.properties b/server/tck/src/main/resources/tests/getHeroWithItems/test.properties new file mode 100644 index 00000000..7b6ba248 --- /dev/null +++ b/server/tck/src/main/resources/tests/getHeroWithItems/test.properties @@ -0,0 +1,2 @@ +ignore=false +priority=100 \ No newline at end of file diff --git a/tck/src/main/resources/tests/importantDates/cleanup.graphql b/server/tck/src/main/resources/tests/importantDates/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/importantDates/cleanup.graphql rename to server/tck/src/main/resources/tests/importantDates/cleanup.graphql diff --git a/tck/src/main/resources/tests/importantDates/input.graphql b/server/tck/src/main/resources/tests/importantDates/input.graphql similarity index 100% rename from tck/src/main/resources/tests/importantDates/input.graphql rename to server/tck/src/main/resources/tests/importantDates/input.graphql diff --git a/tck/src/main/resources/tests/importantDates/output.json b/server/tck/src/main/resources/tests/importantDates/output.json similarity index 100% rename from tck/src/main/resources/tests/importantDates/output.json rename to server/tck/src/main/resources/tests/importantDates/output.json diff --git a/tck/src/main/resources/tests/importantDates/test.properties b/server/tck/src/main/resources/tests/importantDates/test.properties similarity index 100% rename from tck/src/main/resources/tests/importantDates/test.properties rename to server/tck/src/main/resources/tests/importantDates/test.properties diff --git a/tck/src/main/resources/tests/importantDatesUS/cleanup.graphql b/server/tck/src/main/resources/tests/importantDatesUS/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/importantDatesUS/cleanup.graphql rename to server/tck/src/main/resources/tests/importantDatesUS/cleanup.graphql diff --git a/tck/src/main/resources/tests/importantDatesUS/input.graphql b/server/tck/src/main/resources/tests/importantDatesUS/input.graphql similarity index 100% rename from tck/src/main/resources/tests/importantDatesUS/input.graphql rename to server/tck/src/main/resources/tests/importantDatesUS/input.graphql diff --git a/tck/src/main/resources/tests/importantDatesUS/output.json b/server/tck/src/main/resources/tests/importantDatesUS/output.json similarity index 100% rename from tck/src/main/resources/tests/importantDatesUS/output.json rename to server/tck/src/main/resources/tests/importantDatesUS/output.json diff --git a/tck/src/main/resources/tests/importantDatesUS/test.properties b/server/tck/src/main/resources/tests/importantDatesUS/test.properties similarity index 100% rename from tck/src/main/resources/tests/importantDatesUS/test.properties rename to server/tck/src/main/resources/tests/importantDatesUS/test.properties diff --git a/tck/src/main/resources/tests/jsonbProps/input.graphql b/server/tck/src/main/resources/tests/jsonbProps/input.graphql similarity index 100% rename from tck/src/main/resources/tests/jsonbProps/input.graphql rename to server/tck/src/main/resources/tests/jsonbProps/input.graphql diff --git a/tck/src/main/resources/tests/jsonbProps/output.json b/server/tck/src/main/resources/tests/jsonbProps/output.json similarity index 100% rename from tck/src/main/resources/tests/jsonbProps/output.json rename to server/tck/src/main/resources/tests/jsonbProps/output.json diff --git a/tck/src/main/resources/tests/jsonbProps/test.properties b/server/tck/src/main/resources/tests/jsonbProps/test.properties similarity index 100% rename from tck/src/main/resources/tests/jsonbProps/test.properties rename to server/tck/src/main/resources/tests/jsonbProps/test.properties diff --git a/tck/src/main/resources/tests/kidsAges/cleanup.graphql b/server/tck/src/main/resources/tests/kidsAges/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/kidsAges/cleanup.graphql rename to server/tck/src/main/resources/tests/kidsAges/cleanup.graphql diff --git a/tck/src/main/resources/tests/kidsAges/input.graphql b/server/tck/src/main/resources/tests/kidsAges/input.graphql similarity index 100% rename from tck/src/main/resources/tests/kidsAges/input.graphql rename to server/tck/src/main/resources/tests/kidsAges/input.graphql diff --git a/tck/src/main/resources/tests/kidsAges/output.json b/server/tck/src/main/resources/tests/kidsAges/output.json similarity index 100% rename from tck/src/main/resources/tests/kidsAges/output.json rename to server/tck/src/main/resources/tests/kidsAges/output.json diff --git a/tck/src/main/resources/tests/kidsAges/test.properties b/server/tck/src/main/resources/tests/kidsAges/test.properties similarity index 100% rename from tck/src/main/resources/tests/kidsAges/test.properties rename to server/tck/src/main/resources/tests/kidsAges/test.properties diff --git a/tck/src/main/resources/tests/location/cleanup.graphql b/server/tck/src/main/resources/tests/location/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/location/cleanup.graphql rename to server/tck/src/main/resources/tests/location/cleanup.graphql diff --git a/tck/src/main/resources/tests/location/input.graphql b/server/tck/src/main/resources/tests/location/input.graphql similarity index 100% rename from tck/src/main/resources/tests/location/input.graphql rename to server/tck/src/main/resources/tests/location/input.graphql diff --git a/tck/src/main/resources/tests/location/output.json b/server/tck/src/main/resources/tests/location/output.json similarity index 100% rename from tck/src/main/resources/tests/location/output.json rename to server/tck/src/main/resources/tests/location/output.json diff --git a/tck/src/main/resources/tests/location/test.properties b/server/tck/src/main/resources/tests/location/test.properties similarity index 100% rename from tck/src/main/resources/tests/location/test.properties rename to server/tck/src/main/resources/tests/location/test.properties diff --git a/tck/src/main/resources/tests/locationArray/cleanup.graphql b/server/tck/src/main/resources/tests/locationArray/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/locationArray/cleanup.graphql rename to server/tck/src/main/resources/tests/locationArray/cleanup.graphql diff --git a/tck/src/main/resources/tests/locationArray/input.graphql b/server/tck/src/main/resources/tests/locationArray/input.graphql similarity index 100% rename from tck/src/main/resources/tests/locationArray/input.graphql rename to server/tck/src/main/resources/tests/locationArray/input.graphql diff --git a/tck/src/main/resources/tests/locationArray/output.json b/server/tck/src/main/resources/tests/locationArray/output.json similarity index 100% rename from tck/src/main/resources/tests/locationArray/output.json rename to server/tck/src/main/resources/tests/locationArray/output.json diff --git a/tck/src/main/resources/tests/locationArray/test.properties b/server/tck/src/main/resources/tests/locationArray/test.properties similarity index 100% rename from tck/src/main/resources/tests/locationArray/test.properties rename to server/tck/src/main/resources/tests/locationArray/test.properties diff --git a/tck/src/main/resources/tests/locationLongLat/cleanup.graphql b/server/tck/src/main/resources/tests/locationLongLat/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/locationLongLat/cleanup.graphql rename to server/tck/src/main/resources/tests/locationLongLat/cleanup.graphql diff --git a/tck/src/main/resources/tests/locationLongLat/input.graphql b/server/tck/src/main/resources/tests/locationLongLat/input.graphql similarity index 100% rename from tck/src/main/resources/tests/locationLongLat/input.graphql rename to server/tck/src/main/resources/tests/locationLongLat/input.graphql diff --git a/tck/src/main/resources/tests/locationLongLat/output.json b/server/tck/src/main/resources/tests/locationLongLat/output.json similarity index 100% rename from tck/src/main/resources/tests/locationLongLat/output.json rename to server/tck/src/main/resources/tests/locationLongLat/output.json diff --git a/tck/src/main/resources/tests/locationLongLat/test.properties b/server/tck/src/main/resources/tests/locationLongLat/test.properties similarity index 100% rename from tck/src/main/resources/tests/locationLongLat/test.properties rename to server/tck/src/main/resources/tests/locationLongLat/test.properties diff --git a/tck/src/main/resources/tests/locationLongLatArray/cleanup.graphql b/server/tck/src/main/resources/tests/locationLongLatArray/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/locationLongLatArray/cleanup.graphql rename to server/tck/src/main/resources/tests/locationLongLatArray/cleanup.graphql diff --git a/tck/src/main/resources/tests/locationLongLatArray/input.graphql b/server/tck/src/main/resources/tests/locationLongLatArray/input.graphql similarity index 100% rename from tck/src/main/resources/tests/locationLongLatArray/input.graphql rename to server/tck/src/main/resources/tests/locationLongLatArray/input.graphql diff --git a/tck/src/main/resources/tests/locationLongLatArray/output.json b/server/tck/src/main/resources/tests/locationLongLatArray/output.json similarity index 100% rename from tck/src/main/resources/tests/locationLongLatArray/output.json rename to server/tck/src/main/resources/tests/locationLongLatArray/output.json diff --git a/tck/src/main/resources/tests/locationLongLatArray/test.properties b/server/tck/src/main/resources/tests/locationLongLatArray/test.properties similarity index 100% rename from tck/src/main/resources/tests/locationLongLatArray/test.properties rename to server/tck/src/main/resources/tests/locationLongLatArray/test.properties diff --git a/tck/src/main/resources/tests/networth/cleanup.graphql b/server/tck/src/main/resources/tests/networth/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/networth/cleanup.graphql rename to server/tck/src/main/resources/tests/networth/cleanup.graphql diff --git a/tck/src/main/resources/tests/networth/input.graphql b/server/tck/src/main/resources/tests/networth/input.graphql similarity index 100% rename from tck/src/main/resources/tests/networth/input.graphql rename to server/tck/src/main/resources/tests/networth/input.graphql diff --git a/tck/src/main/resources/tests/networth/output.json b/server/tck/src/main/resources/tests/networth/output.json similarity index 100% rename from tck/src/main/resources/tests/networth/output.json rename to server/tck/src/main/resources/tests/networth/output.json diff --git a/tck/src/main/resources/tests/networth/test.properties b/server/tck/src/main/resources/tests/networth/test.properties similarity index 100% rename from tck/src/main/resources/tests/networth/test.properties rename to server/tck/src/main/resources/tests/networth/test.properties diff --git a/tck/src/main/resources/tests/networthUSD/cleanup.graphql b/server/tck/src/main/resources/tests/networthUSD/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/networthUSD/cleanup.graphql rename to server/tck/src/main/resources/tests/networthUSD/cleanup.graphql diff --git a/tck/src/main/resources/tests/networthUSD/input.graphql b/server/tck/src/main/resources/tests/networthUSD/input.graphql similarity index 100% rename from tck/src/main/resources/tests/networthUSD/input.graphql rename to server/tck/src/main/resources/tests/networthUSD/input.graphql diff --git a/tck/src/main/resources/tests/networthUSD/output.json b/server/tck/src/main/resources/tests/networthUSD/output.json similarity index 100% rename from tck/src/main/resources/tests/networthUSD/output.json rename to server/tck/src/main/resources/tests/networthUSD/output.json diff --git a/tck/src/main/resources/tests/networthUSD/test.properties b/server/tck/src/main/resources/tests/networthUSD/test.properties similarity index 100% rename from tck/src/main/resources/tests/networthUSD/test.properties rename to server/tck/src/main/resources/tests/networthUSD/test.properties diff --git a/tck/src/main/resources/tests/nonNullTests.csv b/server/tck/src/main/resources/tests/nonNullTests.csv similarity index 100% rename from tck/src/main/resources/tests/nonNullTests.csv rename to server/tck/src/main/resources/tests/nonNullTests.csv diff --git a/tck/src/main/resources/tests/nullField/cleanup.graphql b/server/tck/src/main/resources/tests/nullField/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/nullField/cleanup.graphql rename to server/tck/src/main/resources/tests/nullField/cleanup.graphql diff --git a/tck/src/main/resources/tests/nullField/input.graphql b/server/tck/src/main/resources/tests/nullField/input.graphql similarity index 100% rename from tck/src/main/resources/tests/nullField/input.graphql rename to server/tck/src/main/resources/tests/nullField/input.graphql diff --git a/tck/src/main/resources/tests/nullField/output.json b/server/tck/src/main/resources/tests/nullField/output.json similarity index 100% rename from tck/src/main/resources/tests/nullField/output.json rename to server/tck/src/main/resources/tests/nullField/output.json diff --git a/tck/src/main/resources/tests/nullField/prepare.graphql b/server/tck/src/main/resources/tests/nullField/prepare.graphql similarity index 100% rename from tck/src/main/resources/tests/nullField/prepare.graphql rename to server/tck/src/main/resources/tests/nullField/prepare.graphql diff --git a/tck/src/main/resources/tests/nullField/test.properties b/server/tck/src/main/resources/tests/nullField/test.properties similarity index 100% rename from tck/src/main/resources/tests/nullField/test.properties rename to server/tck/src/main/resources/tests/nullField/test.properties diff --git a/tck/src/main/resources/tests/removeHero/cleanup.graphql b/server/tck/src/main/resources/tests/removeHero/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/removeHero/cleanup.graphql rename to server/tck/src/main/resources/tests/removeHero/cleanup.graphql diff --git a/tck/src/main/resources/tests/removeHero/input.graphql b/server/tck/src/main/resources/tests/removeHero/input.graphql similarity index 100% rename from tck/src/main/resources/tests/removeHero/input.graphql rename to server/tck/src/main/resources/tests/removeHero/input.graphql diff --git a/tck/src/main/resources/tests/removeHero/output.json b/server/tck/src/main/resources/tests/removeHero/output.json similarity index 100% rename from tck/src/main/resources/tests/removeHero/output.json rename to server/tck/src/main/resources/tests/removeHero/output.json diff --git a/tck/src/main/resources/tests/removeHero/test.properties b/server/tck/src/main/resources/tests/removeHero/test.properties similarity index 100% rename from tck/src/main/resources/tests/removeHero/test.properties rename to server/tck/src/main/resources/tests/removeHero/test.properties diff --git a/tck/src/main/resources/tests/removeHeroFromTeam/cleanup.graphql b/server/tck/src/main/resources/tests/removeHeroFromTeam/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/removeHeroFromTeam/cleanup.graphql rename to server/tck/src/main/resources/tests/removeHeroFromTeam/cleanup.graphql diff --git a/tck/src/main/resources/tests/removeHeroFromTeam/input.graphql b/server/tck/src/main/resources/tests/removeHeroFromTeam/input.graphql similarity index 100% rename from tck/src/main/resources/tests/removeHeroFromTeam/input.graphql rename to server/tck/src/main/resources/tests/removeHeroFromTeam/input.graphql diff --git a/tck/src/main/resources/tests/removeHeroFromTeam/output.json b/server/tck/src/main/resources/tests/removeHeroFromTeam/output.json similarity index 100% rename from tck/src/main/resources/tests/removeHeroFromTeam/output.json rename to server/tck/src/main/resources/tests/removeHeroFromTeam/output.json diff --git a/tck/src/main/resources/tests/removeHeroFromTeam/test.properties b/server/tck/src/main/resources/tests/removeHeroFromTeam/test.properties similarity index 100% rename from tck/src/main/resources/tests/removeHeroFromTeam/test.properties rename to server/tck/src/main/resources/tests/removeHeroFromTeam/test.properties diff --git a/tck/src/main/resources/tests/schemaTests.csv b/server/tck/src/main/resources/tests/schemaTests.csv similarity index 100% rename from tck/src/main/resources/tests/schemaTests.csv rename to server/tck/src/main/resources/tests/schemaTests.csv diff --git a/tck/src/main/resources/tests/setIdNumber/cleanup.graphql b/server/tck/src/main/resources/tests/setIdNumber/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/setIdNumber/cleanup.graphql rename to server/tck/src/main/resources/tests/setIdNumber/cleanup.graphql diff --git a/tck/src/main/resources/tests/setIdNumber/input.graphql b/server/tck/src/main/resources/tests/setIdNumber/input.graphql similarity index 100% rename from tck/src/main/resources/tests/setIdNumber/input.graphql rename to server/tck/src/main/resources/tests/setIdNumber/input.graphql diff --git a/tck/src/main/resources/tests/setIdNumber/output.json b/server/tck/src/main/resources/tests/setIdNumber/output.json similarity index 100% rename from tck/src/main/resources/tests/setIdNumber/output.json rename to server/tck/src/main/resources/tests/setIdNumber/output.json diff --git a/tck/src/main/resources/tests/setIdNumber/test.properties b/server/tck/src/main/resources/tests/setIdNumber/test.properties similarity index 100% rename from tck/src/main/resources/tests/setIdNumber/test.properties rename to server/tck/src/main/resources/tests/setIdNumber/test.properties diff --git a/tck/src/main/resources/tests/setIdNumberWithFormat/cleanup.graphql b/server/tck/src/main/resources/tests/setIdNumberWithFormat/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/setIdNumberWithFormat/cleanup.graphql rename to server/tck/src/main/resources/tests/setIdNumberWithFormat/cleanup.graphql diff --git a/tck/src/main/resources/tests/setIdNumberWithFormat/input.graphql b/server/tck/src/main/resources/tests/setIdNumberWithFormat/input.graphql similarity index 100% rename from tck/src/main/resources/tests/setIdNumberWithFormat/input.graphql rename to server/tck/src/main/resources/tests/setIdNumberWithFormat/input.graphql diff --git a/tck/src/main/resources/tests/setIdNumberWithFormat/output.json b/server/tck/src/main/resources/tests/setIdNumberWithFormat/output.json similarity index 100% rename from tck/src/main/resources/tests/setIdNumberWithFormat/output.json rename to server/tck/src/main/resources/tests/setIdNumberWithFormat/output.json diff --git a/tck/src/main/resources/tests/setIdNumberWithFormat/test.properties b/server/tck/src/main/resources/tests/setIdNumberWithFormat/test.properties similarity index 100% rename from tck/src/main/resources/tests/setIdNumberWithFormat/test.properties rename to server/tck/src/main/resources/tests/setIdNumberWithFormat/test.properties diff --git a/tck/src/main/resources/tests/setRivalTeam/cleanup.graphql b/server/tck/src/main/resources/tests/setRivalTeam/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/setRivalTeam/cleanup.graphql rename to server/tck/src/main/resources/tests/setRivalTeam/cleanup.graphql diff --git a/tck/src/main/resources/tests/setRivalTeam/input.graphql b/server/tck/src/main/resources/tests/setRivalTeam/input.graphql similarity index 100% rename from tck/src/main/resources/tests/setRivalTeam/input.graphql rename to server/tck/src/main/resources/tests/setRivalTeam/input.graphql diff --git a/tck/src/main/resources/tests/setRivalTeam/output.json b/server/tck/src/main/resources/tests/setRivalTeam/output.json similarity index 100% rename from tck/src/main/resources/tests/setRivalTeam/output.json rename to server/tck/src/main/resources/tests/setRivalTeam/output.json diff --git a/tck/src/main/resources/tests/setRivalTeam/test.properties b/server/tck/src/main/resources/tests/setRivalTeam/test.properties similarity index 100% rename from tck/src/main/resources/tests/setRivalTeam/test.properties rename to server/tck/src/main/resources/tests/setRivalTeam/test.properties diff --git a/tck/src/main/resources/tests/startPatrolling/cleanup.graphql b/server/tck/src/main/resources/tests/startPatrolling/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/startPatrolling/cleanup.graphql rename to server/tck/src/main/resources/tests/startPatrolling/cleanup.graphql diff --git a/tck/src/main/resources/tests/startPatrolling/input.graphql b/server/tck/src/main/resources/tests/startPatrolling/input.graphql similarity index 100% rename from tck/src/main/resources/tests/startPatrolling/input.graphql rename to server/tck/src/main/resources/tests/startPatrolling/input.graphql diff --git a/tck/src/main/resources/tests/startPatrolling/output.json b/server/tck/src/main/resources/tests/startPatrolling/output.json similarity index 100% rename from tck/src/main/resources/tests/startPatrolling/output.json rename to server/tck/src/main/resources/tests/startPatrolling/output.json diff --git a/tck/src/main/resources/tests/startPatrolling/test.properties b/server/tck/src/main/resources/tests/startPatrolling/test.properties similarity index 100% rename from tck/src/main/resources/tests/startPatrolling/test.properties rename to server/tck/src/main/resources/tests/startPatrolling/test.properties diff --git a/tck/src/main/resources/tests/startPatrollingWithFormat/cleanup.graphql b/server/tck/src/main/resources/tests/startPatrollingWithFormat/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/startPatrollingWithFormat/cleanup.graphql rename to server/tck/src/main/resources/tests/startPatrollingWithFormat/cleanup.graphql diff --git a/tck/src/main/resources/tests/startPatrollingWithFormat/input.graphql b/server/tck/src/main/resources/tests/startPatrollingWithFormat/input.graphql similarity index 100% rename from tck/src/main/resources/tests/startPatrollingWithFormat/input.graphql rename to server/tck/src/main/resources/tests/startPatrollingWithFormat/input.graphql diff --git a/tck/src/main/resources/tests/startPatrollingWithFormat/output.json b/server/tck/src/main/resources/tests/startPatrollingWithFormat/output.json similarity index 100% rename from tck/src/main/resources/tests/startPatrollingWithFormat/output.json rename to server/tck/src/main/resources/tests/startPatrollingWithFormat/output.json diff --git a/tck/src/main/resources/tests/startPatrollingWithFormat/test.properties b/server/tck/src/main/resources/tests/startPatrollingWithFormat/test.properties similarity index 100% rename from tck/src/main/resources/tests/startPatrollingWithFormat/test.properties rename to server/tck/src/main/resources/tests/startPatrollingWithFormat/test.properties diff --git a/tck/src/main/resources/tests/track/cleanup.graphql b/server/tck/src/main/resources/tests/track/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/track/cleanup.graphql rename to server/tck/src/main/resources/tests/track/cleanup.graphql diff --git a/tck/src/main/resources/tests/track/input.graphql b/server/tck/src/main/resources/tests/track/input.graphql similarity index 100% rename from tck/src/main/resources/tests/track/input.graphql rename to server/tck/src/main/resources/tests/track/input.graphql diff --git a/tck/src/main/resources/tests/track/output.json b/server/tck/src/main/resources/tests/track/output.json similarity index 100% rename from tck/src/main/resources/tests/track/output.json rename to server/tck/src/main/resources/tests/track/output.json diff --git a/tck/src/main/resources/tests/track/test.properties b/server/tck/src/main/resources/tests/track/test.properties similarity index 100% rename from tck/src/main/resources/tests/track/test.properties rename to server/tck/src/main/resources/tests/track/test.properties diff --git a/tck/src/main/resources/tests/trackLongLat/cleanup.graphql b/server/tck/src/main/resources/tests/trackLongLat/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/trackLongLat/cleanup.graphql rename to server/tck/src/main/resources/tests/trackLongLat/cleanup.graphql diff --git a/tck/src/main/resources/tests/trackLongLat/input.graphql b/server/tck/src/main/resources/tests/trackLongLat/input.graphql similarity index 100% rename from tck/src/main/resources/tests/trackLongLat/input.graphql rename to server/tck/src/main/resources/tests/trackLongLat/input.graphql diff --git a/tck/src/main/resources/tests/trackLongLat/output.json b/server/tck/src/main/resources/tests/trackLongLat/output.json similarity index 100% rename from tck/src/main/resources/tests/trackLongLat/output.json rename to server/tck/src/main/resources/tests/trackLongLat/output.json diff --git a/tck/src/main/resources/tests/trackLongLat/test.properties b/server/tck/src/main/resources/tests/trackLongLat/test.properties similarity index 100% rename from tck/src/main/resources/tests/trackLongLat/test.properties rename to server/tck/src/main/resources/tests/trackLongLat/test.properties diff --git a/tck/src/main/resources/tests/updateItemPowerLevel/cleanup.graphql b/server/tck/src/main/resources/tests/updateItemPowerLevel/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/updateItemPowerLevel/cleanup.graphql rename to server/tck/src/main/resources/tests/updateItemPowerLevel/cleanup.graphql diff --git a/tck/src/main/resources/tests/updateItemPowerLevel/input.graphql b/server/tck/src/main/resources/tests/updateItemPowerLevel/input.graphql similarity index 100% rename from tck/src/main/resources/tests/updateItemPowerLevel/input.graphql rename to server/tck/src/main/resources/tests/updateItemPowerLevel/input.graphql diff --git a/tck/src/main/resources/tests/updateItemPowerLevel/output.json b/server/tck/src/main/resources/tests/updateItemPowerLevel/output.json similarity index 100% rename from tck/src/main/resources/tests/updateItemPowerLevel/output.json rename to server/tck/src/main/resources/tests/updateItemPowerLevel/output.json diff --git a/tck/src/main/resources/tests/updateItemPowerLevel/test.properties b/server/tck/src/main/resources/tests/updateItemPowerLevel/test.properties similarity index 100% rename from tck/src/main/resources/tests/updateItemPowerLevel/test.properties rename to server/tck/src/main/resources/tests/updateItemPowerLevel/test.properties diff --git a/tck/src/main/resources/tests/updateItemPowerLevelPercentage/cleanup.graphql b/server/tck/src/main/resources/tests/updateItemPowerLevelPercentage/cleanup.graphql similarity index 100% rename from tck/src/main/resources/tests/updateItemPowerLevelPercentage/cleanup.graphql rename to server/tck/src/main/resources/tests/updateItemPowerLevelPercentage/cleanup.graphql diff --git a/tck/src/main/resources/tests/updateItemPowerLevelPercentage/input.graphql b/server/tck/src/main/resources/tests/updateItemPowerLevelPercentage/input.graphql similarity index 100% rename from tck/src/main/resources/tests/updateItemPowerLevelPercentage/input.graphql rename to server/tck/src/main/resources/tests/updateItemPowerLevelPercentage/input.graphql diff --git a/tck/src/main/resources/tests/updateItemPowerLevelPercentage/output.json b/server/tck/src/main/resources/tests/updateItemPowerLevelPercentage/output.json similarity index 100% rename from tck/src/main/resources/tests/updateItemPowerLevelPercentage/output.json rename to server/tck/src/main/resources/tests/updateItemPowerLevelPercentage/output.json diff --git a/tck/src/main/resources/tests/updateItemPowerLevelPercentage/test.properties b/server/tck/src/main/resources/tests/updateItemPowerLevelPercentage/test.properties similarity index 100% rename from tck/src/main/resources/tests/updateItemPowerLevelPercentage/test.properties rename to server/tck/src/main/resources/tests/updateItemPowerLevelPercentage/test.properties From 7f58353060de4b3fe097cf71073b966c6e742b91 Mon Sep 17 00:00:00 2001 From: Phillip Kruger Date: Sun, 22 Mar 2020 13:49:20 +0200 Subject: [PATCH 003/248] Structure change for client. This solves issue #200 Signed-off-by:Phillip Kruger --- .../tests/getCharacter/input.graphql | 42 ------------------- .../resources/tests/getCharacter/output.json | 37 ---------------- .../tests/getCharacter/test.properties | 2 - 3 files changed, 81 deletions(-) delete mode 100644 tck/src/main/resources/tests/getCharacter/input.graphql delete mode 100644 tck/src/main/resources/tests/getCharacter/output.json delete mode 100644 tck/src/main/resources/tests/getCharacter/test.properties diff --git a/tck/src/main/resources/tests/getCharacter/input.graphql b/tck/src/main/resources/tests/getCharacter/input.graphql deleted file mode 100644 index b7d157a1..00000000 --- a/tck/src/main/resources/tests/getCharacter/input.graphql +++ /dev/null @@ -1,42 +0,0 @@ -{ - spiderman: character(name: "Spider Man") { - ... on SuperHero { - name - primaryLocation - realName - superPowers - teamAffiliations { - name - members { - name - } - } - } - ... on Sidekick { - name - superHeroSidekicked { - name - } - } - } - jamesrhodes: character(name: "James Rhodes") { - ... on SuperHero { - name - primaryLocation - realName - superPowers - teamAffiliations { - name - members { - name - } - } - } - ... on Sidekick { - name - superHeroSidekicked { - name - } - } - } -} diff --git a/tck/src/main/resources/tests/getCharacter/output.json b/tck/src/main/resources/tests/getCharacter/output.json deleted file mode 100644 index 1eda799e..00000000 --- a/tck/src/main/resources/tests/getCharacter/output.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "data": { - "spiderman": { - "name": "Spider Man", - "primaryLocation": "New York, NY", - "realName": "Peter Parker", - "superPowers": [ - "Spidey Sense", - "Wall-Crawling", - "Super Strength", - "Web-shooting" - ], - "teamAffiliations": [ - { - "name": "Avengers", - "members": [ - { - "name": "Iron Man" - }, - { - "name": "Spider Man" - }, - { - "name": "Wolverine" - } - ] - } - ] - }, - "jamesrhodes": { - "name": "James Rhodes", - "superHeroSidekicked": { - "name": "Iron Man" - } - } - } -} \ No newline at end of file diff --git a/tck/src/main/resources/tests/getCharacter/test.properties b/tck/src/main/resources/tests/getCharacter/test.properties deleted file mode 100644 index 7b6ba248..00000000 --- a/tck/src/main/resources/tests/getCharacter/test.properties +++ /dev/null @@ -1,2 +0,0 @@ -ignore=false -priority=100 \ No newline at end of file From dc359ec85f08055132a832bfc1f53e43a36c7368 Mon Sep 17 00:00:00 2001 From: Phillip Kruger Date: Sun, 22 Mar 2020 15:02:26 +0200 Subject: [PATCH 004/248] README Update for structure change Signed-off-by:Phillip Kruger --- README.asciidoc | 24 +++++++++++++++-------- client/README.asciidoc | 44 ++++++++++++++++++++++++++++++++++++++++++ server/README.asciidoc | 44 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 104 insertions(+), 8 deletions(-) create mode 100644 client/README.asciidoc create mode 100644 server/README.asciidoc diff --git a/README.asciidoc b/README.asciidoc index 89c878f9..b37759d7 100644 --- a/README.asciidoc +++ b/README.asciidoc @@ -24,18 +24,26 @@ image:https://badges.gitter.im/eclipse/microprofile-graphql.svg[link="https://gi Read the https://download.eclipse.org/microprofile/microprofile-graphql-1.0.1/microprofile-graphql.html[MicroProfile GraphQL 1.0.1] Specification -== Generating the API and JavaDoc +== Structure -Just enter `mvn clean install` at the command line. Maven will generate the following artifacts. +This project consist of 3 parts: -API Jar:: -The jar containing the api interfaces and classes in `/api/target` +* link:server/README.asciidoc[Server] - The server-side of MicroProfile GraphQL. +* link:client/README.asciidoc[Client] - The client-side of MicroProfile GraphQL. +* link:full/README.asciidoc[Full] - The combination of Server and Client. -Specification:: -The PDF and HTML will be generated in `spec/target/generated-docs/` +Implementations can decide to implement only the Server, or only the Client, or both -TCK:: -The TCK that can be used to test your implementation +== Use this in your project + +[source,xml,numbered] +---- + + org.eclipse.microprofile.graphql + microprofile-graphql-api + 1.0.1 + +---- == About GraphQL is an open-source data query and manipulation language for APIs, and a runtime for fulfilling queries with existing data. diff --git a/client/README.asciidoc b/client/README.asciidoc new file mode 100644 index 00000000..a42ada48 --- /dev/null +++ b/client/README.asciidoc @@ -0,0 +1,44 @@ +// +// Copyright (c) 2020 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + += Microprofile GraphQL Server Specification + +== Generating the API and JavaDoc + +Just enter `mvn clean install` at the command line. Maven will generate the following artifacts. + +API Jar:: +The jar containing the api interfaces and classes in `/api/target` + +Specification:: +The PDF and HTML will be generated in `spec/target/generated-docs/` + +TCK:: +The TCK that can be used to test your implementation + +== Use this in your project + +[source,xml,numbered] +---- + + org.eclipse.microprofile.graphql + microprofile-graphql-client-api + 1.0.1 + +---- \ No newline at end of file diff --git a/server/README.asciidoc b/server/README.asciidoc new file mode 100644 index 00000000..b9b1a0e1 --- /dev/null +++ b/server/README.asciidoc @@ -0,0 +1,44 @@ +// +// Copyright (c) 2020 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + += Microprofile GraphQL Server Specification + +== Generating the API and JavaDoc + +Just enter `mvn clean install` at the command line. Maven will generate the following artifacts. + +API Jar:: +The jar containing the api interfaces and classes in `/api/target` + +Specification:: +The PDF and HTML will be generated in `spec/target/generated-docs/` + +TCK:: +The TCK that can be used to test your implementation + +== Use this in your project + +[source,xml,numbered] +---- + + org.eclipse.microprofile.graphql + microprofile-graphql-server-api + 1.0.1 + +---- \ No newline at end of file From 3ca915e74835090cd1fe4ab19e742363e1ad08a5 Mon Sep 17 00:00:00 2001 From: Phillip Kruger Date: Sun, 22 Mar 2020 15:05:48 +0200 Subject: [PATCH 005/248] README Update for structure change Signed-off-by:Phillip Kruger --- full/README.asciidoc | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 full/README.asciidoc diff --git a/full/README.asciidoc b/full/README.asciidoc new file mode 100644 index 00000000..61953d5e --- /dev/null +++ b/full/README.asciidoc @@ -0,0 +1,44 @@ +// +// Copyright (c) 2020 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + += Microprofile GraphQL Full Specification + +== Generating the API and JavaDoc + +Just enter `mvn clean install` at the command line. Maven will generate the following artifacts. + +API Jar:: +The jar containing the api interfaces and classes in `/api/target` + +Specification:: +The PDF and HTML will be generated in `spec/target/generated-docs/` + +TCK:: +The TCK that can be used to test your implementation + +== Use this in your project + +[source,xml,numbered] +---- + + org.eclipse.microprofile.graphql + microprofile-graphql-api + 1.0.1 + +---- \ No newline at end of file From a43a87328847bcb3d02d93dee76154b6929377da Mon Sep 17 00:00:00 2001 From: Phillip Kruger Date: Sun, 22 Mar 2020 15:06:58 +0200 Subject: [PATCH 006/248] README Update for structure change Signed-off-by:Phillip Kruger --- client/README.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/README.asciidoc b/client/README.asciidoc index a42ada48..9d42485f 100644 --- a/client/README.asciidoc +++ b/client/README.asciidoc @@ -17,7 +17,7 @@ // limitations under the License. // -= Microprofile GraphQL Server Specification += Microprofile GraphQL Client Specification == Generating the API and JavaDoc From 66715c15336b726797b212a418d3f073c5af7d14 Mon Sep 17 00:00:00 2001 From: Phillip Kruger Date: Mon, 23 Mar 2020 08:32:13 +0200 Subject: [PATCH 007/248] Changes as requested Signed-off-by:Phillip Kruger --- README.asciidoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.asciidoc b/README.asciidoc index b37759d7..e1753a20 100644 --- a/README.asciidoc +++ b/README.asciidoc @@ -32,9 +32,9 @@ This project consist of 3 parts: * link:client/README.asciidoc[Client] - The client-side of MicroProfile GraphQL. * link:full/README.asciidoc[Full] - The combination of Server and Client. -Implementations can decide to implement only the Server, or only the Client, or both +Implementations can decide to implement only the Server, or only the Client, or both. -== Use this in your project +== Use this in your project to depend on both the server and client API: [source,xml,numbered] ---- From 79daf6a50ef4b72f0738547c75caeda3c002fb5e Mon Sep 17 00:00:00 2001 From: Andy McCright Date: Thu, 26 Mar 2020 14:31:00 -0500 Subject: [PATCH 008/248] New TCK test for objects in the mutation variables Signed-off-by: Andy McCright --- .../createNewHeroWithVariablesObject/cleanup.graphql | 5 +++++ .../createNewHeroWithVariablesObject/input.graphql | 8 ++++++++ .../createNewHeroWithVariablesObject/output.json | 12 ++++++++++++ .../createNewHeroWithVariablesObject/test.properties | 3 +++ .../createNewHeroWithVariablesObject/variables.json | 8 ++++++++ 5 files changed, 36 insertions(+) create mode 100644 server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/cleanup.graphql create mode 100644 server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/input.graphql create mode 100644 server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/output.json create mode 100644 server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/test.properties create mode 100644 server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/variables.json diff --git a/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/cleanup.graphql b/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/cleanup.graphql new file mode 100644 index 00000000..ede6546f --- /dev/null +++ b/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/cleanup.graphql @@ -0,0 +1,5 @@ +mutation removeHero { + removeHero(hero: "Batman") { + name + } +} diff --git a/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/input.graphql b/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/input.graphql new file mode 100644 index 00000000..9543a8d4 --- /dev/null +++ b/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/input.graphql @@ -0,0 +1,8 @@ +mutation createNewHeroWithVariables($hero: SuperHeroInput){ + createNewHero(hero: $hero){ + name + primaryLocation + superPowers + realName + } +} \ No newline at end of file diff --git a/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/output.json b/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/output.json new file mode 100644 index 00000000..74439046 --- /dev/null +++ b/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/output.json @@ -0,0 +1,12 @@ +{ + "data": { + "createNewHero": { + "name": "Batman", + "primaryLocation": "Gotham City", + "superPowers": [ + "Genius-level intellect" + ], + "realName": "Bruce Wayne" + } + } +} \ No newline at end of file diff --git a/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/test.properties b/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/test.properties new file mode 100644 index 00000000..cac12be9 --- /dev/null +++ b/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/test.properties @@ -0,0 +1,3 @@ +# Tests that variables can contain full "complex" objects +ignore=false +priority=200 diff --git a/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/variables.json b/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/variables.json new file mode 100644 index 00000000..b613802f --- /dev/null +++ b/server/tck/src/main/resources/tests/createNewHeroWithVariablesObject/variables.json @@ -0,0 +1,8 @@ +{ + "hero": { + "name": "Batman", + "realName": "Bruce Wayne", + "primaryLocation": "Gotham City", + "superPowers": ["Genius-level intellect"] + } +} \ No newline at end of file From fcf038cdad7a6b11a396e97d695e1dfd98d3d7b5 Mon Sep 17 00:00:00 2001 From: Andy McCright Date: Thu, 26 Mar 2020 14:33:26 -0500 Subject: [PATCH 009/248] Update .gitignore for new project structure Signed-off-by: Andy McCright --- .gitignore | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 64f7ca7b..bf586c9b 100644 --- a/.gitignore +++ b/.gitignore @@ -7,9 +7,15 @@ .idea .DS_Store **/*.iml -/server/target/ +/client/target/ +/client/api/target/ +/client/spec/target/ /client/tck/target/ /full/target/ /full/api/target/ /full/tck/target/ -/full/spec/target/ \ No newline at end of file +/full/spec/target/ +/server/target/ +/server/api/target/ +/server/spec/target/ +/server/tck/target/ From 7069943762a9001316e5a7dd6a43d96da38c8b86 Mon Sep 17 00:00:00 2001 From: Phillip Kruger Date: Fri, 27 Mar 2020 17:25:26 +0200 Subject: [PATCH 010/248] Fix for #202 Signed-off-by:Phillip Kruger --- .../graphql/tck/dynamic/SchemaDynamicValidityTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/SchemaDynamicValidityTest.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/SchemaDynamicValidityTest.java index 400d9fc8..4ebba0dc 100644 --- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/SchemaDynamicValidityTest.java +++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/SchemaDynamicValidityTest.java @@ -124,7 +124,7 @@ private String getSchemaContent() throws MalformedURLException, ProtocolExceptio connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); - connection.setRequestProperty("Content-Type", "plain/text"); + connection.setRequestProperty("Content-Type", "text/plain"); // Check the response code int responseCode = connection.getResponseCode(); From fa8f1e5d151ec70f9615ead35ad4e91a4d98ff61 Mon Sep 17 00:00:00 2001 From: Tim Middleton Date: Fri, 3 Apr 2020 15:05:07 +0800 Subject: [PATCH 011/248] Fixes #213 Signed-off-by: Tim Middleton (Software Engineer) --- server/spec/src/main/asciidoc/components/mutations.asciidoc | 3 ++- server/spec/src/main/asciidoc/components/queries.asciidoc | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/server/spec/src/main/asciidoc/components/mutations.asciidoc b/server/spec/src/main/asciidoc/components/mutations.asciidoc index a2c3fefd..ef4728d4 100644 --- a/server/spec/src/main/asciidoc/components/mutations.asciidoc +++ b/server/spec/src/main/asciidoc/components/mutations.asciidoc @@ -91,7 +91,8 @@ value is used as the mutation name. is used as the mutation name. * if the method is annotated with a `@JsonbProperty` annotation containing a non-empty String for it's value, that String value is used as the mutation name. -* if no other name can be determined, the Java method name is used as the mutation name. (with the set removed if this is a setter) +* if no other name can be determined, the Java method name is used as the mutation name. (with the set removed if the method +name matches the rules for a setter. e.g. `^set[A-Z].*`) Note that it is considered a deployment error if more than one mutation method has the same name with the same arguments. diff --git a/server/spec/src/main/asciidoc/components/queries.asciidoc b/server/spec/src/main/asciidoc/components/queries.asciidoc index 2b2cb331..58e0f1a8 100644 --- a/server/spec/src/main/asciidoc/components/queries.asciidoc +++ b/server/spec/src/main/asciidoc/components/queries.asciidoc @@ -57,7 +57,8 @@ is used as the query name. is used as the query name. * if the method is annotated with a `@JsonbProperty` annotation containing a non-empty String for it's value, that String value is used as the query name. -* if no other name can be determined, the Java method name is used as the query name. (with the get/is removed if this is a getter) +* if no other name can be determined, the Java method name is used as the query name. (with the get/is removed if the method +name matches the rules for a getter. e.g. `^get[A-Z].\*` or `^is[A-Z].*`) Note that it is considered a deployment error if more than one query method has the same name with the same arguments. From 914ca053fe7cc67ac232fffdd524fc8a215ab3cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= Date: Fri, 3 Apr 2020 17:04:54 +0200 Subject: [PATCH 012/248] Add testcases for schema-generation of types with supertypes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Yannick Bröker --- .../tck/apps/basic/api/GrandParentType.java | 29 ++++++++++++++ .../tck/apps/basic/api/ParentType.java | 30 ++++++++++++++ .../tck/apps/basic/api/ScalarTestApi.java | 2 +- .../tck/apps/basic/api/SourceType.java | 23 +++++++++++ .../graphql/tck/apps/basic/api/SubType.java | 32 +++++++++++++++ .../tck/apps/basic/api/SubTypeTestApi.java | 39 +++++++++++++++++++ .../src/main/resources/tests/subtypeTests.csv | 7 ++++ 7 files changed, 161 insertions(+), 1 deletion(-) create mode 100644 server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/GrandParentType.java create mode 100644 server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ParentType.java create mode 100644 server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceType.java create mode 100644 server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SubType.java create mode 100644 server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SubTypeTestApi.java create mode 100644 server/tck/src/main/resources/tests/subtypeTests.csv diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/GrandParentType.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/GrandParentType.java new file mode 100644 index 00000000..36ddb8f7 --- /dev/null +++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/GrandParentType.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2020 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.eclipse.microprofile.graphql.tck.apps.basic.api; + +public class GrandParentType { + + private String grandParentTypeField; + + public String getGrandParentTypeField() { + return grandParentTypeField; + } + + public void setGrandParentTypeField(final String grandParentTypeField) { + this.grandParentTypeField = grandParentTypeField; + } +} diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ParentType.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ParentType.java new file mode 100644 index 00000000..75313ad2 --- /dev/null +++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ParentType.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2020 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.eclipse.microprofile.graphql.tck.apps.basic.api; + + +public class ParentType extends GrandParentType { + + private String parentTypeField; + + public String getParentTypeField() { + return parentTypeField; + } + + public void setParentTypeField(final String parentTypeField) { + this.parentTypeField = parentTypeField; + } +} diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java index dff3ce58..c4f2555b 100644 --- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java +++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java @@ -293,4 +293,4 @@ public LocalDate transformedDate(){ public Integer transformedNumber(Integer input){ return input; } -} \ No newline at end of file +} diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceType.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceType.java new file mode 100644 index 00000000..0b0a1272 --- /dev/null +++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceType.java @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2020 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.eclipse.microprofile.graphql.tck.apps.basic.api; + +/** + * Just used to have e type usable with {@code @Source} + */ +public class SourceType { + +} diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SubType.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SubType.java new file mode 100644 index 00000000..3824e798 --- /dev/null +++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SubType.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2020 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.eclipse.microprofile.graphql.tck.apps.basic.api; + +/** + * To Test the generation of a Type with supertypes. + */ +public class SubType extends ParentType { + + private String subTypeField; + + public String getSubTypeField() { + return subTypeField; + } + + public void setSubTypeField(final String subTypeField) { + this.subTypeField = subTypeField; + } +} diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SubTypeTestApi.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SubTypeTestApi.java new file mode 100644 index 00000000..80ccacd2 --- /dev/null +++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SubTypeTestApi.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2020 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.eclipse.microprofile.graphql.tck.apps.basic.api; + +import org.eclipse.microprofile.graphql.GraphQLApi; +import org.eclipse.microprofile.graphql.Mutation; +import org.eclipse.microprofile.graphql.Query; + +@GraphQLApi +public class SubTypeTestApi { + + @Query + public SubType subType() { + final SubType subType = new SubType(); + subType.setSubTypeField("subTypeField"); + subType.setParentTypeField("parentTypeField"); + subType.setGrandParentTypeField("grandParentTypeField"); + return subType; + } + + @Mutation + public SubType subType(SubType subType) { + return subType; + } + +} diff --git a/server/tck/src/main/resources/tests/subtypeTests.csv b/server/tck/src/main/resources/tests/subtypeTests.csv new file mode 100644 index 00000000..abe217ee --- /dev/null +++ b/server/tck/src/main/resources/tests/subtypeTests.csv @@ -0,0 +1,7 @@ +# SubTypes +1| type SubType | subTypeField: String | Expecting fields from type in OutputType +2| type SubType | parentTypeField: String | Expecting fields from parent in OutputType +3| type SubType | grandParentTypeField: String | Expecting fields from grand-parent in OutputType +4| input SubTypeInput | subTypeField: String | Expecting fields from type in InputType +5| input SubTypeInput | parentTypeField: String | Expecting fields from parent in InputType +6| input SubTypeInput | grandParentTypeField: String | Expecting fields from grand-parent in InputType From 7f8a3137d244958f05bfd4fb52a1150236f30e57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= Date: Fri, 3 Apr 2020 22:49:26 +0200 Subject: [PATCH 013/248] Remove unused class SourceType MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Yannick Bröker --- .../tck/apps/basic/api/SourceType.java | 23 ------------------- 1 file changed, 23 deletions(-) delete mode 100644 server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceType.java diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceType.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceType.java deleted file mode 100644 index 0b0a1272..00000000 --- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceType.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2020 Contributors to the Eclipse Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.eclipse.microprofile.graphql.tck.apps.basic.api; - -/** - * Just used to have e type usable with {@code @Source} - */ -public class SourceType { - -} From 51dce8a5ebbabd4372393ec0360a9de9083c50fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= Date: Fri, 3 Apr 2020 23:18:59 +0200 Subject: [PATCH 014/248] Add description to fields from parents MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Yannick Bröker --- .../graphql/tck/apps/basic/api/GrandParentType.java | 3 +++ .../microprofile/graphql/tck/apps/basic/api/ParentType.java | 3 +++ server/tck/src/main/resources/tests/subtypeTests.csv | 2 ++ 3 files changed, 8 insertions(+) diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/GrandParentType.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/GrandParentType.java index 36ddb8f7..8059fe1e 100644 --- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/GrandParentType.java +++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/GrandParentType.java @@ -15,8 +15,11 @@ */ package org.eclipse.microprofile.graphql.tck.apps.basic.api; +import org.eclipse.microprofile.graphql.Description; + public class GrandParentType { + @Description("Field from grand-parent") private String grandParentTypeField; public String getGrandParentTypeField() { diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ParentType.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ParentType.java index 75313ad2..81743e8d 100644 --- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ParentType.java +++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ParentType.java @@ -16,8 +16,11 @@ package org.eclipse.microprofile.graphql.tck.apps.basic.api; +import org.eclipse.microprofile.graphql.Description; + public class ParentType extends GrandParentType { + @Description("Field from parent") private String parentTypeField; public String getParentTypeField() { diff --git a/server/tck/src/main/resources/tests/subtypeTests.csv b/server/tck/src/main/resources/tests/subtypeTests.csv index abe217ee..1bc3f946 100644 --- a/server/tck/src/main/resources/tests/subtypeTests.csv +++ b/server/tck/src/main/resources/tests/subtypeTests.csv @@ -5,3 +5,5 @@ 4| input SubTypeInput | subTypeField: String | Expecting fields from type in InputType 5| input SubTypeInput | parentTypeField: String | Expecting fields from parent in InputType 6| input SubTypeInput | grandParentTypeField: String | Expecting fields from grand-parent in InputType +7| type SubType | "Field from parent" | Missing description on field from parent +8| type SubType | "Field from grand-parent" | Missing description on field from grand-parent From 7a758c88a44450695f66a9cf7082dfe66870aae6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= Date: Fri, 3 Apr 2020 23:25:45 +0200 Subject: [PATCH 015/248] Add nonnull-field with name to parent MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Yannick Bröker --- .../graphql/tck/apps/basic/api/ParentType.java | 14 +++++++++++++- .../tck/src/main/resources/tests/subtypeTests.csv | 2 ++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ParentType.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ParentType.java index 81743e8d..cbe8ff04 100644 --- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ParentType.java +++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ParentType.java @@ -16,13 +16,17 @@ package org.eclipse.microprofile.graphql.tck.apps.basic.api; -import org.eclipse.microprofile.graphql.Description; +import org.eclipse.microprofile.graphql.*; public class ParentType extends GrandParentType { @Description("Field from parent") private String parentTypeField; + @NonNull + @Name("nonNullParentField") + private String nonNullParentTypeField; + public String getParentTypeField() { return parentTypeField; } @@ -30,4 +34,12 @@ public String getParentTypeField() { public void setParentTypeField(final String parentTypeField) { this.parentTypeField = parentTypeField; } + + public String getNonNullParentTypeField() { + return nonNullParentTypeField; + } + + public void setNonNullParentTypeField(final String nonNullParentTypeField) { + this.nonNullParentTypeField = nonNullParentTypeField; + } } diff --git a/server/tck/src/main/resources/tests/subtypeTests.csv b/server/tck/src/main/resources/tests/subtypeTests.csv index 1bc3f946..7446ec61 100644 --- a/server/tck/src/main/resources/tests/subtypeTests.csv +++ b/server/tck/src/main/resources/tests/subtypeTests.csv @@ -7,3 +7,5 @@ 6| input SubTypeInput | grandParentTypeField: String | Expecting fields from grand-parent in InputType 7| type SubType | "Field from parent" | Missing description on field from parent 8| type SubType | "Field from grand-parent" | Missing description on field from grand-parent +9| type SubType | nonNullParentField: String! | Expecting non-null field from parent in OutputType +10| input SubTypeInput | nonNullParentField: String! | Expecting non-null field from parent in InputType From e723a01706bb05d6efe1d1503b6671da52b1974e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= Date: Fri, 3 Apr 2020 23:26:36 +0200 Subject: [PATCH 016/248] Replace star-import with single imports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Yannick Bröker --- .../microprofile/graphql/tck/apps/basic/api/ParentType.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ParentType.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ParentType.java index cbe8ff04..7f40b07b 100644 --- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ParentType.java +++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ParentType.java @@ -16,7 +16,9 @@ package org.eclipse.microprofile.graphql.tck.apps.basic.api; -import org.eclipse.microprofile.graphql.*; +import org.eclipse.microprofile.graphql.Description; +import org.eclipse.microprofile.graphql.Name; +import org.eclipse.microprofile.graphql.NonNull; public class ParentType extends GrandParentType { From 0c48c57b7e4290da91165187d2b61f304dd7f4a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= Date: Sat, 4 Apr 2020 00:46:24 +0200 Subject: [PATCH 017/248] Add testcases for @Name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Yannick Bröker --- .../tck/apps/basic/api/ScalarTestApi.java | 6 ++ .../graphql/tck/apps/basic/api/Widget.java | 76 +++++++++++++++++++ .../src/main/resources/tests/nameTests.csv | 9 +++ 3 files changed, 91 insertions(+) create mode 100644 server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/Widget.java create mode 100644 server/tck/src/main/resources/tests/nameTests.csv diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java index c4f2555b..3fe6720f 100644 --- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java +++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java @@ -293,4 +293,10 @@ public LocalDate transformedDate(){ public Integer transformedNumber(Integer input){ return input; } + + @Mutation + public Widget addWidget(Widget widget) { + return widget; + } + } diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/Widget.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/Widget.java new file mode 100644 index 00000000..41226c25 --- /dev/null +++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/Widget.java @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2020 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.eclipse.microprofile.graphql.tck.apps.basic.api; + +import javax.json.bind.annotation.JsonbProperty; + +import org.eclipse.microprofile.graphql.Name; + +/** + * Type to test {@code @Name}, example taken from server-spec. + */ +public class Widget { + @Name("widgetName") + private String name; + private double weight; + private int quantity; + private float price; + + public Widget() { + } + + public Widget(final String name, final double weight, final int quantity, final float price) { + this.name = name; + this.weight = weight; + this.quantity = quantity; + this.price = price; + } + + @JsonbProperty("shippingWeight") + public double getWeight() { + return weight; + } + + public void setWeight(final double weight) { + this.weight = weight; + } + + @Name("cost") + public float getPrice() { + return this.price; + } + + public void setPrice(float price) { + this.price = price; + } + + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + public int getQuantity() { + return quantity; + } + + @Name("qty") + public void setQuantity(int quantity) { + this.quantity = quantity; + } +} diff --git a/server/tck/src/main/resources/tests/nameTests.csv b/server/tck/src/main/resources/tests/nameTests.csv new file mode 100644 index 00000000..ad1dc8bc --- /dev/null +++ b/server/tck/src/main/resources/tests/nameTests.csv @@ -0,0 +1,9 @@ +# Basic Scalar Types +1| type Widget | widgetName: String | Expecting field widgetName on type Widget +2| input Widget | widgetName: String | Expecting field widgetName on input WidgetInput +3| type Widget | shippingWeight: Float! | Expecting field shippingWeight on type Widget +4| input Widget | weight: Float! | Expecting field weight on input WidgetInput +5| type Widget | quantity: Int! | Expecting field quantity on type Widget +6| input Widget | qty: Int! | Expecting field qty on input WidgetInput +7| type Widget | cost: Float! | Expecting field cost on type Widget +8| input Widget | price: Float! | Expecting field price on input WidgetInput From ef3206ba57df3f4f1ca0ca0e1ba2b29af46ab3e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= Date: Sat, 4 Apr 2020 15:35:04 +0200 Subject: [PATCH 018/248] Add testcase for wrongly formatted date in input-object MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Yannick Bröker --- .../cleanup.graphql | 5 ++++ .../input.graphql | 18 ++++++++++++++ .../wrongDateFormatInInputObject/output.json | 24 +++++++++++++++++++ .../test.properties | 2 ++ 4 files changed, 49 insertions(+) create mode 100644 server/tck/src/main/resources/tests/wrongDateFormatInInputObject/cleanup.graphql create mode 100644 server/tck/src/main/resources/tests/wrongDateFormatInInputObject/input.graphql create mode 100644 server/tck/src/main/resources/tests/wrongDateFormatInInputObject/output.json create mode 100644 server/tck/src/main/resources/tests/wrongDateFormatInInputObject/test.properties diff --git a/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/cleanup.graphql b/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/cleanup.graphql new file mode 100644 index 00000000..14b22d82 --- /dev/null +++ b/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/cleanup.graphql @@ -0,0 +1,5 @@ +mutation removeHero { + removeHero(hero: "Black Panther") { + name + } +} diff --git a/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/input.graphql b/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/input.graphql new file mode 100644 index 00000000..afc01baa --- /dev/null +++ b/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/input.graphql @@ -0,0 +1,18 @@ +mutation createNewHero { + createNewHero(hero:{ + name: "Black Panther" + realName: "T'Challa" + superPowers: ["Top intellect"] + primaryLocation: "Wakanda, Africa" + teamAffiliations: [{name: "Avengers"}] + idNumber: "ID-98701234", + dateOfBirth: "An unparseable date" + }) { + name + primaryLocation + superPowers + realName + idNumber + birthday + } +} diff --git a/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/output.json b/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/output.json new file mode 100644 index 00000000..dbf15830 --- /dev/null +++ b/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/output.json @@ -0,0 +1,24 @@ +{ + "errors": [ + { + "message": "Validation error of type WrongType: argument 'dateOfBirth' with value 'StringValue{value='An unparseable date'}' is not a valid 'Date' @ 'createNewHero'", + "locations": [ + { + "line": 2, + "column": 5 + } + ], + "extensions": { + "description": "argument 'dateOfBirth' with value 'StringValue{value='An unparseable date'}' is not a valid 'Date'", + "validationErrorType": "WrongType", + "queryPath": [ + "createNewHero" + ], + "classification": "ValidationError" + } + } + ], + "data": { + "createNewHero": null + } +} diff --git a/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/test.properties b/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/test.properties new file mode 100644 index 00000000..b25bcef6 --- /dev/null +++ b/server/tck/src/main/resources/tests/wrongDateFormatInInputObject/test.properties @@ -0,0 +1,2 @@ +ignore=false +priority=200 \ No newline at end of file From 2f858357e571cd22b1c09f9ebffd9a48786c9d89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= Date: Sat, 4 Apr 2020 19:12:31 +0200 Subject: [PATCH 019/248] Add tests for `@Source` used with other inputs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Yannick Bröker --- .../tck/apps/basic/api/SourceTestApi.java | 50 +++++++++++++++++++ .../tck/apps/basic/api/SourceType.java | 22 ++++++++ .../tests/sourceWithDateInput/input.graphql | 5 ++ .../tests/sourceWithDateInput/output.json | 7 +++ .../input.graphql | 5 ++ .../sourceWithDefaultStringInput/output.json | 7 +++ .../sourceWithNullDateInput/input.graphql | 5 ++ .../tests/sourceWithNullDateInput/output.json | 7 +++ .../sourceWithNullStringInput/input.graphql | 5 ++ .../sourceWithNullStringInput/output.json | 7 +++ .../tests/sourceWithStringInput/input.graphql | 5 ++ .../tests/sourceWithStringInput/output.json | 7 +++ 12 files changed, 132 insertions(+) create mode 100644 server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceTestApi.java create mode 100644 server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceType.java create mode 100644 server/tck/src/main/resources/tests/sourceWithDateInput/input.graphql create mode 100644 server/tck/src/main/resources/tests/sourceWithDateInput/output.json create mode 100644 server/tck/src/main/resources/tests/sourceWithDefaultStringInput/input.graphql create mode 100644 server/tck/src/main/resources/tests/sourceWithDefaultStringInput/output.json create mode 100644 server/tck/src/main/resources/tests/sourceWithNullDateInput/input.graphql create mode 100644 server/tck/src/main/resources/tests/sourceWithNullDateInput/output.json create mode 100644 server/tck/src/main/resources/tests/sourceWithNullStringInput/input.graphql create mode 100644 server/tck/src/main/resources/tests/sourceWithNullStringInput/output.json create mode 100644 server/tck/src/main/resources/tests/sourceWithStringInput/input.graphql create mode 100644 server/tck/src/main/resources/tests/sourceWithStringInput/output.json diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceTestApi.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceTestApi.java new file mode 100644 index 00000000..7ff39c22 --- /dev/null +++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceTestApi.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2020 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.eclipse.microprofile.graphql.tck.apps.basic.api; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +import org.eclipse.microprofile.graphql.DateFormat; +import org.eclipse.microprofile.graphql.DefaultValue; +import org.eclipse.microprofile.graphql.GraphQLApi; +import org.eclipse.microprofile.graphql.Query; +import org.eclipse.microprofile.graphql.Source; + +/** + * {@code @Source} testing. + */ +@GraphQLApi +public class SourceTestApi { + + @Query + public SourceType getSource() { + return new SourceType(); + } + + public String stringInput(@Source SourceType source, String input) { + return "Input was: " + input; + } + + public String defaultStringInput(@Source SourceType source, @DefaultValue("Default value") String input) { + return "Input was: " + input; + } + + public String dateInput(@Source SourceType source, @DateFormat(value = "yyyy-MM-dd") LocalDate input) { + return "Input was: " + (input != null ? input.format(DateTimeFormatter.ISO_DATE) : null); + } + +} diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceType.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceType.java new file mode 100644 index 00000000..09556360 --- /dev/null +++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceType.java @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2020 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.eclipse.microprofile.graphql.tck.apps.basic.api; + +/** + * Just used as {@code @Source}-object. + */ +public class SourceType { +} diff --git a/server/tck/src/main/resources/tests/sourceWithDateInput/input.graphql b/server/tck/src/main/resources/tests/sourceWithDateInput/input.graphql new file mode 100644 index 00000000..4e485b7b --- /dev/null +++ b/server/tck/src/main/resources/tests/sourceWithDateInput/input.graphql @@ -0,0 +1,5 @@ +query testSourceWithDateInput { + source { + dateInput(input: "2011-12-03") + } +} diff --git a/server/tck/src/main/resources/tests/sourceWithDateInput/output.json b/server/tck/src/main/resources/tests/sourceWithDateInput/output.json new file mode 100644 index 00000000..85fbd641 --- /dev/null +++ b/server/tck/src/main/resources/tests/sourceWithDateInput/output.json @@ -0,0 +1,7 @@ +{ + "data": { + "source": { + "dateInput": "Input was: 2011-12-03" + } + } +} diff --git a/server/tck/src/main/resources/tests/sourceWithDefaultStringInput/input.graphql b/server/tck/src/main/resources/tests/sourceWithDefaultStringInput/input.graphql new file mode 100644 index 00000000..6c49f12b --- /dev/null +++ b/server/tck/src/main/resources/tests/sourceWithDefaultStringInput/input.graphql @@ -0,0 +1,5 @@ +query testSourceWithDefaultStringInput { + source { + defaultStringInput + } +} diff --git a/server/tck/src/main/resources/tests/sourceWithDefaultStringInput/output.json b/server/tck/src/main/resources/tests/sourceWithDefaultStringInput/output.json new file mode 100644 index 00000000..e8e6bb2f --- /dev/null +++ b/server/tck/src/main/resources/tests/sourceWithDefaultStringInput/output.json @@ -0,0 +1,7 @@ +{ + "data": { + "source": { + "defaultStringInput": "Input was: Default value" + } + } +} diff --git a/server/tck/src/main/resources/tests/sourceWithNullDateInput/input.graphql b/server/tck/src/main/resources/tests/sourceWithNullDateInput/input.graphql new file mode 100644 index 00000000..c734c490 --- /dev/null +++ b/server/tck/src/main/resources/tests/sourceWithNullDateInput/input.graphql @@ -0,0 +1,5 @@ +query testSourceWithNullDateInput { + source { + dateInput + } +} diff --git a/server/tck/src/main/resources/tests/sourceWithNullDateInput/output.json b/server/tck/src/main/resources/tests/sourceWithNullDateInput/output.json new file mode 100644 index 00000000..8a3cd095 --- /dev/null +++ b/server/tck/src/main/resources/tests/sourceWithNullDateInput/output.json @@ -0,0 +1,7 @@ +{ + "data": { + "source": { + "dateInput": "Input was: null" + } + } +} diff --git a/server/tck/src/main/resources/tests/sourceWithNullStringInput/input.graphql b/server/tck/src/main/resources/tests/sourceWithNullStringInput/input.graphql new file mode 100644 index 00000000..b5129944 --- /dev/null +++ b/server/tck/src/main/resources/tests/sourceWithNullStringInput/input.graphql @@ -0,0 +1,5 @@ +query testSourceWithNullStringInput { + source { + stringInput + } +} diff --git a/server/tck/src/main/resources/tests/sourceWithNullStringInput/output.json b/server/tck/src/main/resources/tests/sourceWithNullStringInput/output.json new file mode 100644 index 00000000..f67e094e --- /dev/null +++ b/server/tck/src/main/resources/tests/sourceWithNullStringInput/output.json @@ -0,0 +1,7 @@ +{ + "data": { + "source": { + "stringInput": "Input was: null" + } + } +} diff --git a/server/tck/src/main/resources/tests/sourceWithStringInput/input.graphql b/server/tck/src/main/resources/tests/sourceWithStringInput/input.graphql new file mode 100644 index 00000000..a1d209f3 --- /dev/null +++ b/server/tck/src/main/resources/tests/sourceWithStringInput/input.graphql @@ -0,0 +1,5 @@ +query testSourceWithStringInput { + source { + stringInput(input: "Hello World!") + } +} diff --git a/server/tck/src/main/resources/tests/sourceWithStringInput/output.json b/server/tck/src/main/resources/tests/sourceWithStringInput/output.json new file mode 100644 index 00000000..0f9f0eaa --- /dev/null +++ b/server/tck/src/main/resources/tests/sourceWithStringInput/output.json @@ -0,0 +1,7 @@ +{ + "data": { + "source": { + "stringInput": "Input was: Hello World!" + } + } +} From c82dc9ebcbee5fa7aee5fb7fc5c902d92c8e3bec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= Date: Sat, 4 Apr 2020 19:44:46 +0200 Subject: [PATCH 020/248] Add tests for creation if referenced types MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Yannick Bröker --- .../tck/apps/basic/api/ReferencedType.java | 34 ++++++++++++++ .../apps/basic/api/ReferencedTypeTestApi.java | 41 +++++++++++++++++ .../tck/apps/basic/api/ReferencingType.java | 46 +++++++++++++++++++ .../resources/tests/referencedTypeTests.csv | 7 +++ 4 files changed, 128 insertions(+) create mode 100644 server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencedType.java create mode 100644 server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencedTypeTestApi.java create mode 100644 server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencingType.java create mode 100644 server/tck/src/main/resources/tests/referencedTypeTests.csv diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencedType.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencedType.java new file mode 100644 index 00000000..5270d5e2 --- /dev/null +++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencedType.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2020 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.eclipse.microprofile.graphql.tck.apps.basic.api; + +/** + * Used to test creation of referenced Types. + *

+ * Should not be used directly as input or output type. + */ +public class ReferencedType { + + private String value; + + public String getValue() { + return value; + } + + public void setValue(final String value) { + this.value = value; + } +} diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencedTypeTestApi.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencedTypeTestApi.java new file mode 100644 index 00000000..d12a4115 --- /dev/null +++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencedTypeTestApi.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2020 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.eclipse.microprofile.graphql.tck.apps.basic.api; + +import org.eclipse.microprofile.graphql.GraphQLApi; +import org.eclipse.microprofile.graphql.Mutation; +import org.eclipse.microprofile.graphql.Query; + +@GraphQLApi +public class ReferencedTypeTestApi { + + @Query + ReferencingType referencingType() { + ReferencedType referencedType = new ReferencedType(); + referencedType.setValue("value"); + ReferencingType referencingType = new ReferencingType(); + referencingType.setReferencedType(referencedType); + referencingType.setNonNullReferencedType(referencedType); + return referencingType; + } + + @Mutation + ReferencingType addReferencingType(ReferencingType referencingType) { + return referencingType; + } + + +} diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencingType.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencingType.java new file mode 100644 index 00000000..2b8ecb9b --- /dev/null +++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencingType.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2020 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.eclipse.microprofile.graphql.tck.apps.basic.api; + +import org.eclipse.microprofile.graphql.NonNull; + +/** + * Used to test the creation of {@link ReferencedType}. + */ +public class ReferencingType { + + private ReferencedType referencedType; + + @NonNull + private ReferencedType nonNullReferencedType; + + + public ReferencedType getReferencedType() { + return referencedType; + } + + public void setReferencedType(final ReferencedType referencedType) { + this.referencedType = referencedType; + } + + public ReferencedType getNonNullReferencedType() { + return nonNullReferencedType; + } + + public void setNonNullReferencedType(final ReferencedType nonNullReferencedType) { + this.nonNullReferencedType = nonNullReferencedType; + } +} diff --git a/server/tck/src/main/resources/tests/referencedTypeTests.csv b/server/tck/src/main/resources/tests/referencedTypeTests.csv new file mode 100644 index 00000000..57e06e03 --- /dev/null +++ b/server/tck/src/main/resources/tests/referencedTypeTests.csv @@ -0,0 +1,7 @@ +# Referenced Type Tests +1| type ReferencingType | referencedType: ReferencedType | Expecting field referencedType in type ReferencingType +2| type ReferencingType | nonNullReferencedType: ReferencedType! | Expecting field nonNullReferencedType in type ReferencingType +3| type ReferencedType | value: String | Expecting field value in type ReferencedType +4| input ReferencingTypeInput | referencedType: ReferencedTypeInput | Expecting field referencedType in input ReferencingTypeInput +5| input ReferencingTypeInput | nonNullReferencedType: ReferencedTypeInput! | Expecting field nonNullReferencedType in input ReferencingTypeInput +6| input ReferencedTypeInput | value: String | Expecting field value in input ReferencingTypeInput From 4c1d336d0077ad63298badaa3317fe6f1b683dde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= Date: Mon, 6 Apr 2020 18:04:42 +0200 Subject: [PATCH 021/248] Update javadoc of `ID` according to spec MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Yannick Bröker --- .../src/main/java/org/eclipse/microprofile/graphql/Id.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/server/api/src/main/java/org/eclipse/microprofile/graphql/Id.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/Id.java index 6c550f76..243e92e4 100644 --- a/server/api/src/main/java/org/eclipse/microprofile/graphql/Id.java +++ b/server/api/src/main/java/org/eclipse/microprofile/graphql/Id.java @@ -24,9 +24,10 @@ /** * Marks a field as a ID Scalar Type. *
- * Note that this annotation may only be placed on String fields/getters/setters/parameters. A deployment - * error should result if it is placed on a field/getter/setter/parameter of a different type. - * + * Note that this annotation may only be placed on String, numerical primitive {@code long} and {@code int}, + * their object equivalents ({@link Long}, {@link Integer}), and {@link java.util.UUID} fields/getters/setters/parameters. + * A deployment error should result if it is placed on a field/getter/setter/parameter of a different type. + * *

* For example, a user might annotate a method's parameter as such: *


From d209facc099d616d64fafe81f7766cda1c48ae20 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= 
Date: Mon, 6 Apr 2020 18:06:17 +0200
Subject: [PATCH 022/248] Align description with example
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Yannick Bröker 
---
 .../api/src/main/java/org/eclipse/microprofile/graphql/Id.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/api/src/main/java/org/eclipse/microprofile/graphql/Id.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/Id.java
index 243e92e4..0272b085 100644
--- a/server/api/src/main/java/org/eclipse/microprofile/graphql/Id.java
+++ b/server/api/src/main/java/org/eclipse/microprofile/graphql/Id.java
@@ -29,7 +29,7 @@
  * A deployment error should result if it is placed on a field/getter/setter/parameter of a different type.
  *
  * 

- * For example, a user might annotate a method's parameter as such: + * For example, a user might annotate a field as such: *
  * public class Person {
  *      {@literal @}Id

From 117fe6cc39e8ef42ac49dbba9339e83b216980fc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= 
Date: Wed, 8 Apr 2020 12:01:55 +0200
Subject: [PATCH 023/248] Add tests for schema-generation and ececution
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Yannick Bröker 
---
 .../graphql/tck/apps/basic/api/SourceTestApi.java  |  5 +++++
 .../src/main/resources/tests/sourceSchemaTests.csv |  9 +++++++++
 .../input.graphql                                  |  5 +++++
 .../sourceWithNullOnNonNullStringInput/output.json | 14 ++++++++++++++
 4 files changed, 33 insertions(+)
 create mode 100644 server/tck/src/main/resources/tests/sourceSchemaTests.csv
 create mode 100644 server/tck/src/main/resources/tests/sourceWithNullOnNonNullStringInput/input.graphql
 create mode 100644 server/tck/src/main/resources/tests/sourceWithNullOnNonNullStringInput/output.json

diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceTestApi.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceTestApi.java
index 7ff39c22..e54b9f9d 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceTestApi.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceTestApi.java
@@ -21,6 +21,7 @@
 import org.eclipse.microprofile.graphql.DateFormat;
 import org.eclipse.microprofile.graphql.DefaultValue;
 import org.eclipse.microprofile.graphql.GraphQLApi;
+import org.eclipse.microprofile.graphql.NonNull;
 import org.eclipse.microprofile.graphql.Query;
 import org.eclipse.microprofile.graphql.Source;
 
@@ -39,6 +40,10 @@ public String stringInput(@Source SourceType source, String input) {
         return "Input was: " + input;
     }
 
+    public String nonNullStringInput(@Source SourceType source, @NonNull String input) {
+        return "Input was: " + input;
+    }
+
     public String defaultStringInput(@Source SourceType source, @DefaultValue("Default value") String input) {
         return "Input was: " + input;
     }
diff --git a/server/tck/src/main/resources/tests/sourceSchemaTests.csv b/server/tck/src/main/resources/tests/sourceSchemaTests.csv
new file mode 100644
index 00000000..da52e0e1
--- /dev/null
+++ b/server/tck/src/main/resources/tests/sourceSchemaTests.csv
@@ -0,0 +1,9 @@
+# SourceTypes
+1| type Query              |   source: SourceType                                               |   Expecting field source in Query
+2| type SourceType         |   stringInput(input: String): String                               |   Expecting field stringInput with parameter input in SourceType
+3| type SourceType         |   nonNullStringInput(input: String!): String                       |   Expecting field nonNullStringInput with non-null parameter input in SourceType
+4| type SourceType         |   defaultStringInput(input: String = "Default value"): String      |   Expecting field defaultStringInput with parameter input in SourceType
+5| type SourceType         |   dateInput(
+"yyyy-MM-dd"
+input: Date
+): String                                   |   Expecting field dateInput with parameter input in SourceType
diff --git a/server/tck/src/main/resources/tests/sourceWithNullOnNonNullStringInput/input.graphql b/server/tck/src/main/resources/tests/sourceWithNullOnNonNullStringInput/input.graphql
new file mode 100644
index 00000000..7b0c97b2
--- /dev/null
+++ b/server/tck/src/main/resources/tests/sourceWithNullOnNonNullStringInput/input.graphql
@@ -0,0 +1,5 @@
+query testSourceWithNullOnNonNullStringInput {
+	source {
+		nonNullStringInput
+	}
+}
diff --git a/server/tck/src/main/resources/tests/sourceWithNullOnNonNullStringInput/output.json b/server/tck/src/main/resources/tests/sourceWithNullOnNonNullStringInput/output.json
new file mode 100644
index 00000000..8be65086
--- /dev/null
+++ b/server/tck/src/main/resources/tests/sourceWithNullOnNonNullStringInput/output.json
@@ -0,0 +1,14 @@
+{
+  "data": null,
+  "errors": [
+    {
+      "message": "Validation error of type WrongType: argument 'input' with value 'NullValue{}' must not be null @ 'nonNullStringInput'",
+      "locations": [
+        {
+          "line": 3,
+          "column": 9
+        }
+      ]
+    }
+  ]
+}

From bc48573d421d4d069cd2eca07e78b3ca6cada0fa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= 
Date: Wed, 8 Apr 2020 12:05:45 +0200
Subject: [PATCH 024/248] Add test for named input
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Yannick Bröker 
---
 .../graphql/tck/apps/basic/api/SourceTestApi.java            | 5 +++++
 server/tck/src/main/resources/tests/sourceSchemaTests.csv    | 1 +
 2 files changed, 6 insertions(+)

diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceTestApi.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceTestApi.java
index e54b9f9d..e8e6dbcf 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceTestApi.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/SourceTestApi.java
@@ -21,6 +21,7 @@
 import org.eclipse.microprofile.graphql.DateFormat;
 import org.eclipse.microprofile.graphql.DefaultValue;
 import org.eclipse.microprofile.graphql.GraphQLApi;
+import org.eclipse.microprofile.graphql.Name;
 import org.eclipse.microprofile.graphql.NonNull;
 import org.eclipse.microprofile.graphql.Query;
 import org.eclipse.microprofile.graphql.Source;
@@ -44,6 +45,10 @@ public String nonNullStringInput(@Source SourceType source, @NonNull String inpu
         return "Input was: " + input;
     }
 
+    public String namedStringInput(@Source SourceType source, @Name("in") String input) {
+        return "Input was: " + input;
+    }
+
     public String defaultStringInput(@Source SourceType source, @DefaultValue("Default value") String input) {
         return "Input was: " + input;
     }
diff --git a/server/tck/src/main/resources/tests/sourceSchemaTests.csv b/server/tck/src/main/resources/tests/sourceSchemaTests.csv
index da52e0e1..cff4dd03 100644
--- a/server/tck/src/main/resources/tests/sourceSchemaTests.csv
+++ b/server/tck/src/main/resources/tests/sourceSchemaTests.csv
@@ -7,3 +7,4 @@
 "yyyy-MM-dd"
 input: Date
 ): String                                   |   Expecting field dateInput with parameter input in SourceType
+6| type SourceType         |   namedStringInput(in: String): String                             |   Expecting field defaultStringInput with parameter `in` in SourceType

From 1edc06e694ade4aebc013db9c657c89ce89315cb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= 
Date: Wed, 8 Apr 2020 13:33:26 +0200
Subject: [PATCH 025/248] Fix expected error-message on missing input
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Yannick Bröker 
---
 .../output.json                                   | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/server/tck/src/main/resources/tests/sourceWithNullOnNonNullStringInput/output.json b/server/tck/src/main/resources/tests/sourceWithNullOnNonNullStringInput/output.json
index 8be65086..7a47c1ea 100644
--- a/server/tck/src/main/resources/tests/sourceWithNullOnNonNullStringInput/output.json
+++ b/server/tck/src/main/resources/tests/sourceWithNullOnNonNullStringInput/output.json
@@ -2,13 +2,22 @@
   "data": null,
   "errors": [
     {
-      "message": "Validation error of type WrongType: argument 'input' with value 'NullValue{}' must not be null @ 'nonNullStringInput'",
+      "message": "Validation error of type MissingFieldArgument: Missing field argument input @ 'source/nonNullStringInput'",
       "locations": [
         {
           "line": 3,
-          "column": 9
+          "column": 3
         }
-      ]
+      ],
+      "extensions": {
+        "description": "Missing field argument input",
+        "validationErrorType": "MissingFieldArgument",
+        "queryPath": [
+          "source",
+          "nonNullStringInput"
+        ],
+        "classification": "ValidationError"
+      }
     }
   ]
 }

From acd85028f6021565ec24c89069315d67f2d31399 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= 
Date: Tue, 14 Apr 2020 17:20:36 +0200
Subject: [PATCH 026/248] Refactor tests for `@Name`
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Yannick Bröker 
---
 .../graphql/tck/apps/basic/api/Person.java    | 72 ++++++++++++++++++
 .../tck/apps/basic/api/ScalarTestApi.java     |  4 +-
 .../graphql/tck/apps/basic/api/Widget.java    | 76 -------------------
 .../src/main/resources/tests/nameTests.csv    | 16 ++--
 4 files changed, 81 insertions(+), 87 deletions(-)
 create mode 100644 server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/Person.java
 delete mode 100644 server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/Widget.java

diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/Person.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/Person.java
new file mode 100644
index 00000000..46325074
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/Person.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.basic.api;
+
+import java.time.LocalDate;
+
+import org.eclipse.microprofile.graphql.Name;
+
+/**
+ * Type to test {@code @Name} on field, getter & setter.
+ */
+public class Person {
+
+    @Name("lastName")
+    private String surname;
+
+    private String forename;
+
+    private LocalDate birth;
+
+
+    public Person() {
+    }
+
+    public Person(final String surname, final String forename, final LocalDate birth) {
+        this.surname = surname;
+        this.forename = forename;
+        this.birth = birth;
+    }
+
+    public String getSurname() {
+        return surname;
+    }
+
+    public void setSurname(final String surname) {
+        this.surname = surname;
+    }
+
+
+    @Name("firstName")
+    public String getForename() {
+        return forename;
+    }
+
+    public void setForename(final String forename) {
+        this.forename = forename;
+    }
+
+
+    public LocalDate getBirth() {
+        return birth;
+    }
+
+    @Name("birthDay")
+    public void setBirth(final LocalDate birth) {
+        this.birth = birth;
+    }
+
+}
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java
index 3fe6720f..1fe26fbc 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java
@@ -295,8 +295,8 @@ public Integer transformedNumber(Integer input){
     }
 
     @Mutation
-    public Widget addWidget(Widget widget) {
-        return widget;
+    public Person addPerson(Person person) {
+        return person;
     }
 
 }
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/Widget.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/Widget.java
deleted file mode 100644
index 41226c25..00000000
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/Widget.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2020 Contributors to the Eclipse Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.eclipse.microprofile.graphql.tck.apps.basic.api;
-
-import javax.json.bind.annotation.JsonbProperty;
-
-import org.eclipse.microprofile.graphql.Name;
-
-/**
- * Type to test {@code @Name}, example taken from server-spec.
- */
-public class Widget {
-    @Name("widgetName")
-    private String name;
-    private double weight;
-    private int quantity;
-    private float price;
-
-    public Widget() {
-    }
-
-    public Widget(final String name, final double weight, final int quantity, final float price) {
-        this.name = name;
-        this.weight = weight;
-        this.quantity = quantity;
-        this.price = price;
-    }
-
-    @JsonbProperty("shippingWeight")
-    public double getWeight() {
-        return weight;
-    }
-
-    public void setWeight(final double weight) {
-        this.weight = weight;
-    }
-
-    @Name("cost")
-    public float getPrice() {
-        return this.price;
-    }
-
-    public void setPrice(float price) {
-        this.price = price;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(final String name) {
-        this.name = name;
-    }
-
-    public int getQuantity() {
-        return quantity;
-    }
-
-    @Name("qty")
-    public void setQuantity(int quantity) {
-        this.quantity = quantity;
-    }
-}
diff --git a/server/tck/src/main/resources/tests/nameTests.csv b/server/tck/src/main/resources/tests/nameTests.csv
index ad1dc8bc..9f0dab79 100644
--- a/server/tck/src/main/resources/tests/nameTests.csv
+++ b/server/tck/src/main/resources/tests/nameTests.csv
@@ -1,9 +1,7 @@
-# Basic Scalar Types
-1|  type Widget      |   widgetName: String                 |   Expecting field widgetName on type Widget
-2|  input Widget     |   widgetName: String                 |   Expecting field widgetName on input WidgetInput
-3|  type Widget      |   shippingWeight: Float!             |   Expecting field shippingWeight on type Widget
-4|  input Widget     |   weight: Float!                     |   Expecting field weight on input WidgetInput
-5|  type Widget      |   quantity: Int!                     |   Expecting field quantity on type Widget
-6|  input Widget     |   qty: Int!                          |   Expecting field qty on input WidgetInput
-7|  type Widget      |   cost: Float!                       |   Expecting field cost on type Widget
-8|  input Widget     |   price: Float!                      |   Expecting field price on input WidgetInput
+# Tests for @Name
+1|  type Person     |   lastName: String               |   Expecting field lastName on type Person
+2|  input Person    |   lastName: String               |   Expecting field lastName on input PersonInput
+3|  type Person     |   firstName: String              |   Expecting field firstName on type Person
+4|  input Person    |   forename: String               |   Expecting field forename on input PersonInput
+5|  type Person     |   birth: Date                    |   Expecting field birth on type Person
+6|  input Person    |   birthDay: Date                 |   Expecting field birthDay on input PersonInput

From 12c7db92134aa29bb0951f82bb03fcf7d833b8a4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= 
Date: Tue, 14 Apr 2020 17:28:26 +0200
Subject: [PATCH 027/248] Refactor tests for `@JsonbProperty`
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Yannick Bröker 
---
 .../tck/apps/basic/api/JsonbPerson.java       | 72 +++++++++++++++++++
 .../tck/apps/basic/api/ScalarTestApi.java     | 69 ++++++++++--------
 .../src/main/resources/tests/nameTests.csv    |  9 ++-
 3 files changed, 118 insertions(+), 32 deletions(-)
 create mode 100644 server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/JsonbPerson.java

diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/JsonbPerson.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/JsonbPerson.java
new file mode 100644
index 00000000..f666f103
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/JsonbPerson.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.basic.api;
+
+import java.time.LocalDate;
+
+import javax.json.bind.annotation.JsonbProperty;
+
+/**
+ * Type to test {@code @JsonbProperty} on field, getter & setter.
+ */
+public class JsonbPerson {
+
+    @JsonbProperty("lastName")
+    private String surname;
+
+    private String forename;
+
+    private LocalDate birth;
+
+
+    public JsonbPerson() {
+    }
+
+    public JsonbPerson(final String surname, final String forename, final LocalDate birth) {
+        this.surname = surname;
+        this.forename = forename;
+        this.birth = birth;
+    }
+
+    public String getSurname() {
+        return surname;
+    }
+
+    public void setSurname(final String surname) {
+        this.surname = surname;
+    }
+
+
+    @JsonbProperty("firstName")
+    public String getForename() {
+        return forename;
+    }
+
+    public void setForename(final String forename) {
+        this.forename = forename;
+    }
+
+
+    public LocalDate getBirth() {
+        return birth;
+    }
+
+    @JsonbProperty("birthDay")
+    public void setBirth(final LocalDate birth) {
+        this.birth = birth;
+    }
+
+}
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java
index 1fe26fbc..0aa59358 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java
@@ -20,7 +20,9 @@
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
+
 import javax.json.bind.annotation.JsonbProperty;
+
 import org.eclipse.microprofile.graphql.DateFormat;
 import org.eclipse.microprofile.graphql.Description;
 import org.eclipse.microprofile.graphql.GraphQLApi;
@@ -40,94 +42,94 @@ public class ScalarTestApi {
     @Query("testScalarsInPojo")
     public ScalarHolder getScalarHolder() {
         ScalarHolder sh = new ScalarHolder();
-        
+
         // Short
         short s = 123;
         sh.setShortObject(new Short(s));
         sh.setFormattedShortObject(new Short(s));
         sh.setShortPrimitive(s);
-        
+
         // Integer
         int i = 123456789;
         sh.setIntObject(new Integer(i));
         sh.setFormattedIntObject(new Integer(i));
         sh.setIntPrimitive(i);
-        
+
         // Long
         long l = 123456789L;
         sh.setLongObject(new Long(l));
         sh.setFormattedLongObject(new Long(l));
         sh.setLongPrimitive(l);
         sh.setFormattedLongPrimitive(l);
-        
+
         // Float
         float f = 123456.789F;
         sh.setFloatObject(new Float(f));
         sh.setFormattedFloatObject(new Float(f));
         sh.setFloatPrimitive(f);
-        
+
         // Double
         double d = 123456.789;
         sh.setDoubleObject(new Double(d));
         sh.setFormattedDoubleObject(new Double(d));
         sh.setDoublePrimitive(d);
-        
+
         // Byte
         byte b = 123;
         sh.setByteObject(new Byte("123"));
         sh.setFormattedByteObject(new Byte("123"));
         sh.setBytePrimitive(b);
-        
+
         // BigInteger
         sh.setBigIntegerObject(BigInteger.valueOf(123456789));
         sh.setFormattedBigIntegerObject(BigInteger.valueOf(123456789));
-        
+
         // BigDecimal
         sh.setBigDecimalObject(BigDecimal.valueOf(123456.789));
         sh.setFormattedBigDecimalObject(BigDecimal.valueOf(123456.789));
-        
+
         // Boolean
         sh.setBooleanObject(Boolean.valueOf(false));
         sh.setBooleanPrimitive(false);
-        
+
         // Character
         char c = "c".charAt(0);
         sh.setCharObject(new Character(c));
         sh.setCharPrimitive(c);
-        
+
         // String
         sh.setStringObject("123456789");
         sh.setCharArray("123456789".toCharArray());
-        
+
         // LocalDate
         LocalDate localDate = LocalDate.parse("2019-10-23");
         sh.setDateObject(localDate);
         sh.setAnotherDateObject(localDate);
         sh.setFormattedDateObject(localDate);
-            
+
         // LocalTime
         LocalTime localTime = LocalTime.parse("11:46:34.263");
         sh.setTimeObject(localTime);
         sh.setAnotherTimeObject(localTime);
         sh.setFormattedTimeObject(localTime);
-        
+
         // LocalDateTime
         LocalDateTime localDateTime = LocalDateTime.parse("2019-10-23T11:46:34.263");
         sh.setDateTimeObject(localDateTime);
         sh.setAnotherDateTimeObject(localDateTime);
         sh.setFormattedDateTimeObject(localDateTime);
-            
+
         // ID
         sh.setId("123456789");
-        
+
         return sh;
     }
- 
+
     @Mutation
     public ScalarHolder setScalarHolder(ScalarHolder scalarHolder) {
         return scalarHolder;
     }
-    
+
     @Query
     public short getShortPrimitive(){
         return getScalarHolder().getShortPrimitive();
@@ -142,7 +144,7 @@ public Short getShortObject(){
     public int intPrimitive(){
         return getScalarHolder().getIntPrimitive();
     }
-    
+
     @Query
     @Name("testIntObject")
     public Integer intObject(){
@@ -154,7 +156,7 @@ public Integer intObject(){
     public long longPrimitive(){
         return getScalarHolder().getLongPrimitive();
     }
-    
+
     @Query
     @Name("testLongObject")
     public Long longObject(){
@@ -166,7 +168,7 @@ public Long longObject(){
     public float floatPrimitive(){
         return getScalarHolder().getFloatPrimitive();
     }
-    
+
     @Query
     @Name("testFloatObject")
     public Float floatObject(){
@@ -178,7 +180,7 @@ public Float floatObject(){
     public double doublePrimitive(){
         return getScalarHolder().getDoublePrimitive();
     }
-    
+
     @Query
     @Name("testDoubleObject")
     public Double doubleObject(){
@@ -199,7 +201,7 @@ public Boolean isBooleanObject(){
     public char charPrimitive(){
         return getScalarHolder().getCharPrimitive();
     }
-    
+
     @Query
     @Name("testCharObject")
     public Character charObject(){
@@ -233,7 +235,7 @@ public Byte byteObject(){
     public BigInteger bigIntegerObject(){
         return getScalarHolder().getBigIntegerObject();
     }
-    
+
     @Query
     @Name("testBigDecimalObject")
     public BigDecimal bigDecimalObject(){
@@ -245,13 +247,13 @@ public BigDecimal bigDecimalObject(){
     public LocalDate dateObject(){
         return getScalarHolder().getDateObject();
     }
-    
+
     @Query
     @Name("testTimeObject")
     public LocalTime timeObject(){
         return getScalarHolder().getTimeObject();
     }
-    
+
     @Query
     @JsonbProperty("testDateTimeObject")
     public LocalDateTime dateTimeObject(){
@@ -262,23 +264,23 @@ public LocalDateTime dateTimeObject(){
     @Name("testId")
     public String id(){
         return getScalarHolder().getId();
-    }  
+    }
 
     @Query
     public BasicInterface basicMessageEcho(@Name("input") BasicInput input) {
         return new BasicType(input.getMessage());
     }
-    
+
     @Query
     public String getaway(){
         return "Just testing a name that starts with get but is not a getter";
     }
-    
+
     @Mutation
     public String settlement(){
         return "Just testing a name that starts with set but is not a setter";
     }
-    
+
     @Query
     @Description("Testing transformed date as a response")
     @DateFormat(value = "dd MMM yyyy")
@@ -286,7 +288,7 @@ public LocalDate transformedDate(){
         String date = "2016-08-16";
         return LocalDate.parse(date);
     }
-    
+
     @Mutation
     @Description("Testing transformed number as a response")
     @NumberFormat(value = "number #", locale = "en-GB")
@@ -299,4 +301,9 @@ public Person addPerson(Person person) {
         return person;
     }
 
+    @Mutation
+    public JsonbPerson addJsonbPerson(JsonbPerson person) {
+        return person;
+    }
+
 }
diff --git a/server/tck/src/main/resources/tests/nameTests.csv b/server/tck/src/main/resources/tests/nameTests.csv
index 9f0dab79..e98d69b2 100644
--- a/server/tck/src/main/resources/tests/nameTests.csv
+++ b/server/tck/src/main/resources/tests/nameTests.csv
@@ -1,7 +1,14 @@
-# Tests for @Name
+# Tests for @Name & @JsonbProperty
 1|  type Person     |   lastName: String               |   Expecting field lastName on type Person
 2|  input Person    |   lastName: String               |   Expecting field lastName on input PersonInput
 3|  type Person     |   firstName: String              |   Expecting field firstName on type Person
 4|  input Person    |   forename: String               |   Expecting field forename on input PersonInput
 5|  type Person     |   birth: Date                    |   Expecting field birth on type Person
 6|  input Person    |   birthDay: Date                 |   Expecting field birthDay on input PersonInput
+
+7|  type JsonbPerson    |   lastName: String           |   Expecting field lastName on type JsonbPerson
+8|  input JsonbPerson   |   lastName: String           |   Expecting field lastName on input JsonbPersonInput
+9|  type JsonbPerson    |   firstName: String          |   Expecting field firstName on type JsonbPerson
+10|  input JsonbPerson  |   forename: String           |   Expecting field forename on input JsonbPersonInput
+11|  type JsonbPerson   |   birth: Date                |   Expecting field birth on type JsonbPerson
+12|  input JsonbPerson  |   birthDay: Date             |   Expecting field birthDay on input JsonbPersonInput

From 0ad410d4cada374c985bde75260a956a965032c0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= 
Date: Tue, 14 Apr 2020 17:30:33 +0200
Subject: [PATCH 028/248] Fix javadoc
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Yannick Bröker 
---
 .../microprofile/graphql/tck/apps/basic/api/JsonbPerson.java    | 2 +-
 .../eclipse/microprofile/graphql/tck/apps/basic/api/Person.java | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/JsonbPerson.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/JsonbPerson.java
index f666f103..dc6e6930 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/JsonbPerson.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/JsonbPerson.java
@@ -20,7 +20,7 @@
 import javax.json.bind.annotation.JsonbProperty;
 
 /**
- * Type to test {@code @JsonbProperty} on field, getter & setter.
+ * Type to test {@code @JsonbProperty} on field, getter and setter.
  */
 public class JsonbPerson {
 
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/Person.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/Person.java
index 46325074..92f877bd 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/Person.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/Person.java
@@ -20,7 +20,7 @@
 import org.eclipse.microprofile.graphql.Name;
 
 /**
- * Type to test {@code @Name} on field, getter & setter.
+ * Type to test {@code @Name} on field, getter and setter.
  */
 public class Person {
 

From 3a16e2e804fb0cb8c99a81dcf8b7c762436aa864 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= 
Date: Tue, 14 Apr 2020 17:44:23 +0200
Subject: [PATCH 029/248] Update naming example in server-spec
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Yannick Bröker 
---
 .../main/asciidoc/entities/naming.asciidoc    | 92 +++++++++----------
 1 file changed, 44 insertions(+), 48 deletions(-)

diff --git a/server/spec/src/main/asciidoc/entities/naming.asciidoc b/server/spec/src/main/asciidoc/entities/naming.asciidoc
index a6bfa07b..70b0df8d 100644
--- a/server/spec/src/main/asciidoc/entities/naming.asciidoc
+++ b/server/spec/src/main/asciidoc/entities/naming.asciidoc
@@ -24,23 +24,17 @@ For example:
 .Name Java Code Example
 [source,java,numbered]
 ----
-public class Widget {
-    @Name("widgetName")
-    private String name;
-    private double weight;
-    private int quantity;
-    //...
+public class Person {
 
-    @JsonbProperty("shippingWeight")
-    public double getWeight() {
-        return weight;
-    }
-    //...
+    @Name("lastName")
+    private String surname;
 
-    @Name("qty")
-    public void setQuantity(int quantity) {
-        this.quantity = quantity;
-    }
+    @JsonbProperty("firstName")
+    private String forename;
+
+    private LocalDate birth;
+
+    //...
 }
 ----
 
@@ -49,16 +43,16 @@ That would create a schema like this:
 .Name Schema Example
 [source,graphql,numbered]
 ----
-type Widget {
-    widgetName: String
-    quantity: Int!
-    shippingWeight: Double!
+type Person {
+    lastName: String
+    firstName: String
+    birth: Date
 }
 
-input WidgetInput {
-    widgetName: String
-    qty: Int!
-    weight: Double!
+input PersonInput {
+    lastName: String
+    firstName: String
+    birth: Date
 }
 ----
 
@@ -66,18 +60,19 @@ By putting the `@Name` (or `JsonbProperty`) annotation on the `getter` method, r
 
 [source,java,numbered]
 ----
-public class Widget {
+public class Person {
 
-    private float price;
-    
-    @Name("cost")
-    public float getPrice(){
-        return this.price;
+    private LocalDate birth;
+
+    @Name("birthday")
+    public LocalDate getBirth() {
+        return this.birth;
     }
 
-    public void setPrice(float price){
-        this.price = price;
+    public void setBirth(LocalDate birth) {
+        this.birth = birth;
     }
+
 }
 ----
 
@@ -85,11 +80,11 @@ This would result in a schema that looks something like:
 
 [source,graphql,numbered]
 ----
-type Widget {
-    cost: Float!
+type Person {
+    birthday: Date
 }
-input WidgetInput {
-    price: Float!
+input PersonInput {
+    birth: Date
 }
 ----
 
@@ -97,18 +92,19 @@ The input type keeps the default field name. Similarly, when the `@Name` (or `Js
 
 [source,java,numbered]
 ----
-public class Widget {
+public class Person {
 
-    private float price;
-    
-    public float getPrice(){
-        return this.price;
+    private LocalDate birth;
+
+    public LocalDate getBirth() {
+        return this.birth;
     }
 
-    @Name("cost")
-    public void setPrice(float price){
-        this.price = price;
+    @Name("birthday")
+    public void setBirth(LocalDate birth) {
+        this.birth = birth;
     }
+
 }
 ----
 
@@ -116,11 +112,11 @@ This would result in a schema that looks something like:
 
 [source,graphql,numbered]
 ----
-type Widget {
-    price: Float!
+type Person {
+    birth: Date
 }
-input WidgetInput {
-    cost: Float!
+input PersonInput {
+    birthday: Date
 }
 ----
 
@@ -314,4 +310,4 @@ type Query {
     locationQuery(heroInput: SuperHeroInput): String
     #...
 }
-----
\ No newline at end of file
+----

From a441a329d9d6df95157d16f54eae350c70b1e4e2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Phillip=20Kr=C3=BCger?= 
Date: Fri, 17 Apr 2020 08:52:27 +0200
Subject: [PATCH 030/248] Update CONTRIBUTING.adoc

---
 CONTRIBUTING.adoc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc
index 15eead2a..ecacdc6b 100644
--- a/CONTRIBUTING.adoc
+++ b/CONTRIBUTING.adoc
@@ -25,7 +25,7 @@ Do you want to contribute to this project? Here is what you can do:
 ** Make sure you have signed the https://www.eclipse.org/legal/ECA.php[Eclipse Contributor Agreement]
 * https://github.com/eclipse/microprofile-graphql/issues[Create or fix an issue].
 * https://gitter.im/eclipse/microprofile-graphql[Join us on Gitter to discuss this project].
-* Join our https://calendar.google.com/calendar/embed?src=gbnbc373ga40n0tvbl88nkc3r4%40group.calendar.google.com[weekly meeting] on Fridays at https://www.timeanddate.com/time/map/[15h30 GMT]. 
+* Join our https://calendar.google.com/calendar/embed?src=gbnbc373ga40n0tvbl88nkc3r4%40group.calendar.google.com[weekly meeting] on Fridays at https://www.timeanddate.com/time/map/[14h30 GMT]. 
 ** https://docs.google.com/document/d/1gb3jirFGrJwDZSbrtnFPVTNjPNe3Y0dUYfm-HkU1c3U/edit#heading=h.xpx6vfxuho2d[Minutes and Agenda].
 ** https://ibm.webex.com/meet/andymc[Meeting room].
 * Join the discussions on the https://groups.google.com/forum/#!forum/microprofile[MicroProfile Google Group]

From a134b9cab7767d24fa7e5687bf4e7d897b8c7af4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Phillip=20Kr=C3=BCger?= 
Date: Fri, 17 Apr 2020 08:53:10 +0200
Subject: [PATCH 031/248] Update CONTRIBUTING.adoc

---
 CONTRIBUTING.adoc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc
index ecacdc6b..43a8f1b4 100644
--- a/CONTRIBUTING.adoc
+++ b/CONTRIBUTING.adoc
@@ -27,7 +27,7 @@ Do you want to contribute to this project? Here is what you can do:
 * https://gitter.im/eclipse/microprofile-graphql[Join us on Gitter to discuss this project].
 * Join our https://calendar.google.com/calendar/embed?src=gbnbc373ga40n0tvbl88nkc3r4%40group.calendar.google.com[weekly meeting] on Fridays at https://www.timeanddate.com/time/map/[14h30 GMT]. 
 ** https://docs.google.com/document/d/1gb3jirFGrJwDZSbrtnFPVTNjPNe3Y0dUYfm-HkU1c3U/edit#heading=h.xpx6vfxuho2d[Minutes and Agenda].
-** https://ibm.webex.com/meet/andymc[Meeting room].
+** https://bluejeans.com/27833906895[Meeting room].
 * Join the discussions on the https://groups.google.com/forum/#!forum/microprofile[MicroProfile Google Group]
 * https://microprofile.io/blog/[Contribute a blog post].
 

From 6d37cec9799eb206f95bea04b4ac079c17061818 Mon Sep 17 00:00:00 2001
From: Tim Middleton 
Date: Wed, 22 Apr 2020 14:56:12 +0800
Subject: [PATCH 032/248] DefaultValue TCK test has incorrect default CAPE
 payload Signed-off-by: Tim Middleton (Software Engineer)
 

---
 server/tck/src/main/resources/tests/schemaTests.csv | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/server/tck/src/main/resources/tests/schemaTests.csv b/server/tck/src/main/resources/tests/schemaTests.csv
index a698c710..8f39faf3 100644
--- a/server/tck/src/main/resources/tests/schemaTests.csv
+++ b/server/tck/src/main/resources/tests/schemaTests.csv
@@ -96,4 +96,7 @@
 
 # testDescription
 51|type Query          |   "Testing the blacklist of Checked Exceptions"           |   Expecting a description for the exportToFile query
-52|type Query          |   "Super hero name, not real name"                        |   Expecting a description for the name parameter on the exportToFile query
\ No newline at end of file
+52|type Query          |   "Super hero name, not real name"                        |   Expecting a description for the name parameter on the exportToFile query
+
+# testJsonDefault
+53|type Query          |   provisionHero(hero: String, item: ItemInput = { id: 1000, name: "Cape", powerLevel: 3, height: 1.2, weight: 0.3, supernatural: false, dateCreated: "19 February 1900 at 12:00 in Africa/Johannesburg", dateLastUsed: "29 Jan 2020 at 09:45 in zone +0200"} | Expecting a default value for item for provisionHero

From 9d253272662a420efad0ca38592c394d7ba050f1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Phillip=20Kr=C3=BCger?= 
Date: Wed, 22 Apr 2020 09:40:08 +0200
Subject: [PATCH 033/248] Update build.yml

---
 .github/workflows/build.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index f62eec21..12bc3c2f 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -21,4 +21,4 @@ jobs:
           java-version: ${{matrix.java}}
 
       - name: build with maven
-        run: mvn -B verify --file pom.xml
+        run: mvn -B verify javadoc:javadoc --file pom.xml

From 750f9c91f797bc70542f278fc555e05c0c3a94d0 Mon Sep 17 00:00:00 2001
From: Tim Middleton 
Date: Thu, 23 Apr 2020 13:27:34 +0800
Subject: [PATCH 034/248] Minor typos. Signed-off-by: Tim Middleton (Software
 Engineer) 

---
 server/spec/src/main/asciidoc/errorhandling.asciidoc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/server/spec/src/main/asciidoc/errorhandling.asciidoc b/server/spec/src/main/asciidoc/errorhandling.asciidoc
index cb160b75..3143a632 100644
--- a/server/spec/src/main/asciidoc/errorhandling.asciidoc
+++ b/server/spec/src/main/asciidoc/errorhandling.asciidoc
@@ -83,7 +83,7 @@ why the client request was invalid.
 
 If the client request is valid, then the implementation must invoke the correct query or mutation method in the user
 application. The user application can indicate that an error has occurred by throwing an exception (checked or
-unchecked).  When the user application throws and exception, the implementation must send back a response that includes
+unchecked).  When the user application throws an exception, the implementation must send back a response that includes
 an error message.
 
 ==== Unchecked exceptions
@@ -102,7 +102,7 @@ Example:
 
 `mp.graphql.exceptionsWhiteList=org.eclipse.microprofile.graphql.tck.apps.superhero.api.WeaknessNotFoundException`
 
-NOTE: By default all unchecked exceptions is on the `blacklist`.
+NOTE: By default all unchecked exceptions are on the `blacklist`.
 
 IMPORTANT: Configurations will indicate all instances of the exception class, transitively. Example:
 If you have an exception that extends the above mentioned `WeaknessNotFoundException`, the whitelist will still apply to that specialization.

From 6dcaaaf6c68db457f0613c5c0662b9e146694155 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= 
Date: Sun, 3 May 2020 00:57:15 +0200
Subject: [PATCH 035/248] =?UTF-8?q?Add=20`=C2=B4`=20as=20an=20escape-chara?=
 =?UTF-8?q?cter=20for=20scheme-tests?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Yannick Bröker 
---
 .../graphql/tck/dynamic/schema/CsvParser.java | 139 ++++++++++++++++++
 .../schema/SchemaTestDataProvider.java        |  59 +-------
 .../resources/tests/sourceSchemaTests.csv     |   8 +-
 .../tck/dynamic/schema/CsvParserTest.java     |  91 ++++++++++++
 4 files changed, 236 insertions(+), 61 deletions(-)
 create mode 100644 server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParser.java
 create mode 100644 server/tck/src/test/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParserTest.java

diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParser.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParser.java
new file mode 100644
index 00000000..768f67a1
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParser.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.dynamic.schema;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Parses the csv-files used for schema validity tests.
+ *
+ * Uses {@code |} as separator and {@code ´} as escape character.
+ *
+ * @author Yannick Bröker (ybroeker@techfak.uni-bielefeld.de)
+ */
+public class CsvParser {
+
+    private CsvParser() {
+    }
+
+    public static List parse(Path testFile) throws IOException {
+        Reader reader = Files.newBufferedReader(testFile);
+
+        try {
+            return parse(testFile.getFileName().toString(), reader);
+        } catch (RuntimeException e) {
+            throw new RuntimeException("Failed parsing '" + testFile + "'", e);
+        }
+    }
+
+    public static List parse(String fileName, Reader reader) throws IOException {
+        List testData = new ArrayList<>();
+
+        String currentHeader = "";
+
+        int partIdx = 0;
+        String[] parts = new String[4];
+
+        boolean isHeader = false;
+        boolean escaped = false;
+        int last = '\n';
+
+        StringBuilder stringBuilder = new StringBuilder();
+        for (int c = reader.read(); c != -1; c = reader.read()) {
+            if (c == ESCAPE) {
+                //start/end of escaping
+                escaped = !escaped;
+                if (last == ESCAPE) {
+                    //double-escape
+                    stringBuilder.appendCodePoint('\'');
+                }
+            } else if (c == HEADER && last == '\n' && !escaped) {
+                //start of header, can only happen on new line
+                isHeader = true;
+            } else {
+                if ((c == NEWLINE) && !escaped) {
+                    String token = stringBuilder.toString();
+                    stringBuilder = new StringBuilder();
+                    //end of header or
+                    if (isHeader) {
+                        //end of header
+                        currentHeader = token;
+                        isHeader = false;
+                    } else if (partIdx == 3) {
+                        parts[partIdx] = token;
+                        testData.add(createTestData(fileName, currentHeader, parts));
+                        partIdx = 0;
+                    }
+                } else if (c == SEPARATOR && !escaped && !isHeader) {
+                    parts[partIdx] = stringBuilder.toString();
+                    stringBuilder = new StringBuilder();
+                    partIdx++;
+                } else {
+                    stringBuilder.appendCodePoint(c);
+                }
+            }
+            last = c;
+        }
+
+        if (partIdx == 3) {
+            //clean up remaining
+            parts[partIdx] = stringBuilder.toString();
+            testData.add(createTestData(fileName, currentHeader, parts));
+        }
+
+        return testData;
+    }
+
+    private static TestData createTestData(String filename, String header, String[] parts) {
+        int count = Integer.parseInt(parts[0].trim());
+        TestData testData = new TestData();
+        testData.setName(filename);
+        testData.setHeader(header.trim());
+        testData.setCount(count);
+        String snippet = parts[1].trim();
+        if (snippet.isEmpty()) {
+            snippet = null;
+        }
+        testData.setSnippetSearchTerm(snippet);
+
+        String containsString = parts[2].trim();
+        if (containsString.contains(OR)) {
+            String[] containsStrings = containsString.split(OR);
+            for (String oneOf : containsStrings) {
+                testData.addContainsString(oneOf.trim());
+            }
+        } else {
+            testData.addContainsString(containsString);
+        }
+        testData.setErrorMessage("(" + count + ") - " + parts[3].trim());
+
+        return testData;
+    }
+
+    private static final char ESCAPE = '´';
+    private static final char HEADER = '#';
+    private static final char SEPARATOR = '|';
+    private static final char NEWLINE = '\n';
+    private static final String OR = "'OR'";
+
+}
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java
index 44478c5e..b740858c 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java
@@ -96,63 +96,8 @@ private static List toListOfTestData(List testFolders){
     }
 
     private static List toTestData(Path testFile) throws IOException{
-        List testDataList = new LinkedList<>();
-        List content = Files.readAllLines(testFile);
-        String currentHeader = "";
-        for(String line:content){
-            if(validLine(line)){
-                String[] parts = line.split(DELIMITER);
-                if(parts.length==4){
-                    TestData testData = createTestData(currentHeader,testFile.getFileName().toString(),parts);
-                    testDataList.add(testData);
-                }else{
-                    LOG.log(Level.SEVERE, "Could not add test case {0} - {1}", 
-                        new Object[]{testFile.getFileName().toString(), "Does not contain 3 parts [" + parts.length +"]"});
-                }
-            }else if (isHeader(line)){
-                currentHeader = line.substring(line.indexOf(COMMENT)+1).trim();
-            }
-        }
-        return testDataList;
-    }
-
-    private static TestData createTestData(String header, String filename,String[] parts){
-        TestData testData = new TestData();
-        testData.setCount(Integer.valueOf(parts[0]));
-        testData.setHeader(header);
-        testData.setName(filename);
-        String count = parts[0].trim();
-        String snippet = parts[1].trim();
-        if(snippet == null || snippet.isEmpty()){
-            snippet = null;
-        }
-        testData.setSnippetSearchTerm(snippet);
-        
-        String containsString = parts[2].trim();
-        if(containsString.contains(OR)){
-            String[] containsStrings = containsString.split(OR);
-            for(String oneOf:containsStrings){
-                testData.addContainsString(oneOf.trim());
-            }
-        }else{
-            testData.addContainsString(containsString);
-        }
-        testData.setErrorMessage("(" + count + ") - " + parts[3].trim());
-
-        return testData;
-    }
-
-    private static boolean validLine(String line){
-        return !line.isEmpty() && line.trim().contains(PIPE) && !isHeader(line);
-    }
-
-    private static boolean isHeader(String line){
-        return line.trim().startsWith(COMMENT);
+        return CsvParser.parse(testFile);
     }
 
-    private static final String PIPE = "|";
-    private static final String DELIMITER = "\\" + PIPE;
-    private static final String COMMENT = "#";
     private static final String FILE_TYPE = ".csv";
-    private static final String OR = "'OR'";
-}
\ No newline at end of file
+}
diff --git a/server/tck/src/main/resources/tests/sourceSchemaTests.csv b/server/tck/src/main/resources/tests/sourceSchemaTests.csv
index cff4dd03..6c31f0d5 100644
--- a/server/tck/src/main/resources/tests/sourceSchemaTests.csv
+++ b/server/tck/src/main/resources/tests/sourceSchemaTests.csv
@@ -3,8 +3,8 @@
 2| type SourceType         |   stringInput(input: String): String                               |   Expecting field stringInput with parameter input in SourceType
 3| type SourceType         |   nonNullStringInput(input: String!): String                       |   Expecting field nonNullStringInput with non-null parameter input in SourceType
 4| type SourceType         |   defaultStringInput(input: String = "Default value"): String      |   Expecting field defaultStringInput with parameter input in SourceType
-5| type SourceType         |   dateInput(
-"yyyy-MM-dd"
-input: Date
-): String                                   |   Expecting field dateInput with parameter input in SourceType
+5| type SourceType         |   ´dateInput(
+    "yyyy-MM-dd"
+    input: Date
+  ): String´                                  |   Expecting field dateInput with parameter input in SourceType
 6| type SourceType         |   namedStringInput(in: String): String                             |   Expecting field defaultStringInput with parameter `in` in SourceType
diff --git a/server/tck/src/test/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParserTest.java b/server/tck/src/test/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParserTest.java
new file mode 100644
index 00000000..c6fbf755
--- /dev/null
+++ b/server/tck/src/test/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParserTest.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.dynamic.schema;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.List;
+
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+public class CsvParserTest {
+
+    @Test
+    public void shouldHandleEscaping() throws IOException {
+        String content = "1| union X | ´Y | Z´ | Should Handle Escaping\n";
+
+        final List testDate = CsvParser.parse("shouldHandleEscaping", new StringReader(content));
+
+        Assert.assertEquals(testDate.size(), 1);
+        Assert.assertEquals(testDate.get(0).getContainsAnyOfString().get(0), "Y | Z");
+        Assert.assertEquals(testDate.get(0).getErrorMessage(), "(1) - Should Handle Escaping");
+    }
+
+    @Test
+    public void shouldHandleOr() throws IOException {
+        String content = "49| type Mutation           |   "
+                + "scalarHolder(arg0: ScalarHolderInput): ScalarHolder 'OR' scalarHolder(scalarHolder: ScalarHolderInput): ScalarHolder   "
+                + "|   Expecting a Mutation with the set removed from the name, scalarHolder.\n";
+
+        final List testDate = CsvParser.parse("shouldHandleEscaping", new StringReader(content));
+
+        Assert.assertEquals(testDate.size(), 1);
+        Assert.assertEquals(testDate.get(0).getContainsAnyOfString().size(), 2);
+        Assert.assertEquals(testDate.get(0).getContainsAnyOfString().get(0), "scalarHolder(arg0: ScalarHolderInput): ScalarHolder");
+        Assert.assertEquals(testDate.get(0).getContainsAnyOfString().get(1), "scalarHolder(scalarHolder: ScalarHolderInput): ScalarHolder");
+    }
+
+    @Test
+    public void shouldHandleMultilineEscaping() throws IOException {
+        String content = "5| type SourceType         |   ´dateInput(\n"
+                + "    \"yyyy-MM-dd\"\n"
+                + "    input: Date\n"
+                + "  ): String´                                  |   Expecting field dateInput with parameter input in SourceType\n";
+
+        final List testDate = CsvParser.parse("shouldHandleEscaping", new StringReader(content));
+
+        Assert.assertEquals(testDate.size(), 1);
+        Assert.assertEquals(testDate.get(0).getContainsAnyOfString().get(0), "dateInput(\n"
+                + "    \"yyyy-MM-dd\"\n"
+                + "    input: Date\n"
+                + "  ): String");
+    }
+
+    @Test
+    public void shouldIgnoreCommentsInLine() throws IOException {
+        String content = "59| type ScalarHolder | \"#0.0 en-GB\" | Missing Number Format description on Output Type\n";
+
+        final List testDate = CsvParser.parse("shouldIgnoreCommentsInLine", new StringReader(content));
+
+        Assert.assertEquals(testDate.size(), 1);
+        Assert.assertEquals(testDate.get(0).getContainsAnyOfString().get(0), "\"#0.0 en-GB\"");
+    }
+
+    @Test
+    public void shouldHandleComments() throws IOException {
+        String content = "# Basic Scalar Types\n"
+                + "1| type ScalarHolder | bigDecimalObject: BigDecimal | Expecting a BigDecimal Scalar Type in type ScalarHolder\n";
+
+        final List testDate = CsvParser.parse("shouldHandleComments", new StringReader(content));
+
+        Assert.assertEquals(testDate.size(), 1);
+        Assert.assertEquals(testDate.get(0).getHeader(), "Basic Scalar Types");
+        Assert.assertEquals(testDate.get(0).getCount(), 1);
+    }
+}

From 12ff187e556cfc1a788ab36258f9300252481d2b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= 
Date: Sun, 3 May 2020 01:25:50 +0200
Subject: [PATCH 036/248] Handle double- and triple-escape
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Yannick Bröker 
---
 .../graphql/tck/dynamic/schema/CsvParser.java |  4 +++-
 .../tck/dynamic/schema/CsvParserTest.java     | 21 +++++++++++++++++++
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParser.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParser.java
index 768f67a1..bb72d09c 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParser.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParser.java
@@ -65,7 +65,9 @@ public static List parse(String fileName, Reader reader) throws IOExce
                 escaped = !escaped;
                 if (last == ESCAPE) {
                     //double-escape
-                    stringBuilder.appendCodePoint('\'');
+                    stringBuilder.appendCodePoint(ESCAPE);
+                    last = -1;
+                    continue;
                 }
             } else if (c == HEADER && last == '\n' && !escaped) {
                 //start of header, can only happen on new line
diff --git a/server/tck/src/test/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParserTest.java b/server/tck/src/test/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParserTest.java
index c6fbf755..1edf45ce 100644
--- a/server/tck/src/test/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParserTest.java
+++ b/server/tck/src/test/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParserTest.java
@@ -26,6 +26,27 @@
 
 public class CsvParserTest {
 
+    @Test
+    public void shouldHandleDoubleEscape() throws IOException {
+        String content = "1| union X | ´´ | Should Handle DoubleEscape\n";
+
+        final List testDate = CsvParser.parse("shouldHandleDoubleEscape", new StringReader(content));
+
+        Assert.assertEquals(testDate.size(), 1);
+        Assert.assertEquals(testDate.get(0).getContainsAnyOfString().get(0), "´");
+
+    }
+    @Test
+    public void shouldHandleTripleEscape() throws IOException {
+        String content = "1| union X | ´Test ´´´ | Should Handle TripleEscape\n";
+
+        final List testDate = CsvParser.parse("shouldHandleTripleEscape", new StringReader(content));
+
+        Assert.assertEquals(testDate.size(), 1);
+        Assert.assertEquals(testDate.get(0).getContainsAnyOfString().get(0), "Test ´");
+
+    }
+
     @Test
     public void shouldHandleEscaping() throws IOException {
         String content = "1| union X | ´Y | Z´ | Should Handle Escaping\n";

From d2d40a0531238838788c78b85a9dbec37b10aa95 Mon Sep 17 00:00:00 2001
From: Phillip Kruger 
Date: Mon, 4 May 2020 13:37:16 +0200
Subject: [PATCH 037/248] Fixes for Spec update on formatting.
 Signed-off-by:Phillip Kruger 

---
 .../asciidoc/entities/description.asciidoc    |   8 +-
 .../main/asciidoc/entities/scalars.asciidoc   |   8 +-
 .../execution/GraphQLTestDataProvider.java    |   9 +-
 .../schema/SchemaTestDataProvider.java        |  18 ++-
 .../tests/basicScalarMutation/input.graphql   |   4 +-
 .../main/resources/tests/basicScalarTests.csv | 140 +++++++++---------
 .../src/main/resources/tests/schemaTests.csv  |  74 ++++-----
 7 files changed, 144 insertions(+), 117 deletions(-)

diff --git a/server/spec/src/main/asciidoc/entities/description.asciidoc b/server/spec/src/main/asciidoc/entities/description.asciidoc
index 69e6d41c..fff0d1ed 100644
--- a/server/spec/src/main/asciidoc/entities/description.asciidoc
+++ b/server/spec/src/main/asciidoc/entities/description.asciidoc
@@ -48,10 +48,10 @@ type Query {
 Formatting annotations like `@NumberFormat` and `@DateFormat` ( or `@JsonbDateFormat` and `@JsonbNumberFormat` from JsonB) can be used to transform data at runtime (see <>) 
 
 If no `@Description` annotation is provided for a date or number field, the format string specified in the relative annotation (`@NumberFormat` or `@DateFormat` or `@JsonbDateFormat` or `@JsonbNumberFormat`) 
-will be used as the field's description, or, for dates only, the default date format in the case there is no `@DateFormat` or `@JsonbDateFormat` annotation.
+will be used as the field's description, or, for dates only, the default date format, or just the text `ISO-8601`, in the case there is no `@DateFormat` or `@JsonbDateFormat` annotation.
 
 If a `@Description` annotation is provided for a date or number field, the format string specified in the relative annotation (`@NumberFormat` or `@DateFormat` or `@JsonbDateFormat` or `@JsonbNumberFormat`)
-will be appended to the given description in brackets `(...)`, or, for dates only, the default date format in the case there is no `@DateFormat` or `@JsonbDateFormat` annotation. 
+will be appended to the given description in brackets `(...)`, or, for dates only, the default date format, or just the text `ISO-8601`, in the case there is no `@DateFormat` or `@JsonbDateFormat` annotation. 
 
 Example:
 
@@ -80,10 +80,10 @@ will result in:
 [source,graphql,numbered]
 ----
 type ScalarHolder {
-  "yyyy-MM-dd"
+  "ISO-8601"
   dateObject: Date
 
-  "This is another date (yyyy-MM-dd)"
+  "This is another date (ISO-8601)"
   anotherDateObject: Date
   
   "This is a formatted date (MM dd yyyy)"
diff --git a/server/spec/src/main/asciidoc/entities/scalars.asciidoc b/server/spec/src/main/asciidoc/entities/scalars.asciidoc
index 3221c455..8e110b88 100644
--- a/server/spec/src/main/asciidoc/entities/scalars.asciidoc
+++ b/server/spec/src/main/asciidoc/entities/scalars.asciidoc
@@ -72,7 +72,8 @@ using the `@NumberFormat` or alternatively the JSON-B annotation `@JsonbNumberFo
 
 In the case that a property has both `@NumberFormat` and `@JsonbNumberFormat`, the GraphQL annotation (`@NumberFormat`) takes priority.
 
-When formatting is added to a number type, the formatted result will be of type String.
+When formatting is added to a number type, the formatted result will be of type String. The type in the schema could be defined as String or another Custom Scalar to
+indicate the formatting.
 
 Example:
 [source,java,numbered]
@@ -127,7 +128,7 @@ This will format the input and return the formatted result, example when executi
 ----
 
 ==== Dates
-By default the date related scalars (DateTime, Date, and Time) will use an ISO format.
+By default the date related scalars (DateTime, Date, and Time) will use an ISO-8601 format.
 
 - `yyyy-MM-dd\'T\'HH:mm:ss` for DateTime
 - `yyyy-MM-dd\'T\'HH:mm:ssZ` for OffsetDateTime
@@ -141,6 +142,9 @@ support usage on `TYPE_USE`.
 
 In the case that a property has both `@DateFormat` and `@JsonbDateFormat`, the GraphQL annotation (`@DateFormat`) takes priority.
 
+When formatting is added to a date type, the formatted result will be of type String. The type in the schema could be defined as String or another Custom Scalar to
+indicate the formatting.
+
 The formatting annotations can also be placed on a `Query` or `Mutation` that returns a date-like object, example:
 
 [source,java,numbered]
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java
index 8a9571f8..6dcf1a76 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java
@@ -59,7 +59,10 @@ private GraphQLTestDataProvider(){
 
     @DataProvider(name="specification")
     public static Object[][] getSpecificationTestData(){
-        return getTestData(DataFrom.specification);
+        if(!disableSpecificationTests()){
+            return getTestData(DataFrom.specification);
+        }
+        return toObjectArray(Collections.EMPTY_LIST);
     }
 
     @DataProvider(name="implementation")
@@ -236,4 +239,8 @@ private static JsonObject toJsonObject(String jsonString){
             return jsonReader.readObject();
         }
     }
+    
+    private static boolean disableSpecificationTests(){
+        return Boolean.valueOf(System.getProperty("disableSpecificationTests", "false"));
+    }
 }
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java
index 44478c5e..7e862edf 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java
@@ -58,15 +58,21 @@ public static Object[][] getSnippetTestData(){
 
     private static List getDataFiles() {
         List f = new ArrayList<>();
+        
+        // Implementation specific tests
         try {
             f.addAll(toListOfPaths(DynamicPaths.getDataForImplementation()));
         } catch (IOException ex) {
             LOG.log(Level.INFO, "No implementation specific tests found [{0}]", ex.getMessage());
         }
-        try {
-            f.addAll(toListOfPaths(DynamicPaths.getDataForSpecification()));
-        } catch (Exception ex) {
-            LOG.log(Level.WARNING, "No specification tests found [{0}]", ex.getMessage());
+        
+        // Specification test
+        if(!disableSpecificationTests()){
+            try {
+                f.addAll(toListOfPaths(DynamicPaths.getDataForSpecification()));
+            } catch (Exception ex) {
+                LOG.log(Level.WARNING, "No specification tests found [{0}]", ex.getMessage());
+            }
         }
 
         return f;
@@ -150,6 +156,10 @@ private static boolean isHeader(String line){
         return line.trim().startsWith(COMMENT);
     }
 
+    private static boolean disableSpecificationTests(){
+        return Boolean.valueOf(System.getProperty("disableSpecificationTests", "false"));
+    }
+    
     private static final String PIPE = "|";
     private static final String DELIMITER = "\\" + PIPE;
     private static final String COMMENT = "#";
diff --git a/server/tck/src/main/resources/tests/basicScalarMutation/input.graphql b/server/tck/src/main/resources/tests/basicScalarMutation/input.graphql
index 624eaf47..c64e06a1 100644
--- a/server/tck/src/main/resources/tests/basicScalarMutation/input.graphql
+++ b/server/tck/src/main/resources/tests/basicScalarMutation/input.graphql
@@ -19,8 +19,8 @@ mutation scalarHolderMutation {
     longObject:12
     longPrimitiveId:13
     longObjectId:14
-    formattedLongPrimitive:15
-    formattedLongObject:16
+    formattedLongPrimitive:"15"
+    formattedLongObject:"16"
     doublePrimitive:17
     doubleObject:18
   }) {
diff --git a/server/tck/src/main/resources/tests/basicScalarTests.csv b/server/tck/src/main/resources/tests/basicScalarTests.csv
index 92e645c3..eff5bad3 100644
--- a/server/tck/src/main/resources/tests/basicScalarTests.csv
+++ b/server/tck/src/main/resources/tests/basicScalarTests.csv
@@ -1,71 +1,71 @@
 # Basic Scalar Types
-1|  type ScalarHolder       |   bigDecimalObject: BigDecimal                            |   Expecting a BigDecimal Scalar Type in type ScalarHolder
-2|  type ScalarHolder       |   bigIntegerObject: BigInteger                            |   Expecting a BigInteger Scalar Type in type ScalarHolder
-3|  type ScalarHolder       |   booleanObject: Boolean                                  |   Expecting a Boolean Scalar Type in type ScalarHolder
-4|  type ScalarHolder       |   booleanPrimitive: Boolean!                              |   Expecting a non null Boolean Scalar Type in type ScalarHolder
-5|  type ScalarHolder       |   byteObject: Int                                         |   Expecting a Int Scalar Type (for Byte Java Type) in type ScalarHolder
-6|  type ScalarHolder       |   bytePrimitive: Int!                                     |   Expecting a non null Int Scalar Type (for byte Java Type) in type ScalarHolder
-7|  type ScalarHolder       |   charObject: String                                      |   Expecting a String Scalar (for Java Char) Type in type ScalarHolder
-8|  type ScalarHolder       |   charPrimitive: String!                                  |   Expecting a non null String Scalar (for Java char) Type in type ScalarHolder
-9|  type ScalarHolder       |   dateObject: Date                                        |   Expecting a Date Scalar Type in type ScalarHolder
-10| type ScalarHolder       |   dateTimeObject: DateTime                                |   Expecting a DateTime Scalar Type in type ScalarHolder
-11| type ScalarHolder       |   doubleObject: Float                                     |   Expecting a Float Scalar Type in type ScalarHolder
-12| type ScalarHolder       |   doublePrimitive: Float!                                 |   Expecting a non null Float Scalar Type in type ScalarHolder
-13| type ScalarHolder       |   floatObject: Float                                      |   Expecting a Float Scalar Type in type ScalarHolder
-14| type ScalarHolder       |   floatPrimitive: Float!                                  |   Expecting a non null Float Scalar Type in type ScalarHolder
-15| type ScalarHolder       |   id: ID                                                  |   Expecting a ID Scalar Type in type ScalarHolder
-16| type ScalarHolder       |   intObject: Int                                          |   Expecting a Int Scalar Type in type ScalarHolder
-17| type ScalarHolder       |   intPrimitive: Int!                                      |   Expecting a non null Int Scalar Type in type ScalarHolder
-18| type ScalarHolder       |   longObject: BigInteger                                  |   Expecting a BigInteger Scalar (for Java Long) Type in type ScalarHolder
-19| type ScalarHolder       |   longPrimitive: BigInteger!                              |   Expecting a non null BigInteger (for Java long) Scalar Type in type ScalarHolder
-20| type ScalarHolder       |   shortObject: Int                                        |   Expecting a Int Scalar Type (for Short Java Type) in type ScalarHolder
-21| type ScalarHolder       |   shortPrimitive: Int!                                    |   Expecting a non null Int Scalar Type (for short Java Type) in type ScalarHolder
-22| type ScalarHolder       |   stringObject: String                                    |   Expecting a String Scalar Type in type ScalarHolder
-23| type ScalarHolder       |   charArray: [String]                                     |   Expecting a String Array Scalar (for Java Char[]) Type in type ScalarHolder
-24| type ScalarHolder       |   timeObject: Time                                        |   Expecting a Time Scalar Type in type ScalarHolder
-25| type Query              |   testBigDecimalObject: BigDecimal                        |   Expecting a BigDecimal Scalar Type in type Query
-26| type Query              |   testBigIntegerObject: BigInteger                        |   Expecting a BigInteger Scalar Type in type Query
-27| type Query              |   booleanObject: Boolean                                  |   Expecting a Boolean Scalar Type in type Query, with the is removed from the name
-28| type Query              |   booleanPrimitive: Boolean!                              |   Expecting a non null Boolean Scalar Type in type Query, with the is removed from the name
-29| type Query              |   testByteObject: Int                                     |   Expecting a Int Scalar Type (for Byte Java Type) in type Query
-30| type Query              |   testBytePrimitive: Int!                                 |   Expecting a non null Int Scalar Type (for byte Java Type) in type Query
-31| type Query              |   testCharObject: String                                  |   Expecting a String Scalar (for Java Char) Type in type Query
-32| type Query              |   testCharPrimitive: String!                              |   Expecting a non null String Scalar (for Java char) Type in type Query
-33| type Query              |   testDateObject: Date                                    |   Expecting a Date Scalar Type in type Query
-34| type Query              |   testDateTimeObject: DateTime                            |   Expecting a DateTime Scalar Type in type Query
-35| type Query              |   testDoubleObject: Float                                 |   Expecting a Float Scalar Type in type Query
-36| type Query              |   testDoublePrimitive: Float!                             |   Expecting a non null Float Scalar Type in type Query
-37| type Query              |   testFloatObject: Float                                  |   Expecting a Float Scalar Type in type Query
-38| type Query              |   testFloatPrimitive: Float!                              |   Expecting a non null Float Scalar Type in type Query
-39| type Query              |   testId: ID                                              |   Expecting a ID Scalar Type in type Query
-40| type Query              |   testIntObject: Int                                      |   Expecting a Int Scalar Type in type Query
-41| type Query              |   testIntPrimitive: Int!                                  |   Expecting a non null Int Scalar Type in type Query
-42| type Query              |   testLongObject: BigInteger                              |   Expecting a BigInteger Scalar (for Java Long) Type in type Query
-43| type Query              |   testLongPrimitive: BigInteger!                          |   Expecting a non null BigInteger Scalar (for Java long) Type in type Query
-44| type Query              |   shortObject: Int                                        |   Expecting a Int Scalar Type (for Short Java type) in type Query, with the get removed from the name
-45| type Query              |   shortPrimitive: Int!                                    |   Expecting a non null Int Scalar Type (for short Java type) in type Query, with the get removed from the name
-46| type Query              |   testStringObject: String                                |   Expecting a String Scalar Type in type Query
-47| type Query              |   testCharArray: [String]                                 |   Expecting a non null Stirng Array (for Java Char[]) Scalar Type in type Query
-48| type Query              |   testTimeObject: Time                                    |   Expecting a Time Scalar Type in type Query
-49| type Mutation           |   scalarHolder(arg0: ScalarHolderInput): ScalarHolder 'OR' scalarHolder(scalarHolder: ScalarHolderInput): ScalarHolder   |   Expecting a Mutation with the set removed from the name, scalarHolder.
-50| type ScalarHolder       |   "HH:mm:ss"                                              |   Missing Default Time Format description on Output Type
-51| type ScalarHolder       |   "yyyy-MM-dd"                                            |   Missing Default Date Format description on Output Type
-52| type ScalarHolder       |   "yyyy-MM-dd'T'HH:mm:ss"                                 |   Missing Default DateTime Format description on Output Type
-53| type ScalarHolder       |   "This is another time (HH:mm:ss)"                       |   Missing Default Time Format description (appended) on Output Type
-54| type ScalarHolder       |   "This is another date (yyyy-MM-dd)"                     |   Missing Default Date Format description (appended) on Output Type
-55| type ScalarHolder       |   "This is another datetime (yyyy-MM-dd'T'HH:mm:ss)"      |   Missing Default DateTime Format description (appended) on Output Type
-56| type ScalarHolder       |   "This is a formatted time (hh:mm:ss)"                   |   Missing Formatted Time Format description (appended) on Output Type
-57| type ScalarHolder       |   "This is a formatted date (MM dd yyyy)"                 |   Missing Formatted Date Format description (appended) on Output Type
-58| type ScalarHolder       |   "This is a formatted datetime (MM dd yyyy 'at' hh:mm:ss)"|   Missing Formatted DateTime Format description (appended) on Output Type
-59| type ScalarHolder       |   "#0.0 en-GB"                                            |   Missing Number Format description on Output Type
-60| type ScalarHolder       |   "This is a formatted number (#0.0 en-GB)"               |   Missing Number Format description (appended) on Output Type
-61| type ScalarHolder       |   longPrimitiveId: ID                                     |   Expecting a ID Scalar Type in type ScalarHolder, long
-62| type ScalarHolder       |   intPrimitiveId: ID                                      |   Expecting a ID Scalar Type in type ScalarHolder, int
-63| type ScalarHolder       |   longObjectId: ID                                        |   Expecting a ID Scalar Type in type ScalarHolder, long
-64| type ScalarHolder       |   integerObjectId: ID                                     |   Expecting a ID Scalar Type in type ScalarHolder, Integer
-65| type ScalarHolder       |   uuidId: ID                                              |   Expecting a ID Scalar Type in type ScalarHolder, UUID
-66| input BasicMessageInput |   message: String                                         |   Expecting a BasicMessageInput from @Input
-67| input BasicMessageInput |   countdownPlace: CountDown                               |   Expecting a BasicMessageInput from @Input
-68| type BasicMessage       |   message: String                                         |   Expecting a BasicMessage from @Type
-69| enum CountDown          |   THREE                                                   |   Expecting a CountDown from @Enum
-70| interface Basic         |   message: String                                         |   Expecting a String argument called "message" in @Interface("MyInterface") BasicInterface
+1|  type ScalarHolder       |   bigDecimalObject: BigDecimal                                                                                            |   Expecting a BigDecimal Scalar Type in type ScalarHolder
+2|  type ScalarHolder       |   bigIntegerObject: BigInteger                                                                                            |   Expecting a BigInteger Scalar Type in type ScalarHolder
+3|  type ScalarHolder       |   booleanObject: Boolean                                                                                                  |   Expecting a Boolean Scalar Type in type ScalarHolder
+4|  type ScalarHolder       |   booleanPrimitive: Boolean!                                                                                              |   Expecting a non null Boolean Scalar Type in type ScalarHolder
+5|  type ScalarHolder       |   byteObject: Int                                                                                                         |   Expecting a Int Scalar Type (for Byte Java Type) in type ScalarHolder
+6|  type ScalarHolder       |   bytePrimitive: Int!                                                                                                     |   Expecting a non null Int Scalar Type (for byte Java Type) in type ScalarHolder
+7|  type ScalarHolder       |   charObject: String                                                                                                      |   Expecting a String Scalar (for Java Char) Type in type ScalarHolder
+8|  type ScalarHolder       |   charPrimitive: String!                                                                                                  |   Expecting a non null String Scalar (for Java char) Type in type ScalarHolder
+9|  type ScalarHolder       |   dateObject: Date                                                                                                        |   Expecting a Date Scalar Type in type ScalarHolder
+10| type ScalarHolder       |   dateTimeObject: DateTime                                                                                                |   Expecting a DateTime Scalar Type in type ScalarHolder
+11| type ScalarHolder       |   doubleObject: Float                                                                                                     |   Expecting a Float Scalar Type in type ScalarHolder
+12| type ScalarHolder       |   doublePrimitive: Float!                                                                                                 |   Expecting a non null Float Scalar Type in type ScalarHolder
+13| type ScalarHolder       |   floatObject: Float                                                                                                      |   Expecting a Float Scalar Type in type ScalarHolder
+14| type ScalarHolder       |   floatPrimitive: Float!                                                                                                  |   Expecting a non null Float Scalar Type in type ScalarHolder
+15| type ScalarHolder       |   id: ID                                                                                                                  |   Expecting a ID Scalar Type in type ScalarHolder
+16| type ScalarHolder       |   intObject: Int                                                                                                          |   Expecting a Int Scalar Type in type ScalarHolder
+17| type ScalarHolder       |   intPrimitive: Int!                                                                                                      |   Expecting a non null Int Scalar Type in type ScalarHolder
+18| type ScalarHolder       |   longObject: BigInteger                                                                                                  |   Expecting a BigInteger Scalar (for Java Long) Type in type ScalarHolder
+19| type ScalarHolder       |   longPrimitive: BigInteger!                                                                                              |   Expecting a non null BigInteger (for Java long) Scalar Type in type ScalarHolder
+20| type ScalarHolder       |   shortObject: Int                                                                                                        |   Expecting a Int Scalar Type (for Short Java Type) in type ScalarHolder
+21| type ScalarHolder       |   shortPrimitive: Int!                                                                                                    |   Expecting a non null Int Scalar Type (for short Java Type) in type ScalarHolder
+22| type ScalarHolder       |   stringObject: String                                                                                                    |   Expecting a String Scalar Type in type ScalarHolder
+23| type ScalarHolder       |   charArray: [String]                                                                                                     |   Expecting a String Array Scalar (for Java Char[]) Type in type ScalarHolder
+24| type ScalarHolder       |   timeObject: Time                                                                                                        |   Expecting a Time Scalar Type in type ScalarHolder
+25| type Query              |   testBigDecimalObject: BigDecimal                                                                                        |   Expecting a BigDecimal Scalar Type in type Query
+26| type Query              |   testBigIntegerObject: BigInteger                                                                                        |   Expecting a BigInteger Scalar Type in type Query
+27| type Query              |   booleanObject: Boolean                                                                                                  |   Expecting a Boolean Scalar Type in type Query, with the is removed from the name
+28| type Query              |   booleanPrimitive: Boolean!                                                                                              |   Expecting a non null Boolean Scalar Type in type Query, with the is removed from the name
+29| type Query              |   testByteObject: Int                                                                                                     |   Expecting a Int Scalar Type (for Byte Java Type) in type Query
+30| type Query              |   testBytePrimitive: Int!                                                                                                 |   Expecting a non null Int Scalar Type (for byte Java Type) in type Query
+31| type Query              |   testCharObject: String                                                                                                  |   Expecting a String Scalar (for Java Char) Type in type Query
+32| type Query              |   testCharPrimitive: String!                                                                                              |   Expecting a non null String Scalar (for Java char) Type in type Query
+33| type Query              |   testDateObject: Date                                                                                                    |   Expecting a Date Scalar Type in type Query
+34| type Query              |   testDateTimeObject: DateTime                                                                                            |   Expecting a DateTime Scalar Type in type Query
+35| type Query              |   testDoubleObject: Float                                                                                                 |   Expecting a Float Scalar Type in type Query
+36| type Query              |   testDoublePrimitive: Float!                                                                                             |   Expecting a non null Float Scalar Type in type Query
+37| type Query              |   testFloatObject: Float                                                                                                  |   Expecting a Float Scalar Type in type Query
+38| type Query              |   testFloatPrimitive: Float!                                                                                              |   Expecting a non null Float Scalar Type in type Query
+39| type Query              |   testId: ID                                                                                                              |   Expecting a ID Scalar Type in type Query
+40| type Query              |   testIntObject: Int                                                                                                      |   Expecting a Int Scalar Type in type Query
+41| type Query              |   testIntPrimitive: Int!                                                                                                  |   Expecting a non null Int Scalar Type in type Query
+42| type Query              |   testLongObject: BigInteger                                                                                              |   Expecting a BigInteger Scalar (for Java Long) Type in type Query
+43| type Query              |   testLongPrimitive: BigInteger!                                                                                          |   Expecting a non null BigInteger Scalar (for Java long) Type in type Query
+44| type Query              |   shortObject: Int                                                                                                        |   Expecting a Int Scalar Type (for Short Java type) in type Query, with the get removed from the name
+45| type Query              |   shortPrimitive: Int!                                                                                                    |   Expecting a non null Int Scalar Type (for short Java type) in type Query, with the get removed from the name
+46| type Query              |   testStringObject: String                                                                                                |   Expecting a String Scalar Type in type Query
+47| type Query              |   testCharArray: [String]                                                                                                 |   Expecting a non null Stirng Array (for Java Char[]) Scalar Type in type Query
+48| type Query              |   testTimeObject: Time                                                                                                    |   Expecting a Time Scalar Type in type Query
+49| type Mutation           |   scalarHolder(arg0: ScalarHolderInput): ScalarHolder 'OR' scalarHolder(scalarHolder: ScalarHolderInput): ScalarHolder    |   Expecting a Mutation with the set removed from the name, scalarHolder.
+50| type ScalarHolder       |   "HH:mm:ss" 'OR' "ISO-8601"                                                                                              |   Missing Default Time Format description on Output Type
+51| type ScalarHolder       |   "yyyy-MM-dd" 'OR' "ISO-8601"                                                                                            |   Missing Default Date Format description on Output Type
+52| type ScalarHolder       |   "yyyy-MM-dd'T'HH:mm:ss" 'OR' "ISO-8601"                                                                                 |   Missing Default DateTime Format description on Output Type
+53| type ScalarHolder       |   "This is another time (HH:mm:ss)" 'OR' "This is another time (ISO-8601)"                                                |   Missing Default Time Format description (appended) on Output Type
+54| type ScalarHolder       |   "This is another date (yyyy-MM-dd)" 'OR' "This is another date (ISO-8601)"                                              |   Missing Default Date Format description (appended) on Output Type
+55| type ScalarHolder       |   "This is another datetime (yyyy-MM-dd'T'HH:mm:ss)" 'OR' "This is another datetime (ISO-8601)"                           |   Missing Default DateTime Format description (appended) on Output Type
+56| type ScalarHolder       |   "This is a formatted time (hh:mm:ss)"                                                                                   |   Missing Formatted Time Format description (appended) on Output Type
+57| type ScalarHolder       |   "This is a formatted date (MM dd yyyy)"                                                                                 |   Missing Formatted Date Format description (appended) on Output Type
+58| type ScalarHolder       |   "This is a formatted datetime (MM dd yyyy 'at' hh:mm:ss)"                                                               |   Missing Formatted DateTime Format description (appended) on Output Type
+59| type ScalarHolder       |   "#0.0 en-GB"                                                                                                            |   Missing Number Format description on Output Type
+60| type ScalarHolder       |   "This is a formatted number (#0.0 en-GB)"                                                                               |   Missing Number Format description (appended) on Output Type
+61| type ScalarHolder       |   longPrimitiveId: ID                                                                                                     |   Expecting a ID Scalar Type in type ScalarHolder, long
+62| type ScalarHolder       |   intPrimitiveId: ID                                                                                                      |   Expecting a ID Scalar Type in type ScalarHolder, int
+63| type ScalarHolder       |   longObjectId: ID                                                                                                        |   Expecting a ID Scalar Type in type ScalarHolder, long
+64| type ScalarHolder       |   integerObjectId: ID                                                                                                     |   Expecting a ID Scalar Type in type ScalarHolder, Integer
+65| type ScalarHolder       |   uuidId: ID                                                                                                              |   Expecting a ID Scalar Type in type ScalarHolder, UUID
+66| input BasicMessageInput |   message: String                                                                                                         |   Expecting a BasicMessageInput from @Input
+67| input BasicMessageInput |   countdownPlace: CountDown                                                                                               |   Expecting a BasicMessageInput from @Input
+68| type BasicMessage       |   message: String                                                                                                         |   Expecting a BasicMessage from @Type
+69| enum CountDown          |   THREE                                                                                                                   |   Expecting a CountDown from @Enum
+70| interface Basic         |   message: String                                                                                                         |   Expecting a String argument called "message" in @Interface("MyInterface") BasicInterface
diff --git a/server/tck/src/main/resources/tests/schemaTests.csv b/server/tck/src/main/resources/tests/schemaTests.csv
index 8f39faf3..3251b90c 100644
--- a/server/tck/src/main/resources/tests/schemaTests.csv
+++ b/server/tck/src/main/resources/tests/schemaTests.csv
@@ -30,73 +30,79 @@
 19| enum ShirtSize      |   HULK                                                    |   Missing expected enum value, "HULK"
     
 # testDateScalarUsedForLocalDate
-20|input SuperHeroInput|   dateOfLastCheckin: Date                                 |   Missing or incorrect Scalar type in "SuperHeroInput" field "dateOfLastCheckin"
-21|type SuperHero      |   dateOfLastCheckin: Date                                 |   Missing or incorrect Scalar type in "SuperHero" field "dateOfLastCheckin"
+20|input SuperHeroInput|   !dateOfLastCheckin: Date                                 |   Transformed Date Scalar type in "SuperHeroInput" field "dateOfLastCheckin" should not be Date
+21|type SuperHero      |   !dateOfLastCheckin: Date                                 |   Transformed Date Scalar type in "SuperHero" field "dateOfLastCheckin" should not be Date
+22|input SuperHeroInput|   dateOfLastCheckin: String 'OR' dateOfLastCheckin:        |   Missing or incorrect Scalar type in "SuperHeroInput" field "dateOfLastCheckin"
+23|type SuperHero      |   dateOfLastCheckin: String 'OR' dateOfLastCheckin:        |   Missing or incorrect Scalar type in "SuperHero" field "dateOfLastCheckin"
     
 # testTimeScalarUsedForLocalTime
-22|input SuperHeroInput|   patrolStartTime: Time                                   |   Missing or incorrect Scalar type in "SuperHeroInput" field "patrolStartTime"
-23|type SuperHero      |   patrolStartTime: Time                                   |   Missing or incorrect Scalar type in "SuperHero" field "patrolStartTime"
+24|input SuperHeroInput|   !patrolStartTime: Time                                  |   Transformed Time Scalar type in "SuperHeroInput" field "patrolStartTime" should not be Time
+25|type SuperHero      |   !patrolStartTime: Time                                  |   Transformed Time Scalar type in "SuperHero" field "patrolStartTime" should not be Time
+26|input SuperHeroInput|   patrolStartTime: String 'OR' patrolStartTime:           |   Missing or incorrect Scalar type in "SuperHeroInput" field "patrolStartTime"
+27|type SuperHero      |   patrolStartTime: String 'OR' patrolStartTime:           |   Missing or incorrect Scalar type in "SuperHero" field "patrolStartTime"
     
 # testDateTimeScalarUsedForLocalDateTime
-24|input SuperHeroInput|   timeOfLastBattle: DateTime                              |   Missing or incorrect Scalar type in "SuperHeroInput" field "timeOfLastBattle"
-25|type SuperHero      |   timeOfLastBattle: DateTime                              |   Missing or incorrect Scalar type in "SuperHero" field "timeOfLastBattle"
+28|input SuperHeroInput|   !timeOfLastBattle: DateTime                             |   Transformed DateTime Scalar type in "SuperHeroInput" field "timeOfLastBattle" should not be DateTime
+29|type SuperHero      |   !timeOfLastBattle: DateTime                             |   Transformed DateTime Scalar type in "SuperHero" field "timeOfLastBattle" should not be DateTime
+30|input SuperHeroInput|   timeOfLastBattle: String 'OR' timeOfLastBattle:         |   Missing or incorrect Scalar type in "SuperHeroInput" field "timeOfLastBattle"
+31|type SuperHero      |   timeOfLastBattle: String 'OR' timeOfLastBattle:         |   Missing or incorrect Scalar type in "SuperHero" field "timeOfLastBattle"
     
 # testSchemaContainsDescriptionForQueryMethods
-26|type Query          |   "List all super heroes in the database"                 |   Missing description on Query Method
+32|type Query          |   "List all super heroes in the database"                 |   Missing description on Query Method
     
 # testSchemaContainsDescriptionForMutationMethods
-27|type Mutation       |   "Removes a hero... permanently..."                      |   Missing description on Mutation Method
+33|type Mutation       |   "Removes a hero... permanently..."                      |   Missing description on Mutation Method
     
 # testSchemaContainsDescriptionForEntityTypes
-28|                    |   "Something of use to a super hero"                      |   Missing description on Entity type
+34|                    |   "Something of use to a super hero"                      |   Missing description on Entity type
 
 # testSchemaContainsDescriptionForInputTypes
 
 # testSchemaContainsDescriptionForArguments
-29|type Query          |   "Super hero name, not real name"                        |   Missing description on Query Argument
+35|type Query          |   "Super hero name, not real name"                        |   Missing description on Query Argument
 
 # testSchemaContainsDescriptionForOutputTypeFields
-30|type SuperHero      |   "Super hero name/nickname"                              |   Missing description on Output Type
-31|type SuperHero      |   "Location where you are most likely to find this hero"  |   Missing description on Output Type  
+36|type SuperHero      |   "Super hero name/nickname"                              |   Missing description on Output Type
+37|type SuperHero      |   "Location where you are most likely to find this hero"  |   Missing description on Output Type  
 
 # testSchemaContainsDescriptionForInputTypeFields
-32|input SuperHeroInput|   "Super hero name/nickname"                              |   Missing description on Input Type
-33|input SuperHeroInput|   "Powers that make this hero super"                      |   Missing description on Input Type
+38|input SuperHeroInput|   "Super hero name/nickname"                              |   Missing description on Input Type
+39|input SuperHeroInput|   "Powers that make this hero super"                      |   Missing description on Input Type
 
 # testSchemaOutputTypeFieldsContainsDescriptionFromJsonbDateFormat
-34|type SuperHero      |   "MM/dd/yyyy"                                            |   Missing Date Format description on Output Type
-35|type SuperHero      |   "HH:mm"                                                 |   Missing Time Format description on Output Type
-36|type SuperHero      |   "HH:mm:ss dd-MM-yyyy"                                   |   Missing DateTime Format description on Output Type
+40|type SuperHero      |   "MM/dd/yyyy"                                            |   Missing Date Format description on Output Type
+41|type SuperHero      |   "HH:mm"                                                 |   Missing Time Format description on Output Type
+42|type SuperHero      |   "HH:mm:ss dd-MM-yyyy"                                   |   Missing DateTime Format description on Output Type
   
 # testSchemaInputTypeFieldsContainsDescriptionFromJsonbDateFormat
-37|input SuperHeroInput|   "MM/dd/yyyy"                                            |   Missing Date Format description on Input Type
-38|input SuperHeroInput|   "HH:mm"                                                 |   Missing Time Format description on Input Type
-39|input SuperHeroInput|   "HH:mm:ss dd-MM-yyyy"                                   |   Missing DateTime Format description on Input Type
+43|input SuperHeroInput|   "MM/dd/yyyy"                                            |   Missing Date Format description on Input Type
+44|input SuperHeroInput|   "HH:mm"                                                 |   Missing Time Format description on Input Type
+45|input SuperHeroInput|   "HH:mm:ss dd-MM-yyyy"                                   |   Missing DateTime Format description on Input Type
 
 # testSchemaContainsDefaultValueOnEntityField
-40|input ItemInput     |   supernatural: Boolean = false                           |   Missing default value in Input boolean field
+46|input ItemInput     |   supernatural: Boolean = false                           |   Missing default value in Input boolean field
 
 # testSchemaContainsDefaultValueOnEntitySetter
-41|input ItemInput     |   description: String = "An unidentified item"            |   Missing default value in Input String field
+47|input ItemInput     |   description: String = "An unidentified item"            |   Missing default value in Input String field
 
 # testWithArgumentNameAndDefaultValue
-42|type Query          |   allHeroesIn(city: String = "New York, NY"): [SuperHero] |   Missing default value on argument
-43|type Query          |   allHeroesInTeam(team: String): [SuperHero]              |   Missing argument on Query
+48|type Query          |   allHeroesIn(city: String = "New York, NY"): [SuperHero] |   Missing default value on argument
+49|type Query          |   allHeroesInTeam(team: String): [SuperHero]              |   Missing argument on Query
 
 # testSourceFieldInType
-44|type SuperHero      |   currentLocation: String                                 |   Expecting a currentLocation field in SuperHero due to Source annotation
-45|type Query          |   currentLocation(superHero: SuperHeroInput): String      |   Expecting a currentLocation query in Query to Source annotation
-46|type SuperHero      |   secretToken(maskFirstPart: Boolean = true): TopSecretToken      |   Expecting a secretToken field with a boolean argument in SuperHero due to Source annotation
-47|type Query          |   !secretToken(maskFirstPart: Boolean = true): TopSecretToken     |   Not expecting a secretToken query in Query
-48|type TopSecretToken |   value: String                                           |   Expecting a TopSecretToken type, with a String value field 
+50|type SuperHero      |   currentLocation: 24|input SuperHeroInput|   !patrolStartTime: Time                                  |   Transformed Time Scalar type in "SuperHeroInput" field "patrolStartTime" should not be TimeString                                 |   Expecting a currentLocation field in SuperHero due to Source annotation
+51|type Query          |   currentLocation(superHero: SuperHeroInput): String      |   Expecting a currentLocation query in Query to Source annotation
+52|type SuperHero      |   secretToken(maskFirstPart: Boolean = true): TopSecretToken      |   Expecting a secretToken field with a boolean argument in SuperHero due to Source annotation
+53|type Query          |   !secretToken(maskFirstPart: Boolean = true): TopSecretToken     |   Not expecting a secretToken query in Query
+54|type TopSecretToken |   value: String                                           |   Expecting a TopSecretToken type, with a String value field 
 
 # testGetAndSetNotGetterAndSetter
-49|type Query          |   getaway: String                                         |   Expecting a getaway query where the get is not removed
-50|type Mutation       |   settlement: String                                      |   Expecting a settlement mutation where the set is not removed
+55|type Query          |   getaway: String                                         |   Expecting a getaway query where the get is not removed
+56|type Mutation       |   settlement: String                                      |   Expecting a settlement mutation where the set is not removed
 
 # testDescription
-51|type Query          |   "Testing the blacklist of Checked Exceptions"           |   Expecting a description for the exportToFile query
-52|type Query          |   "Super hero name, not real name"                        |   Expecting a description for the name parameter on the exportToFile query
+57|type Query          |   "Testing the blacklist of Checked Exceptions"           |   Expecting a description for the exportToFile query
+58|type Query          |   "Super hero name, not real name"                        |   Expecting a description for the name parameter on the exportToFile query
 
 # testJsonDefault
-53|type Query          |   provisionHero(hero: String, item: ItemInput = { id: 1000, name: "Cape", powerLevel: 3, height: 1.2, weight: 0.3, supernatural: false, dateCreated: "19 February 1900 at 12:00 in Africa/Johannesburg", dateLastUsed: "29 Jan 2020 at 09:45 in zone +0200"} | Expecting a default value for item for provisionHero
+59|type Query          |   provisionHero(hero: String, item: ItemInput = { id: 1000, name: "Cape", powerLevel: 3, height: 1.2, weight: 0.3, supernatural: false, dateCreated: "19 February 1900 at 12:00 in Africa/Johannesburg", dateLastUsed: "29 Jan 2020 at 09:45 in zone +0200"} | Expecting a default value for item for provisionHero

From e03ae6c977d76fc345a8b68250d235cb224e898f Mon Sep 17 00:00:00 2001
From: Phillip Kruger 
Date: Mon, 4 May 2020 13:45:43 +0200
Subject: [PATCH 038/248] Fixes for Spec update on formatting.
 Signed-off-by:Phillip Kruger 

---
 server/tck/src/main/resources/tests/schemaTests.csv | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/tck/src/main/resources/tests/schemaTests.csv b/server/tck/src/main/resources/tests/schemaTests.csv
index 3251b90c..b4138457 100644
--- a/server/tck/src/main/resources/tests/schemaTests.csv
+++ b/server/tck/src/main/resources/tests/schemaTests.csv
@@ -90,7 +90,7 @@
 49|type Query          |   allHeroesInTeam(team: String): [SuperHero]              |   Missing argument on Query
 
 # testSourceFieldInType
-50|type SuperHero      |   currentLocation: 24|input SuperHeroInput|   !patrolStartTime: Time                                  |   Transformed Time Scalar type in "SuperHeroInput" field "patrolStartTime" should not be TimeString                                 |   Expecting a currentLocation field in SuperHero due to Source annotation
+50|type SuperHero      |   currentLocation: String                                 |   Expecting a currentLocation field in SuperHero due to Source annotation
 51|type Query          |   currentLocation(superHero: SuperHeroInput): String      |   Expecting a currentLocation query in Query to Source annotation
 52|type SuperHero      |   secretToken(maskFirstPart: Boolean = true): TopSecretToken      |   Expecting a secretToken field with a boolean argument in SuperHero due to Source annotation
 53|type Query          |   !secretToken(maskFirstPart: Boolean = true): TopSecretToken     |   Not expecting a secretToken query in Query

From 864a7066f1b0dee95552b6c842b60dccbc19477b Mon Sep 17 00:00:00 2001
From: Phillip Kruger 
Date: Thu, 7 May 2020 13:05:26 +0200
Subject: [PATCH 039/248] Missed this in the prev PR (as it's new in 1.1).
 formatted Dates becomes String Signed-off-by:Phillip Kruger
 

---
 server/tck/src/main/resources/tests/sourceSchemaTests.csv | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/tck/src/main/resources/tests/sourceSchemaTests.csv b/server/tck/src/main/resources/tests/sourceSchemaTests.csv
index 6c31f0d5..a7385b61 100644
--- a/server/tck/src/main/resources/tests/sourceSchemaTests.csv
+++ b/server/tck/src/main/resources/tests/sourceSchemaTests.csv
@@ -5,6 +5,6 @@
 4| type SourceType         |   defaultStringInput(input: String = "Default value"): String      |   Expecting field defaultStringInput with parameter input in SourceType
 5| type SourceType         |   ´dateInput(
     "yyyy-MM-dd"
-    input: Date
+    input: String
   ): String´                                  |   Expecting field dateInput with parameter input in SourceType
 6| type SourceType         |   namedStringInput(in: String): String                             |   Expecting field defaultStringInput with parameter `in` in SourceType

From 13f6607ee772ea53871f8bf685e533a62c9c23b2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= 
Date: Sat, 16 May 2020 19:33:18 +0200
Subject: [PATCH 040/248] Make resolver-methods public
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Yannick Bröker 
---
 .../graphql/tck/apps/basic/api/ReferencedTypeTestApi.java     | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencedTypeTestApi.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencedTypeTestApi.java
index d12a4115..b8a5d6cf 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencedTypeTestApi.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ReferencedTypeTestApi.java
@@ -23,7 +23,7 @@
 public class ReferencedTypeTestApi {
 
     @Query
-    ReferencingType referencingType() {
+    public ReferencingType referencingType() {
         ReferencedType referencedType = new ReferencedType();
         referencedType.setValue("value");
         ReferencingType referencingType = new ReferencingType();
@@ -33,7 +33,7 @@ ReferencingType referencingType() {
     }
 
     @Mutation
-    ReferencingType addReferencingType(ReferencingType referencingType) {
+    public ReferencingType addReferencingType(ReferencingType referencingType) {
         return referencingType;
     }
 

From cf9a25d13900269816e41902df02de87192e9be9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= 
Date: Sat, 16 May 2020 19:41:20 +0200
Subject: [PATCH 041/248] Add some tests for array-formatting
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Yannick Bröker 
---
 .../graphql/tck/apps/basic/api/ArraysApi.java | 29 ++++++
 .../tck/apps/basic/api/ArraysHolder.java      | 91 +++++++++++++++++++
 .../resources/tests/arrayTypes/input.graphql  | 16 ++++
 .../resources/tests/arrayTypes/output.json    | 40 ++++++++
 .../tests/arrayTypes/test.properties          |  2 +
 5 files changed, 178 insertions(+)
 create mode 100644 server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ArraysApi.java
 create mode 100644 server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ArraysHolder.java
 create mode 100644 server/tck/src/main/resources/tests/arrayTypes/input.graphql
 create mode 100644 server/tck/src/main/resources/tests/arrayTypes/output.json
 create mode 100644 server/tck/src/main/resources/tests/arrayTypes/test.properties

diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ArraysApi.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ArraysApi.java
new file mode 100644
index 00000000..3d100b55
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ArraysApi.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.basic.api;
+
+import org.eclipse.microprofile.graphql.GraphQLApi;
+import org.eclipse.microprofile.graphql.Query;
+
+@GraphQLApi
+public class ArraysApi {
+
+    @Query
+    public ArraysHolder arraysHolder() {
+        return new ArraysHolder();
+    }
+
+}
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ArraysHolder.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ArraysHolder.java
new file mode 100644
index 00000000..07f698a6
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ArraysHolder.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.basic.api;
+
+import java.time.LocalDate;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.microprofile.graphql.DateFormat;
+import org.eclipse.microprofile.graphql.NumberFormat;
+
+public class ArraysHolder {
+
+    private Integer[] intObject = {1, 2, 3};
+
+    private List intObjectList = Arrays.asList(intObject);
+
+    private int[] intPrimitive = {1, 2, 3};
+
+    @NumberFormat(value = "¤00", locale = "en-ZA")
+    private Integer[] formattedIntObject = intObject;
+
+    @NumberFormat(value = "¤00", locale = "en-ZA")
+    private List formattedIntObjectList = Arrays.asList(intObject);
+
+    @NumberFormat(value = "¤00", locale = "en-ZA")
+    private int[] formattedIntPrimitive = intPrimitive;
+
+    private LocalDate[] date = {LocalDate.parse("2006-02-01"), LocalDate.parse("2007-03-02")};
+
+    private List dateList = Arrays.asList(date);
+
+    @DateFormat(value = "dd.MM.yyyy")
+    private LocalDate[] formattedDate = date;
+
+    @DateFormat(value = "dd.MM.yyyy")
+    private List formattedDateList = Arrays.asList(date);
+
+    public Integer[] getIntObject() {
+        return intObject;
+    }
+
+    public int[] getIntPrimitive() {
+        return intPrimitive;
+    }
+
+    public Integer[] getFormattedIntObject() {
+        return formattedIntObject;
+    }
+
+    public int[] getFormattedIntPrimitive() {
+        return formattedIntPrimitive;
+    }
+
+    public List getIntObjectList() {
+        return intObjectList;
+    }
+
+    public List getFormattedIntObjectList() {
+        return formattedIntObjectList;
+    }
+
+    public LocalDate[] getDate() {
+        return date;
+    }
+
+    public List getDateList() {
+        return dateList;
+    }
+
+    public LocalDate[] getFormattedDate() {
+        return formattedDate;
+    }
+
+    public List getFormattedDateList() {
+        return formattedDateList;
+    }
+}
diff --git a/server/tck/src/main/resources/tests/arrayTypes/input.graphql b/server/tck/src/main/resources/tests/arrayTypes/input.graphql
new file mode 100644
index 00000000..f6440842
--- /dev/null
+++ b/server/tck/src/main/resources/tests/arrayTypes/input.graphql
@@ -0,0 +1,16 @@
+{
+  arraysHolder {
+    intObject
+    intPrimitive
+    intObjectList
+
+    formattedIntObject
+    formattedIntPrimitive
+    formattedIntObjectList
+
+    date
+    dateList
+    formattedDate
+    formattedDateList
+  }
+}
diff --git a/server/tck/src/main/resources/tests/arrayTypes/output.json b/server/tck/src/main/resources/tests/arrayTypes/output.json
new file mode 100644
index 00000000..871cab48
--- /dev/null
+++ b/server/tck/src/main/resources/tests/arrayTypes/output.json
@@ -0,0 +1,40 @@
+{
+  "data": {
+    "arraysHolder": {
+      "intObject": [
+        1,
+        2,
+        3
+      ],
+      "intPrimitive": [
+        1,
+        2,
+        3
+      ],
+      "intObjectList": [
+        1,
+        2,
+        3
+      ],
+      "formattedIntObject": [
+        "R01",
+        "R02",
+        "R03"
+      ],
+      "formattedIntPrimitive": [
+        "R01",
+        "R02",
+        "R03"
+      ],
+      "formattedIntObjectList": [
+        "R01",
+        "R02",
+        "R03"
+      ],
+      "date": ["2006-02-01", "2007-03-02"],
+      "dateList": ["2006-02-01", "2007-03-02"],
+      "formattedDate": ["01.02.2006", "02.03.2007"],
+      "formattedDateList": ["01.02.2006", "02.03.2007"]
+    }
+  }
+}
diff --git a/server/tck/src/main/resources/tests/arrayTypes/test.properties b/server/tck/src/main/resources/tests/arrayTypes/test.properties
new file mode 100644
index 00000000..db74c7f9
--- /dev/null
+++ b/server/tck/src/main/resources/tests/arrayTypes/test.properties
@@ -0,0 +1,2 @@
+ignore=false
+priority=100

From c2e4190d7e6567c28621e3f14ffb51ec141e0e95 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yannick=20Br=C3=B6ker?= 
Date: Sat, 16 May 2020 19:41:37 +0200
Subject: [PATCH 042/248] Add tests for char-inputs-
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Yannick Bröker 
---
 .../graphql/tck/apps/basic/api/CharApi.java   | 49 +++++++++++++++++++
 .../resources/tests/charScalars/input.graphql |  7 +++
 .../resources/tests/charScalars/output.json   | 12 +++++
 .../tests/charScalars/test.properties         |  2 +
 4 files changed, 70 insertions(+)
 create mode 100644 server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/CharApi.java
 create mode 100644 server/tck/src/main/resources/tests/charScalars/input.graphql
 create mode 100644 server/tck/src/main/resources/tests/charScalars/output.json
 create mode 100644 server/tck/src/main/resources/tests/charScalars/test.properties

diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/CharApi.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/CharApi.java
new file mode 100644
index 00000000..9cdc33fb
--- /dev/null
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/CharApi.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.tck.apps.basic.api;
+
+import org.eclipse.microprofile.graphql.GraphQLApi;
+import org.eclipse.microprofile.graphql.Query;
+import org.eclipse.microprofile.graphql.Source;
+
+@GraphQLApi
+public class CharApi {
+
+    @Query
+    public CharHolder charHolder() {
+        return new CharHolder();
+    }
+
+    public char charPrimitiveInput(@Source CharHolder charHolder, char c) {
+        return c;
+    }
+
+    public char[] charArrayInput(@Source CharHolder charHolder, char[] cs) {
+        return cs;
+    }
+
+    public Character charObjectInput(@Source CharHolder charHolder, Character c) {
+        return c;
+    }
+
+    /*
+     * Used to have a "namespace".
+     */
+    public static class CharHolder {
+
+    }
+
+}
diff --git a/server/tck/src/main/resources/tests/charScalars/input.graphql b/server/tck/src/main/resources/tests/charScalars/input.graphql
new file mode 100644
index 00000000..5868c183
--- /dev/null
+++ b/server/tck/src/main/resources/tests/charScalars/input.graphql
@@ -0,0 +1,7 @@
+{
+  charHolder {
+    charPrimitiveInput(c: "a")
+    charObjectInput(c: "ab")
+    charArrayInput(cs: ["a", "b"])
+  }
+}
diff --git a/server/tck/src/main/resources/tests/charScalars/output.json b/server/tck/src/main/resources/tests/charScalars/output.json
new file mode 100644
index 00000000..d02ba018
--- /dev/null
+++ b/server/tck/src/main/resources/tests/charScalars/output.json
@@ -0,0 +1,12 @@
+{
+  "data": {
+    "charHolder": {
+      "charPrimitiveInput": "a",
+      "charObjectInput": "a",
+      "charArrayInput": [
+        "a",
+        "b"
+      ]
+    }
+  }
+}
diff --git a/server/tck/src/main/resources/tests/charScalars/test.properties b/server/tck/src/main/resources/tests/charScalars/test.properties
new file mode 100644
index 00000000..db74c7f9
--- /dev/null
+++ b/server/tck/src/main/resources/tests/charScalars/test.properties
@@ -0,0 +1,2 @@
+ignore=false
+priority=100

From 61e107cec0a41443b75f3ac8b8fd89a42545c33a Mon Sep 17 00:00:00 2001
From: JB 
Date: Fri, 22 May 2020 16:03:34 +0200
Subject: [PATCH 043/248] dynamic client spec draft

Signed-off-by: JB 
---
 client/spec/src/main/asciidoc/back2back.jpg   | Bin 0 -> 139348 bytes
 .../src/main/asciidoc/dynamic_client.asciidoc | 294 ++++++++++++++++++
 2 files changed, 294 insertions(+)
 create mode 100644 client/spec/src/main/asciidoc/back2back.jpg
 create mode 100644 client/spec/src/main/asciidoc/dynamic_client.asciidoc

diff --git a/client/spec/src/main/asciidoc/back2back.jpg b/client/spec/src/main/asciidoc/back2back.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..174bfd55685d8f000beeae4116efcf8e81353294
GIT binary patch
literal 139348
zcmdqJ1zc2H`#(CQq)H1&w@8Q5sD!k1w{*wQr2}0)_&F#-{<
z^~Jy22%^1+cc$C
zZ+hD2^>ydw_wQG?Q=4UN__kk*Cft-A*xH{87ti`uKkk1@c^Y`d?d3-NNI+cO{4LTL
zx2H*)mk`wl0+Heo{aZ#gCs(ZQnrB82X5vFGsoeh4D1Q7)uvMOYyhJ08eS*(J`?CiY
zQ)g#10*BeNNfj4PoS0(kk?LJ494`GS#|TH@Q|@x55v-~ozY<;oRq#IY_cm>LF|p{@
z#CH3{vM3x+jC5FiYbyJQ4FXm2>(pEy>UTSoQpxBZv`v~FvZ>W=fY%v^?;PegyXCLg
z`i*FJW!|#0DTe3tE!ZnJ9WR21#^|Ta3zGhFuviC(fdKcIO!U*xq`3Z3w@H_sAqa(9
zOUA4~!D0pRO0eF)HmRLtOUzp``*wWPw{^JEg=b027wVO44sT-osaa7_pHk6}zu5z_
zohY#ep*Fv)P~W!7dz?;Muf5glNPL3vUv3gP3v*w5%$Rh4vW5Ex-?2}w@GyyW_=i%e
zJHXvCYWztf7PR}lZj7XTFIik(4l7xhv4!dl*e@P(kfbz`rr;|GCJvCQOctcq&}3hs$Cz`Sp7fBNRU7q{iuJ}vIH
z>Od-*K7H%Df1+&HDtk=J#=+@)#?n@AU5vlNy#M1}lJo@cJ;Uh8i$Y;oFqS?T6!*FE
zaf>j;H{3TmAbca;ceJzQ!$*IS0`G4l)U~yIUm~U&&9`1RP5CyquI_kxPRs{H4DTQ^
zJA90;NZ
zSxRK4!9u0{?o#*eazw!c#nQC&VC;E8%kvin5R-O7xxjkx9qWXEhh2MAebN+qOC=D)
zsc)h`bjt5YJ0B9Q{H!*A+Na-G9KKYN6PL|VRF_eW=!g2)E`C{zurk%{&-b)_mpoP^
z%r0o#=enj-ql;|1=y#>g4)kI8hlstS^bc-_ddov-+Vsm+?&yn^^(Q+!Qar^H(ReR$Nj%HB9X^(O||F_2*
zu!BR6Z3=er(C*#?^KnCO935Y24|NeSK@y)0mjcgcsfWq?&@atTOBUdp61r2WpXM`F
zhPK9&>W0c*_m;vow@4OuCqy&Yb~Ps)R*WuZGA!`S9|rqeq&
zJu9tF=gp1i;4fWhyjy8mqvoz#B9OLchHN_2YWXclk84Kocd$sORO|M8u#?(JBb&0f
z%&Hm(If!3)6W2s%IJ2#@tqUDqvwA8kZi1#Yr7sEkv3J>Jx84n-p*xhjG7i%FwnB4zek`LZlZEfuf?cs_Miy<(zWR
zErK#%+%(7`7qx76Z@`{ay9=s(3%fi8T0x)g9D&%HWUe_OMFpDP&E3HxG2n_<#`JJu
zE_FRW&d&6&JI|nEt@)<;CLnabg~b^m*}jh|iw$Ayt8DAs4R*`%c7sSy>fK{d>{_G8?v}DwUtI&{x3FC^O&exJWyS`P>=N%?
zvu_u@)%nw>{O~L&*S>}UF>dSR^%SYCa#)0bm5@iN-p%23lGI;K?P?T=Lqy57k
z2(~IR2iyqNC$&dSYZR6D8(?PD>Y4ZOj}xM5*Q%yMDO`uD${T$=qNAO!S%#+hkkoNf
z71m*r%J*ssE{~_;zEz^wB$9be?Ba_-|4p_0Qbhe~MW?MO*S84@-Pgo+tqZ&QYpjUJ
zQC_TwC;h8+yyj3dDq{59jn&u?yif7shZAddD<8eKAv3?5O}XP)`aB?lt(ctSSsD@S6EbAj6YG?aQdE(>
zJw$Zd*=b=WM_j2E;^?kljwhhx!}sOO&B+F--30}(4`xFUa5JQciT8;2uAkst@Y@$<
zjMncyDdb~!uuhgIAsti@5&s)Tm^=+3EvV=3;qUp2Q86sg$R4zbyAvJqn#mvG_(lqb
zh0T!NQcls2u9}Bgb!{JsiKQiIihqZdlNU^Fy!P~
z_rPhpW#g5#TDC{H^JIm;>rQSsIX7vZkiJ=tVyiZ;p$qW2Ih}rLs
z2$PYT(}Or{zAWCA*EBTIc?XfmB`XM-f-%hnKxh4XI;^PD#T-QV`pk`A<-AVX8ugh;
z-`di592g@g$;l+{6DhqpGc~^FXy*O8c;SyPCYOvai{H=)SLx6iJW}K
zg8G8`g~hP2#RU+KLh-cUt&Pr3_rvSdIi3;4$%mBljh4-03qJJz_Fm0W{+9~64w!DQY#
zg-K3rdqROC(~UsK2^-mS)8?Ns>#Dkazo%=Me15yC#9`iV-V-flbtY3Yu*SwQD{
zY?tSDV%R$P)@dZhcs8hSWl%58`>fbiW+c1>zw}zAG>?u>a4^oEdKqum!F9pmB&@Gi
zbnA((d+&5-1~f56Yt+B|g-gvgWjJ;ZPC`D%uo>Rin-L#LA78lkHS(Pa2(t_pl?B3?
z+N{pZnI8$r$O#A(aB)fN>_0Kk>scw?qjtLN;09-*!G~(HmrJj&XeYxV?)j_h6*A#8
zrV8cKTkj9wS5@`JW%^bQ1pSczkNvNQyd#k_{|8M{h8XN0vF{jd?R`V_z@n`
zMP8+-{WfBAB4C)eOhEgy`wz+d<~)9S=W~SpBM$yhRMa{*D+$^Dy`vkw2gh7R^%Feb
zW8AEU_%fdyMu}hFdF`qHx!F?8(M6oMd}5pL+a7hIWn35;7H;0Gkg7AgnTR8pF(~h?I
zN2inA7WgO*MbALFx2L>1ax#l8U#F8hv8Q=%M=SdZy@qdt!#nacsYFlGQ>1}FE#_n*
zEcE6N&jbR+r24bW7an}TK4JLXVMHjef$JnJ1XpiWtGO%L!_&TwS6YwF$PMT&08SX~
zhjTwy+jB+gG+GtxHgIPbt@p@=L#Ci9Jr1h;o30V6X3W&N0A%vu
zAjZ2fHNX7*5iWI~N-DzNu$G2%X1m8yoP19dOf2rUSXkHZc~sN+Y`4LRC#LT-Ayn5(
z`AS}qO4{5HJ3GpaSQg8qkN;t}e`t>bPwzEuboh~w#-XqRY@Ny=>z5D+wv6-q;4}i*Cv3lK;WLnFaY!!o^B#;WJV+N5tQFxm3KKc8VKmPh?N8P{)O6%ln>jlHUV01
zMI~~JMr{jR+i&_l+fJo((T7M$dr4JDA7N^{_B|jo=jNijQ8sIde~WMe#rh$KxMy*z
z{sB9UTwh0qe_j+?WPdc}HG$fUKJgD@L=;xEs2QI#<}zP}dbzvJg9IGlHK3n+hU=Al$o4P*
zfCOx2yY&;S#5n$(oLtCL{;SR8!I3i%KM+@7-lw*Y4)uP=-d90LxVA7U%#GH)gV5Ro
z8`u}LnGfj1iYFfZ-H&k3i6NhQU@PX8p5U`z0TwAv;DzD;lv&SWt3StY
ze&-+y8mMpqT!Tnnx+nS_J(U5O8-H&!IxR1B**}D7FM9j!Wm}Ew`qkMtCmj^zEp!gS
z^^PYTC5+v+XkOVUM-^m_3^k@C=1;*bx)Cz3BNhy&3WDoZ^Qz|h);sl)`2zb_Pmj@g
zE~S5gr~q80lmuOOBZ{6fx0eK6$+S6Sc99TmUrbi?QlQZgwJMvGWJD<)ZNrZ;H#Y$M
z4Duzg3hdAc-&h%&8b>#tdT&c)7-jO4l`q+Z{m9#YxVfsns(z{`_TDhR7)a3l^DAwp
z@@t32I>+?s%@w~~h?W74>@P)B%gJZX6UW}k>te6dqz5DQ*S3yuJE+xQE*=iS5hE9@
z2E%bI!~d{T2J|z)VhAWlvWps?PzMZD4Z=}}ZWbOYzYTDSy;d1#Alb@VBf;)eV{wAUx)g^g
zb$F$~2*tM)htbC73_%gIBcBWvG4Gd6#zKcQeH+FpuWU~fF90hL8|P9%MAfWuf30Xh
z?1ePzFPojWFu~0p22^{!M3fe^sONA#$traJqJf#mUcc^X@0nx7W_#1AlC8So&HPIF
z7r-ZOY06Z8WUcKn5b~*eqb;?TPU(uML0bBcT##5}QyjiUeGn7ayQN~xvq+y^TfJ<=
z<=zR&q*)v?7q@yU>YuhxIqXCBWaf%hV(41ZP7GHz$4WuZp#vwPs>m1X`_2&c(pPtu
zv4zgrL%u_nTm2jsYm-x=dsxpw+M})(`NkrL5`A38DY)9(uiwV+0f5bch^U$N@@)^H
zm3+>-lIODyD2pQDfA)n_z61hkh)BWgPdjN|8*@$Zaw8)3l0Zh~CGrM@)@i;vAa368
zPsj5`qzRkEFCZvWq;^{sJcfaB$oAED9bTRuBcntkkxOm+Zh$3rr^Ncp3bm{M)h&H7
ztS`CSy>?$0hF%a_nA`_!ntc-y*moMX)i^Z&%%~-w`2v1Ni8gTlo=7@L8u5tm=ivWA
z^abLvU=WDiqi1Vl1j*2gYD2e9gMMBA`@1U`@wGs^PaODY#Jm~&golUeoJ&2=k4W~-
z%TnTiInr`VwC%|51(42fP5Y=EWVA-+oaI2(q1}>vwpr*eQqEuYoZ}>ZlJk51`}+uf
z^FS>*$J09p*`(!5$$-@YVG7AxNup-9JOL2KTw?d3xM#u2_e~%F>n`BOk|=VXy8TT_
zNGJC@QIOG7~4PMT^r8WFjJ
zEH!*4p_;gDVMY9SQzqnd6leDp4u1vk>`Sq<mkW?!zYFx3skWUeJbDLSRR|o+6bQ~8%@?&v3&PnhZs=cx&c)M>Hf22V_Q}Wa3
z0O0Rw%F5yb%vFs#`A*?>43DoKSjZ)L)lK!Sk0yR^Sq+n}m2UJ1GBo|+#V~KIbPy|U
zMs(2~;~ZaQ
zxr~_P6S0@Zto_T8mHQj;MoPWt>Ot3u{6V=8rYS24>2tHWIDS-d^X-kKocTKv`SXnD
z_H3P$zKK%eL}HmbJP5x9EkVuwfnjK1@6CY2rChQIq5h_HAxLP`+V^8*lO-h
ztTngZm_7eQ08*qKP5rSz2Ap7+mrySToOJO=@s0Hz7(vQpaAHK+Nafar-U2|iqw
zNe7ooc9VL(em==gK1K{4YO;O4Egt!7ZWh*QcwDZX^`Qfpq+5SCNesXw0VDe{NhLK~
zBIZl`KDCOdlD`cLss4W%wm~3jiBYfbEaV|y%VT${fD6zx4ZAsjIx@+h%M-s>DvT=h
z9@YMS^Yc$3*t$}1+)Bd(j0EW=%PZQga~so<&hgjlhh76Ge#8YlSKza*2mLzxH}4Gd
zG%5#=#Z9gZ4gD(JDCA_E*MotQ@SiqXAb$TS$xvPY{)mi1vX$&8y=W&u8Zvi#QJ0=CvkpEpX
zkz|AqrTOnZ^$*9z4R>e~8Rqe1m&xC$|Cgln4@6D$eWTzQPQ&U+1T29OxC%l=K|{qr
zLkHf_fkiLCav5|K3}O(`RRR)PUQ9y4OFWVfxbK
zCpLju-w_#9hWv+1IVp;u)*GE%F;^ue|e
zLw%k15O16CgAazcd>8p5Q~Wm0_k`zs9~IaZNxrhvT4lXd|H%G9OS1pY&3}6vSoedL
zz2>I?%juv%+}=%d!zHZretZCPEvl$j10obZjU)
zKR(H0<^##lk^2BQg+5HA5R6sFyGXjDe@KicKRzdnTKeGXy`>c}D`^t^F%SKXhm;R}
z-C_4NWvWQ-OyRe0?=PFRy^UzrdM3uKS?NkA`$E36
zG~|KjJy*qGqBD^1%0^6p^lw6jRHUpFRzTx!L(f3;dL1cxOZj?>i;&QvtNc7yDZX~^
z$Fx5&Wg70#x|@|B#)`%CxrEk)R_no4g$^yrHr&P_A#!BQelV~%x+;iltPb54
zctd7EnGLjWtHv?=d*#hy??!OZ12V4OG=6g|LN+(Wt9+Z1+5YH@B^tAR>i=O4`1jDv
zoSnVS`te@NC@_8}`b(nf)KFI)PVAd3R=4oJR2UHIDEB#%zc;C8tVmCrvCkd#@buE`XbUxbQo}LDj%<%@#UoUQxcMqXBb{Ds
znz+a?!Dn%au#IQ4euh?$-Kn7iR#M@ps;uSi|J3MH=kxBjjPJ2;h_PkuEJh^we=T>h
zo7CGw7#%KaK-(k9taF3nUy6nY@mO`HPAI(g=^f5871<7G-ru;UOQ}~&(JR*fyuSE@
z)@~yB*_ar_xl>WdT;Mt#YR4IsEx+1)NV8rhzr-yyrw-YkMtR9jM+sn3Q=kK9W=
z)0Se*w7GNS!{`yDABU0xUS*|`PK+0^C*1ga*}+n3hva1I`}Vtx7{jkzQ`Eu-sm?(-|4MT&->SIJvj_j$hczt~!+Tr6X`}
z?9GoBp}ckSV^?Qk!e5v-okSwBcbR&gr9QmBNjH%_kw8sIPcINH%2ru6@M=UX7F}kR
zVN5CrDrk!V5W=E6b!8cP6L9r@eV;s`2ZMNQSbMe@P0pq_x}FUVI7Jc1IYv=cIt*lu
zFya&&l~}$ye5_hwcqn0f>={)$Vhyh##ct3i6Bk}v8hyyR{y^k
zk_4Oxr&j&aJG%R-%kNsF=;Bdc$=B7oPbo#nRnl@SMYRDg>e<#+49d~n&=HMO7ZjQNC)4@&8gMz>%DRI=$Mu
z#)mlW3!DD0hb9$#^$djb%cJ`Hoq;-<0yn1xD|8rwN1(JQEWWlL7k}9UZ~2u!>fGQB5w#iYYR-1V>1#!!mV}-`j2jNh?c8y%
z|KcV&Irm)+$FNAbJ_S%kY;Kfix>uWhgvkkk8d8}XQpMks2mOD%!NXYXyMHdpYTcaR
zZ>9xm5Q10M5S|be_h()3*Z1C58OeVZZ0Hp8c<-uvlhZ|)k#mrWHJ|bBS6)TkTghs#
z&<|>!5LRQ-W6oXsTs%j<808khojv)vm(k$!d)M`klXEZy%7o?JR0E$LwI|xx(BNb>
zs`~^FBkKXZkk|d%l|gYcvbjs9D)2m1`uiO{6jbzxf00hWUq*Ceaan2EOdIWGNW-3N
z_8#vXHE6<#v+=(08K|%el_$3P=G*T=peDz_(t{*!6N4fS;+Kyf$SGj+k}#-R)#}eF
z=T_AzKZFh5Egm-#`+f@{kG{Jj+;45LUYC(Hjqf^FE-qk>KDx?p`00aN`2#rVxGOn6
zQI0%MgA|AOCMur;--KIHCI?>74ZOT0HN6P^xq7@k+ZFevcmwzd&;18Cs?_M@A1I`4+&
zBD^GL{X#c1y&+
z9lpDm0Q>MTA*N&Z2%TYfFL#tA_VZ5qnLE7C4$)1sxNUmG6eKCtlt}FF%Uk6;
zY)du96qwN8DC5hfn#X-~OW)neJ@p~S`@vCmsZMkScyBxDLYIm*dyVh?mElB+4vue+
z7LTTCsbH<-526v$f)?Ta6J{NjJS)w~A(;M+L-#d%Gh(?MV!x2slXjY6nKr=ODZXQs
zF7tRhXjtpLzV1FHr+AI;Ww4K}{cZl*xXYTwnq*AaBzIoliRWDt9EzMM!;BxctMPW*
z9(c9*;9GQ3e^HUrt2g0xtTV>}S?N@GJJ+A*g@1Cd^KrH;81g_5KaAP*IRnkTb}*@s
z#f`wfzx<)yE@#kLMYpkp9dDuZI?;$Da7bw768cUmtg52Vr?pkga=o{`DC`%jjRq`GMOs
zD+UHwTVf2z#KBmJQpg{XLx)qZ-Vbzzi^kHci$A28*S
zBN*aHO$>3E+9-PcRetkX+uwcx%)^5{#40t-Y;(&w`ZJ6!!nw!s_FtU(UAMII4^b}~
z&vE#SvH0Q1llJ3Vh%*q?oE^qv5h{5&_uEjhH%UBnDh8DJ(C<`!bAkK
zU6~X@F9cF~MWay)Qsf?H2)+jEk1AG*F|;VqUx8DQAYKQ?{zCab@7{pItQ)L_TR|D>
zqN9veN@j8k?{h^Ofez;zNAeES+w>KNL6dypZO+mrFq9O-qnJXP>vMJjDI$zVE}sOs
z-zE0RC)iTxeQJH1D$AJ{TLx=zXV(&A*gd+WDZf$**47Cd!SmOep@1z7fCsZ}Ym*WX
zvQGh{HY8<+@jJM?ujG~+vVsS9hExoN;t?ty6}ijAp78x@aEypl@-|gth`?I?%Bh0E
zy2eM6_K8O4k>f)LN^Kmy<%uf<$lX6
zp1Ooc111fDMH*VY8x8|~?QD!`25}QDvwyeezB}*iz}|por@!t!@=W_ieg_vE-#wXu
znWXq;5eg<#m#~IiQBR_kJHmF1uCT$HmrufF2W>9R^r3@?R@&l&LB(sfr0$FRU-6|{
zLtj}b$3#CER>TND19AQi1CF{+tU=zifgy`_X-`-&On;H
zcl4c{_4)Jkume(H=wVp?Fmob`yI-^K*(NaGEYSI+y4J8faeBIE*EsT(&7`^Dr}zO)
z05aTI64f86?%y^1=hTjMBrAUlUMss-E-xltR*gQlxr?fvU&mNPe!(6&zocX_b%chb
z9A>VIXZg7y(cvnXU86me;nm;dzYS$!C?z2@53^`rHbochSNvJ=TONoDy(5)DJj`?y
zYqYz3h~QAJe;-s>;38$`uB(xYtrEj2TDKM-_P9)?On$4iI$U(RA{|@^%bTYHE7ZuZ
z6m~$01jWE|Hz0MGExnWso{#oDxH_Ag{dbNoJ>7R2z7p*MecVbFU1pv1P?~zpaalnF
zYcYlzPRP0zg(?7H6yzKu;pHB903RfJcx`KU5hZz&U0xfhq*B_Nk0@YeRUF_!x|Qs9
zgiH+Nd6RpY`@9{dw7^q7oh@jcbAE$CQ8~C%e`u*Rxn`J+^U}^GyP^bsZ9QKf7<43i
zIk6B7=Nw?qn>6>e`7z4EH{}j~M@W%>4jzkY!+QfQB=mq%I6vX$utiTVlSz>>v1$)7mad*bUpDSU>Ssn^ji`JIxQ=}4``UL%1SsA_8ETD@!j`VCKq9Uf
zQi#Lu?hHcp-B@)9*-C}tM?}{gCfOj`H|(ZdMz&A16vrP}%4eNFw*cG*0x7#+-yWMg
z{Z43Nw|GX=aLO*o(j$VBbESGbdbOk@RCIi7l?W1-XFx*b!XW?hzKx;81j&pB?4u3!
zf-Wkx#uL8c^zER$!!T82-tS$56W%;8ZYb$8xjuaL_^=Qa{J5j>>l0psjB>PK-s1dWUo=;jam|8^F3jC}L2!o@ZDBIxY6&fIxWXMaLQPgM
z8V$oYQ`C;*EA5p5Vmn(K<)fk^&zJaL3{yqACUIgbvRKvOedRVFOj7O#C=MQHIbIJt
z?moGQ$8vE<7UW;Ld@!kJ;!e+)O1K!KvXg>$-e*%+xNY!Q@PBP9?0Eeg*3U5gt*kz`c!IDJk`ivu5`f2`D{;~K
z0(U(HvP1s2H0+<)T*%!?iAQuR;i>rJbOvXjE6Z0pZvzS12FTLWmOj{ZBOH$`0M9;Z
z`kc1;5ml+qKx0$f&&&e{4
zM|lMbY02wvN0b+R8@mdLKS@jG84w$Ig2b1Qbgfu
zMy4#+?!(~@JnWDNB11Y2fSwQtIg*$Ay>Eb#2XLdTly4**O_gI0CLMH{>L^
zp`aESEyzuoY-r(oSFxcQN3p>z)7f=GcPm#=`pXBBHpQan8?=XdOiIonj#azE95CrR
z{dbckG^e;RM3`0qiOW~s?f;k|@Mds{BKx~72QKD5rR@xx#y)l^7YpV+Dq+Q;9SlvJ
zS$_}4)DdERL%64=^RJ1-d!S)=Sq!ZIP;a@`8Vq>fEa;WG{B(hk8!4UXO1_-@2-uv`
zL*@Kx3w6!yPnG`ES%m%sUc-f|S@ZQSyGk?f>IYEF
zRdZ;@GDiON1EQs*EryBPw`ht_&mVHU)g*eyd`CanU{uv1*40$sN;cCeEQG4|0L>Yk
zQ5HGD|2m8mwM3W>KU=d{YItIViZ&9gS{7BEC-Kl)aRK2>cx=rcckfCyoIHU|*n36Zm1Xc*vTaJy@i|q{4(qxfV
zVwXA&ry!ed#~q(Y^caVQ<{S-b}y9H~%*pDH{ubts`f**E0G8B7uZ^
zbaHn#Eg$!>I`-IFyO1IodOlJ0#LpnaxuD`S_Zu1b!!-tmp4>fGBEwk!`rWls-WwPw
zSp%2KV8E6$A}b3i(1twa^bmovj&dG*jZwb77zJ}DNk|(mK-7!y^$(fa#k}%wJ4ry0
z(}t8;CA^FX?^(`_R_z4*`H_Hi7-?68f`wk`BG$`#(fsQ1h%O+yEQ=}YM^-M_S^5h=
zoe{Nj5N!&(Qw5`y=%zg!JCE72gY6NiHH+SnhcG)q4y{>nIfb;!&H|m1r&0TuoliqP?D8SGx0KAP2R3-XT{mB+-tKu6KN}Bbo|B650<+QQEJ+a!g;AdTZ~~crAGiu73x)k@ssjuuF37tlS$e
z{`e|R@`fTxnI4*64Q6PoA?Gc+x?mxp7XtM0#k5$FDkH#DASiW92S%5*ib5HAj=r>G
zYYrd##dHSSu`Ji*xtoYjg#fkA5qhwW>PprV%88-u<=QSNLOu-g;))?PHIjwVNh!;?
z)tFNN@a9W&kOU?7CifwPvW0-YZv!5i_#~U&+tgBR
zr(f2b*-~SjFI!eHsGY1DI#o>_tT|6)t|qk{_Boi>HkuOk`7rT)Z~Ldsa`YTSCuN)n
zj>xc*=oRP(?#@gB91UNvjArx0uH8a;lLl9Id3qFVsS~GRi6|FypU
zR>#Xz+lm%-+xzD~H=BEhRk^#f3aQT*XGcU!Z^+bp7D5G!;OG9{(xdLqf7sT%;g?gxRx{YxE7JLfY?yS?L-vZ~rFGp={ARq>?Q>X8qV8Y-*Swk*Efs{7^6?sTJR4JS?QLk<^5hc*~Rmpdqcx3y~
z#;HEcQX#)OS6$lKsjg@wWw{2Stp)4x$C#&$;^JN@Hq6%6XaLel=O{xpGxp;9nqZj_
zaDOtApgD({dV6ZfwE=W2yLP|^rTmNfK<|5qgq-kIpkp2Me`5Tqk&p<_$?XA2j8
zL(Fc>SW5zB>cVI-8DlLT~hWB^iV1QLIrFg+ZS<B8QI&go~c3sp7LP(T?Pcf`c1`
zH5P5cK}MMGA+{#186V!oI7?+kxkquSLMkma$qHR{N^-SfV(-6ql{-I52j+o&8FPt#
zfr9wbiD9k^WnGgIUdc|Juh{&`wFirVuhsDCTBv5jePH-0V@#{8naRIQX0q^!<*&ln
zphh^Er{weJ}164O=&@`Q!2au>XKj2R9
zaG9al+E>oAO)|Sj(@apBd66asfM_01_&t4Q*k2JKj(zQXaj!42_qVfaXt0@V*^QXOOp0?x`70&HRCzVDlJg}wk&)IVgqoOW`=D6^Y1g(%
z_6puQL5ayO?=(?d;R~jFiBZnWQ8h0nIeDza4HjedJX2mQpRkRj^4nHbPU#JBcZEy%
z(dxAPi5W2Ps6ec>pW-I$VOMRGIlL`@c*L(iML<IP5kVz*Sf}sVySuSw_4{Kd-|I=cvgwNfvts9N>B1J~-
z)rtS$wkx{2T=#79@$9v2W|ofM7#~3OVJ0tR^VsjVw90Qm
z3i<28hi8-m{Y6<>{Z)Yjq
zpR;PB0RJhABO;(LD!-C<1P!we?@
z%F@iaHcNB4mZLr4^rLx-7V1Ppt4S*YOZ&SmO7F<|hVf1d_`H4)7npzBKS&afIettK}3x}^p
z8Z}bZyl?_&s%e~{YCi$%izRsmz?~qMG$7r{JNn6q@>#jvxry3}qq*N1(GZ!CoJZs-
zWhtC63t64&dzxi$S^1biJE~OppXscb=~9k%1CcD&xyuLw)-$|t)tJ{n>fJ_u(>9_x
z<<*eEk}{3shmj{^eF<~wU(0$O)%8;*;kcPZv3ZUAR?j2v@8qeTPX+*l{olz+5By!_
z?jM!+esp50ej0##V|40IX)XmV(ZECwHL{*GNM+uK?+c+T9i#Qvxpc?#nGd#{6w1pYJda9~1iiKN+tveW9Wy?)UF?^@l4Q%3RlKI`v&sEK=pgy=IDY*4=
zd$NthVRDnZMmMLls@G$)O?~vU)
z*d3fBkPBf_%^mMynv5U38vt$@3Tg@OClYA$;zkm;NiCK%1A=
zF?F3Uu0P}$*}0wQAiwe$q7aO2?>@jjoO=JgdjwtWHT{Tbj|Ub_FHK8t*TQ5CIWYA7
zZ`KI6g)bi8G!`@nmWFW{tSd^CS$c)@KYe7lU4;*nmU@Slp3KrDxd=-BPfo`EhE2X1zr#FtHl_|~3gA6p?yQR|7+RXO>$
zWu;*l4y^}&0qBry@F29*_*1f@(9jvkLR2bSHjg!?u!VdMm%(oPpTtL?E3)D`#fV`1
z#h^ROn~I3lTd_U<6yN6I>)fY~(aILQdVvE`XZ?7L^*h;jUj6w=K>^Bl^fSOo?{^{t
z+;oMpdK@i1J=5~dk>Wk_vMXwD%rEZ{GX~-p(9nFN`{}NJ6##|0(;``{dxlny%WAek)
zsCJ{%@~wBbk(hkv@nPoHo%*}sSuiOvw2}UWzX-wk3gMntuQ_9oey_c5{b2QjQZ)0w
zDZKw3r2Lk00QN#@!vufxZ=UcULzQ%PC8qE$a@l
z6P8>lfuvB@-1{h}AacP2|Co#ZZ^nf)*UlBKoq_k$d}k<`;lWj|b^mv~q%o=qU!P!F
z73Om4kkyNPLPL>wBab#PVU__C^|33swnFV}H{*QqNouoh56K#=)0MtAhm_nIglr0-FRsGb@2>wKw2_MTp^i`Sc*SjVsL!9~Cp;xhx(
ztUo6O6}?x3dc5AQYE&DR6|bc&|+x0NpmLdk8>KI}-$
z@c{gk6}(m-T4fmudvO`o<8Wi{TCffaAezBC4~db=CN{gLj&-_@1eOLTd{|bzQ*7WJ
zM!oFMnTmn4+7;gMCT|->XJ|h^>K-q%4gP38{RLfLex7|OBO}jy=yBy?`SNLwA7IBw
zFUdec@DLp!@H5XVzdzOp`Ui}LnUG}Dt>gx+VBTLDbH;b-#|M)F1M#uubWsZWT3zRU
zi{)AT{p~!0iSW{lg$|9_`Uy>Um5UR$?sNtsdE$n<^=FM{T{g!Vy1Fv}S27U=LxFp%
z;4ARGkTzl+?gWyKR-lLn4DZ+&>1NiGYGIsU(1|ZT)EoL1gFISYxIW=08Mi*g{*x1dIkHjlW
zC040&>R@#d@ocfFxAhvMS_xVA^silc_9BLKQ}DTo^w*^g6`ufti8Wy@2~EHh10&9h
zgo*hM`n0mw1_JM0n9^_fLRSL0jv5Po&f15xBY>bRk=K4k$=7l&Ie>(-I|Dh^KW4U7
zBvw4R{(FVu421Fe1IcGT9E@YdvePWXwn#uyp6t&AER1NToXw1%`5*x-8p)q>y5UfC|MK==|)n_sLYcEJ;LqazbUqUouRTY#8Tj
z)MLFL3FOA53@FRZqmRTY+er)kce}hR+57qVXQ0okzVX~qRWp6@>MAiUujHf30d#r>Zay=Y
z*4fRw_a3N!HZhNFJO3^l@Egz)C~L&o534k9Eo#iXQVWZH54@=dgvc{1Fad8$ha{}Y
zHxqz2;QYUKD?cz9Tz%x`)wv(ve~*j&p>O68y^*qvyzdY%#{#4@FEh?u+t88l}U%Q$+hoQ$H%qgr{XEW5Q=aGOFd$hZD2BM&S
z>mifSo4tVZsBgCAy_!k)RhREtCRe`vU+ldFR2<)zKS)ACfZ*-~2qCz;ySoH;hsGTO
z3GVLh?k)j>HSW+j1PBl;IKi{k`F?*hznTB+%%0iV-Lrf4oW6a#UcL9~RlR#ZSE{R?
zyRX_eq(Q$;wO|(3um_qu0#46rM@;5#=rPz!x@vn#I<6V`32Vqd8M~~N+-l6SJw}RN
z+qoWDbhcac
z%GxBa{{A;ik9g>}t?6$SUC#F}wQd$G1PRsMC;SWnj%~4RU41)w1aRZZ2axD2MP#((
zjB#f5SM{8z@{T>hT7ZW)oHc#$*}Fz;IIGj}!`!K|%vt_FR=iJmPiG(MXH6N*RX@@^u1KU?)u1|vo2zYy)QQXHhl;h&
zbT@TrHE^&(Ij^x)wjGhwZ0%8Do1!iO!?*NfD9LCU8!zN0X?&aXoBR9qD1r^8Y7nlv
zvqw5t(D+7!$A#|Nvc%bLDX~$f@@;P(a;`YamIs!dN|%&=&@DHL^rHubn?RS;8f%^v
z*wk)tb{x5a?JSEhfovHuLnsaWHtS_o`$xQ>&TLv
zvrEOxX)>ewH?n=h5}~umRrt=2apS`{yaCn8wqGApxO~U^hMhyxeQ>!WD%-|DPHp`l
z=T42VN&I;)l`ta35wSiyIEw5!~6PgCZk9LS-{C|ir
zDOL5*LBr_Kay&BpPZ?cuD=pJitG#~di&qZ%g?BsB=|jyVI=Y;+OeK(Sm3@Dc2;^H?
zZ&rmaXStGuC~%1PtfM^~L}U-G_VUHE*3SJQW>IIT`y6jSWN;*vCfuaPH{QCQB2wPc
zAl;m3=29zo8BF1J`L0QfiHW{}zlnJKNh&VMu
znIDr{;EpAfJsFlEj7&khi7ogjqVpkZr`89}|9B
z$#JC4g!?~x2Z_SeFtj1wxUBpN;qBg+K%>8k-UlAK`sYHe&z0_eGYznsKY{-zn8Ver
z0Z${0A)9nOC8ZJ!xZ)YE>la{=Teb@GHr`tWo8a5(Q7E)N6wZHX6
zmeqwJQ}LiW#5qnxicA+@DUZJ#wBH!UMYnzk{1^*oI`LC+@&zm7wt%qb4(nK?N}mPY
zm)P*_c3+y##g*^nghJTJ6Jb7QWYboeA~Q;9&&0u*v$I8$^j^A6oWduk(0r0S1*^Q_Ie
zY-kDhXf`6rB-c*PDzX;_^L2*Ayza6<-fCMTNVH8UqTHQEnO&y%5pj5WHfrJP5lSFr
zRnMz-+>c1VlGR`kmli2SOVhkNno$G42Eeai*~)yDjG~ooAJO~oa1vI#gki1+IR%jk
zV7bG^W3al_=b(J|OL|_J(np#~dE<(K1>Objm}>WGXF^?ow477hKX8S8!sQBUa5z`)
zB!gVoy*jGs5L(4{F6X4#c&{FuJLpxpaTP6KT_FhJx-F0W4fBUxaV6Q|lwjMTl#uo|
z!K$4+P=B501>7HWJ~-jbN|7#B(3HbKF_!=DP2fzN!^zUq0t-{Atg
z;&M*8-CUIKpT8a<$CN8}OgZgLUNzMRdoI+kL{=<;COV_%t`}1}Vt7)HPLJT;a`L!w
z{h24Ig#6n%nBU4iR5?EDB71b=ti`<#;8q+ON*6uUA_g5h&*S@
ziHw6i_yfi0id9e$#
zBF|sW*)P~7Wah}qP1cWApt2&4K@n@zm
z-6h?)*QLO0TvC|dy&%UZM?;Vx>wLwvGZiS3E%Ofx-GMNBi>2;Fe0u!C+)&*X70Y^3h}>FbhwWZx2A3{FLYLZp=HO?k8GiN*@I
zlXy}`8*J#1QWTb{qwX$8o9@;-81=PGrUb(y(98<*igNK0<0swWVz*+m%-7xRK2duF)cG^U_S
ziwXTwGGShH8bybTlfm{INcNdh1hp@w1H=F0Y%dMr@aKt>-h;_gj-3UMj
z2|H{zb|DawbG`$EhQ50Ecu*QmzH>dcVj@k>dv&orQz#QqDi50&f-;{xb#to??`
z+im+IpD~!edj>qXG3~+t_2evYwcfx?#NOI@d&1A7C#4ij)$$=TkL6_=>iMKO69xo=xUy9x(hH6n4~`
z(Ug!@TBL=ufrCEw2S=ycVb`Q!o14-==_)vG}g0?
zlLCPfIv5f->Y|M9E5jVvDT)bq9cS*=F+9~d!V?Ye8c~T_e`>6ib5eIx##ZrC!?;_?
zGraXG;IQ>oVxY%;J?(tHM3_|a{G+nlI9?~q+f@P~h0)o+;1_#K!TGDY0X5A@e?vJy
zG&PAy?ps>(0404Gk?8>E*G4>25!_#PdXB
zd;1rJXlVN;EYB(YqFM8Y3a>sibscrEl`5^1!;)w1GnYVUGY4kc`sHBS`mXIrWZI@U
zUmENXCK;7--Imtj5!0B2-b0Ph!uD=e@7z{Z&)oKnMy_?%Z=_>wF8GVg9%P)U!^Lw+{L9CS+hv
zXBe)UM_Q&ksCzVI6=}bjOgO3#8|K5FAXjipvJ4P_6W4wx{cQ(84jt*P#BD~MXU-|4
zJ1Hkg&Mkz;)hyoxxCB@ClUc
zFPBnQ)8o~CGZ}d}zo1{-{qo>&o9D`P;jhw(KR$GCj*dT)(UUIbirGLX{F)C5crY11
z=&(P8uVr6%{q0@b)4EKc2#e(d1>D=HWj~rgtsITtFuetsbd3~n@3gEQ%F&&))Ql~s
z2Y9FT<@4F9Eig9eavJ%O&v6Z_tuRD|?seM=Riu(#$JQ;#k|iT=5~;YU7jiyC1@g~Gd2B=4a0H`7HVZpF?v-^aQLTZ;;Cm8e}E9mzRo-t#c;
z^)QY3=RZigP`IA*QeC-kJ!R`8-m?j`DvWrV0J!%)5
z_}J2!f=LF1IQ-z_BYss@K5oBlW64zv9RQJcs7b-+7Ab9ZO8Ks1?dVWcCyI(f@B9GB
zm_>Ih&DR~n!D$_Tr-qngnP(G{q?8Kyz~4$qM{=FfyT<__D{UGd;a>m-f8w0`Za16R
zYm5iQ?gJJhQT#
znavPNH0TzzG(autT4Pvl!}s0jv$Iox&-zP*Pvg5Ipc>xy{*|*y0Ws-KFLtapZd5)w
z$F1F}r8@CB>aHz?@^3nOEEl2aB(WFm${WmYL_AJ)lTS~%$YL_!(&VY*fd|yg#{FKZ
z=RstQ-g@=wz2X^4H#u$}5*ky?L#@WF&(;Jy>-)EMU8qKxv6rC*6yYKJoD)=^&Xl)8
zdsjbouTI?NIi(1XqhioxsB>hFWH>g#gK#fpg)!ct58Q1KpszW$$TfcZuY6%&89{v3Q0ay1o^@dG`4s%pe}U{-h&ESkHd>h5GK*;4+2
zD(fFl4^<5$?jZ|S^jV%T)41oO{c4pf<~waWOEo`X^Q9ejS7qxO1ZN;L2(-jvw(-N@LseQNR7F{NDYM)N{|j!
zI~;u@`IaYPRu&8Q8-{%!HTaCn_{09acd8cgv`o+v%=|7i+<&3YGBjy&|W)Mwq
z%Yf33=2%s{PN0;1t{`gYGIF8VKY*9oKn%tYxC}AA@+Lz)9
znX3VG8P9W3Dq73wR&!wRD%?(PW^Pyb&HZQeteI88#R??WHs*sCA?bw=zhTg0@&hg^
zjSh;waI}2&D#LAbJlAIJGzk;#E4DQ?%zKRuXQc{BHQGj+Do12&Vf3O4wiU5EmfaB5
zkYRN?}*orPCC*qvf%
zl~7AGfg6W4{y(Wjjk1Y4tl*W#&ykLVC@#P1pc+U4>z~p3t@tMwbuaqo9%zv}5!NRB
z*FQxa(TEO#hJT9I248ZCFmX`>MRwc%nPhlGSU?e{V~+w_Bnq?$=%oZ+;uW+A+Dp(N
z%E;bM%#6Eyv#3iF-1P&icJBH{u(g^_jFytUeGfo=>@>)Om8G05o9XjF1#Gx&h=Md7
zq8{F-vRd}CiNW*NQouY9aPKf!y7tcKf#@mM9uQ~nHa?$gi*gd7#%FUVAi7U!#Gd8r
z;dr2sAzpMLva5{$m?s{Z2Mx_N^>u_}?{$nL4&mlKxZn0jl9qQDb=uKgK@>QOH0V@g7=DwA+>
zx(ob;JkzXl4SRkMOq~7UuyQ#fdZ^F>Mzu&k`vs4~uzBktL=wJ=IO-;cy@0o4z;eP(
zBXZl&u+g331_>+0Rr+O#2!B8NSsj1Mxtd|_Pt%Obq+0!rq`
zo^>kTC^gv9yOUT1o(+T8(nmaB)TuH!568nnBwVFmNc+MgjB_W6meW&b*^E%TSFb+^()rFR
ztT9n5tLgRa?9xP_AD9Nh;*9b%T>sYva*f0daGE?9zf@_1Fp9I{p`QCmr5KF$_kz>xM@0T7v4X{Lgm@Yf7g@xS-2?D3Q!QVM2X?ZEWyYLr%2W~~Y%FsneRlN9C`XxrkKmWq!FFFVAN<@rT
z|3yRKl$Z1ki1KljnVb?m
z)ZOn|_olj|Ay8rGiwI0td|axM#?4d(y`uM*{;VyVRaDrzf>%WeUK~(#ZDv;0JATO=
zF;C_vKdDMp%W_p*fizdvQn#6&#Bt5Xs$IP5Ri5EZf?uX;Z_>wJ4jL@aYGF>j{skyg
zTWF}iA-~}>bs78j9KBz%WH;=_!z0XUr-Sqm=~j#CoDxq=sZpBYUQ0OEGHJ6$eQLDe
zrIm1Xn$G&3RM4>zcA??nooF%vDCJtfH_qxg>4#7!nenxN(n)N=dy3
z{ifgDfGOo)`Bo~hvUyP2y^QBoD!7bC%KqwCBx?Gv`_|&g_i0BuzkA3RB`F4N71VJ05>V*Wx{4lYp*VuHr%
z1mR9I+m9qzaLWG;V`+4d`*b!q?)|u`W^few5u0;`=p)u(2ay`EmITDZvux1t^g{J1
z!G8w7^_yz8$^hav0R6HRkoY}Yda~gs6KwXSCt;OW27SoQ^O5C>M)O-`d`o{3f5?Zw
zp%j4AYhwL>047bsqN_)_B8Nw@4rMt#${b*#7MRh?UNNB+YW!%be1CYI{0r*gyKl}2>>Qr7T5g_!gkbm~6)PiNUy5wA;Y^Kxb?
zrpIzb(@3vy-&4y2nUB+Rm37c5V!&}1!giOEJ|bMl=Ak~q;3)pW_>Z8p@w#2U`Fc^h
z-G1s+ag24}r|>ZA;s)&|zl`Jbjt^9U#YR&O^e5tr=qiCmSVRqKGP&b=2TBlCAy^g1
zxuJzqT@gK<2k#fnUq9Ikgasw}L
z?-72Q>YE3o1q!mH;>vDrKACQ;c1t`%NO8UL$r7zZqvgZ)D}d`Qo;k02e@dPC~j
zC+cGUupGXz$ZDbXf{&e81kBMkVt6?%sj
zBYE8QyLJe*F>|yGQQapBSq@*ERJx+r#$u@gqNGBeKr1R@nU%uiV*l1vK9p7M+EMB8e$SFhw`d4hYSkDA&}-w8_GP@X>T9Uu
zpTSug6Cj_iMxkxkyjUcy^v9U&_$~m3Yp1c*xU@6mUoF$KO>E9TU@yG8@WQH|*502E
zYPd|B3G=6;^vWhjNvq8(5d2r(uu4Yn$alv44dnA2+w*EGi>C@b5%TEp55Q#)dMTcf
z*vz1kbreJf8S1h8>Glth&iY?KTAP>fH_W9EBzk-gb2r;bIuKEUc$a$U`h~LrXUWU*
z*G}vgI5sb3LxcS+JEFZGrp#Yl_@x}D-~XlCX8xd=BcgjCy?#+~`SGDYoqe+NjrlQEa>a7ZM|&Y{HwC$w|;Q}@CZy2&1_F{O~
zpiG?DAxpgQ*c}mebUR0Rr)2HQMw~Qwh@kW~m@*FiUhdq2iDXEdwIVtCyfTl(ge{Tly>{@2?YzmD*T`(UbJ
z6~B7sOSKJK$4ga`BS%$zze)h^b$-KWZSIy32jsNpTxMcj|0O!G-y1_bUs^HL$e*{!
zh5DnevCMX<%rk2SyXWq#Eg_1QiiF1>9kiSmb~NL^mUM?#R?%BQI#khHi!)}>W0_Q!
zadnePJ~#@Z9wS3qE^24*qkLsoUO^_~_?p!^`Ji6>sg%bZQ$6-lAbaBOy4~=%w?HotliE&N2<-^`M?!-3esZ`K7mbtn{jI;INzTSfjVx}hdLTGHm$Qo>4Q5eF7zDg{-}7N*Y&o-hqV;4ew%PvtTkjfSuN_c
zeqyVW4wndPc@y?eO`rkP_(5wz8`uP*
zKx;x9fE+&msrest&G!rg1^@mM>TvyFUa;qBy{I3J7gMml5{_0>w<=X(s$(LaVvDjy
z86fi~TMASt9P2jcowcnWeO57R3=?>`(=g>cH++<{dv9Ky^kXh>Dccp%yk`Q6fx^)p
zp7VW~PL4P>kxEWvAiwUny6`Gy?8A@6O;pu8EfTZ|+^EvwJ1BTAee|qQoU+URO4bnR
zqy8!%d`4PyGB6mDo_eYce&I!BZ`lBs#^p&*32DyjVOgPfRWz=)Un%Nt>SE
z{+EktWa|4`1M8%eV#*Q0)&6YPYP7k1EU2Jk{(~c#G&y*}d;V1~_{KNUAW8@jVv^UI
zr7
z;g$ETMqQip_MNMw`}X_?q}|IYIJCJSe$R0!@Jn{7-~=&$ZQ)c6kjPZFPrds)TcV$U
zvABc<<9V!6e3Nvm~kyEVC5BD!MXMIw)(asioAWu}+%o(UlI<$s$BWB0*Re_`{Z2Tn*0&Ygw~
zPUuJNS&2Da@p|(q%ydKkubn2s1Y+gM;Z5pP=OjPFKhy9>K)OO38owN1jR#}_O4}6(
zF?k7CIPGk(NtwJclj&>IhOZ0d;RV-J*?NvVi
zqGYxmUa}v2?Nze^fE%sO?G+v2GsGfniNF*9SA1Aov{WJFU{W<=56}yNmSn)B%KY;o@Lh2Tj66Pvkq&s2YPOU%uMb6tq{DK5dGN$xokZ3g{cR
zLb3_H$Kn=Ec<_Hg$X)Q#rkB&a(55dHa2nrgg++s2offIX@7BD<4|K0luxM`BfS&06
z9tXuDAj{s*V3uR3ocuze9xJI+cAH%!{@cy(ZM>*>Odclc8#(^h5bt~0oMb`0xJgxt
zdUdW}&e}niY>0)}Z_0Gq^f8C-nYtUHI72k9Mjq7}^e2?A_e+dgD$}mgnt%_DRWg2#
zs5!YYP5`M_UC}x@W&o7FqJuEISg{{xk0Y;wd#=eP-KEbwL0H<|O=Nma1WPT&-L#D1
z=a4op)G+=$N}^m_dM)V+uPi(ZGXvZB4?PszY2%}0MH%{&jsmhI0K9IP0=NrgSzXRz
zhfHsT72V;V5HrE<)MFN2*+0=Au(>0Ds-{j{@vlc(+QPs_nA2DVXri
z{c?!;RyJng1T-o8xk=gs)ZO8ZJW*Zi74*-%VqyOcbMYGnNF~cbSH}Pr#DIH=_yYFT
z3+UgAfs``(3k)($;IGA4L9H{
z7Dlb(`mRil35jVq8Rrw~ZC$H^?QLv!nxr=G>aL@rlL%7|hL<>aAbp%oP3Oyn4v(7m
z5`!{PqgSR!8N@b58OzJJAQdj(%8vymMG`xA^=|UfO||34AfM(kB0&v->AIN$r$;T`
zcZ1rC=GV<#I%?6R6{MDn`^s&;m01ZURkp0&ItKLRlBn}BjkYeOtKAw3!*!5m{LZSH
z;>*u$zjN3A9=wJNDJU
z$$EVZ2g|0qPqa4j_2_K2wo4#mtAA50m(SK%lZ;wMo9vTcU~6TbR<*~DMDC!K~*N}frzt(6jk
z`QMM8%SYYLEe7>h;#rn3!*dw!!g{{zQclvf2*Dv&sF@xsc(hhZZH(qGJSZ?lQA(e6
z(cJsOOko;=+K9odvzUz?p=qv5-V>yCp4vyWS^-3ZB{4*c@?C8h?1m^~*=(>JCLo6^#|2~;X)_j8HXEqqxcUNCc4ife>|6ss^hb&g
zhpDmPeQi(g-^@!hZf4+8uQ#Ac{b{wEwtzMX=b|1{zjW?nvjgXvdX$e!bd$*yQ{_8e
zR;y~<2Xe@8jWdBYx3`Z0Hz$}FU=&NkNC?p{uvrQ%R$@ies8A*d9+njBNY~C*;`vZB
z1r9sYI-YN6me#6PgcU_P4~ZtCjyFm1
zHc-4OU8jzFyCiYVynb|&|Aaj)D$O@Zmz)mIiXG*#b1~DU7|=E#&+9)cX>6>|?Lj<$
zoD@%d
zu8r30H+yYv=O=acxjtjkJKD0(_6H8MQbvlqHjsw?oROC5F5tBnMMBkG6lhQO+JmXU
zJ20ZGUic-qm*Wm8pXZm}a|p`Jn-XLlxu;(<#=ZUx^M%hUkAaoxXhS<%A&G(7VQqa~
zX%t&BbftMzV1`RuxE^&3(Tco(^mPY_6eZqO^Mbs@IV@Ie2EjCn5}!4~=1wVg#Os&>
zwsGCyqXc>Xcu10o=AtNlWH_gJrS6K(vB~0)^N*K?oBPP{{woOaLU>jnWI94nVYons
zYm}s*l%;9kZ?Gy)Y9t}-F4W)rCWYOUwtfob09+2{vx>mI)|9U^b5}T8;^&wBl~~waDO6P@^%o4>um_|LXiro11OsLNP0-EOif+^AsvS#yJ;(&hK?}*bl@I
z<`WtjTuY})Gz5m)W}0t5R#l~6k-sThvZwvuAMmX00)vTj
z4b+GnNKj@N|JV@SM_d7AP*&A%s*?4$F}8hSM?{kK&sZ7I0X3L5HS5xta-~rI;tb9c
z4s%fT_NV|g+a@=U2FZnBeDB&loqNyBfM{=z4Qd{bhb%di#ct`QtgaIT!BO_eA8%DP
zFV$$ygU_eVyii-~{EHN8_I+Ry(OiAEbW6cytxO@3Ka&6i0R{%ZLicuskg+7dv|k`#-d~=uNWcq-}Phc
zHVEei@`d0092A7)(PH4EdT{$TrI25GyWOl8(_{*>RGAHRlB{)cmPLs93$I1{Rf%Z4Wg$6rdbD8>|8aeM)+wj`
z76awT`SJhbXQ64+=Vo$Df9YEYSQh0-hg3Mb;Y*3yymXGKp^oHYQCOIai~$|H@Y@qm
z3h8p5Ff7{rN}np(=TGwETU9OMKEIkrV~&+_KZkxi-Ykp#`t{u|Abt5=-YaH<*QH8A
z{Q}pgb3=xPn9hL8OdIeY*Kgmey?g{1|%EW}w2B^W0n(XT($H#IkG-lM!FYGLM
zcrR7~VRiX1>22HkG>-_67qY%ikcNcx+zwdCGM)l;QSnqWHa0cXuEC?_PBEo}nSCpv
z_fEgIXOks^_+l2pPI55pZ2;_R@#g&Eh^!iW-RDM*G!hhL$
zEP=rMzCNZvkNAwaavj53uAX{{P@pqii^6tjCG;0EUkiN45u=VO!#GC1BhWw{(`PwwI(Qd|yX}cBOC2u~EpV-TH=rCTRTX%6!XCFmpoc6k>cYeI%l7rNca02*b5U(cR!>QZMO*3L
zFd^E8XM$K&OsYOMa!5HCv~mbHL$q>eBu?SC<*3}WZGoOmZVr88=^Mc$S{0q2JgKWP
zXC)~}M(EtF!+#>VAJW=C?^3)Kv^0u9&nh(Ic*{854bJN+rcvvgJpZiucGC8rrbBxI2q|uOzcI6B7@4lXq}8%p
z%aeZBhiHXjlDF!XDHt-1YcT%76rz|7DY)`;@elY5)*
zUqrSF(>;wn>-1+16Bz0Hv~Mx&5_pXr87_!s2yKt#tIn`3JI-DQObRps%Tef&GHmdy
zFg#5fJOWL%jdv2T8Q6M9Ok1hlW;V=-R8nWe2NKPFR4sF_IotrpOa>)|k0~%*DU9rR
z^|1SBO=at}d^(eZ?2T0phWI2J#i|X``7y(yh28Cf(&+WVut%a5hJIq)m8l`(VNr|5
zJ0!VtVI(|IrSMzo8k~EO!Mkb(t3>Hf6NiL}WA@!Ly~bxZkrlSZA1-PuJqaV#&waVL
z)%x0xU1!Or)^oGYSo&Kh6FEbg5?s3#Azf;HM&=g&d}@vr!_)_GuuPM`VKNS}sFI_j
zOW(~siM5YEvR8m1s7Qg!#(VB068WNZg#x6OYt9wUl>(mF_AoRvvJLock4;pKjPxm7
z-`F-KxN%vCw`vzXQW!ihR*vT&Hp5z#;KGEPGa)K*o1wV^3vm>
zeFLG+?)df3Jd|m-LIcXHCL_0{hTUtoy^^^Yz~VDSn{bUU3&dP!ww+vhei#8U@aWPS
zr7R9$?sR25E&IlW4RsdeLrk$)omF;~u;(+a$^5!x(3%FiERdHuqGgJqk?R{L?
zbDYttSMe6
z8m+rG612K5IWV-kw!k{o+S|;6uc{pJ0`@3v-VTl*>h6t?+u+-Cu&+K9cLY^$3L@Tq
z@k?&>XMQAa3=^cc3>U!8Z8DaTGox%D-Q3t0&_7=LPz~N`h2VVwlM|MA(a&LGKUc_I
zeT7>}U>bEA3sw^PAe+rTO^8Zp)O}OGFN*LEgQ^eNP28)IDdsr`-fP>?nNWYM@H?V{
zkMaaYCQ`d6SSa({z2CM1xEf6LuE>Rh!rvw|W4q7EktdDil7WgQQANL-XRi{iB>7Gn+d}DOF)x~j+
zTrR2aDl+Ygd^8ZLm&8B2c9y@*c#TzoYshkKDchiztNXdCFA0g(sDR7p=|_!5IyJif
zJDm3tiHlOpY|#pZX~~a@^|hKtiNYbS+<5v2T*|$JAyG_wK1MEV#(hGuVE1ywMNvd?
z)X(BU_@_@j_)cGFm+YHU`<{zu_$up2In+r!%&FPb$<<{J(J!&h1QJT%(Dy?qb~xU2
z^w+(Ib-4VAy@cJWQI1-KpU5ogN)^Nw_X01nO|-SB?-Rana>hwl;G&;lp|(^?{Z;yV
z430Gi>cZ$3lAt5FJLizki4UM#j0%f!dA
z`T?UaRJiWsKBdzqn)6vxu$G90?rDCVYgze`{2Y`8@>0tz;Mw=M^)g>E8}_rXGw3lE
z5iurfAK!wC*ct1Is)IO^_=LCiDvf0yf6?3=bF#O1X?23zq>WCHJf1~kdwMX-q-7KK
zjNQ_)jYC-h(shce5?JdPC%;{Og}=%Uo6RVD=D-?nls|v&gLH>QQ&n$qBe@(SM5E*=U
zVECt~VP6#k9|a_|qlyzJXVF1a!LY<5e(ytnqef|}jCb;iC$%x$gnw~I%WZguab?rK
zH;SV3ErNGVtVq_NjGi{y?U33>l>ZZQkkKA
z=5-WTW-BbPcil++aYCU%OYcUIh=w?N^r>@Mgj6x>TC{qKZ5H`s7tR9>M*aIp_kb)p
zZE@!8Bd5v^(|z3I)0R!8q&P8?FGL5%Gt`m4Op?r2sHD2>gSrs|E5j*>zwP}u2OonR
zN+^wIVA;{BD=i&a*rMgb`$#pqUQ-RG9J{lUB_lJWt@IHt3y=vGUCTBo62Vc!Ksmj5
zq~&n^aed_2DMz5jLUMHeNP||N8|xmDv#-@qBiUjSbznG?7yHX1WnU>M=|#X7KHvfF
z@hl+7BC=P7OF|0i;OmwNq$_<(yt#L$VS6}zya>ctY^A3BOFMUJWM;x|PEZAB8Z3Yq
zYmjiRr%06S=Op7y-fJ3!S00{ENf|sqjK#HHj7)=%>gMU21h1te#oIS|S-G@Ouu=!U
zVzN>i@@^QtEEO5?7hWgvD>9z|VytM+|NkuhFQ1D;))?N43o7mqZab2#L|51H!Zb2OYU_%Nh9_UwU1f~8dR(%E<1C=!I;
zH?)Zu2PxeN9BdfFP68K47Mg=bzKlya#!F(hY)YavkbU~dyDwpyMnKkCqfk2$&*Jup
zw=5X}BGPd_D~k2woZ$*CP&zECkT;RwN5OMsu;IPYQrBI=GMJgnuC9e31Vj#=v25A;
zh!4R@iB3mc`T99~sh)(LXn4udPjvj9FuF0inl+ur9mQx$!AjM{ZsA7l>Gk|ahRDNfK|
zub82OL-79645Q2*9%SV|R#<&X=!)4Qi~RU;j&-Oa!*%5&dWLfE)jNuJvv0a|mM_oS
zLq*!;b&}ZpEyrv+FJ2>#)EBVV7_PoQDw3wp8(L@*(1huu#ad2*Y#)_fdlE_5R@TF2
zJSFkS!Us#~P$S+3;RTj8k&1FOy;a_1#yHxb;0YS_1BXpC!wu?z+v#Fy%5?YNcyDZ4
z%dvjV=YB@}#@E2COx38V-Mq`j@iHX|!bZ3>9^?`ohb#FTW@m!siEXF>JW;^<-qC^9
z42}Vzu<3m8jdj05Yv?XoL~T?LTfDJPV;ZaV=(YC9#_B5U__A?9m3s^stwru#CxYVd2x<9Q`UEZ7Ru<4aZfGEt9
z_BlD8H^m||b_Y>_d(A8mT&;;6s{^!w=`uS;S}E0BB?yL_FpXU_(|eWmj#|ivht&3q
z(*^d-=Igi0SKsw1xt5c~IW=(MayS5Jtl?i8lei+0JM!YC}w4
z#}@
z>ji6stA~c?w&e?(Qm+V(v@k<~UaMJFO7JBITkuz{RI9xo5g;lZhB)U9y~$q$KmA%4
zoFBm*IX~Gsmaze^(44oT?P(jjOJMLm%3W~P=I_mas=4|b#<68&9YKcW9WF
z&_rsQ1QnVf(PjrAoNt~BBhFx$9$WtnMz!Xq#$Ng}LZrZ`z0@Kuptc2`PyC{$0U#IT
z198pOE%%I?J3$M}W+PbI*8~tATyC?Zi#L4YRNZid%jEbC9Wz4_Q6fvJX=T+yuTVK413yGCv$aXDzvT64)P
zzLsb(UTqst(>V^Zh$mQthtp-4y}&FI5JbwNSlUyfku#a735j_9v0S)8UZKmaN&Y-k
zzHpp(GIt&oh8BqsJ&-YE{EfJQZU4>5UT?i6mCaYRy!!P!C
zb4&Sd67dv}7|Ppy&E8mRbCF~swl&2Z%V!yu_{Oad^M$<6oafj}I}HiZ;D%^VaA9S7
zrJdn0?I~zYGv~-NHB5NAOTU*y0RqiP*Rb0o;=mX38m%CIG
zkh+heDPZ5%ntTLlCXbK@8ck&&bEe-a(6ObJFjBy9F4tPTCQ)iN*B}F#6es0AuhZmO
zOgn`vzqaenOZ>^BR%tZ0ZyAg3TgtmXF@9to6|_CPS7fxgD1EeN&S+QFRAXD8EVQ7P
z1gr;C5hZE56ajd#=p;hb?>$3lxQ-3SGYQ1;mOl3`bL>KjvZ@5EKE1q4W=;Hc3qddo!TAA=!_-_wQU>$0qO1rLAtxUyK_s|
zMsgzvh=O!UH%NnYH%LedD6vUFT2ewf{1(PJKF^8wyyHFZ`Tf2zK6LQMg1wk~?z!fD
z-`9Oz*ZeVFC@I*9<~~%_wEXu@gWi;R%&t-ANTzZ`3+vc77$EsAnKilV?!fD9dc|l5
z+m`cwf)meM=~a28^{B&QAn${oxBGcBjT4+NPm(0^-5=F^o1TmnyhN-uBx58(0)BC<
zna@b1!rM+u!Da~mn(-cIyMa62`@B(K^5ue;OtUO#QdD}i&B&jj;FGp9?XkPwGTB9z
zjKIxIh=(($I*?PvD{O0dPy8Drpgn;OUnF;!zAjep!e+NPZ}8mw{e}grFfom8H)ZSO0nyz-fg$RH^Sn@8!ivENy6V+0c{}H
zcF-q)2XTy{FqHWXMlR{~+TD4E%1e91#!#^Z8YiCrW-*AvZA91pWqJL#5_Y~K=}Z8?
z>t(Ut*$}nJO*)sooStdY434v35QWf;xN9+j%ehv#O5&G4o)
zT|~w1R-uyA7w0?R4sDQmSY0Kwbx@UAGOZW1eA(q$jD7=PH;eg?4*;aG2b8WG*XviR
z=S#6(e&9#^VdBc6R%HDTs~;Fjd7PpV+RIa^P3;jIa|+ip2aB;RkuP;CmlLe?4{@HH
zy|&@1!f5j0soGS_Je@tb-Xg%Myw~QV!<8}}Jl{?{{k3q^d)M>k7$tNXexaQ)<=u|d
z9taKmL~En%q}A_9V9yS$69`Xv-Gl0sEhr0VZH)ms+dxqc`a&>aK}vTgt=iYX?SwNO
zx~9RbX2my1xCJSu4#uwR7n1EP+s}pXcu*Px%j;?d$54<7ezf5AlC|FG9N7xJ!DRWe
zM0AqVv&K#_AG+HJ^5v5oj^i8K*!GaI4?olM$VzMh7z->u3vB&N>jyU)COv+Mw=ktc
z6GiB4+_!zj
zuu+kk4cyYYBkb`E-DYdSJRP
zU#H2B#}m}+lTE2-JDL96QEf)E@5NnN?NI5e1T!XbG323O>nzLwSzjgX*kz6S=d+#I
z>r>;3#@b{4^^=Ed*G%{^u<*`7I_@>r(7esiB$=Vf1~dn}L!S|=LHG|sPJ^C4A{c2v
z<5mx_MLGNiV|*K4o~Rn1UI@2YzAQ8l60?$DdNSq_c?#{e*{Sep;2}xamYd=GsL5|y
zo002#Tsd>ew8%0nyY}S6iOQ*#75=+Ne!ziFN%yZanx3d7wSk=Np5#J22=>d&)rL&o
z`6aeH5v<~JK1|dVgn2DyIBO0I0*(OWu)_UF0%X@p89wP@DLDowvE<^&arc5c)k5u(
zSZ%9k3<$h?#1!mL+
zkJIOh_4^YY`*<&AHjHmbww1f2fqbh$^9Lv7tL_T>(iQKYH-ZYGA@u$ph|a$hjb8ag
zCYtucHuI#3R6ND|xlJRt<-gba5mX8wx+v%`40B`o!&s?~AaXc86Gc?DO{|t1E!#ZL5K*OZv*q25LgzW)0fCh`Sp)t;>reR{m?@1
z-3tlY<_q`BJNKSEWm>yI2YS}(U%z*8o>Xt_SP7I3=1zmG$|^SWT~Ox`y!?|cnaD`p
z>Y1$7nJZdByQN0T*AiqOQpI=u0_mu#Dp=jOWmii4s>96lQx4DxbBwvIE0af3O*Z0~
z%x*#s3*LV1-CC|UXM(t{*SAMt_j6L$tvH@XHuz>H>2`A{*-^6$lxb>Q7~Di2mGuuR8sE3yh=vlrL-iPAHEI(KpEC19-m|!>JMskjdAHr2y}NdJ9YxTT
zsexfT=9NLkae^?4114plHH2emk#|;9#__=fE9`z)TaGmDMX7DBfJo+HoE
z4vHju3%C}@
zb=YkuWQA%*YQS1~psKFLNJ)Gij?DeT;sDtkj*pp;G;;uAj>5mP$E+%jI1NrvCg#D4
z+Bqud8A;(l%ZAx>TB@R=;=uf9ec<#pi%m7>_%+*-VOQ{l!}`Hf36rj;c=O16W!JK`
zBkigV3N|1HCS}tHem&V>%hO90yQsM3oZ7w{4&?LMtTV`>qz|-VDLP}jDp(8$#24`m
z#>A(efzg=eDzMQQzQcB5JFRD>wRcWj$1(&75Av~PB
zcNV2u_nd2&gD_EAJnv)1C~_)2S^%?o=c)l0j8Un+4})2#tE~SUZH+u3z1Wj&BZwSl
zZ@uHP0_~cfUH;Z{%*YD_?OQ9u=#}
zIKI%_$y8q4)TGm~3~#ldMEt}L?PM=-{jiH!@&zcT54Ju3Do7AumI|Yiz)_du|Shwx@qT^MQknl08A37TKjc#p<
z{)LdSMa^Y8ueOXqMm33i+tR@4I{m2FyuUqAd%6!F+5gREZs26yQScMjad
zwzE4l=F_%ynQ(aQ`%Lp2%*K+DvJ|Ow$NIb|-mlHj_n{FxmIUkM^Ob^l=V{dl>X(L6
z0uDC`&wA#Nr_=eZZ1drJ0N4D({7$-FA`?h|y%H2wecHX(%yQOh%G#Y~G}7E8KT6rF
z=W8A#GbErQ?P1xZk#p9QJ#8$IpX48Au4y8SjQN4@XGQ1a?
zQ2DMbRbJBmWb2-f<%08k+SSsHHc^^H^#dLt#%SyoGXK7ss&@Max#$+uGkJ)dzBw-%
z4b+=Lq%R-wuIQUrxQCHtwhU}&yy@X$!_rULuis=8Nj7uwp0GA@J0c#S{Ouo)!)y!nP#JJwM~P5_h&
zmOe;ny;D~fn#sZU4Tjv&f%k*!!c+%w|50y+w-qy+#QjYE`D^@#Xi~V<5A4L=ahH{1
zphkUM@Pa`*$fg~sLa|pEdy!+wkujR4IE-4%cqHW~%Vd!z>SXuy3E*QN%D@qyxXl*)
zD=cj<>uNWnSy1Xu<%s&-u!_}5`Xf-CHU#}wWGd;OWU4|r+V89>=hYuPDA}JpC{%$T
zcL}EaL9!D4caW^){y?(op_k*8n51_bslx41)UM3r5~B>Y8$jz9llf~P$}caE#FV
z^PGES1u~<{^|gb5Z2TbU-zv8FlceFlR#m98gpJ@7A#4N3OZXK7ar^rEXFWczlEf!J
z1YL6!+x=2yLVX0t;@uS$AIhx8K|v&7yg`3
zH=aG&!B&a$Jl8}3uXpW^B#>*%ISvk+JJ6Y>Jv9{#io7oy^SH=S2HzYPovxYR*?K7J
z!J2_v`6Ink0=n*$uk&f>)+tA@C9RQm_d~mTmzRQzi9;l!W`~CSCdPc1Z*Fo4m)KE1
z#_iE+Az{rac=>6(R}hYOc+rS!W(dQex@dMe`{-
z3l7ui&WU{eHsRT>(bKv>_b}CHAtOuYcbsepqs{H=J+!uI4`S)8j7*~Sq3)jJcf-=n
zVwu~ljiD@0-kM{0(@~52#IM2aVKDkZ*Gt1S=y_;GJg(IVX0QqWY_;Tp9GE{j(P(?H@<@(7OfTBj9E<4Q6~Ep<
zTsMFBuBB4B(nKbd*HRKBtcS7R_AonuQ7Pm?+W0{OBNkegJYhxvPpz1v#lC)$=HQ%2
z4of*R`c@2Hjg9MN$r_mRl;Ht{v<6MCnB?BGsM)upKR=u7O#!#X&xfbj9La>cdBzR8
z_b08Kp(nC=<5oZh0oBDGU%T?3>v$Dl6&}HYE;zfRGmT5eMr%0-PpH{pW?=vQ?d`P
z58?1%pK5WU=A-KxE%c3!3wXVFmHGP2&;M8Dtn%TpYuQ5}uM_{C)%$4~+JNYJ3TQC1
zhVDaL;;vM-OQM{@;6OsUM^P>PB=3lK%;x%2&tLP!CqUmcbcx%75c%Gi)^(ffjR;N&
zo@bX|e&qoYc0)Cyn<_)Wtmu57w!ZG4uxjFp^;-yBASyE_=QN2z{+=iF!BA8hVPocj
zl@3Mas{jJw_eDdbu7>?gSfL851ELiODNYWc3^M>pDfDzcB%%%s8Ehz(hzNL*zRP(a
zx3Vwl?@^7Uw2Mk1UB~@Fjh1M~QoAlS)w3`TeKdEq!7$&kHpWrQhEgqGCDFj_g*eSf
z;EEix_J=02hdyL9SncWBX0y{3@+$)$*-WH;=vgX|Mu&+paq?sA
zlc{S^08ceoS0RuZ%HdN!cv`5hZzQEbDqMtRF=Lg&btN~azJ%{&hZfc^N5L4FpGXrH
zT3%MO^%O7BBnB8rlXC8O*!22n+AJuuqw{wP-m$M>IJAoDCiRx8*AiGpGql>tfCi$yQQrS*D65m
z`elnF3I}F*Ms(T3lLeXOB*5$A57_q~Lka&~)EqMsyD$E;9B>%nAGl%1zJur9(ZPk<
zh)af@L^mFU}pZx^Msi{t+8~a;uM}
z|Cm*uQec>b$<;X_3Q7*WoHp_D!$JoG>7!l(fDU&2+@ya99JW)e!7-8R3Gdf+3E+Jt
z{+#mN#!vV-%LP&G=V=0!EpGYU_}0n$(kxCwkIEy{<}61YoWCmgYhF{`9jpa&U!v6&
z)2CF+5Wefp!oaTCfqtRCE8M!Bdrze9aII?5VSHx<9QpEmOj51ZSswrE-FIAMT@gfW
zMaDh8@z}=FE&}uAZ*V@huxqq{BocK810sdr!|@wMv}(mT&G-y<%w9qkOGJ96r5<2sA+RXGfVapIaqLcAYfUJ#;B0!ZvOB22<-FBq{+=
zNmZX>z7`il?K>^yrB>F?u4>FCHk-Ui6P^wCLOTu}Uiezl20&BS-i0@g|;Jj0QlP;X_(fUk%2?I%)ewqrc
zf%DXfqlJb7KSmmCU^sFB2KmRV@`IhVnd3X}@%|IP#LdbrJQSkTI(ROZfs#~Q$4{JBoc-_p!B1Z1#61{JqjOL9uR9u6f@uBo2s
z^MWtlVXVng5oW4Mrcn)VToc2jpIzC1^@-fl7t)`Ln
zogOJQpxq54FSB8`aE|Qo8DOH(xaQyE^kvR9YJdYcj9*+QkbB;lDVLepThrL3(yG~+
zQ_|?(NwWB~WJ37X(}y+{tEWjTK`?h`IvlZn>+?Qov&Trm)wbn}Dtay
zT^g&8u1=f5ypLj%N(KQmd~wT8^uW(gF6jNZLGd%6{PCbbQ#|OYJwO4_e~YRm*bztauwF;&N|u(E
zj+&%&f#p^(rFYv?68t@LFKxOcQUz%3Cj>JN4(F58&jeDN1uNIlNMo7io@&X_hCvrC
z4B*3zx_uoeW0cOE$}Bk_0Pt~i$9!Y^yP
z3(-y3m*uO3x$YZ;7JZ8ipvVWF1&9YbAjU7>f?Mrv3F#2=nZ$@sIFh;THUZc7@XBGX
z?&BTdUoE#=(XW6w6WeVR?FO?xp{Bbg*?*Q&%^fp8*-hx3&Yc_EH
zP|s=hQr$jYpM|lj<6;i%MQYdL`)`+;$yyi>i-#4sLo44kg;nj0FS8$@ngkvOqquCS
zn-78k!$~HxNoM;N^D4x<=n)E)hEn_*Jk6bax}^l~pyhYZQzzdXaf7GoFNqtS<%BK-
z$=_CF(Rpvqv{|ucH<>=OMpoTUg{g$!ga2@M0;{~>IqNI3-s8s)b9Z@gEIA!X*t93O
z0tac;p~52A2;cyQ7T3Icbd!+nqp4d^4cJS5Xv~g{nJjsEA8BW=&Nf76HAd8R%g!Vu
zd4BziQsdySeO(@c+)2ET6-y?wPYrJ|?NY3)&v-|k9hBwEVng5IQI^NBEiq@Q06z#C
zlW=GuC405rqIvUVOd&XK$}a@?j10}IXa*I}7np9We2%crOO(Nj#OFJ;EKz=d+R4pt
z2oErExQPLYAdXOhgh1yIw~(;KA%n{DQedZBF=A1q3$>s;N!pwmNVbC`E1(21#Y_@s
zECP)vrZ@MLB$I>QIgOTqXgcv3k)EnjF4z$Wt32ckD6?1)NHk;lsI0LngZOd{MB7tS
zag#z@LK+8j6rQ}gJ~k}<~Z2nnM{6<<5#-_oXTJf%qHG>21_Y-GiQ6rp>!)gQ};lc
z8P+yc!)p`z1^O>rKRM?*F%9fhMZ8*^G8C5`zdFbDA`C|hm!@KElFJ@<_$tB*+=MVM
zle&$_*w!m}fE8>rOm2LKHhR=Ml%`DBU24)+W#$Ja%z{kB5{n*^Fq0~@6
z71>@M_l4l}F9;(Y3C7NFTonN%f`1r$xr9Z|IH>{uAthe{l`y`;XT!
z`*-?q$0V^i?6bKCSjc4D*ec3-XlsS7-M~6eRAv2uDrguZrH)Q
zL{75zW~un#$PPD~6FBHG>La_$)fFj(Cf?V2>XY@KH&6T64}d?}r9sT=M}r3hSUiE#
zGhd`!uuq$=^K2^=9NNp-X)h@rThzZgpGfoGscmcBByyV$4@jPRq;U;7iVz0^BuMzJ
z-@7u7xEr1VUbQ#6$?Jgi4$}qzSLuzsJnu94N)G)taRQ-#KShucExo(d!)tD*!6#)>q%sp{HIc*FaIeO5pFj|
z2z!#x+jQWV-0$1%&opV-^#d+rl3ml@|GMwa-!%%V{Xo5IQ+J}fC~x3Of>Oce`&()J
zWHuaHRJdf=la*NK&vgyk?nJTnqZN%|aot-hORnl5MR`+WsKO7d8z4eU-Q2f}0GK=H
zJ9S4JSN`pQRn5c$zq*R6W`GS9+tM!v2f769mG@E{@XX7cZ?A`cgW+rkz@~Yob(NN0
zrghD!cLx-S?REeKD9Pj<(DS;@wQ_}VS~U-v)5|tgFrP+;e41zA;&mm^-B5wojAIO6
zv$Pst=E;k6A&6O>x!XTA+`pO6N-BS-IQ$Z6*&6dI!#gh82~X*mIcyM%nl-1};2;dQEO1#g$)4<7(UCOy!_$@T0L<^?dK?
z+*Fx2XKUJXU7t&oIzmEaTad)b=9
zQA27Ec8{^h3uT9@#+1YXz7au7`6{9`Nc+o~atXbZRsxY`58v{#*gPkeXRncYiS8k$
z>q(9{P3a+DwEE`&?)NIoaO)eCJ(Fv9!#pnBe1x#i43
zL-^S-mvPD?9#TZ)H}e=4M7l?%VmisM31=*l=*iu2DD@Lyw7j#Viw?NAWQ$scEnc0p
z;48_DxqBaw>i~x*jhQW4CC#FsTqgv@FXeTYlVe9FI|**RdVJx928M!
z3R{nn9H(3-b>(!5;_F&&h2jE!w@=Q+2LfLrG9}8Xpp~G@5?~JyS10LTG|vXnSkP7p
z8;M!7Sv=(ln=N3KuflJTa}-Xkgv(W;)#x3{Vwo__4r1mWGnDZ&PlAC{u1Nmet=_aKm6RUEM^A8S{
z9RU`O0s>7*Yy_rcmw8*g`K(vmPx^0quM?X#3Cd5>Zb2N=TDX+@axY#5mo*#*CApWA
zJ)yNyzu>2sR{+fy;NhzGOZ`S5%>S5!`2_H`(fQ-TP;d
z1n9}_eV`jtMNwZ10nhm6pO*ck()=Sfh4plye1}C~2k{GLdkc}JH7$flX^R%&ZQi$l
z)RdIvY=X){i|7jmV=}ir4cW|wK|RA5+w_uCZ#D{X@~Eemc4w{z;ohj=a1|gm?L&FW
z^S{Ca`hSD}ZRT^#izvUrJn8%V-ii<2nE3mm`$gt%1oTQa!#lg9YKGbj95cKIWLmG=
zAyZ-2Mj$~pUH^>S&uAZl2-*WLlGc0;WWEf9wFqVmE!aEOAs$q#;m7e`VCC_
zRUhNRp>c;vv}?Cr6-nxhNv0|B*C*6PowGU0fp{B57XU!mHG
zf>C`qeQmPo+H-AXwmd`i$%Kp^IPllI{+ciQ2LD=U>
zJ0G>MKCCLx^cOfRi12G(O23!6ZrKum?G(y(vf;DtjZmj01j|IJ2Na=ECI=;cG;gUe
zx(g2Lu@QDusY!U}Dr*sEzZN}XufH)(7_ZNXlRWXrTc47Y
zi<2>a)s^ijOF=8UBEZKJoJp3sAhLBjr0*`P5&fuKTj=?s0Xs;DS6+6MXEt|EUn$Z&hE)>s2Clq}A^yB3QZ9
z8`!u@+88p2J{^FqZ|vN5wI%$N0Qsn-+&pCx86)zc0`@Woe_*p5(*w8l$J%Zo=|i+Z
z_q!wY8<&7Zl11hWIE-je$lhUS1^hienc=5;g~*GJJ^7-p-1w=@v$Nw;KRnxG^r19
z{BqfIPtM|Zi(<$)aaU43>?7+-cY(M4PJ<^Pjt;kFrHC4W-(X+zP#m9)8n
z&FwH)&entQQ+A%KTVH-Hsr{qC%IVsB!Ll(?wr^HWrf$Oh>A(sRlDN*KO0K22A0&c$
zY1zT3{AG*pxOooU&j>3A&%ke%E|J`v>H@*OFMEtRjE>QwwxKw9)ut(daSqjyHXK8toRUJSGe$0w?WEa@YIMyf9FCo8$svdxH^hE6$h
zF4xb*(vs=IACwy7B*MzRi+KgrvJWMxEwR{A%BqTAZ(xiz^G&Sp$SQ`0k_e--dNDJj&-ti#gj
z=L~0K{JRlS7OTHpd!{;L@gD`q{MM2(WQxu5t-hM03INGCyCW(8M@O`RZsC%J%}G!>BO-w1+&l3UXW7+J5e@q~
zcd&|3VSfO%1Sv%%|84t6?jo1ChaQA9Btk=(Ck-t8V{+kL5yEbg=U5`ILDN-`J(-;7mk{5+2#pwmuF;OO><(qlJkUqIz9fvK+oKvxmRMvS9PP5tttmIl>*26)
zf%Dmmq&k43lsH0^oSBzOxoK9@m~x%vrY?X6UXYbjIYxB6%<(*=VMhNnq){eRDu4zn
zeY<6FG9qN<;0&VRp;16CT9CFkqhf9-Oc;j|obk|(Sc#x5$bZq%r|6QT0R0Wg$pA@-
z75P1VM^uA|`fd1ko{x$-YUGk0hE(-H`VAhbFb{~z_o|j#be7xkVkA(KCb!jE-@&?vMh`|o#mC%jx;)Eq079-97_D&C#+e
z*4e1r4+hT{OAXXHQHZ(xPK%3#l-F`(ZI*-_X4?1Y)$}amTzoAr=lup_(fi;r_EYNS
zX{PI9%JOy+%&ZUj`UCNYR@BWkvVN~?rzSvbF8jyRdEUDFZu!hj=q7qeO-?TUU7eF&
z^jgVfZ-$^#`=#y~)HsJx47}dT!PIP&Y{2%F!W~jkGmuGDxTIeyOQ(}XLTiFA;*VKG
zIGuI1rZ{~b>zGc56nlRVhDK|{1RHYRp+Wm;yDOEB7H%-(BqHjqN*{`@1(T2?Zv*e5
zgH8>fZ~fUgZhXi9y-obn%S|mI1*g2Z(O2efcGVnfrK}_RLtQ~!wMyaSG`rdO^CXf7
zAT}=Varx?^BwJeLA(xrDNJGs)z{eSecv}0A%}zZg|4bKO*|*u~{zBJeh(oi9>qev-
zZhKOld1cko{@gvvL6>BGLy^b&>sJnN2y`-ur1*rZ4^m_RuH<30WNG&-7sEAAeq_GCG>y6ro8y_`EHnX%pDOVsTKtBw0osc5l%Cabk1%xh&9O}X6PtIQ-l}$D`ct@(VT}Y4MD+n=qUKX;EPr7fpL30?J
z5HzgTzK{2(W#t}?Z`35BUF(0L)%-WKHUFhft6GpY3#;-QXYNvUs;Sq)KF7*qVjuD3Rbd7>+iGi~Tp4Q8N3N3P9}G{*?Ck{X>UYDPg~N35$0&
z@*!5Thfa#6&t5lNjt~^ifvoZm&wu4%4UK77#KG|>)b-2rOgJxkLhk6p11FUab;w>Z
zQpCGBOOT^jj?x*eU$RsXM{<1Vsv3eDfqy(qZe%-u3dL8JR)5gbN&B3p-IB4Pl!3T5
zm5h4201Q-s!!Q%%zoNaS1W{Bs|e*?xnQs%wC1<
z72SYOo~3}R>a>>*hW37&`GGeiLb%CdcD^ilMt``~WzhVckRXoZ2~ThW3^N|0VO3K+
zuK#_PcX3Z*5eGj4QmV*!j2c6?+R+r9$F3dMzMPyWjRY_g5&8J+`0w6isF)oYaeGEI
zsEdo3%2t*SisaPrv=35Aa#dTamcWR1OI~i{apesMcU6LH=#1QWFLWX}ls9Q9!8(RR
zEgTjjQS>$3wsf-lbuv`%n}beSe#<=bf6F|#BIM1K
zp4CCP`mV|yiX+nfIEJNFA_6C_iD(wjv<%Toh4DJZ;;UB$Af~2kZM`UH`0fbKUl^l$
zO&kc@c$%#rSo!Emw7kUo22-HMk>F}Mdw0+QS9#3hphlK`S-HtITX0&}N0+K9qH0Hr
zGZ3lOcFC%y5382b4b(6g;p9`8z(u;0+Q*q@IQRP61AM7e12QrMx|oiSuNiIRVkD+)
z(n`)Wdm9E@kH0EVy^J{LZg{bf*DV*uK^yh%qqx(Pt^wvt1NF40Gf
z3TZ|u6u5P=m!@iF8dPE~eYr2kiH&?KgEzH3A
zr(Wu-jGFYeOKEK(=u_7Ws|to#jNmmLvV6b5Z@)^pUB^>&=OcGHD%G)SRKgAD{jY&F~c8N39Tj`dZ%hG3vCcg`i{)}
zXpxyLV-p_PrP!HC*iPsp+xGOzJ55LmiS;f2=Ck%kjuL}azw1_O+X&gJ*@su#A!jv5
zq9B7tFJ7fWP+}dX?g(c%-;clWs|=s~J80PNdGql~QnYHm
zqEjqcDjVH}mCyfHS6Ihprj53GV?X;qcvPt`PH4(O2zU7S!sW%b>rh%d{+5Iafnc@$yHSCOeKeTF6YJ^cOFIe
zM;uyexTpO$2!BgV>!h9Gi%wv>oI*K|B*Ie^jIAJX(p^)VbYTV#`qJI*WQsH3)jjQNW-0Ck|^}YE!)4DfAJ`tT`k3ba%X68g6D1T1w
zn_p8Kyh(0dg_>7%a3U!LW-_YkiWGq_;7pHm**-G
z914^d@S0s++mBI_QDmC~tJpOgsys&vVP@K~V{l2_yq;UVqlGP<*oc
zeW&@Wdi|LBWsw)IF~f>Rsf33&OG(oO4>`Gvtb$X*7_Z5K_cm5dq~-yvYq)8|CC@wh
z8Ka$H`vl4W+ZbL=Uhv!2kg?}=72We#v|Vmb-=B(Dp{+CN<9uQYiA9jEN79pHzT}Cw=sJY{8>=)%Ob{NJAzDFVFd2{m?DnvW3CV?D*mS
ze`$mcrX_MgZh(-qm;N4B{=!fAoI${0&|(mcu7lcQx5_>*OY0qoH}=Hz!9ag|;#zYJ
z5#2zRLp8=E+DNMH0nXBp{Sb~m$0^H)8lY_mu=3zS;V@nXZR3-b0bHXS!>tmzt5Vz5
zwgY{qV^5wzB???-(_yt!o*o0XiKdQPbvIzI*vE
zq}b{QQY_EjXj1Fks9@JcQC*OK8seL=_a`{hSCgY9JL%i
z4VPh#_vSgZpfR`&hNjh|G>k=zt@32h3)E$QkCO)Jq=eoyG7K$UP?A>2TtY2{X_qg9yU&v;AISMeepE0B5~tQtrLejjW&KGoZpJR00~7F*1g#w3R&c(#vrFipV#G%AzP&`8Edd#
zt{f2IW0KAl!H;|-7+zcP)t%Wg5d}KZh2v0}op4zr9+ymmGR&=JE=|(~p;NVtrte(e
za?bLE?F~JJ+B2J@`AE;MeS^8rrqJW=9*64B`F^84_4&z!;=(xN92eSg_+!AaoD$t~
z4=>2a0ayP6R%AsPX#6+1>tyV0HU3jnwq2XXm&Eo#2V
zne>y(PEMo(1_24%#Zi9S>XUhu3Rig+guJr
zUXx6-%&DQ?bm6r7;}t`O5ll8jGHF?5W1ML9#!WY)rd*7OGxb&-a7wsSGr<^Uy$g9^
zX0SqbY$87w$xqL`Det{HlsSu=FK-Y2hCLruD?jUE2)%n|XQDtCeoo$;yoq=e0r)B?
zTy5J=Vc=%wLJEuS`T?nZgYi#e1=#Sn{u6Us
z1K-2T4+1MdhW~@bpTOiK}|WJzbfQXZ@(k`da(E0&3UZm
zEmbgXc8_CgK2`BqsiCHk!T9|>C;$B
z@w;7kf{ax$2yh$Ce8!ehWI?InQ-iX~!imWNq!*TzMuwIA_ncMzg>|7`Gl8jn>@;6X
zK?8@j+e|7H=N|z1#ngv~Sv%k^52vF@mP_r62v5A$G8=!M>OJ93I4|U@@EqoIjcHGR&BeQJmEs9ApzbT^Nd)$Ww;)L
ztwt};Ca{zi=D4D3w?F@b<#TM~h>&iF1<2(}osRMUn9V-lW83~!e-VDKzr+krrm`9*
zOec#v3jS`S+YCql{Apmu8{#zdKFzi#1r7QQMq{}C*I_LS6-_-?nfk3Vya(2NOyxOw
zo$D+JRJ@-F7nwjBlB926^)m5mdb0|6g{9rAj_0-~vDGVb>c8xY;$m3RlFqLlX#bD-
zV5gvvt^=IGKSY#5w4}CKhyZ9eJ9Fl2?(szOA0A$}&~x!(c}Xz!a9iEPMDn}*husBT
zoKNFGT9Q8b&SyN9s88cEO(m-ic$(qmQv{nggpL8#{?PY`^}|D~0Fm=ScaNK8ecrXw
z@2L2DzplgIAkK@Nzf@D8Wrg2T%|8lb07BA_aQJ6~GJxf__FH!H7d6_I8rv;@`Ujy;
zO#3g2zZ?4BGqBfxk!bPR;HYr!S@B&bKoL_7V;FZZDNZ
zy{$I9G{xge=kiZWdaK^pEx^_WIDt*qD}fxk3fzL6wOr3$6A;?mKdlI=7s4NK*!9#N
zaUMZ_1j3VCL0xS>257?OGc3Lp$SEU4ohn1iMaE|7Neh5$*pAWtin=8&fo^_=CLbM?
z2(H-6scs{(aLc-rRz@3so4b5$Vc9N0uAnD?Az2kTv3)8~c?0!R!Pae(FDaF%&n+XHfAH{a!_0P8<4kw3_0q}j)z>S78w$B`L0#}O6=4gvAb
z?H3I2bq5QEibKK$Q^PDKyNZ(idFO}y19kDGht5CGX}lvw1@j>2^Z&}f&4(Ot-(X~K
zhw}Jnx@9_>H#`-ZsqP+
zVDC}mI)@pfKY7^*&-?(tY(GT*JqyXJ6=x0f<>wpM^BWUirr9Y5k^2#j1ZN|9qXMQW
zC0-3j=vsQO(-sxoIc~@G=WD%#{37DPC3|fr9G%^}^)m_hA{h9Hf&2){fmnm0NPkZW
za9nK2^WLx}q9A=_gPwF63Z@dnVKDLv`$9In0$+jyN8bz_|JW%F0S%0Jnh(E3NZK=v
z5;`o~9KeqZoi#Tkm1;fGihe$#h`N^n
z)OwEvj)hK85%-@M!g>Uq$U=AUb_Iiwc{SQ*KE^ePHCw|kB-lO2H#s0b>Y(JxtEATq
z_KUB=ED<(k!@&ScJX4II$m5-rz$#v1s}r|GgMno%7eOM~bc4E$u(Go9KRF~MM3H?4
zPpKoD(%bpm7L&m@r|Ppm15%r0qAa0gGR^z>91DD^Fb(s{C_?l*D}+yoFk#$6Dx(SE
z@t#>TFVB`^GrdM#X>biV;r5TW4I+6Z6x!S{PKCOt3_Ap6*|^&!TT~4X11}CcL3r%M
ziu9ZWX-&c`(Paedb{V}1M}9_?lKp&;6n(YPmET!i
zlAIE+6j#cc(l41Kd&SehDOBy*ef@{}^e?);A|vy?dIpt)sf>8rg~}|xLU}J*nGz1k
zMWPUR7=GPbRV?p*_#Wuvh_C8(z?~cC(q~RwWkv67Ka2Q3-W{2K&_8mJ`N1YSpg`p@
zMpH(dkVrkZh{oY*5*iI;#IdY_3dRo;OF$30ch-@z-9UW#h205j4@w)Uo0&rs0iKf
z?Gk=2EYZ;SloK(7sJ$R4jx1dH(Mc=?fmQ{gu?^<5A+U6SMx?T7ZVrqm-aGmc=8#R7`NdV
zm{c$@CML@lHfovkin)dTFgasu-|t_m81C+QOAac=N%bB4zhC-$Q-FYLAT@gCHQKaT
z`H+_*Eg)IFEzFx*y(Ut;=)_ewHGQsI09(k|glscnGdO|@V@BX;o@?E*A*t!Yi
zXq)?X#lx-Ki)YU@b}Y*vu(>k>hW2hwXnZ%6+TKJ=CjZ4<)V|*(3%E;BpHx6_rG^ad
zkN@fqg&AEnZ9Kk=I%)2os`+6fuEAUc_-Mrj2sJ!16_%li}r8~p&Fogkk^v}>sV7tt@?Fb*9$s-V%nWx1g3I+wd!Qs8v
z1ww|IhhIWjgXvMdrtC-Bmj(;MUof0#?d1CLTB+kyu3=}(bAS^Lp7VdAQRsYwKot8%
zoR`{~9M3VfT6vgPKmjXJHP
z*~9+hvt--KekY^)rU8YF@eZ~J8E{&H$?%=3*~p^#s74=fIQ$d}SU$sAvx)|tyr5gS
z=p!BzLWL7NxSJsGaGPuD!)eO)t9v`JDI=czn))OQbXwt-gD&^ESbF2QNcC|?U1+7?
zM8KIOuPomix*u&INWCZxh^?{c2hx1a9~{NUoi>*z?D2QH^&4
z5a>(%3lJ+PPF7H-WIhtSzT?@A;nVf<3x>|hUFnzX%JcA{da!kbJFsu=uD?1&cuA%C
z>`surQy`<#{re$GPeL#Y&6N`|Wnpslh*X$@MrRc%ha-Gp0VVz#Ua>JO#b2_hoBBUyNK#gah
z5sa9p8Z*CO%MwT^zfR+Up^a#^JAx}p2QzFig4(&m9(1?==>M?y9$-y0?f&ql009Cd
z)KE?6O$}og*Pa7>TgIk!pB}Cy^)>m~7#QAg
z>BzC<_yiX#LO)B`APw%MdSzTa4Q0sLP#+3um2r4exs7eH33C5hI`{NFO(?D<>k^cB
zFf5nJ^r`--<(#7y&IZrh*}~cNC#&6+o1$$J%28PBQKIps$XnLdriy9#lAk@85U+SQ
z8(y;pBuI+mR8L~Ealep#KMBr|yz{Q}yWDXh2Ggl(=KCTnT8cETFiqV@efL)GqlcXa
zhgUYF`F{w8ZE%QeV}0xiySlTWY$orKr4y!0$_&VrDKOKJQNA7e{N}~5$P4$W%=MP7
zkDE25m2V%K#-~Mi)K~`>R1+Xs1w0qej~QhTTFiS2H%trewMXzUC`lrsM+5Uig#+8FgHeqwIW2_xfJxPA
zeVfHOf{7MN`lHm@7nBvD{
zZ<-3M+~Innf(_!Ah5Z0%AIr%mAfbAqMzCPUSjZO7@wma~B%F8Gr@kO}ZGgy5GK&GA
z7$}3jKOhQ0r;wAw;>ri=1dlRD5MAPJPM163xz08tG`Zni(&LiGZz~x~QnCl#2OUa?
zLN;{{CEmWq3$M6~i!o03R_`a|f8060_R`ti4Bu;<NQiuD3SS*$SN^;Q}n=?w{>K@xNX)VMKLtyGyywxlExeB{1>*}UZ
z_K1jFPH2p1+fFO&4n_@jL8P>GX+dWliDZNf9+*AfH__9M;b6(n&KtV3IPkber)Q)|
zN8B?v+LqOO7S)(q9IsN+m|74YaJgqKVH>X?mPvY-Xh2Rs`fUpbt~mwBk@
z;e$(+RrK)2o!S??7^h(>e?VOE9C(H+U$HqHa6$V2U=>!ir@KM(L{LX*!S={d(ia)7
z^P4RGXV_yH=O^zHyl4umUwd`ygPqs~y$`%(fJD^P(J+b$RChHwsf)tE|T!`**zYu+ZJC^lqxPu-;8uUUa6!G1|f;>t{x<
zOdglJP=hSK$gO?E_F86@?cC~SffuhMX%8(kjGEuE%E*~;a5OwBJKg;MC;H!FL9t{-
zw3};0xO3;-pSoin^_-uDBBHn9W=mnBe|@grRl^FHOt$IKg9?GB)V<1MvPP`xs;1HP
zPN+9|*1R~M%fK{a8CO7s;b3^3uWeW*!^MaQ3%9KXB~BFm@hCWJ&>ibMsK;J|v%Fyi
zUHUx-;eDbJOO
z9hDnunCA1GR#~GK>=CFf0ghpJLZ{cqu#BEFobz{zrgLqDirlC#cnVR<@@}6q72(c#
z8(ncO=5l9Gi{&16?I)z1XYVSxQH<%@PTNChik?%pA+SoByD;0d7lcb9Z8Aeyg9^=y2ByeaOLe5k}x
z75K&?^c|s)xcpIyq>40t&ddiUjkB*_U=58OIFOepjo^uCpZ4Jkip1)QLTzc)S+{o-
z7;@}-5uHVq#|YHTVtR=9+^zmwFLyT@q;TGoj-=g_mFV#&b=deZWp_l+f@XeY&n5|`
z&(Cu65xx61e5w$?c~RHV)23gPe!qg)=y7Q5B^ffCwdLHwJ}EKSdU?J!pKkI71UP5HN*e
zY=7(_*M-C!5;#yQ;_2ZkI|~FPw)){?H2Di7I^wx2wyHczD5FKn?Xw;U-Ev|2%$82w
zGpD2VwBN}NHw$)yKRzA~bK-@)4W9Wh-Lu%amV!SuZ~E1GvX6(umsS^Fe0xSZ3ON$`
z`-9O5N`w5c>x1*A&l!JyVNmZ7iIk6JURI(CoyWP<53}xMks`ETgMgaDTJDh
z)JFhpO}oTI-FfQ1G;T%h;Z3)j5uDKRC3+{{_C!=Gu%C`_Q%xD#cD7rzr==*a;-SoS
zYQ@PmbE67Z=Ha$S@)wbrQN@v-w%hDX5~2FC?CD9&8OGEHuU-*Z`gRJSOYusa1cLhB
z`oL^i$)l<<$~z_~Y>Om7^ip5)7<9+g4D%`Tq+=+UFYEA4FJ+&vKp)Xe>mCc@^qms4
ziJ7hWtVuIEIReI6T5G;qH-IK&iA=TFp2}T-qf!_wYmR1h&T|>HBCNs*&e#xpD*_xSOKYq>li@Qie#WmDPzQDL=n@6p1$MC2+jn^!4%+ltyRbI^ey{Y)$+t~{2#T~L8R%ieCNrt4%g
zYjC1VKVY;YpG}nEZ8fJTHzKmoF`k~nx;Sbl`)wO~MfdQ*s`k%*1^zbTi!@~fB1|p=
z`X09*B@5^y_Xi)(m+4USuz;LWQ1mc|r1}McT4X~51c1(5u6JtRh{g0yn+4@hII5(3
zS*1F4gDDP%%5-q}+Je^!^>7lVca%g4u$66WlJ~(Xp99Z;;+2kF0T&33sp56AWG#KZ_!vvleu7V^}X0ZXWiL_
z$}^Goi8NmibtZgar1FN^znB-G-jRq;ltyug<`8PVFZVcv?
z6T6k|HKRq+%VVmX=dMyQ2KMqRPum`+oiQtx$6n!$k{g#%D~iG$nZj^z+&<}Xbn{)S
z`XQawwEPd4ej5;Ck-9GWD^dpYW8!?<4jiHww^fkdtJPEM?k@T58?QzMWs=@`DP80t
z4AAPjK}netfpv>3zR?iPZe&g>K>-h^_~PkI?y0-*y!3qW(aSOHW;s0QY(@
zf#LXT-=w!nM9mrH6kj^Xa@=hHX3%}Aez;)kZ9$h=2CJg$=cgU7oxE==yOZroDD>Q;
z{vOcZx_P98MCwxi2k`E>|5te|6OKcF$pHAe3$
zoES&#obIi#eEux?DtjeQu7rQ3-s{1;v!RDR-ILn{IXXRsdM{z!#EvT3Yp$#ysVp$p
zhW4Gf_sqJvNVJjw>DxNBLQOU!UwFmr1z{)U-QK(LF^#n-SmMuZBeD?aqq$-YMBROh^VV~#zPkB5yFDh
zxE*At3*zj-EO9N$PHnR>4a7s5Wd8k#OAL^^MCp+Sn_&9*gl
zp-{DFk+A$Z@gPL%SsSw!mM7KiXKf7C5;Znp4Kd_Zk`b=Ev0tDDpHfuy2j
zPx3=33p=9Nv}BvD7{O4Br-|co3pA9L$UqRq7IND;=g3Bgifyjfj+WF<3Ya=3gW5^#
z6h|5JdiN?L;MjXGj3_%BhmqW#J==KIJ>W9#N=)j0NBTOV6+k8E`QW(
zx)AiR+cZ+)k`E#-4*KLagjIl{C~7S3$z~j?yujtAK0Ti3pO3$Nu~?KIPn?0%Y?GFK7l&diZFX9mTS)GCBQQVspGZ54f@>tbdbFTR^#c
z@UFRrs}d*HS@jtQ0p%xuCiIBMy34dlIUtyYuTt@PKblLaNn$JmVt2;;-xFyeSw0X!
zKvmFtmU#rLI;Yaxm*Q@*pBekdqN)E^(RAyktNrwCro?wa$D3183QFVU#6B#Kw#Vuf
z;TOQUdyk>K40zIJVF5m4Mh+N%A=I9=z#3JVHY?p!>wu9rl_A;4w}c)rDjM|ovOsOP
z$yJiibcB{m_?X-ejcSJG4b<_OoZcYb&_o8>gaQ_fAY;o8zJV`(m>gn)7TtRDx4!$_
zv(jy^Z-{T5Ky}bBqK~S3l`jE`S0BtrzB?IR2{ka
zTKxP7cxz?$EI5NP&mcp+%jxTRnPGLJtJ-_LNxa6iwhutfz!aj^k
zGS`N3I&?9jyX6#V%EJa|YIXH#QVMiC)J{n#4DP6{pGKIg3+`8BoBfCby?k8lXOV-9
z7ix^LX8q&y2O7o$HcyY{Vm`+9LuVCvo_e82Sg{`Ulc$hSIB_B&uICKBS=!;3#o3f^
z75`&jku3)U-8bZSkl@JY{rUmuJi4=k?mQZu4NC2&JD0#S=v<;kFaOKlCL@s;V_Y(@
z&nYBe(}y2yriV82Qp;?L4sRu-x;@B
zSI3g&)$~P@a_FND(T%~Ua_k7cJf`^B{Qbm2;d@7&Fa|EZE4$m|u@}{%{KsW8-a4@=
zS0ADL60{hIIZ>!)H?GWwCd9As2SGspJ`T5F@!@3U#);{~c7HO#bKDriIJTBT?CZ|!)T~q)@
zlkE0~fFqk?^`Qn<;M#jFLs3sBTBM*`!;zEupH6*Zgn6Cc1$x0N703DbxNxn9yZ$k6
zz0LfKdjF*twbM_0QZ4EcY3|d-8-%4FKBl!%9fc}CZ_c>lwD-|Wp<|mt>cH#@YPWG4
z%EnVTgrvyAoJ-Pgm_|KOLvL-4Yi^t4xBdz|2@5Grhdz{F-6;@PJCI8;AW>b4#?jK%
zRSXwL!)TOIKO^9C_w5BqTs0G%A6tfrsR&Rr5W8hz+bVI_1ULB6WJMgGU8`e5{emBEhOUrt##42A1O<`*-Stq2;Q_FMA!pfS^^y^|FGk
zceGsgg?Px^p9gU7)viB=p7Gkh+2+b~FdWGJNzmmbWJ~4s^93x`d22yMg{I!yWc$}|
zd@h2D(pTW$EE9UJum7q29g7?7eOA)($>=Y>HSde*apBrF>0NEj)LPz|$_FFa_-9y_
zuF>twr%iA}o7&Ijc-(tlgG`MVq^3t0G#ROsTPTur9>blSr$jN;h_j+eD7O=&CqgOV
zRP{GyMFy7=o^McL)QM5ml^4C%cTNJRYkxmYXNnETl%WrAeq)N5-mory%MEbI+RY7O
z22|_ReU3MR;D9K55Hs);F$CUD?B6?2#|*fFP=Y9XDeyTRGZ2sp-u_p!;YMdI1ddP?
zT1SC~hDWu943A=Tug*_j$B~}BIG!2%<#k&aMR8xN_RxnF@)+;<+$MkALrYlPi8rla
zXy6aJ^`zIQ<|YmgD`*`-1<9Rq0V#WFKR{O>?xE@G!@;q*ZJUW}>cf8qj`Rz*=tVut
zr4uxqoBnlwieVGkdx+q+&B196I5a;)=GJTEe}kY$qt`~pqkMo?I8C`OTbam|oTq-F
zJk3%!q3Yls25x~5olO01=G`Dltr2WVejL6Gx2
z@F7TV(_o5_wP0_X_^oEAy-bumQ79muGLyOpS**Lbu)u68BCc=xo-;+;oRpZKNXsEu
z$G6#QLoqi^PTPRnX(ylViidgdSA+50XSwqj(IMV&t%b$x;sT8Gy}?!CaQMqoF1{sW
zYf$yx^jgO&JY`m~+2`1TQh{GOQ(Ixb&%I2~(4H;%gH2z$_qryqe(oEZ_0oDVKHqs2
zp^V|Lz+c^JJR{BpQxQJZGxE)<5-~ke6Lok-gyD$^_9d%?4a?wxtlLO4C)%$5Mpi2<
z>UDg&=H@#paw!Vc02f?Ji5e#rXniVazowHHH2P+)lrehIY*;{0exeYURMI^i$#hYA~Up(}D)%CscD9v}N^?|`x;E<=b
zA?Ett(|)UC4AQY@ae|43c73n72Sdz;Mi7&Ga5ja3$yNbSqZ4oH&ncPOrD-BIdn+?y
z2L%UI3K|%1QPhZ!COT90i}6;zvdrCnELt?}sf;u`@BW*cREXNTFAt>YsNHO=KpcNu
znE260QE`c{#)iL@HMR}xAN<>urOwtrSJKq}U_G0)oOf4TtL;R(k+3FQ?6pXRGEyko
zGrd$fUXGUgy7-J9On5;(m0$H)VD_Li=lZYSLv7~;l!%|5=kO3
zz}IC|d0R5Jw#0$$E^Hg4zC;4+*?6avlk=*P=)h(%!dw{1!FKP>K59o}gh7foV8B(psqV$+0u#+|3*lpvvE8EwnUMX=>)28ylEwID{s9fgN~v(b
zj$iC&8Z;wuUywG=?Z8^|$E<|os{jCzoo*8}4D&~69^qCVK+(-|DQw{mWf2A75GjI2
z5dvJqE>z-j+{92pTT!MgvoCY-!v}SCw8`DGU!CXz|-@>-qcT9EXW@V65~G>NSPC3&RyF=
zJr~TxonmIb_HBM4BX^wbl=3^$*y(FTH*AFJ;y@`@Qi_|ov#{=@$gdf*2}~9+N4@~h
z|Hx1Do9XcvmrwOolarjj;UQqKt?mM7=J>6?|IN(FIP+Hcu6|6&*&MwWr9ma?C8^z<
zFX7MJoS)@^=ED6hVzQ(2)SK3oTW_dDwTQiw1z&+XYu=E5EK$v?DTgSuwsLTr<+bxnme`<<1rI!#*Gvt8&Q02kDJE@)+Ubqbq27HXbdjG>0R#W-Px>+&Ju
z=N~pf9$St&wBWoi{3WQeW(t7oYlp3T?$Tzx
zL^7)B+k?l1=P>Ek!Rp!3Ap`gM<_0O^JHpkVWNxDyc=+2Mg>gF-8segI4p-8VZqJu2
zO80uD#4H+Q%;7nnqlP3Y2?IX_??$geVAr`)qEBpJho#2!J*ixxGs-77du!b_=aZL&
zXtlX)k6N>kn=z%EJ&@HF1jaK^H#TorIv5b*c&NUo(?J@kxndjokVCIj?pXewL6IIf
z-E#8V-PpO$=topx?pmusIIU##5V)zY6D=(I@qkdo@5<2HxF0EC(jcagwA3qVAKtw&
zb%I;1>SM0B`{#1O8P0@ahJ!#vUPOu7{-FJ$jIrScNqbdG0(i`#eF4aJ^@p{z1xBaM
z-YHU-B&~w>!HFj;a4!{rC@=Qc3gWin1lzt|IKX{N@Uj9LN*yv?T%veG|MY(h9%qQd2ij-v-!M+sXF$*l9Y5izMxtahWD-$$H64~yE)V@zLCq6XFIkSS
zsh4}{XtO(@ddXk~s+Si)uiRGvCA%{f#G{>i*56}a8-UgzSA$zTVrXGoLG<98k<;tw
zK{K1Elmk-cUxB9Sn?IGO1MRoRkLz@4Z@C10ZQVhcu
zAN%snh8UGOHhV0BVK1TD=Eu9bf`slJgOCy#I+PdEc_Pln^znwD=xnIFvBdnLnvpm`
zfpQ~52EKV5M3qyZ4@a0*)N?BP+HbIz(~2J|Sx7@JiVD;>GVEK>MrvsSiv=0BeQ`$0
ztXrAkhIPh6xrg2FN`FdJyy!@?8H37uQUnmIa9kTrT~rCOarAo5Sx#nlRADt+v613O
zeKB@MA
z@cmX$7y9Nh7u;EhR+cB~q?V8CntZ}%=&D8X-)QWi_ZJ6HZ@qaq67OJ}&nr|UpZ$UY
zw!6H1B+-t2MZAM7Mck!50_V}L1{qK%SI7>Bz_<*2HaZYlCNl9UfE9&83~p{rQf!PuBCN++QxyHg0rFkvg<(
zHbi@?lm6wq8>3JtY&Ie}+^=Xdt|5nkgg08ry}Sh$N61ycp*Xsx?6Yp9C(avrvZF<~
zV4`(`&NHrCrlzaNKa83KP5p9#3H&Ge(i?~7|LkA~P0>(L3KU*18{K+a%f&Bbzs#L?
z&~sh=PlLX&v-#YgPhm)Z>F-6?zp1e|9NeFPbQV1G4_LR#-hP!jun
z*1vdA?fQRFeB|frn_#%L(Wlx$^et-Oi(e#5z;|qN-cdd&b?8P^0<(!R2~x|2GQgS#
zKu-D>b7@Ex?|7k5VMHh!+uk9&%)9G#L3#TWOdp?JT=kY+N+7X$TWSo=+FV9dAD;Sp
zOxyJWh30H%$3rv@P%+Q7X)sfiPJoO`k8#gq#4t(H@^B+L$k1KL>lb{eq%JCdj;{Hi
z2ag5i&lBJ>s-12&-x0u`9t}7vbh^f!-~=CYVD~Q65c9n+q!-NQ07PfX7L%awgv@)6
zPoEuCOo~C()FLl2KHq8r)MluC@vSzv6GzBljp*ILgox1_l2yW#A`
zXI{bqy}*(x6EL}-fY*jioY#2v^^QRh_v5BWYCMMzCfzDGLVfU*)HiVoN
z)lWA#v%Q!uiF=^$Fu5Db=t7v(r@)Di@^l
zh0t1OI^0mb+FpGPJgB}79*m5`9b#|$Z-yrtU1CXXN*KKV?DQ}rXxiV>U|<1Fdx2+o
zaYmcLv;S3&9P{JxfQhM&Sd}E>-h@oN2;VO_+8Wws!w@{eakvn1ZSXL{y**)fP_dqjrqU)koTFwj_TtA>Na2Af}0vGbNfr-pP7!`9Cn&j^{y9)jW|0uD{$*;_BV48i7`72Ge)3VBn^Sp{gZFCfc{G2HVqKyR
z0b>}5Zf!JYn&H2nbS-iD#2`vTL#w?AT=%wuOLdw$aV&YhNhk9YQh(m#3
zABKs6*Ym#e+&s&f(}(HHyJ;5yl##9qMi9V$Vrlx;p=bq`-0#(S`G*(ZI1u=Rc&
zRq1I8jWW;$D9;cNtk^S)GAEzocJ|AR$?=UsW4=U>UUEC_McnZ@@6G5>%UMJLzHlyH
zyWy{qqL_sbsVYtX{V-x`L1LeWW{Hhl!AgSnKR5EQB@tK*#$z2WqF7$SwBwBkM}E*|
zbn&_Zuh72Hu6me@4qSn}wg+Jsxs>NgJCpAevWjnoH3$*oVWaT}tK09=aVL+4i#>mu?dkhk^s8QplsxOzh6U7gk`S-)o(I29D|6eLhriE>M?1<7`q_UvX50pf6GH6FB
zoW|`k9v@`(t5(`1O<^qC#cV-pdPg=&n{hvoErnxFjK}$tTp6};hbEFTJfKPGW=M={
z2W%T3S9O_&DAixvO+|Oh%~Fa`{R#2xZ5f;vS6I2I
zL7v;>i3m)$2r4&_xh{u&^m&P3pCScPiW9HpiDOpBm%OCdOG@~W{cc*p&}g_{2kP0e
z92v?}9`>CBE)pcAMn^od93gOYO3?YW5F!PUn8Dhw|4U3^SJQ!tgY(GZ&NM9IQ8NRL
z+R81eZZGZi3dz*Zd}pKaj&QUm;1R+ME7-`&O=dO6k^tt`gGfgIu3)tQUzDR&xR7~_
z#?jVezUe+n;$86lDWMhC=>RkomM#051M;&!ni-DP`{vbjx}9P?7INxlOodD>PPa18
zZ5T2fvU=70HDK=V^XLP57;p>C8u*D)TaTo9fqq{{xW2M{RQ6rcV<(dQhy5rP^-G+R
zRlO&AT)20SNmIHkZgR+{!!t=8z$LsVg3M6LQrmaHqdY(iFDYp(cVO++{wAqwSe_P0
zEN_^2uav$0US@IPMY$cS}d59smUu;DfnImAKl70dRl$7#ccj7S4oFXDn(DhKns3@8^LRQ56DvjV)w^vlP4|Q3LWAptGkF*pWeuFLR!{`>Zr23~F&WVYGA*`r
zHIxa(tY?6?`{1(IPyy&eH4{{AIbcfeZP2K5{7$+leS{G
z1mzGfw<#$j;;*-@CIr9B^1%m1EQ&ejm_AV-@{H_zll2;H!SQ0
zd+xru?k#&p_>IA?=^hw!lH_Cnw1sj0CLM0G=3}pY?Zbykqa}jI1^p!&obb%mGl)Tp
znia(`ocHkJ62$P0n$s$@&SIGmScrI~aW2CQ?E><_9=U^K3K93A4Cp!@Xndd@Q@nGufSz#$Wo{7Dy|!2Hbe8U+f*iqbkz`yi<#V
z#NxL`yH<8L=&?r9#Nq=kp`2I8ob6-riYiM^=SRDdSc@w8Eexg-?S01Lcj3ZD4`s3P
z<$m$Z4brDo!}h8eE^JjOt>uY{@Mq3B#$YR6s5aX-x>J|%*_IsPt1;(zofM*|Ab$ZX
zh;SUSt7o2BYtDoPuJ3@G-@8|ZuL*|y>V^cCLjtA
z)Oy^y8vY$D7Wvm%T3RNB?4!Zl2@x><$j9n6FZL=pV717DhK%ZHiS2C%uWduXH#PdtlL3mi~+yh*k1UsHwR;RDDo#X)o
zD&8$Z81#5EdvFCllbqlRj8(m!G}h|6J^QDS@cTtbP?44rj;bEBe?uzCgU*x28E
z#s6V#wu)zxmnwAdu1Ei*spRluE&-QyNm5M!*}T%Z-{%
zlJ?6FFUIoMMN(!4`O|9e-Nx;#3ySxeHf4AMB5z7%c5SiO3I{@8J99Jjvg<7D#JOG1
zm69pW>{h(aI2Ls8xQ`o7j>=8YZA-ThKg(u+(H)6Ns_*bq&CP)gqxuR|!W+^s^=&}?
zC>`5P1Q?qH3+q^zVe_iA+}zz_9b-C<&trv%DfrD~rTmHnV04Es5N#vSUEf_x^*^^}m`{JpfjFPFLRmi!F3t)fYD7r~k11NU|QrjvU`zl=VllBbq`D$TZnOFWvF
zT>kd(=T~-pXlz^gLPW+uOLdlUcGgQE?fkGJ%QdWMv{l?ksK++4;WbofN=!DY&?Ku4
zFuPuE2v?L+W(!hL&w+`>W}}w`^!AcldHh}B0yWGPHxh>@)_d~`3zj&&8F~^<~HkQ$+
z5hkcRY3~Cz*#g_rwT}TL8L{Jb5Po?76
zF0@}@`#`+ywK%t&&Z{5e|BRXa%g~xNV{H`-?wzpZr}nn*7wv5;?1pGZg#DCR15{i_
zKH;?9%YWiDAih^grkW9rW0mS3?Ei8jft>Zxvp13nDh3tZWB9({`!v?PqoaRxcGLZp
z6HJxGu7+|@EPsyPpjt&A0iDamCCYOh@_m-Nr?zum`^If+;WGyi)lOdm;y;4c+7BYY
z*3eoYI{wrZRnT!fvO>W+m9v_K=Kk*fx(`ml`{_qqix%gBQCIu>w~A7S)gQIp-8Fvv
z##+7B0)g6w+!g$=lQ%VDeU%Nj9u;$K6EMNrLV-rbfVaMY_a9^QwFCG*l;hDU%e)e=N#L;ax!Jd90T!4AoRU|RD5#87>UMg1K^B^SdaJycf(lrLfh8!R7e%W>VWr?DWWrGQO}5Kws!P_=BFL~@EzjK2rt%9Y*@!4x%9wh9rW
zW4GWm+^#JaGo58kS(|!L9If6nDzK^t9Ne$8z5+}o*UB@PByG9i@g0Yy2kamtFMXAjNZZihI+~XbcIfhGafSYDiRvaKrF`IFwT7
zf!aaN6g+Bu?WvtMB&wWPr$Gg)n)|ltAJ4mVbnX
z2=H_$b_p}TQ52?;$hkw4t4`nqt2NVgO&DoQN}5nCc~kXK0;JTw`t+vFiA_!Cp;!Z?
zXzXF1l#31G+$YjJebf{$$g6u%##%!Q<(-aU!g_Tbk)DX$8KHPX%`=*ZE~|9hc-}W+?x+SGN22K}pxwpsV?-
zJClq6DBd0J6kKT8@`IiO$~U9!_b^TfOIoOtLQh2(A)wkpoUAlUp4kgWJeolZStLz8
zY{U$J1GVL<@D7y%HLoE49C)?m;PnkGMjkv3mnj~?`Xp#Rra8>2%={WRkaxoeR}R{EQ$Y&g|4F2#7%R!&tv7AmKCixd`y
zMAOk;AC7F&`NbNl%T0Fa4rJKeaeDWwKf{MbULe|}BR)xmB2HaF5AJxTdr_c{=QVy9
zZv2VG!YE6Oe@szHUatX12hhFk{1E;I`!fKJFmPdQE>?Wpvgk=~-LH|c-&KSAuW;09
z83{YPJBQQuCM|Q{pAUfDT&UM6{`YCgO+TBylJcXOVCMBzn>;;M#QuohSu?QPOAoQb
zi~LFQI=K1@Cj=B)=hBHtSN2>{ePx0;yBV$IFg9al(8*
z6{|mr+vYk)L9lB-@<3b{WyvDRmojYCFwVu@4XZPR^wSPk8x5gwf(6{F@uT9Xz{Okz
z0$GO9q*v_GSTh=%~Yy>RX3&{UJ4j8BJQMgdtw-JZ)_%~Sg18YU|a{DBTL_>^(j5H
zq~<3;{Zz!++dgQ*Q`r5@&rk<|%ex9+DfJeYq-Jbmr8TJlP!Fg2`D8=qN7RF7fjrtG
zsAc>eOm6}$v4JC~!DYM@pKn6azo$jaCdp&Bbw3j9qNtVad<&
zTdZZi0s()G>pTz^6rmY>Iw9uNcDRd^mE6SiHsJDIej)5a}RZZ3z3Al8Ys;swm8FWT{o7^
z6ECxEIBiny<%+bf#HLk8Iv3W*Jhxie?pTh?L#vQq%|?r(>AMde`QZD0?vFOYSD>hK
z{|^6IK4OGWyt=GcR0efDWnab0Fxbf1x`@;
zzgR@!{+2isE*sUaz(rg9hE*GYMch0?)Hspzf9DTE`KX1E(#tc%E#SJpNEkR}AAo^t
z@}hz}wHJRo#4(E<+KWfECproAA4q)tACA)BvVbM1tUlRsJpMxMojLn2>6bTd`n}8_
zBv!xQCxB}if9jv;(CB0uJ~DD`u`_IB!>wl5)xVbeEho53oDP^{mA=QJ-j`0jAHV0f
zfGNHLKd!-qf4y4%wakZYi=Xwr0&l)7er%&RJ!+{Q+22}vZF=WoPln2r-eRkHQ>@=?
z@ivG0)E||lSK{i3_O5jQ+cB%k^&NzXe4b_PHPTg|KYay)zXDO8mhVS^^R2Hf4=ukM
z25a%H;%n`#1*@kE-n+l}b~Tt@zh!Ok4)-@+_^-F>4>kX_RrJcd-k|s8Oqvh(O~n!a
z{wvoU6c;cU*XpUnGvd?A7&`>?z2P?JBG~s*>G&M0@e!=f%#__2Qqd
z)6#2?TI~ErzY=7}+~Qy;$k?wyE7*ds!0Vbty=AbT^NVdq7KP}I@6=nMfUAAhfS_xR
zmHH#v4xM^y%?DcvEOvrzTg%-JUjFT9T?Lz=*M9EtVm-L!-|`j0^EAz;=QStNz=PmB
zrFHbihI^n`{d>kvZIGDuV%*#LkD;M!j~zPKnZ8bS1K5M~?l%98Aei(a4Wy}+cbv%7
z%C6;ktySV$Ys!g<4i&I^b6}C3U`w}rTIVjvpS7}ooJ%?M7U&5^z5>hbtKe;VTg?>a
zCdvpCnS|N$nsKK`yV+$`I)CJ-|5gA!@#5bFdcvyoT5GA^CLU93hWkI#(0_E$!1KuZSG`t?-}wqYTzCt)ZmC11z>{jp#0QMpaMjTr2k1jIH$kBOMG19PmwjC;CY}aN;%CX*I;s
zE;o+U7^i*_`~ZFm^g8}>fG-%l7Wss%Sw`M*p!c3%`>Z@z?ysNwFB$2DbhNKA&59%X
zDVx^CH2SBq9IyHEL}cl;7T<+d-)j#yuXHAM>a^)i@4~;@@{=&Vot@f2yM=BxZ~O{$
zEdPzU60(7AESDfyVC8V_glS1
znm=@7<(<-{zmXOM%NenrSts%HOlR!3|1HltBC2=ae{gT{fY5q^^{zx0G4nCe1Y-rW$=_*?}#UibSqa
zJTmg*Elj-o(SKXpG(_)p>Mp+1TPw9)HASh*;grmk&Sx6;Yv>K6AE4}BC%rBfwyY(k
zi$Lvb19ZmqbZQ58)`WLP1-}B>svQmXg)ej#Paa)QslE93-V1i2KL|0s0uDOKZ<4hG
ztij)f0-dveI6l#bL+yo&T-)g)6io8>k91yl^$!{80iq(p|jzd#~E^eT)Xv(h2@Nz>x;L3@OR_z<}ds0=FPe=Wli~buFg`L`;BlUth2fsIZy)S=a*IcT6yG46(Vx(fa?AC62
zx?c})lmTg0{kY}u+t{`Vtcl(FvvubDnwKsne!2cTpBGbCCv5JHy!|E78u3yN?S-eS
zzmWVPB#>)2>CN5v=@S@W`@OD!AN;7J7kiN7g#h&%*z5`45PK>dMGZf&RTQV2|1I4>J5DKu@qL
z@<)yJ-@G{o?w%os2A~ia_>bY|?imK)_8H*b8G+~_B+kRuWtX##@QkHkqd)Xa!Zu_{4T+f8^5^Ab4<=2SiA3u2c
zzb(V{d%21pwH;>;A0B?}(PfM7pE0|;fx@aTeTSE@BdIDqz_PnziS*1|sClNje@Wlm
zH~;+Pr_)vJ`dprSa38pN2iS@5*UeV#P^d-l)z^;pF#aL-yE|uDmr}k+aDiCofp>_fGd^b;lS$gM!`KV^_RWoZ%OUQHtHM#OznMw6A)d
zz=~hb9Wi^3;`po&Ks175a>wUp)
zacTX|L%B~GScno8jEr~goSK`7A*Ud*Pvs$9%*BRNmE})EO-e6m@D9LFYKL3-{o|aJJ-rMS|#Qx82#bhj-+v3bv1R7aoGU1WzHV+hA9#NP|1>FpA-@y@Z@Sv
zPrdX@|Joyw86fULiq=%@1rMxHZd%B3V^WOCAhYs@mTd&V$V8uF_h5YhFxJmPfBp|X
zf&e@e3__3H>lOdQ!+}>gfm7ZFyFBcYUUJr(el+TRj36B>ln6V;=$#IKWyrE9kh0x2
zM?k$>>RUP!;G>qNy-JaJ@>KuZA$s0d+G14L$Sir7Q3VjPKZM^yJBjZig+GN
z#HTJLTq!{VFAOc`HIa|7%)JzzDOF5ap}dNJvCaW~Dw8GW_QWpFM8KvBdsVTdF@)Kz
zC>r-_A6#G4HnYYiR>d3|QpgaVYARP^#U}WIV~4FMq?>YV{2>2XeXc7Axwd_ZI}M$@
zN6aJo$td=0@vB?~?LQiGn_O1@Xr5z7bjCZpC2I}Wq@PbA(^{rc6
zB5t05Vbc>yHSZ2^AFI1zo2Y!*3EuAc38$M`wIhvsO-+Ld6nstQJIP>?C%DQepR3H=HU#8F6C9MvT%-oDA*^-ad0!wpLG9ut^~i>+kjE
zdE*SlSpV?bGi)$E*3MO3*;~jGp^sd&O^6`X^AdVXM;n(4t0&7fNpAHed+z0}o>PwgUjSrF3qUWYV7M1feSxgO);mY$_tb(v+yacZr*DReu0uuHUQJKQ@#
zty_U3>dQ>$W&%Ty8Ia+gU|5XD5*0#2MTopJ^>$kdwC=
zYKL`lx>GjnA{nA`ojG3Ln?`g+UgoN9=V>ARPz-U+Lhnr-PD4tg_1j(hmxonRYsf3jV*fz~@z
zsLi3_3So~z9WWcX8;kaF{+9x8OpsjnkDU)XIDB>Ic44^dwD>@|LQJf*j@c!6$72z#
zJLa)I`PIYMSdE99#`cWtQ26A)&myj^ILOrng)Qh{#;Iu+M$RiS&mNdjd3A*$
zF@g}!LyStwJxO=OcVww6#x#Aj#UJzK?Xc9=ub7)bqWV~s%M~+D=Wlx^I+%AWg;%|s
zOu0x=tDY%Y3$RI%dwEy&#g>JJO_%T?IAy|C_~_3r=#P>Q7)tOV;#
z*`8Cnnq=Ss&yzEMFu+bF*%asMNQwDgdd2zRQH{IiqP{uP|6}hxqoUfjbn)tR>`sQ+?+4Bvq
z70Rg`Fj|Jn`XKIc%|;Y-ODk;5UE*DJE&pSt9?lnH&=5~l|0aX1#VCSkB9*XY)hXS~
z(pW|^PQ%=e2-wg{9TV~HDn?R2pSL
z^l+3FIibk#b|a!^O)a9nKRE%$)U%>4Q}1Zy&wd%8848c$M9SD3zq&djyfE`c6?bKj
zIpL}bdnDU;8#(9zJ
zg~pe+w3;MrKUJR-6n{-6OFt?)5SIR6HZfp|)ns=z%S2hjWoG+m+7+~wNM<#sQ@k`c%3E3c42b`{By
zXn7*G7h<$zFW%zWlbs8UUJZ9R78=ipa8~b}1X_!uKocADS4g^w(ZsOsL*32vF@9!|
z9w0?|a%i}w%rb;Bb|(B`Ob17Mz|NUoha&0%c#^I{g_4P!+0EfV-3>hzoLNqOfiKP|
z@9J@oW1b3IQ`nlnHijqlAy2%84d`
zzw*RygK}2C$Me71Ra;~JMjIu!tF)Aw(2*Q1Ip=TrR}-_saehiWvYRc3uU}TCc3tQYQj?1>CTO0mXHg)bpZwBvfMC#o_$E6w
z7l+39F{zTcG}_1n&sKV)t08}&2?HW!AxlVa+Q
zb!wxbG3c8`ng&(~k1y56JD<8JX=VV5owRfQyu9Vf4d|xRJ1XTJR*WBy7D5Q#$v&Pg
zV8FMzdEPy}%yV}(I)3oiU0l$NsP)f9TBvUAvs}tHI{%W@k3e&?apiG@Mk`Tmy_4Wu=`>VIyXcW*d#k5jJI2Nc1
zguDQbnG#joDnC3@idAZ2nJ4ses8PRL6qy0h*Ptr|lcymCMV}2CH3?DnkM;U^raL>H
z60;A>9;!;O2R)6IgGGr1FtYdSL2bAGo;)$Ckzt_RhO8!muMEW^Xrd?*4fS#KDwvXr
zE+Kxo?ot)GiP6}Jx?Nln*b+QC+AtywgsVoZJn^lJa8$|25Nl7)x%!@gP}lY0m*Ce5
zWkgCop#ky3#cee6!Zu|6A2y}k(71Pu8v-AV$9Q3+rG*yGQ;c!Xy^UD`Oja(F-MyzM
z%m^(>4$$$FPR;8%O
z?o+|RmdcReO2oE{L?H@Y2LBSOfq`$WXA|U9y9>s@Q0>Uz(Va$k#?&O?_Oic8=>oUB
z;ql+62o-$;ZOGmQerP#>!k&KZt_F-dGSXf=FGdtkVKZN8Z@6x1CMrct3HBU-VHOZU
z@2rV6J-A*cq~VjTre^`~0lk^~nTraNe2FO{naM7A=(pdoLq@?d!q1Nx#J_8#NCNCD
z$D9j(LH{NZMZ4%Q;Cak%W!gSBg1*m8w*0T-@S)i3NJ>w$ze%Vy7)_drZI{6WemX>e
z!LK1p&hl~{%~=&HsQyephAo-VRs5uU8oNmY2DKn_b3dIr-4sO5KMAbkzv^H}*6xw0
zq}-Va<#cs<-jp`{p@MzyUIa(-4#lcL(Qbv%J^5P$9)hPgdR>FIMt?S!PXBDK5-fOD
zsEHO*h6XSX+9@hitT*(JP;1C0pFBy%*{#vBeRdWwsIi!VtzWApK8)JjHy&y-JHnf$
zG}8ddmqxs4;%2Sy{q4snfzsS1v*;Eb@TQ4v=xd*wYXbvfEK>$P*DFo5)S6&=ApVt`Xer0
zvIs*#$>CXd(_Oq}*d-B=Einp6UzEGay`nl!B2MjV&hhF^dm=bJ1h@1BxLa?M?kAt3ddTw7P~vPQ;*nib~w@|)hA
zX+t7LSXWEGIU-pURlf$BU8mbO*i)da(0$bW>B3IBjDtV7-`0A{VO1Gz#kK0Q9F0Ml
zY&@7O=jrT%*0O7KeTt!<=jt3*H~?8zCeczDKF|()dHAPiy|N+lZcUpMV_zfHQF5n$
zaKg0e%vBQtjR+)O^DBBle_pX7J)@@*g0$)R5~GdWeI>zjLs_RS4W5IWX?~tm1gP;tR{YjCjE|O){nfW88{?6S)
zCfdEJOeA%uMOtU}Tw&lO3Is9-?Mt$u5u?*!iQ&6>Cm}F}h?={aS?Ia>b^9#Qv5OCn
zSQel6g*8tA2#}FdNZ9^*&naG!FQu7!z+ZPOqwZUpKl=tYgMgBA>n@j@?}`;UZ5bqrbQ*0%T$2rI5%-;
z_2(ZZt6N$>s@y5`AI5m!dk2(TA8}5{I6ox(VUU~EA_~@&>X|NAnGI%a)d)K&!VI5p4Yd&Q3PfYDEObBNqEAd3PLvd&|4jHn|utpFB0AdQO~651lWKF~Pfi
z)1$GD&yvd&o6fz@MBOxqqw)EGeUfWb^84;_3*^pdJGFd9$u?k1CCr^-$x>#JQj6bE
zT2q(2qj3v$_?$j$g~p{4zEVApg^`bNyve#1NDX^f;F-kHHr{#Mn&V{28tC48fE_v#gj0kmOA
z09o&IPm-2X00<%OB!#j)5VshA*#S7r(6j?A*PcXy73D|4E?3Z#AC>1&eDPo66
zlDyPt)HYyHqY$pF;|gDt7jZkXo#@~d*w;yZdDvkThy|Wib@&$Pgd_fif7+&&$PN9ZoXGN*g!T
zl-vzHHA<^M#j)S(&@QPJn53_T>n`(*i9~g+91GPD&kGtTAcpMNmXfv5qk>O_@l;}*
zGR-V~Ww`Qm%z5E}ol@AOt9NHHit-su#|Sqk(AvH4d0i_1wJrh}2_vjr+Ko`v4{Rpb=C^C3BjmKs8^&Are$v%{*>35&
zU@P`n365Ysoyqx?-lb=k@@uPVb9Xh^i@$-+swZ|d+nxL0LEXM=EdK#aTs$jo$|U)5
zPw;GV?M}MH^s&o5BDU6#hTos2B_VK;&;Y+;x$la%3g*xCXnn~L*2iK>Da+|>D-+Nk
z6*XMe>Fyu`^RBA5yV~H*eXT#2U4XQ@g(YRT%*9B1bT!(Npm~Pz_mYeteG+M@!Svg6
z%?*W}M~hFKx}Z6Z1+R3+l1Ub)h`iZEh*nQ%CKm<$!{6mohHq&}CHEZk!cj@F9GhUF
zI*+5ze+{JrB$d~;QsKwE@J}Qp=94j;C?G4O!P7~M9L-M2?z^#Yh23Oitu$V+#3pt>
zIgX%Pt0z?>o3rsfn)1F(?jJzW?_pS|0!t5F4-pE;0r#>Ol6ok5zIIpiI&a>4)8goM
z56<>{k&Ud4d-{N@1Fl@B>|E_{Ks~JP
zd`xmRGvees`f_unse>NHK<(3F=7@et3W1&
zsOB@l;TWipkCq_elXlCX`I7;rw9^W=1A;2&VkKJb4XzjvYDpKn)|XwusD^zeHywZb
zS(C;6BqKPY6Y=pnD3tIs&uveHGfH9354_HQPp`xQG6IU;TkfHp=P(1Tm2EGm<
z+pJs{RxL?U?S}V$y96XD(dvQmM5zIY3mbVb=|Nwtuf<^rwfadMqKS;<#lkP%KMP60
zb@@9=$LaB*l7+#-XA#=xRRD$^TP}LEo>>@zxU|FuaXX+U#??oL&Yo0`(wT284PsfW
zOkgGiLy`(ag4cNA7Lw+=fr84IflH;LaK{5e
z;pNoJUsR)D>m6D+Nik4#qt~-##oLt{T@Dj8vv}Eql4-kBh2i>axV0%fN@F`r0iqEYB3ra-~w+85jZ;P_JoSNLdWWPUEI%GF$di}GD
z33skGMdaa=-Kvt#Zuv=>Cu8Y%S2ED5EO1{#=M-d4i-JbpC?%!PJp*j=ON~6%-FgXVM*Xk|y0L@!uS~5+w`Aj#+P3)<6h_9=sZH
zbH{~o58$akJhEJJ5)o|r?Y@?xsjsx;#&tV3K2YNL#N@zPK7vjrnAQqO-M3U2bf9pZ
z{4_HzH3Q~qfZchx%n^~zofqfvLAlSaX2WUZ{dEHkXwKDXVO)U&H^7Y~i-PQc3LVK1
zcc=pt3AzpE!r%?|Dc&%3QP3~!3Q1)K-Rm`|n>iAL6wZ&w|j2nsl&_QyU-3|@?afqN)Y
z!n284ESym{>Fnksu{r9l+XGej4NT+h&_PxPF?g0vS>>w?^Y{ZDGDDGuHUyP;5$I?9
zOQL9k^_EdNis1Ywdf
zElHJ3Pg!RaNAF*p=m}{uHB2cj$awf^EN_4!Ps~-K?cOh|W8t0nnp5ArlgM#{-`;gs
z?zZzqYD&pagxH+Cy{k7*)&Zxi=~v-f>!xSIns7tia^yuZ)+-#i4Q0;4kJqkPS>dH8
z(d-lNAKO-*1Ha=fyYS1m3i-*arx^-LBEFaJxL@JjIt#V~D{FjS`q5+ux~B3?W9fKm
zHxBYx_1UD%TfdJ1!++6s2ShLqQV`!+ZK6Iue$%6x$HBC101(UNuELf~ciYYkI_5mhGU+JSgKN
zCB{7R!XGsH-jCKajW*<;dL-8*gc@8}Ub(e#&T_wFg7QfHpMF$(it3xBK%9I-5he?A
zc*1PBc}H(VQ1DyO%r{00xvu(cC;Mv0pML=rTv@^k9)WpvmyHKztSWedZaK5Dq*MD-
zWmoHVU{LJ)oPIg6<{S0F+Kd}F6on^rTpiSQG+J(jc%DZnDp9;kR#=jcU@MrG?@U13
zmYzR0C6$S|P)#S-rzJEDVAeRENwr%4Qgg+_5S-mUeHKj9&;I2D1$gCDPlNVn!A}h?
z%M^FQFvwDHgI$Bz`&Z#|n`-MXIX;E7bX-5#;1IeuET(In`%U=s!k88^Q+GiHckIYD
zQ5`KUbM;OgTWo?dp|@vYzAGE#r!qUg4-QHKu^}DWC^Gp38}O7r(?zLxOF41<+-{Vj
za_xj_9apJQYPMjX;N%H&Bvq4MlK!AbR>7A#4y{d*$obyto2UmMuizA5D;v(?cS*v$
zuYs?6dgQ=>uvWRG)p0dx`6O2U%b3}{oMrqxLFnnn-d~K=k`?V|CDUdy8^3Fg4MFZD
zqNK%CiFj=MI6Iz&Ikq~+jtD_nMpqwkhiL8$Wpnzf7wFFLe>UD$L<4973mBN93!mnP
z&}^wde;kyNSN*2)jOkGg#U%#M^Vo%A@31xbif=U(9jx~GoUyDVD7+Slk*!|Mi5h5dbK%%->_n%ZGz!sy1pKu=SbuWSD%rW6n58
zm5pVIwjDISZswm~ZH52@Cw@+~F-5%E4-S$i+cM*$eS$6yGQ9>e3ZzIHCt7DIFm=4)
zac{V?=zAF3^1ndb(9&yQ+}18O`*a2PtasTfq1N2z
zp6C`Pjn0>+Z~mO>>e~|D(M1zLnTdV+lSFIo^6dIRZW>vZAn9yp2o!CP~8bnn4>gH{cIg(3y$A*?6)~Lu&ORf*iVcMl+rAP;f{Fbl|R3vmSKfPA9)Em
z`P^{x|L3qDMW7yMuO`CE$f`H11<^Q!k46e}4hJ-~UM_iQqNDMn_}dM7F!{zel~h%9
zinncw9OFO0Bm_|U$g1gX7e#e*;G0I60c^^1imng?mwnPteuEOMHIuKo@9=+WOi@_W
z&M?YX{NLVcxEt0Y-kEz!pBF14bpHDlW3L2)wOzuRV7v%{w|>Bdnz!iwuExtpqe(Zm
zJfgNvZ`>apNxpfcv7e*0L!Y12_H@97yep9$3+8q+A;lhNVMbj}KF@}z*X^)~}Wz8AM
z+IQ#bxw@!iFPK|@PgztKkC2tz&Gi4BtFdQ5QgMN!y`@dPY|pfb-bTW41+kPS<%T<(
z*==F_Pop+e=Esi^XM9MOVC83q$$K;#2h`K8ZDiA32@Fggz^6Op>w4;j2DT+Khodg*w6*B&m^Av-R7P*HSu6iPBe3$8@GQu1YCsS_2uI+5Y?>c^QH
z_rg5MY36x}gUyf+iSg7vw8
zzLlr1b>`UqB0+cIRLECELR3Md8nd*0xvC?3XFkOSvmf`{y`NaPzD_qOP~hw+es4@A
z_~5>i?O4rJ3xNu+!hr`kBk^L5}l5!L~8SoIy&+9Y;~IvA(cS8$|ho+=B@gaT+8#
zQr0pQP@^OgNkVyym|N{8KK&A7;q9iELeK^vp
zolKSZN{sa9?X-|+hp~TP_tZQE@Y?G$9E;geAU8)nm8-3dKNuk8E!*h
z{Fb}=0k1MmsAp`FKaCD!3=9go?}JLbI-v_Fd1{161wF@&5CN?u4;1Jx>)2>&ffRzw
zW8fV79LhSK{GvZs&fSa}C$KjT&;@AwnYONj7qd`#`0-O<%RKC;if2Ap=UQGu$RW)u
z#YdYr`utNTa^8^5?4m*7Vhbb=>A6|9Zl^>Ok<~D}jXC*{WB_{hezSDpo){69gz@Fu
z1_#I}fhx)v_9TQP3RR_a)u1NZ!M#_TL&u<$lIo87&0O)JY0rWAyC$DsTO;Vy^=M{n
zIQ4UxEI{*c8g(W13AbbhRDnuiG6$8b3z^%R0XCytu#E2UvrsBSsoKcm6Z}?0=x7j?
zr|yo#yFz8$dxPAD&NpUH8;a86VpZ!u+Sr-Jl~`S#A@EP9B6M>w2o!p~i+&6ldI0C>
z=C;+2z3@G0)3CY{OA^aEDXK@nRkP4KWJRN?h5XnbDtZ=yh9bz)ve*@8yb$`PWZS=}
zn(!2|`7BPwzFUA2FryVpeV+NBH52qgy-)podAhjDxPudF8_%u_fJ0|WA;NLZ*f@XSfsB7Rk
z-yzq;ysSbfwv_J|>NNxVIb<4}m`CB|EQN}~&)xzkGCs{99+jL8>i4%=f8k*&@zOtm
zG6-pZ?H7WcLg$;5PTt8Z29m3IDFz(e&_s}H`fSl7>#fjl9|Y>~*cuvd|0n1MG#T}O
zp>gpMo{VQ+>7^SXD93A%?~Hl6VDwnpqh(L&YOGx2^-4TW$D?cAU+6l73YJ##3wC=F
ztvxrpZ|{#JVjK%O>nW!JlEg~cj~|me7V2Ep-^Rzd0L{s?Kau)how+k}Dc_{}zI{Lt
z;v^cxZi3#Yr8yotqSZon-Td*|G6V-LM!K*tsZoc5v^8gCBy$El59sma={9|#5Q8du
zfrn7D*v+yyuCIC0#HR^Uwb;y?4$YVYjc^^VfDu3`H0TzjEhEZ
z>7sK#hK_PvofR%wA(u!28)%egi?p0?i^k%^8K5aP7}FY&HZbG>okUZLWj|
z4N_U_w{W!7!}sPZZsWv{=%B~4B9EYF(4~a0*Dz}<7o5_U0;2FNm4eQ|2(6pdhh%38
z!dAms_772k;K0krjK{|m()9~OtJp1H4kvU6gP`E}k4D&@FDrh>)6o#bZC3OiO8#R!
z0zz?2QN%_Kf0HXY;#Yi7!($VJa4({%iQ#?hTCh=vn~d@2`>0oA6On>>diF#2I}M
zxDoCY42Xbag#-DN*w_?Kb$Oi?x*=Pqj7(|Y6HmyOqadihRA}NOws3_SXi@dh*=X8*
z=6r3WW>gz9_BiNMFI^@Fd7OuSo29?(xwpsh}
z^d98n?tsQOMwGSoU~omhDt{;a&mT>&CiBGf^AryBcai@~~@8{knXy*9!~wjw$f
zh~Xu>+b{HQSlsI@r2!8<0FUy>*c{;Cp&QT#aeTA&mp(tM62pr_A_tE7-9|ha#|JxC
z6^cBfdQNX=RQEn*BE^vWU^g3et5aW+L3O*_*)J^gru5yJlBnp)rknDtjR+>Te^P)`
ztuJ#??!5F;6wZU!cvQLj{&_E*p}r)lxlU~`7-gS1axU=MK$SvyoV`y~b1^!KfrWvR
ze=~P92|$__vPKEZ>H-K-iaWyif3$V%)tWzx_GELQDjGaB?y@<2ia~=sF?hR+=rIi=rHo!2LpNIW%V=*UrG7%}vIMr=U
zPrCl4q>AfjLKeRYA($_vg*54I6(zlAlqN=GAUE-H^x)(ER;EW%Qrm;ZA)>fgqCQ(E
zdrklcB7C9y?O8Jc_K6=}euf2PbWw-DWMm=KRbUEZyc{go)re6t4=)u%KuWtXY`Uoh6i45he>`0CN#z^UdE=t!iiX{2m@p`sc|3p
z*Ztj8J2>^B~ELo
zKyKA%Z@#65#%m&EhG0K$ktT^DHMi+yKTT=o!=BmVC4AgOj7dnZJhE?38IX49oJN~U9EskRVp`J`L62ZLD=}XlnQ{0smgWuLq=5_<3>Cm&bIHT8iL5_KD8*$e&imS}7#5JPqLqT`D7qElq9`=z#;8YCTRe
zYok`YuWQ5AkE9Bxq0}e~!m-ta52@&B*U@{2Y#)3kA(qB(7YNuXxr*EzA%UKWA81X1
z#-2wq^CE+$<4;ka`@p<5_BJVlUwWEe{At!rj&%s!AZDcg@a|R=0yJWX7L#NKJ;c?jhH!
zdnX%^EV>hUrS*7F_hQy=!i3v*4g8;l8}=W4?@NKByox}U=wlmC=-e|J4UESGg(_tJ
zz#7ytvNEq;Hv%~w8Qa`lux-pmu
z@yL5>>T0L|y3GMCeJ{lCmqM)$7wdh5hNH3nvy8FNY%D!#
zikN%){H_u<+?6gHuh7HYsekt8p(v>4rQ8Vvc%wG_Vx
zzp?1HYUeOy1qv&&|HDtV>Fs@%IV
z*$^Xpp!YgO&G<&;7wufy`c$u%f`ku7k(?&__o7BDt4$gBG5qrnD(9-Ig89CnvsNCC
zC`hp$kR>Rgvsl%@OS}lTACyQf9}$#w0DU43Ok$N1k!m+@{$4bO5J-tmetqadqfSI1
z3bEgsbp(ySr@!&p)KRL?m54W+Y52}pRZNnBkVJk}Sq+O^EnX7dR3F0pUD0F(cWr#R4Yxqt1V$;dI&(N#sJDXABnCNL#AJTb55(v9iR`1}E|6iU`ftjy
z{*q{ujJ4Hw!bu=ad}gtrNT^&nM$+b?ynf%>eg(O{^j*+fG>B)(uK)xDGrTw?>k=orGD8bAOx~WU$3g+
z$45-FW2auL`MA2;W
zM&j)q+x6Mxf`YST3A1n
zkaw6Mr7xAhHz+>x(5zXdpO#vs1-(m8V4Mp3vO}y6d2>#TBBRETs01fF@G6m|UKLLr
zJUlna=HJr5uqA5m8lfBlm^dqT%98kJegMbEGOdgFq|nRPgBQ<=pL`z9C>BE&a0Vtz
zm4u{9)-)zYW@Z|a7?e?w>t++oZc<%;NVUp;I^J^jX80Nk>0>X*`J`Q)=WFjj$88O*
zk!UCnkJ-TbBLsIBt;cd#zEZcRd0(g=XDLFBRBD9Dy?ISwZprylVk0<@Zg%RrwBe>Q
zg(YYe{K_%}1YF4y`ITd^VsGgyp3%JBe)SlH%L}>j9=1}bW-a5ZLd5SFXhj19xF{jM
z8?(H52x3e1(b3oAuZTBFQ$Bs%cBtz%YQ8-m=}FgUhT)%kz6W89U3g(?ym2n>==A(O
zrR7IMcZL!34_+bl&J``B4ubw|PPR`DK2$YT@TjjC<*81@~6iU*%^hyi6jq>OBHn%eK3=;sp{(@3g4h12AJ62)snt+upU
z&J!(aLqw9^6n5XKNhtN7yyg9Hl2ra;8AT+pt{RsZMtK}jL&_b?^XhAK`A2U2NN!-m
ztmrskrM}?h1erQ}epStkRxu5!F>`L!epQdYUveau9T&)R{IcFOZ=b-6ESkSLy^SsC
z`aKKoa2UJOnd~ykZmSE0eS6c2au~F*P5#n$6QB;>AK>(dLi>%07N-wm*u`oJ@>@gP(=QgVYBhJKb_
zUr_XKqIlHC$-UvF?)zw0|Bdyw4V$2{Jp-AO>K6QvhQbA0_oSsLDR^0JNgz2OKVdYx
z_-!HD>)M6!W}6X9NO_Cqk^lT=ghj<4K-en+9Ibc^XlqX<9Bz_4fgFA~)W+;P(Fyo)
zdn5gWq8+raqQh@v#r;UGx0j@aCR9Gbv{j9{vN$cLNp&q4R&6&J}Ad~Op
zd2rCt`zf&!#Oql9M$zIvoEB>5Gx!-66-AkhZ4thodS|5W(XE<20X|+L*+^1h~o)YWu(oH~cB_X%f|?5(<#T;h?b~4h$fwF`78M2}Kzz
zZxXDYk;V5$>tk!Zg*m=jYty6e9*fKdMG)e7lVZ)sk@I5I%oo
zK+qVLcJPbB9qjia73yeddb9br(T5oWT!MU)T>s6$8)%~WKvL`aq-_a
z=#d+m*fDpX&gx|Tc+(!Maxv``FO=pc1Jl}wkkUvpq-6C=gc*l1V{=^ZO}lK=mS*yp
zh~)c1Ojr>Ip;rGQajR;bxC=u<-l&MyL^5ZIwM!;G`~nwdDd!0g?E38iZ7#E%-5?=H
z7+vM$EO#K+M#zWRhz+{+qsKs|O2j>K}FRD?pIK!fdq
zb0Nji(fz#Q(;vX|*%Q^d&z~9tkf(P#-?X8T97Edfw##q9EAd}$^inTizxMG`L;4D}
z3B~Yxjj)D@U#{Ae19pg@vLgOQvj?HXxYg@^WA8*fi){d`T;zu8%ePNo6D5#|a-W(C
z{BMq;NA(0fy#~lHZ?{c4jA+ZL{Fg(RlqM|~5&6pjmQGIe?C;5HBPkr+;(ja7|7zsE
zjZPirdm}sUDo}&1M}=i#6MKKpDjU#3`>|M+I(pVJXBWr$bu125Z0#a%`j#?ONgFro
z-;{&%{MJM5H#s}RE66L|H$6b|*zysT?L%lkw3(44xbXJ^R!qq8n4CA26Ic9TpBObv
zJzJ1Z*cg0u_ujyznip{e{xgbX7pX3Rd~QR4!1SCfd9yrk=Vs{M<0jJ!o4pLJ6pC9@
zWO!FB|4fK*_2YImqD%V)Z>BcY`-_JU^=|L482|8UB>z^YV~Bk%
z>F+AVv-tTaynXS_R1UJ}jvWbSMH9Kz-^Ibro*tzNg-d#H
z;yGA7g67n;#xY@O{Bwi7v$hPb+ekwwy~<`NSiKx|^>topb#n9|5CTXTaN@~W)xuD+
z`96GPg#DJ1)9Tt)&$yd*PykeyO<%Cns^Q|t!=okuB$w
zA$l`=EocWJ0=Z9iFv$4veuc7H-CfdT3suIem+XEP_>U8QYO`moQhfZZszBnf{JRTU
zh-_fMcJYDQ6@uQ{YrU}-`mSv9G>O5t-cO%D{}>>@DSD*npz-Fp2>#c&<2P##?hkKQ
zy*F>BFTUaA^0?74#>qX1>CTJl=5a8%$#0|A#LJ)-*1<^pzV6lt(kyD98KWx%aM0OI
zNtS~+ruRC}`v!qR<^&^hfmdTjL|pYj&Bg9r-hOmG422wUCd$D)jzoIouhX|xBa-gt
z)5-VXCH0``gl-B8^aeE3)>g8z#w>Scn%oOxfC8n^-GN|ZIFyM5B|Q9jlrpx^-)P0`
z2-f;2(1kDnjMFlXIzPh82mT^76gr{0AugWIMtasf5@l5;zSe2#D6^x5dJOgDWmvz&
z`BM@Qfkkqd2g1_B!Qn%Bq?W3s8s0B`R%6|V_2yw~1YwYsB0|oVq&J;zm^AG7^Tui7
zGnOt%kY*zUx>t_=gGalWj11cW_fpHam?nX0El(J>k3az2PzZ$ykS^%*eK%cRYk2Ds
zURkWgMVK&?T^xlq5A!?lx|G4hz8eIhIw;mpTD`{gQNhjv1lbaiOA&KZrR5jik|QQS
zOR7Y?1V8xC`(;4s$(5$|bG5Lc_Ycf|m3ifR$Nv-TA&N
zMb|q;bFC(;QB4-OZ)EP%ao>cC&!5DDCUz;nIfFtNc2!y2*2&w{IvzRp)@b^z#w(D3Hw9uVi+b
z+?4nK$czV#rTv+Ij!#)H{FSoKy;}E={CB{!^v{%eJk!VfD=}T`C4a-8S?(b$e19g!
zBca>Ze&y2ZJ72&0XD&OE@S6Uw^!NW^7okZ*NM4cmw?)4!RBAcN=Hi;w{6?#Y3BjP0
z5C!A(Cy5B|pUuiIKUF_~sVzF%r#euQbI|2mUA&?vpuHLq@Wo9H1#!&3c+Ojl<|fak
z@2B_B>`?}@64?(+?J5H=k+KyIBqTmJuY7j<1F!>t5#@N!lE83HDzkxT1~wSyR}d-7
z*!BL6FR4+dMv4+V2fi|TwGg=b`O~DwitFNiJLbGe&cr{5tLavVI2q~PN)B?q;ssWJ
zxg|&R95B^X__=67Rf`Epb;PRP(jGG9C6P=~%^=jquB6_Ttfx%mWpSDj5gpcgDB@VU
z=<=j5XUAcoGseg(1zVG$fz_7$(3HPJ3C%pKxTfV?nW$
z%l7GEVGnHGKg$Ilvyf?fSF^dHbjI$%CuS_anD7VSK*ahunIu%bSxk$o?)tvQ&iB!W
z?Wx;0yPYpw<+hLChvZ(hyghY&Q_D(c>Yq@io@1PZ1VVf^boHP`f&R*w$zHpY
zcLJ}L&-`{(4&GN6>VH)PSzhMaqbQsJ4v!cgh6i8MKBYPoi$6^)9Kor2H9xP|NL2m<
z=mXxGAz$Yw%rF#uZ3%OgBJxpySHN9NYYe@W`ME|_I!1H7-XCvV|CxBIWW2jqi1Vv_
zD{;oKQM_E!p5veRcB8-Z(UW_I=sHG4$FVR}#7NCY=Hr9@8f77jtpw}S{I=&fsrw&l
zS6V~3)7L1VM=!0IEFAXUg;wdHE
z_Y|yCuam1siHy%$8U{z9og-U>?JYCWS#T@OO*V_);Xb?=3RL?tmV;no|#ce#e^XeI1o2|K5V>XelG75B}&X3bOoAQ0q#4
zzw%n^W*{HG{mBWAD)N==_d~D}I19?LK>uwKUtVwFx5M%kAiX_C(!a5roPGL${TUCA
zt^6mqQcvV9M;6Q1&h55a)@hmcoP9>;;Z9tCIr6%2?k$wEV#?ESDy{lx%ETR+tgDsG
zs0P
zs|P;)-9fG?!bOi5b+leEl}G&*7-hp`lknJYdw;&|#7p|tvRX7UTP3FrNMF6jSoC6+
zeG7Rr6}u?^rW+0@zr=DvJ`G%OBKz(CoD2@CUmZ=ANi$wJEOEa#O7|K&(Ki}DJPhF?
z^Y;0?^P7tMLRM(ZogB8vvJGPmXWRcB#yeB#CaCrNNR+4Ip@n6F?-7R3t@y*x{68U(
z54S)(zt*{^B=rGTTP(U8kW>j{jtN1Xiv4V)q=L^RknZ!+hrl*mt&(-21vUi|#T-gZ
z!X5bp5Crg%oYejD|EUFGqX6eeFzHKx){*^phku%-t}sA0vee7*4_K?J8Y*EGCPxfI
zf?ApBSO5L33JV)#rf(~4P5Yl`
z!7?Hk@?&4$VU|aWCEij9<%20+7Nh3>
z-eq_nN@<$<%H#h_!FCz|*Fo3zLc;O-h0xz4L>T!|$ao+w-RY{*TM}Mt&6+*or-e{<
ziwvRh^FCAWOQz%UmeTfv+$1AIP5EBuy9tDS_M76X6REz~(a&)!Un0g4sB_
z9Q`nH*PwoauCTmD0@TG(k?l)o?9Z294*(N(XvfO42A!4PQQbrDTk#Y)
z4s^<%wPqh)C>(MLQk-y92>8(yP;QDZC$`r(ZD~0(RJ<8GS06*UOerp-#X2>^hE?nn
zdwxUCuRsX&N*0xn0`u^)5Lb@FxO`^*1jKZ)&gHY0@>1zBc?tc+!vu2{GD4Pz53$-v
zlDb#rs**fw=ZUZ+TH@aC4#-gL!~$7I!~gJLN1`Dd;b6$V({HzuYAs50;?Sp~TMvZo
zASs-S;fhTPsMv9O`;f4dY0GdNH$SOgcsaVf{WkYG9puH!pP%%h~q}#Bg?y
z6QHTga_=rAt5~-U=>-3NcAX_G3IU7zxZe-(BI}>C{BcGGPnfY|(5vOe6RW?b?hE#R
zxxsNZ!xp&8l>~k;Yp4UJD=qEJhtLvZj=J01LBI0V}uaxYX@i=VC8fwk9-uy7;
zU7gzK`MBc0_s1$%uB&6w5oecJ0{;KcfA$2}itdCGF?Yr!f<^_j1n)VVPsN|P%-XAy
zlfC59J81TN&V5@bvxC$3#kX7B56+(3+(u+}@z_7jzSVgT8o&IeUpKq{+q3Lj%J)bg
zmlfYPAPS(8jQIoLQnnd>S9V{IC_uzJCpul5YhQEW%2_&5uHxnFbXBhX{#l3r@&C)q
zH=w6GfzUDhImH&)K6j6T>3FeWEO8*J)zVItGWoNCtq5)j-mZV5-|y$%8Wo>@@VvM`
zA+63_ySkXui$62-%G0Qsd)J=xXKh~RT79>L-(B=SJ5lr3i8r-`=gCn}^<}RA*X{q!
zh0-Eq0BB2(rOc=mHS%>|^tQjTpn#zsWnFvvEo0%ajO+dB6ROUoDc{z-D4DKo-d0Ox
z;j@07ZKkTe<#(+~ZB?xxcD#+KnuHYOe1ktT72lta*SXg4J&`cv+)pDV>QQ7HYB>`>
zm_7DgeCw4By~KxfzcTA^?d?%Y*$-qxuhHg0{~j59Fh$x
zm*M*Tk(z7meG)2xW3zk>3$jk%3E5q9#ro@_fo+kzkbd{vy4s
za(FUPiwz%4_GL!5m4K6f#2g~whJ{d#HZ8HMu3jFA$Fs~kmxbbr1^0Ui;QmsO0J6}5
zD#t*C=4hz1;I(lF-=83=Xkn1Qql6d0$)MZpkfNR!a#L-~o#^Ic{S8YMqZGuotC|!0
zmMDES2=!gu_GUHee5
zAkHNq9W<(MJAZg$$R{9o=$I9VX>v4`XKa^OHcaBv*}froa!XdKv%giG
zz`1vu`1A&^Q4PSK3eD8wNgL$9RN`MQx^l^C%A(CWvxz`mR8v`vOUi?W@9`VnlGl+2
zN*2WiRqMCIB?~pVK(KAfh7YZR|d$?Y=!u-+RCQ!u#GE!!Z_vn(kVx
zz4uyk{^xJ51sdE;POz!LCudtzgsD2QRK~_RL<~Pxi`0mp^LQQvx*pPUJ*v_=^Kw*}
zBO#{?W4jaYUI{6V=m|enVvaL`=^;oqj?!cT@j!=Gq5Sbuz3B-ySxR%*gW6^3HxP&B
zfGxgoUYt-l26!?z#`dr>7IXIsu?h>EB*!gyz&4;|n)+)$@F%oE;u($BLG689B%~Sc
zH8~Dd0i#W(yt`HNnBcUY7o;!LZqHo57HJUADR}uh5;|3%h${HT(l`)I&s#+2L4SF<
ziU|)?`C7vY%qd^QpAEbvjJD9Bv2RyQ1Bb1j_Cgt9^|s8vffW2sJwHf)Jbe24KmsCY
zqOxt#wvdzbj`s!$->qST&-W+7dr_S$jy*AT`Fr-~b^cmmnHG04ln6S({#>{C2i2^k
z&()1eY?_QY>A-~TCk4h)(X(k4t^@|8&%O#$(TCHLJ>H*t?bl|8yvHe)X>fFHyGFzI
z)NJCOgIKQCtg%E*^b?&+lXo)9sBUhWO4LR_v0~QL7%Qj#%JV_`TsK)8_PObR%%n9*
z1-se9)%fJ2UZTHxI7OPb^K1mtp9Q0)}Rm*7I7xNM$YcSXP~AL59Ek
zl0KAk@>Klz>Qt6JF6oIZcvq#Y^8@Ac
zm=Zoeb$U|nz)5(?7&+#aNcbZ5Yk9QmrzkAjKJsTXey!d8iCY=tS?PXUm+8-@<=H#y
z>jf~aJ1_-@_t`@i&D-|x=7qb7R6nm$^(PnW-Ulv*`OC$AHZ3zSj+QuisJ7{*heG$8
zKmE54&+86e$9Q8l25-{S1KuKqmU6>-?HAGqg=GQOk;S
z-uFzJi#+U2oB`bupLsfOa|3lk+m?T0tebAq5DKl<7iOF-(WFa9?=#zPgp_5Mh?Xuj
zz^tMD3xa2EfW{st2Dg#cy$SyzxOo)9pR6JIkVL}3m1dc}wk<)1#sipJQD5+(p
zjB7qHzLCKljW!#qL@*16Pn?#l6x_0ct8({bw2&sSVNK
zeq|Sj+1H3V$r~QthMNoyc?p(t3}1vMmaaMx#iP(MsYVN1A%&)HP;iJvU!I_3{3U{S
zR?;3Gc!}EC!Aw`4uX1H-n8ou>>J`F^Lbjo8+6t%7w>TK(3Akfkv=jOHYt=<^CLBN;
zNqd@+;HyfviE+hHmei#E2nu-Fvmt+DZv1eP%>tzGQ%fBPn%+^$cYzZmIm(i~sVf~P
z^$_vFJa8x{azc(Jn+btCZ3E}75EOLgjL!y`hQ6E_vw>Xy9gMBDSRO8iiXc`CZxDG9
zzw6E`W2Ip&089KxB~?0}zd&BOi#LOrO$_!^;3g`H92l_3YdzKhHq(#tI}M(G*)>Luqc+@Bo|s<2-lb#0M!wI2SgV15?MK=>`7kn-VGRwaG*l)7;~t4jkF7W
ztLlo*BpQ%zINx0kqIa8%oY>I#ptH!7xt(y=elFY2kScU-b(h%IPt%^V30Wv=#xB*5
z$;fFcx=S%qIJR9}U-9!P5V*
z3NFkd69==Y)XO|_0nPZCuZg6u{bi&w)JM<*M94t`d9A5iA1$H5@l*kZFG0X&Rqm+;
zMbL4HsPsPQ!;{3nZ=Ry_A&W**EHtmT{)4yk+U!0hQzs!jcezyW^I(LXgV(H@D~)zW
zXLE$}6Sud#Q!Cleip*rsAThZnJqNTb3aO@Xbq&Bqj${cE9k5&5Mjv^e5R<~gBrazwR?=1J^o>$ha6JoKU_>|A)EC1pbF$E4Bb{Sa
ztE4pbSXe)0+=yNT7jwjh&Ljzt5>ZgD=7Ay%D$<8rx4f5x1Lbezi>HDpLf>0UGJ~DV
z&F%IF@()5(k|7*>Wj@&i`otOe`W|4mN0Z{?7E5fe8LxEQJI9Se>TTJDKq4Ry#~MfF
ziwvFb5cr*XOwk9g5$5B>zJ9FkL-Dp#FJKk78^puSl)*sXGgqSS1}$@jCS@DrQm1>F
zbZXvU8Q^xdrBaEZ26yOWgo?0~;Sdvkz){EXEtrofPm;+4)5KyIJ~sBqgNPo}*Csj@
z>D)+~j9m3I5HcdK63?O36|W)W7y(sEF*Z?CMfk^D8aHLUU6}_7+ML?@kdNDr^Mh=I
znz!kxsM1fb>kErT%6=^H09p9?-Nt6yA3J_~aS%h&LdKQHEMAf*Z-@jDaJhV&50f!v
zHD^wt?{yYmbZoNN6NF*9ZemZpunP6EOk$B^4)=!b@6VVS!vjC)e_TNZS^7v_!_V%&
zlG=N%w5A-jzh1c6f_c-l=Jtd{AhwP*@~Nt^#^8LnY`-&n(V=5DjLwwI{1Se6WO+hT
zb?EijF~@uTe&wgaSf=_L#6R#gY3L1(Uy@}HUx|IC`Oyj~ZTXh=8*w6^Xz~6NW`Wc?
zvZ17n7K}&pvd}Rt6lr_u|BCLOlL3D4)0F<&TqV`ifSx646%{_h^a0fWIYVb2oU1z4
z10u3}m3Y|wm*?pZFTVN9W#vy($`rI`J|q)m7f=0D!hr?u38zZ&jwVCvI{}ax8Q1Ph
zhAhjeZh$u)zDrf(GaRbi8STa_xn5kI>ZL7p=bmx^WI@)kn|-ZMiYy;+#)oCN3zQex
zJEJ|Ao7dCcJ1`MU0M7WULaIsjH)(5q(qzjYw7-a_;JN_L_~B&yZrW#Uz$o_Z&5G|B
zt%z2@84una2+;mk0T`*@xHS7?f?H(;h#wRKQ1TT&i~*yvN3472yHurK)1f!+$~Uvj
zp4R|IMlVv2|4Th)`%8~C&{!NvMEBwL@i^c`3U$dnnb#E$h5zt5QF>k7DAeamjXt7Y
zjbt2v5sT)&BsJ|~GC((9uJMV@su9)p00Nj+#ny9y7i9b@mUkCq)pZu=x!ZvN#_BE*
zz(C)}W|ayXdN7w&z9Gq2y$E2YfdD4)rn=4y9e+F7%v=!u$h(UG#x?iO;H9$4JrbJL
z*gbcJ$n6^!0gU9h@>cQ8Tp)hJJM}=RVpac3ra%Cbzf*E(02tv6oRk5*DeYvf1p=6f
zPt&K>fDssV%LwR=kxl9X5OcYNxSsw0UH%^&~|G*t)^bv>A+Lw6m
z-b1P22`y3Pg&Uh8Owe9cb&SAzEQ^3RV_dOuY
zM_Xz8*~{zwdO^*PW$~B!+nJ24Y9z(pv{Iqulcq!$pWiE#(3_jwyX-YKOuZ2PLXw7J
zLcs_^3y;x~cJiJ}gM*@3n$ypNI55&qXtgg`WBJ9rmfbZP4>Un$ebgcsW`fu%^y70_+d$0yvYSmSNd)>
z7?a%JfJ0o()YEj=v_J%=b~RG}8N7i;nmW59EBkXP3He@=X0oep6wMHy3RuBJD~5_R
zvzOHxm*nbrvV^FCppljO8v?cz@D#N%R9iJ
zTYu$V2M5jz5MCRM$C49_ol|38t1~3OBwrCKOzseZXOJvxv`0e$n>)ChA7|ShMZRAGqQ46LojJ^v-VauA?kY1w_$I_XUM3Bkhx4N9PT)QYLEC_&Vz13okEI)mv68
zZr!19AKu(h%z5Se#yKtBvFM``-=iN-v{Q|HMeeq74RJ9{D>yUY(U(tV7Y<_Gni4y<
zGQ^V;V&DP?K2p3k>dEu4O0AX%j2ZIrLAFZHl4IX#YP&2S?k(P{9SPV}!nPWecue-?
zOIvh0%$oX;K1v?Tsaf*2D;;G#NTC}U=AFQ`1y)+obe47K`^?v;zSo6*%R_r|ohpXPK(t>bB{cEp-K
zXml(TPAv}!L8TS;n93~*r8cn;1B9I&SAf?yzhRa;wj6YaUk_8|8mrix%;JxcenVT{02&v4T`Uf)iYs@
z>4@bzDYeBm8coJuH_B*Cozp|JITq@i2sly2rz5M>@yNsd#js)pyyLLSuWs9LzP1gy
zK@=OUaQ^+9IcVW|IXb%juV&%lc!km-G)rYwAU{|-X!QIWNEWe4J=ZX`)%
zAh;l}00s*|aH_+NA-M#&m28HQg&s4U
zYQ(R{Fsr#v{>g=sRD^;t!ig~>9EzW7hhywDD^V}AO>x6%+zT|#K9BOJyPh%_!61vR;>0C1BS%NRch?s~ml?~v$m`U4mg;ST?m`u!j6-NJNd*U#9=Wxb9eLtmM@5-Htb?$?1`vVvspoiQEEp`t8&Es$Uao*_DtDLHC+kW1H&0eEL`$y#n(nR
z0W}_$4v;F24iPlqQCs@aXVR9JdY7K7he*kHV#{09gkHB&FMF0W?#OcoA1jM{R;--3>_HZec@5W0tXAX}OcLyh_h2CDMCIG9s6uXP`kqn6i;x0}%KnaP;P
z9YAY0iGO^srJ)--{=gee=)3H;eicISs>9+h|GhdynB!7xzt*Q^61&EZpn5!6!?Vn`E&m
zJ56YxOEKYJ8WWNnLvLpG;dXdQT^EVQ^;;AA(jADr$~^x#my)&Lp=Oi=%m-%ahd>$T
z)L1NAWXt6(5x@l!&U1OOS1fbQiA>JJe|}r#SE?N2u2BDMe2q&_H#Osk`j^+K%KyYPB6ZlRO2(F|o-)FzX&mPu{9S4FdEZ_cW
z!+Rc05;2=WI)?O$IpRbGFB$7?X4u6iX+YTJ*8V~O2)j~~^m982#sm_&Zj=e@Br%Kb
zBN*h7H^_1`637FHcShsalP-*#|7uK@3j`WS{rPtKerNGn$1YPKMq{O876D>3OkuT$
zSnQZX`EVc>h|v^;Wvqc14K8c2aE&axUo&-IABfQcExp=-7!Bo9TmyHb#23c!(RVQY
z(?2GMoIZPmB7V%kSe@Fe7!UCn52A@z?(7SEshQbIZA%XI!z9twzxGDLo`*q(EWYTw
z>B3nf7mWae`6Nk}J;f)`zzaG|Rrc3ync}&UjaJOtLJ|MV*?$a~_51AKK;WWbP3*Xq
z5-jMVuNFXG9bO0&sz}*)gp>SrB>xA7z)ZePqZUGgCu>m-#Kla)H+5NhODlj|*Qnj{
za~RH<|nj&4|b
z!xR&P=QUj;W=CGWlRHzqde}iBfloFa9J|I&bA}5?mDOuB`Ze+=K#7#((u0!O;x6qd%PgukpWcN!Qk~0
zeC@Z!Uk`uJ&Mbewdv`eZe$D)EAf{IzfwPzY$mDzsGo+;MD0QaTe6o0R*DFsOMRxD{
zn*?1G%1DM%DGQ=^eT=HJhVMnC6gNPhhQ-v~*pMn3c|2AXscV@O%-0;MMkG#Z(A3TT
zaw;kWVH8ef9Q5TkJwLE_NkM`LTjmE;#S?G4eo@QRK6z~_LpqiwC5~?c{w#N&dHx@y
zvp>4{OtQ~EF$q`D#t-TGMZJ-&*EX;I!$lGzP+{}E)X+uqmUbm{>LPt{@%gL&nwc)D
z2E$8Q)%8_*0=Qv@zuvH6pqw^#s#)6M?bCFkyfTDVE(a8(J+6UE5rE2xh0aAmh*WEM
zUDFG|%EIL3u0glYFWui4v;Ckfh|AaXOF2c!kC~2n?zetBApNHOfi}_Rpu5BFrUGdc
zgUjc1QAE)h3)?e(?eBH%h^#|e`Y|ZK9Yu5CqO!Ds4n&7_wa8LuB9Vzeq4#YL0pZ5a
z+Y4p+wjgZRQ|~=>tuc_4D(Hx0<;7Tjt^c_KtOnEZy@u{ZlL3%&bF##rn
zvN3@AxD+v;nfU`NMkQ%1-piShlL;1_TQ?6og`=w8nOmc52e@3!{8wXV+ABwOcv}l1
zBy4LotR=LimXbeRkB2?yii>C=HVw&7QZTtjIiM5PPY^R6_q%Jk%M#AUf4ZiS@3_tI
zT9G1QizqpQD}Xv-$P$Zu2!1qC+qp1Bp&8|NzcJ#@TQi$C{J5q4j~CY7xDuB4wplz=
zd3qu!8blK@Q^`I!;gSfGlHbcSO|!>afdSlm
zd5uQA3Xd6smGtFNi4i5sNQW`EjXv{YdRCb?W^^r^W-I(P?YN*mjRvhP2j=)}v#y@^
z+V6<8KrHj=COb{t%9i&G)G6a+Mh|uIElKJ$kV7~jjN#Ramg4^J;~@URmt``!)F~@=H|SpE*3=DPZ4^u3FL=5<5n$`4pzn<
zb_7C-6g@A``qTP>L&biH;T2VMw<5BYW4{~u1T@=o`Em>c$QY9M)5xkI9{`_?@`nH@
z8kgvqpbG$|jdQyJD4Nv*5kS%Ut_i1&_p!e*Zw(4cweWZgBg<8M)BVaX(N*A=J_FtJKuIQ};#+n29^i6t5k21W62!z^8)Q
zX?~xCjyp5UbtlmRq-Qr1ITQL3iMYPeEC)q-Ot(fdlK9%#X(Qb1@hEt`Rb1i=Rz7w<
zZ|k%WapG;EH&h6|hiA;EMih;B;I8t<+~Rf@2NK^|lEsBHmMyn-#Nn=PA8Y=d9OnQc
zPMs0I&jmdf({`P2C&$g)#R*(BCcLuztncNC465u({r^-#{L9Temmc1HrJT|mk}cqK
zOXcRq>0J&UKZGv(xc8gsiDlu`?MpLBa5IO9DQypUJRu<_pg`=V3<+r0SbbTQ4#kbA
zGA+9&&zE~#6DjXnZ?>(9vPtp}Dvc~So8?3iYYwo~wtF~@#B9z5voEHB1D_``qXtMV
zt_a5+YDM|eC<#I(WexEaIn&AoGHGX~1|>VmgYQfExK}^2RB)pxG80$FYlCcK&$tshkq(ZJO4Zy@50
z3mrXey9IrrqjvOyKdqwx+lf@(lp?
zxbPWDhBg#Opt6^@n0>)v2sFsJ5
z`MYU{+V9<&A}3BNz87er9|5Xm@b1Ks_GtxRr0R0Z_{Su-iY=g8Dh9ZORGb+DMy0Kn
zYtDBwN=1h~^d2_wLK(S>e*^u48^rE2D;mS7OFi|TO}xv0vJcg@1K(TfnLs2qhtg>+P;T#X
zbW3@#MrM#LZAs}OQbF&vuL_#=$tF@Z$vsJrH6W6Xf1$>nS8!yW_^Bp+G~GU=?8rb=
zr&o${of+&CNKdu}i*`yRzuBo}-wJjBiD3;Vc_z8M`9PFnz+r@EOw`febr56ZSz4LB
zIT1`Q1>1%SI7(kj9T};80t-09YLck;IUm=nB6xlF66U0wxI`KV#OhOfbTu(l;_KKS
z73m}dCPU1t<>BMT15|N=`XV>&qp3y5WrG2a5*K!d?4<6gq*K==O7AnzwEiLGzj>}o
zl>8TUWErGR+fsyKTN1B{HU?k?O3K+MoPwgc&gmAil<0}bEJs1cs_Q0}aB
zBWYf}NHNyn>
zFQm1au7U&s>d~_zL18!Z`y{Bq#9Nk?E_9?HJJ?e^m(wGJJZIi1sPrL_4oKRir~j-zIJ)U~b(%T?=P}pRUp8tL46KBMhfV_y$0|Lwui3qaq9W%Zippk(>gjX0hTq+xdKD28(ElYp&4Pp(Dglk8-A
zcY4P6+Ddz=no)O_=P~*GlKF4Ne77E7|0lZqEjH^X6^8bQ%3@Y4p4oWAqBQ`SiKRZ}
zxlRj^nUf_sNPyEkb$TaF1F)DI8ILW#3ew1gUy%ej&CRT~1tfrYMrs`bz$bF$D*$|Q
zip3ht8($!vM9hN#@G0rKV|syqGG5aEpLAJG*7EH}ScqchoqhpwCL9wnRC=v5_f#*v
z+*92`CK^$`1>dS2Hhy}FTV6f
zB?qOAulu>Fb>Sy4E7l=b`i^5iV_C*j>qtE2x|fYS9UgwRqzyjbGw1Yw_|@!PmSn{w
zaz#=>@tY067XW|?(jxE=zToZcX+y_xiv{<$Z2UV1kB($Wsyq4qNb6)rt5a1-wmgzt
zYp$hn-{`u{J}=(dQ3+D*k*Kq;YY!2ngxlK~I3%JA+{DyO_AyVJxK30EuattRm=mTW
z3Rgg^7PJb)e9$9NmR40}a@{9uBP++si}%6K&rh!aexz(lPe?k<=hlGC#%YQ156h4A
zwm)_!vhpWR=*vox*4|a_W%K|Cni#>35ERApI3v@^>BQbWRunp!``o<8B}GsuDqeVW
zU?5zN`c@&N&Z+i{J>OzD{DgRB%4s#`VWWZYX`8+~(|h_#=Y5OmkDYXCCY$o^Uvpf&
zy=BTMqrlkAH^N|UR$bO8b{&r!qxs5RH}mwXV*%!Hca^_HE7$CC*-jC6g#8lyLX=_>?vDa`AYMZoH-VNFT%A_NG$
z_I{YCIcCuxRG**k7)mRds}`Yx5=p3CbAJ$lT}b!g;Z8
zDrEuzM_eWHdv!x+V)qvJ+JzdlQS&2FSqZ|$lO||y7GZXEE2bGPp=cHenLiVhU{^k<
zeV8QV4jh^-h|Wf9*mzs>G)ElpuD6$yI((b*)H{7IaMfdW>C*EokJ*=2r`WU)IeY5T
zrFtEglaI0ON$I%*N|l@YN5jMo25KZMA5+?
zZ@}-8FK7o3=@iz`PB3Y2Um;vrHWv%3B}$K3Q1P#IDVpP{83DVANQL%F$rII`ql_T
zwAoQ*a3Q~P1X(>K$@HEC#HbWS64Eu(D}Z7q87UAv8lVKddX;@tF@$%6246haerNc}
z>Y)4qd)!Arcw~M23jp%%(Yt!%)aI|ot|pQO(6+_oPpWgg-*4hb-#S5~8?a;bg>Cq**fQL2n8_4`Ie%|#>3--9Q^*>nZsIA+^V3WF?P=kDz@8p&$`u3E>I1UO@g2uL-
zg}wpG=KE&$pL4F$%b#=Zvp*=N(~^w~;_RbY_#k@;`!9))pGx)RsDZQY8{saaPA9yp
zXv9`TbV=;^vMZ@uDfa*+d
z=&!$r*C+td`Fg!uD8xbGO^88KDQd`gr3;BX-gwJqnky2Y3)`vjU@`|^i%jcaz)QMX
z8&5(6mm1@E`5r_g4TonoZ;MgeMWKr!5)pVhd1(I)&OX&_o|1yXz%m
z40iP&)*tC?pT^jPvq}F#4kjEw?8)XKLS{$c8xVOP#&U$+S@>7p*|oV{wP>v#m|4Fw
z%++m_r;
zKIyMC!KG7pEUT3m_xzQX=SmET|E#gC(%_6&=0tvlZ#(Zas~$@V81lN5TG%OS$KY*!
zmYJ*?Jg%5mgq&AjhVS@kGVUic>Y0u+W23%KqhwIV$XewiDN4;ZsUdC9;Q}s`7zmBX
z=SrUKoW-3*p-+^0+D8pyeY=<9pJ1R^6e&;9a31~N)(=IGU&O0@IaS?GE=#%7(jV?e
z^sF?$flU8ILTU;w$!naRSP{NE@W_Y!bR{@6@RUIVJVl#Kjykr2bmBYf+UoEN%Axa?
z@go`dNRDbd?226AsvJuWPyvJjU-4n)SQ`Pu$d!eyt+*bkS3
zhKJRnO)8|f!l~#^onk`c><%ZJ-SYya89U@Y<+yJN~)4-#plYs6A)ZY
z7`$LPNfa6Q>X$bnW&M{7>K*i-#Y9iXRFhZfJNP~eR`)^^#bQcUi~rwK!Gfh^D#AEZ
z$C8KuNBjXU>Wf#tY)-_?cMr)rl=$QMB%;BS)>mkVRYzBVIPNnL$3gyexc48;DiRh)
zd4xdKd1nUyN=lV>r3n682H@3?-$4DYmIdEzMvV;VbP4V)*MV1<)=;gtGQxdV(Z7KL
z44AJphK;LRN?JW;Qqs{e_N$RMkSGvfQj5fEROO#!=(f!akh?nuZ0QQT*M^Z5C$O{A
zAAd!1|8SWPLL&2(QmD=W0{0@3`+KJGpXOEnAxZqF()WL3#rQqD3lO-mNvv~)0D-&L
zwDQlT^WQ)$KuCM*?^A(tmAn)?4?er@deLe7v%WD6ZnR3*Js^UbFTkOhbT~`qi{#Y|
z`<+dieP6L)**jW#ubj@-vypYS(G#LpJ5Z3m)D;_HKA#6UVVh(OZC-XzRSz94T&MX3
zYTw<{^6q#yb)Ud*%I}-V-SZq0C)n&jq2eE_EpA`hl2hc>EG4YfPd^4qAnu&JT(lP`
zWz8&m9jM&+Wcr|fqZ4^TPW*~x`_fZ|5rMJiZ7<^pX0@rOG+7Vh$Y03YRZRAQumwB$nsXQef3JA;`|$fpbw1I%)}ovdOQr|PU1%;l
z`tSGehwqigQfg1)Ae!*)lz*3Rt)9?5v53x-(aC!w5cCilJM2MJlJctmU`w)$Piv
zsf7$$ks>ovRv+F@R1$pY;meMONXF-t2+Am;iS|ja>kn>I&T`YtVV7t`tZ&u{6QHP$
zw40nP1_dgW#hVZ5j+4tlhH5W8?t-j6Vw#tV-=LlSi2LZ
z1Xxex6kgPpKYA+GZabPJ(!Y{*{gq8P)5D0nzxXo2=zmc6-fG&mtI*UDO(oIpy!}Ca
zNBOkq4;CTlA99<@6qmcsvAic?elfvHj^z_3Q
zgY?GO8?Y6vJ;Q)VB^&wJyT?KU{1wpDo=!Yor~O-=AFkaS*bg>w9_>V?uCcIe1^n=?
zArdLHh^OF+gex9MX%pFEKcC#WZ6BBKFgJOd{flZ8uMwHK8}yLc=iyG%wDt4@!i1OM
z>Y>b9(N-L^gA>EBN;iihvQ5`pOxf%PC?2>$7MIt|=I2k8Z5lf)?+{*eSges!E7??F
zddlN82yPZ=x74yPfhN<4s)pK0TjT?7wQiiThgq!3TkSCcE1fbry^Pk(&{@fHjN@aH
zmZdZtztLS{4Yu0)Yl3loFKnGA1Qd+PV&K$kT;h~taeX7Tu|((Q0SE(|L7FtBkZBr^
zTk@`|Q}~=#NTa%mOA0=318||I-PV4jMWr(Qw6{A48|nDC=@{JJIeAFn;SBcSM6dH|
z(RO4H`Ooq5Zv$^3pRf$Y4O`%J6<}^n_(lFmpsY@0po-h9llq3Bg)v$&UFcoDC&X`m
z*Snrk_+98-&nWC0$A8zme82oNv#J_YyOVQ`xV`e$KTmf4%u^jtpUqG)V009W2@!Iv
zI2WZ9(@sVV5q)}5o<>pe8c~%wRN~Qwy@{4?fF*&?wVsmrC*O>-Rl@`5gr8^P&K
z_A@xGDrt#{-Si&&k4#pInN3GFPd7r$`EYc@%xTU^KF&4CqAEfaS)7RCLK*nM&4;RZ
zbg*6cvJhT6&t9|IJhW7WnfAvc)tfqrhb%|+X|J@|;}U;eXm2CEipW0G+nD9qEs`wS5{fiuBP4JvK2;tuq30X?@-g*4m`rn2)
z{F{IYy?Dk^NbwzX#okBXdwsT!icc>d!^&TYi8uQ}Nzm6thMOk#HLaj--3R?8g2j}(
zF$OontfKp&k%MpTRHry&7)o9HjK?2p4ym?-+}3>K$JTd`PsowiMPUp3u_ZU;ry<{$bm0g6Ni{`YlEM5loCDsVwZe
zDdE<9q`c%*Mw^O;6CZ@ex61iZETy=N4Unm@@4A(FU4_>Vp=LOK`^SYY=ljIY&(xX}zR+c`
zWqW5lADO)PiSo$h;=2VI=iqf9326ocM7_
z++G%+bqIBk;x-&0gBF0gpsTc$6>0S|SD|ea-(X
zCHKE7`B3Jfw>FH)L;+*JhxfNGn1z2RkHN+`LZp`KEw6m5#o?{GbMGNug1U|`i{)cl
zfC;)Gh@daK1Qkg%B63T%pg@k8;-))NNGFV72@{95AE7WDz^0jFO~k%*AL#43lXZNK
zN)c2M$RL+aldp2AH|sfKDw7twQ3UcS9{ADZ-tV-XixEsw`3u(;Z)bhJcKx%F90ONy
z?q}L%1rgO7G~$yS*D$nIoKIy{2^!uA9hpHqX4?>W(RlIb1bF3og0D`FstHP!i}AIF
z3&ANT|4v@0_7a1Z`9@h_r^%NTV=hE?GMr7%_*N*gM|F86p~z@*h%5O)7HMsPaSPeJ
zuAe{;2DfN#Yhg)o41sfX!T%kf<>PdJWB_p#6{s9Ig<>r8^iuRmE_q*Rn@RFJhB7ZY
zI};swa+5p}^U=1o34dyT_c@HgYEO2^3zn_uv!?f9w1m>2*QSW{<=hjhIHE$WH720OkG63?x!7>X_wM+K-|NzB_1;x9~Uwt7B4*3rzBJXcH~#grImUS
zuVo&kkfs~`$uC&VBc1fAAhgYBMxsXDk{0({Z!+mfw&;PztS3S^DZQ5L;OX=2;2rkA
zKA(S-NG5z{@=)vCB_GA_5-j&xBZWzlde73xkF7f4&2nh#NKE;aYN{Q4Cj~@B`7AK6^+#_)1UZI$L
z;-q4_W3R-04(l;o>*UghBm2*5%ew(wb$|-$FIC!2%vlbz;#?$Q#IkT$ZBpZp3Ov^;
zB)F{ZryLlQ))CD`$ru|OtCFd4O=2Wu{92CbprFQ7%R~uOm`#b-G)G0$nDTB;4;7o1
zp1NA@ARU;jlaHaYNcB~Sb78_ft$hsT=CxE+x?B%Zk!!NNC%SwdYHcDJIiV>5I=N$$
z0qUGdnyTW&o-!$rpv6*|PAx<$YJ;K(Z3$9e$A0=>c2^EM|5vn}-E0R(%
zVFE1@M_*s7q*ET2Q$JM5czG*YN16fHg1s5Yz6}4O1ez%Y)8S(BNiY}m@IR^Wq*gO@
z;Yr*1KcJp;@u=G&@k@`
znVT5^7j1T;gZ(vtj(55Sn!xBX(EXKkrYrx+T^on!+`Ph&`H1&OJIZrIIEjaDvs+R<
z(aY;nmE^256~LuE^AaLPxwv}pW5+lzknB+5@(U!J;#J+xU!(eea?U>q@P8xJ{ik6+
zE~D|?5ic%YOveHP9`VFHW4^ikon=4*c=f9UaPMta{=kU^bp*;W!~DA?M8;S8L2o($BEk(Qmwt~Q=cX70UJeMtB(e6`RGK7(5PZ#a+4%v3&d
zWHW`s{)!C!8~Booa#q&@-RRavGYqTFF#a^bpGHFBq9
zMdhcbUI#SS^zub7Xte)WR{a+y@~5EvVPaYI?snlU*xH0L>(k3SryxlDrgCy?7Ts0c
zR`P`b|2{YNUhj_Pzsu$Wnb56ULJNA+f-0z$!oykv-eyHSaif+LCYwaDi0#+olPWrb
z{1}d2d36!}Z5=Wc#I(=@*UOT4bEJTg3YCN3yW7>fg49yT`
z3{IA}O}lov3*Zl?XDjDEUo6RQvSJ;%x$$QK?FD;sk=;n!S7PoOxFs&DbZa7A7$Hhx
zrZ-N)rXhioi4O}H0z;^0akgTE2qat_Jh%xJ{Ni8v`Zi0L^LYfHx>%C5Y}uH7p|CX&
zpejg|u1sty<$a=@e8}>tu|T;pSa@G@Ang~FSE=sj<~eNT=}8MlVQ9*tq1}-O?Ylux
zA38GVz=p$AmhQ*xeO=zNDfyW^-o&rF#ECP&l3`$1Aimk+d&u
z`^y|k+*+CenP=f<;l!L=ihF!S(=GLweMObAzMsIbxwjc-*3r>BYseUTY-v~@c+J>c
zQFGp*rXvZR)g~B5ip<*_Vs?>(+YbIm`1#jlhcTGRNIdJ~^XpECXcfj>j>?JMO1Gk#
zCMgd#U&*n!!J!;7&WRWk0{6%_T2>n=wL~mAQ5fXTvPuqDK>Ljj}{-BC1rI^GF)=(yB$9jPtM6>*mLGKKAzc-GEtdY1p_GgMSqu;CLgnM*q#
z84SWR*lIDoTu`2yffFFOI$KpHo-32WxT-MFj>=&b^q_ZotBP+bUu71I-P2fpP%y@5
zm7^of&>>+&QX^twtD)muf=R?m+ljTp6n(d!95^!VXckdiJno8eD3G?Pu9vZ$w8}Gf@$q@aq7R9&rg4;
zbKwR#QHL0te4kuDl%~#!CA6<^kbnPCa=JU@?S0>at$4Yb^|zX>rws$j1o|k?xXUS0
zjYs$QcT4##Z6jQ|ZpnO^bD5XkAWO|QD0@R+m$$6y89hFc-#
z_Nc8n@kws#LAmHGDV{L4KCvn~Mm`T)kgKI8B%Y?m|nN7=SJf|;~&?=(RhNPO`TAQ~|
zz*ZE8YiDmzmgoE0$gF(1FxL%Q{Oowif`omD3T_Xj
zkpA|`)l!^(g^$0?Q|7+?zp{e&0GMgugs`;PR~lw-M323GX3y)VGREG2``(9%717iI
zX5Wh>;Xh0sbl&nrf}vM-kIFsub4%Y*(2{HPrZgW~TMxY2ZmlkO^48LDU|Q^aNr=Ez
z8B#D9Kc3QD`*pYGQvW27hE;SgP@0d>V_k0M3LF)=!p2QnR(guT@#RNvP&F+5}3b
ziDJHA5C}S3t1Qn@jIlLN8X3>w_Xbfi5Fy)1mAg|U{~t|dYI|CD#;;ZU#rAD=-OObilHc4maKm9301*|V3mFfioudi$L}dMabz0QvdCvJ=*YEc{&+qwN*ZgCy
zxy*gdeczw&=l~r1YiQVFnD=sH>e($e#YJrv%oF2&9C5{;M;^
zbkJpFnYVwR;ttQ$y3?H~PK_K^-
z=%RsoI;>y!G~9_<(lV=bdZwr967wsz+`3D$F>aCBN$R`wrJT}O$8KlGrBka%rDkyI
zp@XQ1p`Htm4zWXtn(didN!($Y@R>v$MfIP~{%=5NaE!)r=58@(nVNg51e|
z<*o>d&xvX4@EWVZyp%XaYzVlq)UU%rl*|Arm{7T5PsQ^pZc!;v=~Un@LP(F9)DEQN
z_f@@An>?l*uK(6{(2cNb(~aowdW|1K@mGj#BadTr3S<16jD^H|tpOvT{razb)u9oL
zcaJoUB=3}R6fN9_hcw%Q8+)OpN^0K)Tl=lo6vbU#gnBHh`@_uhc7UAWuZ1j0a%ih^pG^<7w>8dP03w>a4-m`SdeTn*A#p;`Xj(4q0tVP
z5LWlL_fj;n5JvN!zU(Ic*;I|l5viNAEEUtDVhCz$;l6^qMqZWv-8K!2SUWUS3B3~0
z37gE|nk#;%F=E~u5mJ4owGDbAl3nN~V`l~_+g0?mf^npw%#fn-n!#0L)HP^mOf%yH
zUeZ&tXcy-}Zi$#2>=iS!lF|#6&vLhv(mUh*Y)S|z!ERpF#jniuuyVvvY`du@$f_Kc
zrRPUskURh+A>E|TftpS;726x%GOa-Jo5r@J^Tf}!Qj^R7f_%X54PM$MU*bK?FA
zC~LEnXy4YMW}mcc@>DQtE1&UW`fnMmeCXRt8xoL387)jwU(y#}(C;+5MIT}oM&*67m0<2Z4zXp{)VHTiyeD~I`vH_c#R
z9aIQlCzrj66YZzH#jJ<{SeLx;7e7#dQ9CewCR&*ZxM})_3Epe)K^7?yKsxlw2!Axu?-g9>@o#
zt=^49Nbzfk03n0<=;E5mjIoW+);EF_SU2m{aLI-7xJ_lgKNb9)K8I}ySde%@U>p3b
zhE)486$TQV&vw87M1B)#RAvYJ25tON#q(3P!6dDe@zc{`?DI=8=#og^~R`1NKiR;BiUM+93hsE>>Sz;JojM8
zHKW-M;Z4rl
z!&QEm;3Ex6-_3oPj)x6eU&SG8oprra`pFds_eOCaSUzK--uQiR;mmCUg2xjp|
zP)-)*q!!HQ?~dvW&S{ajunxMsDP?xFEsERB0a#9&-{tFVoC`S=fvkdy*f#1o)M&xX
zPQN)8dcgF=pY4rGu#<$dG(dV-j96%Mvx@lU01Zx4$fOM0Hm4S2O=*X_$pP#ju(rjX
za#AT6Zu^hTJpPrL#*_bBvaw=*%XK-~7QN0+HUo
z^yf20XI}Mgx&t`0$qGK+S1fqZ=KwkRZkXS09sbI*hO|6|)$%Mgm5*Wb%gkX-nEK{b
zbik5zP*53#QfK^dK#(os?y7Tfs!_&228dR6C$&0y01NdS_?&0`*@1v9Xu1Y3t=vXo
zDy;)G*xA=kkX$aopI~@6`*=l;JxL(4H+mE}ja+%rJ*6zYeTV9tq!(t+$l~MF-uVy0
z0>pMaPJXR#IFMSbpH{SlNYB4L$rrmXkwH)tH!;!CV*RR4-BY|H{N98aR)@+OSljNd
zbbxTf^ff;9K#N?ouEsX#!N1u*b8qHh?R@gnM`NX9%v0Cy{!HAzhwb{H$sVlGb@Xt~
z`!zYB1w}Olkdbe~fPUZp#Z04On&fnC2VZtqNrpH;O^9L#>8ax?IgC3$3bf6dM<{Jc
zo!oudVW2qF>5d-=!MzP+*up*eL1Xp4Tdw)^C+%7%O7&<+qJd|e%&}$)v(Sx|1P!wx
zeqYFYn_(TzW?F)U-Y*&37T`;+fq!cplE=K3YDj`o&dik@JNUhn?sts~7f~
zGNcn1t+?>fTgfT|#jx?m---!8r=
z7Y|ke@Wnat+#?j7#AvcJjO?~;A2#DOSk_VE*^TJL<^HJsjp(8gBdKPKPB}1IsMjT$
zaBPK2IePZ>p)L%JZX9G=K~3E@&y%qQ+|B%3d|rYQ_gj&zR{AD2PjqU4ZHFS
ze2rLdVj7GbGQg>~AKHv_YJ8Ys!Y6P&hFqz>8!!<+
zT{!cdj}|oSRqp2FQ`nv>$zrdf*v}3op!pe$r6pQ_rvQHDganJ^6@NrEicbj@NPkVS
z-l1(5@?FuYQBB%D&aARe
zr9>doUkad;aP?_?g7|voIY2up4jd-d3JGF?C*Ben{jidROd8w)iV_Xs<&$ucoZ{T=
ze)`RcYmyaNtRfG2mMTW&>(@bi013B{h4btfqjn36JX9M!Yg+U^Qp}Q90%1iFs1keS
zo4-~BBz=DuE=4O>^gK6-F?n8d&fHG5J-dOHTd{m5i&A^!<8rTiw_@M;tfajY$AT(1
z_OXC97if%FJT^9tYan)t>zvcorqF}DMFzI~&&=L#7*=x&PMw0ul!98st+
z^V2v^+;K_U_FU+vVz!WUE)(6v=-!1%+prZQi2O-~+f&cj)s5Fd?VqX9#af`_6yB6`
z(_M;I^G2~6S|!9^_VR02kFTaozmqyrvin(rpi}233v`9M!q!1AH+CMqX=CRdT}|Bl
zR9*uE`Pttyq5AaCJ|~+b4AR@Ka**#?a$7fMpV5x(2ofwvn*cJ4xKw2}F62^L0AVVj
zf*+mUE#EaMaJ_}e9L(D3C==Uo0BXIrpoLn5iqp53`mHf-C){DyUL{VZxu(rmC&VV0
z_BbGm$lNn`l_Jtl|56&jb
z2I5Ne@Rzzqep)4()-TQYZB7=xpOcpbHVzr1((HcjTae7DrmGkKEE8V57;JqQS_pR_
z1l&tW(POa!TH1N_i^@IiutlKt?BXQh!E6s8FFi1#^
zYX<{ojA9pK^jO$1I-Z$K
zVAZxgaft`I&;B@n*Kz(Vql8#B#;nr0Ed{ah4r`2Xnbas<-L^UN+O5l;ye=i@9NRZo
z(4pGRDR{2P@nV?)7L_!dEmN%__c+U*d^HW?GqYEZy~-|SE9yw4vk)ywTD07feVSk&Xp5Q*m&MMT
z){p7ut-%W1l(1)G=_Ul4--7sZLjz0`kK|Dg7bG0i{a2cl(*!M)x#Z3@ZT$4WuGjnu
zWpaW^gC2K$js}Y>J~u$b operations);
+----
+
+==== Constructors
+[source,Java]
+----
+public Document(List operations);
+----
+
+=== Operation
+==== Static factory methods
+[source,Java]
+----
+@SafeVarargs
+public static List operations(Operation... operations);
+
+@SafeVarargs
+public static Operation operation(Field... fields);
+public static Operation operation(List fields);
+
+@SafeVarargs
+public static Operation operation(Type type, Field... fields);
+public static Operation operation(Type type, List fields);
+
+@SafeVarargs
+public static Operation operation(String name, Field... fields);
+public static Operation operation(String name, List fields);
+
+@SafeVarargs
+public static Operation operation(Type type, String name, Field... fields);
+public static Operation operation(Type type, String name, List fields);
+----
+****
+When omitted,
+
+* *type* parameter will default to _QUERY_
+* *name* parameter will default to an _empty string_
+****
+==== Constructors
+[source,Java]
+----
+public Operation(Type type, String name, List fields);
+----
+
+=== Field
+==== Static factory methods
+[source,Java]
+----
+@SafeVarargs
+public static List fields(Field... fields);
+
+public static Field field(String name);
+
+@SafeVarargs
+public static Field field(String name, Field... fields);
+public static Field field(String name, List fields);
+
+@SafeVarargs
+public static Field field(String name, Argument... args);
+
+@SafeVarargs
+public static Field field(String name, List args, Field... fields);
+public static Field field(String name, List args, List fields);
+----
+****
+Due to Java's type erasure at compile-time, it is not possible to have both:
+[source,Java]
+----
+public static Field field(String name, List fields);
+----
+and
+[source,Java]
+----
+public static Field field(String name, List args);
+----
+So, it has been decided to only retain:
+[source,Java]
+----
+public static Field field(String name, List fields);
+----
+****
+
+****
+When omitted, *args* and *fields* parameters will default to an _empty list_.
+****
+
+==== Constructors
+[source,Java]
+----
+public Field(String name, List args, List fields);
+----
+
+=== Argument
+==== Static factory methods
+[source,Java]
+----
+@SafeVarargs
+public static List args(Argument... args);
+
+public static Argument arg(String name, Object value);
+----
+
+==== Constructors
+[source,Java]
+----
+public Argument(String name, Object value);
+----
+
+=== Enum
+==== Static factory methods
+[source,Java]
+----
+public static GraphQLEnum gqlEnum(String value);
+----
+
+==== Constructors
+[source,Java]
+----
+public GraphQLEnum(String value);
+----
+
+=== Input Object
+==== Static factory methods
+[source,Java]
+----
+@SafeVarargs
+public static InputObject object(InputObjectField... inputObjectFields);
+public static InputObject object(List inputObjectFields);
+----
+
+==== Constructors
+[source,Java]
+----
+public InputObject(List inputObjectFields);
+----
+
+=== Input Object Field
+==== Static factory methods
+[source,Java]
+----
+public static InputObjectField prop(String name, Object value);
+----
+****
+The keyword *prop* (as in _an object's property_) has been chosen instead of *field*
+to avoid confusion with the notion of _field of a selection set_.
+****
+
+==== Constructors
+[source,Java]
+----
+public InputObjectField(String name, Object value);
+----
+

From 2227288cbaf79d1b417f31b08674e30ffc4542e2 Mon Sep 17 00:00:00 2001
From: Phillip Kruger 
Date: Wed, 27 May 2020 11:17:22 +0200
Subject: [PATCH 044/248] Added 'AND' condition in Schema Test (Help to test
 complex default values where the order does not matter) Signed-off-by:Phillip
 Kruger 

---
 .../dynamic/SchemaDynamicValidityTest.java    | 40 +++++++++++++------
 .../graphql/tck/dynamic/schema/CsvParser.java | 12 +++++-
 .../schema/SchemaTestDataProvider.java        |  3 --
 .../graphql/tck/dynamic/schema/TestData.java  | 30 ++++++++++----
 .../src/main/resources/tests/schemaTests.csv  |  2 +-
 .../tck/dynamic/schema/CsvParserTest.java     | 16 ++++----
 6 files changed, 69 insertions(+), 34 deletions(-)

diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/SchemaDynamicValidityTest.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/SchemaDynamicValidityTest.java
index 4ebba0dc..1a9eba13 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/SchemaDynamicValidityTest.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/SchemaDynamicValidityTest.java
@@ -29,7 +29,6 @@
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import org.eclipse.microprofile.graphql.tck.dynamic.schema.SchemaTestDataProvider;
@@ -84,24 +83,39 @@ public void testPartsOfSchema(TestData input) {
             snippet = getSchemaSnippet(schema, input.getSnippetSearchTerm());
         }
         
-        Assert.assertTrue(matchAtLeastOneOfTheSnippets(input,snippet), "[" + input.getHeader() + "] " + input.getErrorMessage());    
+        Assert.assertTrue(matchCondition(input,snippet), "[" + input.getHeader() + "] " + input.getErrorMessage());    
     }
     
-    private boolean matchAtLeastOneOfTheSnippets(TestData input,String snippet){
-        List containsAnyOfString = input.getContainsAnyOfString();
-        for(String contains:containsAnyOfString){
-            if(contains.startsWith("!")){
-                contains = contains.substring(1);
-                if(!snippet.contains(contains)){
-                    return true;
+    private boolean matchCondition(TestData input,String snippet){
+        
+        if(input.hasCondition()){
+            if(input.getCondition().equals(TestData.Condition.OR)){
+                for(String contains:input.getContainsString()){
+                    if(matchSingle(contains,snippet)){
+                        return true;
+                    }
                 }
-            }else{
-                if(snippet.contains(contains)){
-                    return true;
+                return false;
+            } else if (input.getCondition().equals(TestData.Condition.AND)){
+                for(String contains:input.getContainsString()){
+                    if(!matchSingle(contains,snippet)){
+                        return false;
+                    }
                 }
+                return true;
             }
+        } 
+        
+        return matchSingle(input.getContainsString().get(0), snippet);
+    }
+    
+    private boolean matchSingle(String single,String snippet){
+        if(single.startsWith("!")){
+            single = single.substring(1);
+            return !snippet.contains(single);
+        }else{
+            return snippet.contains(single);
         }
-        return false;
     }
     
     private void saveSchemaFile(){
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParser.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParser.java
index bb72d09c..bab0d063 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParser.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParser.java
@@ -119,11 +119,21 @@ private static TestData createTestData(String filename, String header, String[]
         testData.setSnippetSearchTerm(snippet);
 
         String containsString = parts[2].trim();
+        if (containsString.contains(OR) && containsString.contains(AND)){
+            throw new RuntimeException("Test string can not contain both 'OR' and 'AND'");
+        }
         if (containsString.contains(OR)) {
             String[] containsStrings = containsString.split(OR);
             for (String oneOf : containsStrings) {
                 testData.addContainsString(oneOf.trim());
             }
+            testData.setCondition(TestData.Condition.OR);
+        } else if (containsString.contains(AND)) {
+            String[] containsStrings = containsString.split(AND);
+            for (String oneOf : containsStrings) {
+                testData.addContainsString(oneOf.trim());
+            }
+            testData.setCondition(TestData.Condition.AND);
         } else {
             testData.addContainsString(containsString);
         }
@@ -137,5 +147,5 @@ private static TestData createTestData(String filename, String header, String[]
     private static final char SEPARATOR = '|';
     private static final char NEWLINE = '\n';
     private static final String OR = "'OR'";
-
+    private static final String AND = "'AND'";
 }
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java
index 7377b5ce..5f3120b1 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/SchemaTestDataProvider.java
@@ -109,8 +109,5 @@ private static boolean disableSpecificationTests(){
         return Boolean.valueOf(System.getProperty("disableSpecificationTests", "false"));
     }
     
-    private static final String PIPE = "|";
-    private static final String DELIMITER = "\\" + PIPE;
-    private static final String COMMENT = "#";
     private static final String FILE_TYPE = ".csv";
 }
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/TestData.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/TestData.java
index 8ff66fbb..071faf1b 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/TestData.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/TestData.java
@@ -27,7 +27,8 @@ public class TestData {
     private String header;
     private String name;
     private String snippetSearchTerm;
-    private List containsAnyOfString = new ArrayList<>();
+    private List containsString = new ArrayList<>();
+    private Condition condition = null;
     private String errorMessage;
     
     public TestData() {
@@ -65,16 +66,12 @@ public void setSnippetSearchTerm(String snippetSearchTerm) {
         this.snippetSearchTerm = snippetSearchTerm;
     }
 
-    public List getContainsAnyOfString() {
-        return containsAnyOfString;
-    }
-
-    public void setContainsAnyOfString(List containsAnyOfString) {
-        this.containsAnyOfString = containsAnyOfString;
+    public List getContainsString() {
+        return containsString;
     }
 
     public void addContainsString(String containsString) {
-        this.containsAnyOfString.add(containsString);
+        this.containsString.add(containsString);
     }
     
     public String getErrorMessage() {
@@ -85,4 +82,21 @@ public void setErrorMessage(String errorMessage) {
         this.errorMessage = errorMessage;
     }
     
+    public boolean hasCondition(){
+        return this.condition!=null;
+    }
+    
+    public void setCondition(Condition condition){
+        this.condition = condition;
+    }
+    
+    public Condition getCondition(){
+        return this.condition;
+    }
+    
+    public enum Condition {
+        AND,
+        OR
+    }
+    
 }
diff --git a/server/tck/src/main/resources/tests/schemaTests.csv b/server/tck/src/main/resources/tests/schemaTests.csv
index b4138457..6f7ceaaf 100644
--- a/server/tck/src/main/resources/tests/schemaTests.csv
+++ b/server/tck/src/main/resources/tests/schemaTests.csv
@@ -105,4 +105,4 @@
 58|type Query          |   "Super hero name, not real name"                        |   Expecting a description for the name parameter on the exportToFile query
 
 # testJsonDefault
-59|type Query          |   provisionHero(hero: String, item: ItemInput = { id: 1000, name: "Cape", powerLevel: 3, height: 1.2, weight: 0.3, supernatural: false, dateCreated: "19 February 1900 at 12:00 in Africa/Johannesburg", dateLastUsed: "29 Jan 2020 at 09:45 in zone +0200"} | Expecting a default value for item for provisionHero
+59|type Mutation       |   id : 1000 'AND' name : "Cape" 'AND' powerLevel : 3 'AND' height : 1.2 'AND' weight : 0.3 'AND' supernatural : false | Expecting a default value for item for provisionHero
diff --git a/server/tck/src/test/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParserTest.java b/server/tck/src/test/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParserTest.java
index 1edf45ce..8cd3e145 100644
--- a/server/tck/src/test/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParserTest.java
+++ b/server/tck/src/test/java/org/eclipse/microprofile/graphql/tck/dynamic/schema/CsvParserTest.java
@@ -33,7 +33,7 @@ public void shouldHandleDoubleEscape() throws IOException {
         final List testDate = CsvParser.parse("shouldHandleDoubleEscape", new StringReader(content));
 
         Assert.assertEquals(testDate.size(), 1);
-        Assert.assertEquals(testDate.get(0).getContainsAnyOfString().get(0), "´");
+        Assert.assertEquals(testDate.get(0).getContainsString().get(0), "´");
 
     }
     @Test
@@ -43,7 +43,7 @@ public void shouldHandleTripleEscape() throws IOException {
         final List testDate = CsvParser.parse("shouldHandleTripleEscape", new StringReader(content));
 
         Assert.assertEquals(testDate.size(), 1);
-        Assert.assertEquals(testDate.get(0).getContainsAnyOfString().get(0), "Test ´");
+        Assert.assertEquals(testDate.get(0).getContainsString().get(0), "Test ´");
 
     }
 
@@ -54,7 +54,7 @@ public void shouldHandleEscaping() throws IOException {
         final List testDate = CsvParser.parse("shouldHandleEscaping", new StringReader(content));
 
         Assert.assertEquals(testDate.size(), 1);
-        Assert.assertEquals(testDate.get(0).getContainsAnyOfString().get(0), "Y | Z");
+        Assert.assertEquals(testDate.get(0).getContainsString().get(0), "Y | Z");
         Assert.assertEquals(testDate.get(0).getErrorMessage(), "(1) - Should Handle Escaping");
     }
 
@@ -67,9 +67,9 @@ public void shouldHandleOr() throws IOException {
         final List testDate = CsvParser.parse("shouldHandleEscaping", new StringReader(content));
 
         Assert.assertEquals(testDate.size(), 1);
-        Assert.assertEquals(testDate.get(0).getContainsAnyOfString().size(), 2);
-        Assert.assertEquals(testDate.get(0).getContainsAnyOfString().get(0), "scalarHolder(arg0: ScalarHolderInput): ScalarHolder");
-        Assert.assertEquals(testDate.get(0).getContainsAnyOfString().get(1), "scalarHolder(scalarHolder: ScalarHolderInput): ScalarHolder");
+        Assert.assertEquals(testDate.get(0).getContainsString().size(), 2);
+        Assert.assertEquals(testDate.get(0).getContainsString().get(0), "scalarHolder(arg0: ScalarHolderInput): ScalarHolder");
+        Assert.assertEquals(testDate.get(0).getContainsString().get(1), "scalarHolder(scalarHolder: ScalarHolderInput): ScalarHolder");
     }
 
     @Test
@@ -82,7 +82,7 @@ public void shouldHandleMultilineEscaping() throws IOException {
         final List testDate = CsvParser.parse("shouldHandleEscaping", new StringReader(content));
 
         Assert.assertEquals(testDate.size(), 1);
-        Assert.assertEquals(testDate.get(0).getContainsAnyOfString().get(0), "dateInput(\n"
+        Assert.assertEquals(testDate.get(0).getContainsString().get(0), "dateInput(\n"
                 + "    \"yyyy-MM-dd\"\n"
                 + "    input: Date\n"
                 + "  ): String");
@@ -95,7 +95,7 @@ public void shouldIgnoreCommentsInLine() throws IOException {
         final List testDate = CsvParser.parse("shouldIgnoreCommentsInLine", new StringReader(content));
 
         Assert.assertEquals(testDate.size(), 1);
-        Assert.assertEquals(testDate.get(0).getContainsAnyOfString().get(0), "\"#0.0 en-GB\"");
+        Assert.assertEquals(testDate.get(0).getContainsString().get(0), "\"#0.0 en-GB\"");
     }
 
     @Test

From 8076b3e191d5791e24757d2c1de20f46d31e94fb Mon Sep 17 00:00:00 2001
From: Jean-Francois James 
Date: Fri, 5 Jun 2020 10:37:24 +0200
Subject: [PATCH 045/248] Dynamic client specification

Signed-off-by: Jean-Francois James 
---
 .../src/main/asciidoc/dynamic_client.asciidoc | 225 +++++++++++++++++-
 1 file changed, 218 insertions(+), 7 deletions(-)

diff --git a/client/spec/src/main/asciidoc/dynamic_client.asciidoc b/client/spec/src/main/asciidoc/dynamic_client.asciidoc
index ee684e38..daba3e50 100644
--- a/client/spec/src/main/asciidoc/dynamic_client.asciidoc
+++ b/client/spec/src/main/asciidoc/dynamic_client.asciidoc
@@ -27,7 +27,7 @@ MicroProfile GraphQL 1.0 has been focused on the server-side enabling to develop
 
 == Goals
 
-. *Provides full control over the MicroProfile GraphQL capabilities*: operations, arguments, variables, scalars, input object, interface, partial results, errors ...
+. *Provides full control over the MicroProfile GraphQL capabilities*: operations, arguments, variables, scalars, input object, interface, partial results, errors...
 . *Consistency with MicroProfile GraphQL server* annotations (DateFormat, NumberFormat ...) and capabilities
 . *Consistency with MicroProfile*:
 * No dependency outside MicroProfile core
@@ -37,10 +37,10 @@ MicroProfile GraphQL 1.0 has been focused on the server-side enabling to develop
 
 == Non goals
 
-. *Transport layer support*: the GraphQL specification is independent of transport layer.
-We propose to stay aligned with this, leaving the final implementation free to use any client network library (JAX-RS, Apache HTTPClient ...).
-. *Serialization of custom Java classes to build requests*
-. *Deserialization of responses into custom Java classes*
+. *Transport layer support*: the GraphQL specification is transport agnostic.
+We propose to stay aligned with this approach, leaving implementations free to use any client network library (JAX-RS, Apache HTTPClient ...). However to make things more concrete, some examples using JAX-RS and HTTP are provided below.
+
+
 
 == Focus of release 1.1
 
@@ -98,8 +98,7 @@ Java 8 is still widely used in the industry and we propose to stick to it for a
 
 To be studied for next releases:
 
-* GraphQL subscription
-* Reactive API
+* GraphQL subscription support
 * https://spec.graphql.org/draft/#sec-Document[Multiple operations inside a GraphQL document]
 
 == Workflow of the API
@@ -292,3 +291,215 @@ to avoid confusion with the notion of _field of a selection set_.
 public InputObjectField(String name, Object value);
 ----
 
+== Running a GraphQL document
+
+Once a GraphQL document has been prepared, it can be run against a server. 
+This specification proposes two abstractions for that:
+
+. **GraphQLRequest**: prepare a request execution including the request and optional variables
+. **GraphQLResponse**: a holder for a GraphQL response including optional errors and data.
+
+=== GraphQLClientBuilder
+
+A **GraphQLClientBuilder** class is defined to bootstrap a client implementation. This can be done using the Service Loader approach.
+
+==== Interface defintion
+[source,Java]
+----
+public interface GraphQLClientBuilder {
+    GraphQLRequest newRequest(String request);
+}
+----
+=== GraphQLRequest
+
+==== Interface Definition
+[source,Java]
+----
+public interface GraphQLRequest {
+    GraphQLRequest addVariable(String name, Object value);
+    GraphQLRequest resetVariables();
+    String toJson();
+}
+----
+
+==== Initialization
+ 
+A GraphQLRequest object is initialised from the builder with a GraphQL request obtained from a Document:
+[source,Java]
+----
+GraphQLRequest graphQLRequest = new graphQLClientBuilder.newRequest(document.toString());
+----
+==== Setting variables
+Optional GraphQL variables can be provided:
+[source,Java]
+----
+graphQLRequest.addVariable("surname", "James");
+graphQLRequest.addVariable("personId", 1);
+----
+In order to make it reuseable for other executions, variables can also be reset:
+[source,Java]
+----
+graphQLRequest.resetVariables();
+graphQLRequest.addVariable("surname", "Roux");
+graphQLRequest.addVariable("personId", 2);
+----
+With this approach, a GraphQLRequest object is immutable regarding the GraphQL request to run and mutable regarding the variables. It is the responsibility of the caller to assign the consistency between the request and the variables.  
+
+Once initialized with a request and optional variables, a GraphQLrequest object can be sent to a GraphQL server. As mentioned in the "non-goal" paragraph, this specification is deliberatly transport agnostic. It is the responsibility of the implementation to propose a transport layer.
+
+For instance:
+
+* JAX-RS in a Jakarta EE or MicroProfile container 
+* raw HTTP using a library such as Apache HTTP client.
+
+==== Examples of JAX-RS transport
+
+To make things more concrete, we propose some examples using JAX-RS.
+
+Suppose we a have an initialized GraphQLRequest. It can be a mutation or a query. We can send it and get the response in the following way;
+[source,Java]
+----
+Client client = clientBuilder.build();
+
+Response response = client
+        .target("http://localhost:8080/graphql")
+        .request("application/json")
+        .post(json(graphQLRequest));
+----
+A registered JAX-RS MessageBodyWriter is needed to automatically turn a GraphQLRequest object into a JSON structure. This is the responsibility of the implementation to provide it.
+
+In the previous example, a generic JAX-RS Response is returned. The GraphQLResponse (described below) can then be read as an entity:
+[source,Java]
+----
+GraphQLResponse graphQLResponse=response
+    .readEntity(GraphQLResponse.class);
+----
+
+Alternatively, we can get a GraphQLResponse directly as a typed entity:
+[source,Java]
+----
+GraphQLResponse graphQLResponse = client
+        .target("http://localhost:8080/graphql")
+        .request(MediaType.APPLICATION_JSON)
+        .post(json(graphQLRequest), GraphQLResponse.class);
+----
+A registered JAX-RS MessageBodyReader is needed to turn a JSON structure into a GraphQLResponse object. This is the responsibility of the implementation to provide it. 
+
+Using JAX-RS, we can even run a request in a reactive way:
+[source,Java]
+----
+CompletionStage csr = client
+        .target("http://localhost:8080/graphql")
+        .request()
+        .rx()
+        .post(json(graphQLRequest),GraphQLResponse.class);
+
+        // Do some other stuff here...
+
+        csr.thenAccept(// Async processing here });
+----
+
+==== Examples of HTTP transport
+
+Let's see how to use a HTTP transport layer with Apache HttpClient: 
+[source,Java]
+----
+// Prepare the HTTP POST
+URI endpoint = new URI("http://localhost:8080/graphql"); 
+HttpPost httpPost = new HttpPost(new URI(endpoint));
+
+StringEntity stringEntity = new StringEntity(jsonRequest.toJson(), ContentType.APPLICATION_JSON);
+httpPost.setEntity(stringEntity);
+
+// Execute the POST
+CloseableHttpClient httpClient = HttpClients.createDefault());
+CloseableHttpResponse httpResponse=httpClient.execute(httpPost);
+
+// Read the response
+InputStream contentStream = serverResponse.getEntity().getContent();
+----
+For the sake of simplicity, this code does not take into account configuration, exception and resource management and omits the details of data conversion.
+
+=== GraphQLResponse
+
+In the previous examples, we have seen how to get a GraphQLResponse from a server.
+
+GraphQLResponse is a holder both for data and errors.
+
+
+==== Interface definition
+[source,Java]
+----
+public interface GraphQLResponse {
+    JsonObject getData();
+    List getErrors();
+     List getList(Class dataType, String rootField);
+     T getObject(Class dataType, String rootField);
+    boolean hasData();
+    boolean hasError();
+    
+    public static interface GraphQLError {
+        String getMessage();
+        List> getLocations();
+        Object[] getPath();
+        Map getExtensions();
+    }
+    
+}
+----
+
+==== Getting errors
+We can check if there is any error and access each of them:
+[source, Java]
+----
+if ( graphQLResponse.hasError() ) {
+    log.warn("GraphQL error:");
+    graphQLResponse.getErrors().forEach( e -> log.warning(e.toString()) );
+    }
+----
+
+The getErrors() method returns a list of GraphQLError objects. In accordance with the specification, a GraphQLError is made of:
+
+* a message
+* a list of locations
+* an array of path
+* a map of extensions
+
+It is the responsibility of the client to decide how to deal with GraphQL errors.
+
+==== Getting data
+The hasData method enables to check if there is any data:
+[source, Java]
+----
+if ( graphQLResponse.hasData() )
+    log.info("Data inside");
+----
+
+Data can be obtained in 2 ways:
+
+* **as a generic JsonObject**: using the getData method, it is the responsibility of the caller to turn this JsonObject into application objects
+* *as an application object* (or a list of them): using the getObject (or getList) method. In that case, it is necessary to provide the expected data rootfield to be retrieved.
+
+For instance, with a UserProfile application class:
+[source, Java]
+----
+// Get the data as a generic JsonObject
+JsonObject data = graphQLResponse.getData();
+
+// Turn it into a UserProfile object
+JsonObject myData = data.getJsonObject("profile");
+Jsonb jsonb = JsonbBuilder.create();
+UserProfile userProfile = jsonb.fromJson(myData.toString(), Profile.class);
+
+// OR
+
+// Directly get a UserProfile object from graphqlReponse 
+UserProfile userProfile = graphQLResponse.getObject(Profile.class, "profile");
+----
+
+In the same way, the getList method enables to get a list of objects:
+[source,Java]
+----
+// Get a list of Person from a graphQLResponse
+List people = graphQLResponse.getList(Person.class, "people");
+----

From c1c856eb4fd60acb595ac428b5f9042019512358 Mon Sep 17 00:00:00 2001
From: Jean-Francois James 
Date: Fri, 5 Jun 2020 17:42:29 +0200
Subject: [PATCH 046/248] Examples of fluent API for setting variables

Signed-off-by: Jean-Francois James 
---
 .../spec/src/main/asciidoc/dynamic_client.asciidoc | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/client/spec/src/main/asciidoc/dynamic_client.asciidoc b/client/spec/src/main/asciidoc/dynamic_client.asciidoc
index daba3e50..bac4bd21 100644
--- a/client/spec/src/main/asciidoc/dynamic_client.asciidoc
+++ b/client/spec/src/main/asciidoc/dynamic_client.asciidoc
@@ -333,15 +333,17 @@ GraphQLRequest graphQLRequest = new graphQLClientBuilder.newRequest(document.toS
 Optional GraphQL variables can be provided:
 [source,Java]
 ----
-graphQLRequest.addVariable("surname", "James");
-graphQLRequest.addVariable("personId", 1);
+graphQLRequest
+    .addVariable("surname", "James")
+    .addVariable("personId", 1);
 ----
 In order to make it reuseable for other executions, variables can also be reset:
 [source,Java]
 ----
-graphQLRequest.resetVariables();
-graphQLRequest.addVariable("surname", "Roux");
-graphQLRequest.addVariable("personId", 2);
+graphQLRequest
+    .resetVariables()
+    .addVariable("surname", "Roux")
+    .addVariable("personId", 2);
 ----
 With this approach, a GraphQLRequest object is immutable regarding the GraphQL request to run and mutable regarding the variables. It is the responsibility of the caller to assign the consistency between the request and the variables.  
 
@@ -363,7 +365,7 @@ Client client = clientBuilder.build();
 
 Response response = client
         .target("http://localhost:8080/graphql")
-        .request("application/json")
+        .request(MediaType.APPLICATION_JSON)
         .post(json(graphQLRequest));
 ----
 A registered JAX-RS MessageBodyWriter is needed to automatically turn a GraphQLRequest object into a JSON structure. This is the responsibility of the implementation to provide it.

From 67ade40bd51516e5470e86e85591de7f729506f3 Mon Sep 17 00:00:00 2001
From: Andy McCright 
Date: Sat, 6 Jun 2020 18:24:05 -0500
Subject: [PATCH 047/248] Add implementations and acknowledgements sections

---
 README.asciidoc | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/README.asciidoc b/README.asciidoc
index e1753a20..9c7e514b 100644
--- a/README.asciidoc
+++ b/README.asciidoc
@@ -82,6 +82,16 @@ MicroProfile is the optimal place to host that standard as it is open, ideally s
 This specification will focus on making it easy for developers to create a GraphQL Service/Endpoint and publish it as an API. 
 Where the data comes from (NoSQL, Relational DB, another service, etc.) is not the concern of this Proposed Specification. 
 
+== Implementations
+
+* SmallRye GraphQL - https://github.com/smallrye/smallrye-graphql (standalone implementation)
+* Open Liberty 20.0.0.6 - https://openliberty.io/blog/2020/06/05/graphql-open-liberty-20006.html
+* Quarkus 1.5 - https://quarkus.io/blog/quarkus-1-5-final-released/
+
+== Acknowledgements
+
+This API and specification would not be possible without the enormous assistance from the https://github.com/leangen/graphql-spqr[GraphQL SPQR project].
+
 == Contributing
 
 Do you want to contribute to this project? link:CONTRIBUTING.adoc[Find out how you can help here].

From 2b4a5c34674c5bcd7a13780b3672bd98b3dcc4bf Mon Sep 17 00:00:00 2001
From: Jean-Francois James 
Date: Fri, 5 Jun 2020 10:37:24 +0200
Subject: [PATCH 048/248] Dynamic client specification

Signed-off-by: Jean-Francois James 
---
 .../src/main/asciidoc/dynamic_client.asciidoc | 225 +++++++++++++++++-
 1 file changed, 218 insertions(+), 7 deletions(-)

diff --git a/client/spec/src/main/asciidoc/dynamic_client.asciidoc b/client/spec/src/main/asciidoc/dynamic_client.asciidoc
index ee684e38..daba3e50 100644
--- a/client/spec/src/main/asciidoc/dynamic_client.asciidoc
+++ b/client/spec/src/main/asciidoc/dynamic_client.asciidoc
@@ -27,7 +27,7 @@ MicroProfile GraphQL 1.0 has been focused on the server-side enabling to develop
 
 == Goals
 
-. *Provides full control over the MicroProfile GraphQL capabilities*: operations, arguments, variables, scalars, input object, interface, partial results, errors ...
+. *Provides full control over the MicroProfile GraphQL capabilities*: operations, arguments, variables, scalars, input object, interface, partial results, errors...
 . *Consistency with MicroProfile GraphQL server* annotations (DateFormat, NumberFormat ...) and capabilities
 . *Consistency with MicroProfile*:
 * No dependency outside MicroProfile core
@@ -37,10 +37,10 @@ MicroProfile GraphQL 1.0 has been focused on the server-side enabling to develop
 
 == Non goals
 
-. *Transport layer support*: the GraphQL specification is independent of transport layer.
-We propose to stay aligned with this, leaving the final implementation free to use any client network library (JAX-RS, Apache HTTPClient ...).
-. *Serialization of custom Java classes to build requests*
-. *Deserialization of responses into custom Java classes*
+. *Transport layer support*: the GraphQL specification is transport agnostic.
+We propose to stay aligned with this approach, leaving implementations free to use any client network library (JAX-RS, Apache HTTPClient ...). However to make things more concrete, some examples using JAX-RS and HTTP are provided below.
+
+
 
 == Focus of release 1.1
 
@@ -98,8 +98,7 @@ Java 8 is still widely used in the industry and we propose to stick to it for a
 
 To be studied for next releases:
 
-* GraphQL subscription
-* Reactive API
+* GraphQL subscription support
 * https://spec.graphql.org/draft/#sec-Document[Multiple operations inside a GraphQL document]
 
 == Workflow of the API
@@ -292,3 +291,215 @@ to avoid confusion with the notion of _field of a selection set_.
 public InputObjectField(String name, Object value);
 ----
 
+== Running a GraphQL document
+
+Once a GraphQL document has been prepared, it can be run against a server. 
+This specification proposes two abstractions for that:
+
+. **GraphQLRequest**: prepare a request execution including the request and optional variables
+. **GraphQLResponse**: a holder for a GraphQL response including optional errors and data.
+
+=== GraphQLClientBuilder
+
+A **GraphQLClientBuilder** class is defined to bootstrap a client implementation. This can be done using the Service Loader approach.
+
+==== Interface defintion
+[source,Java]
+----
+public interface GraphQLClientBuilder {
+    GraphQLRequest newRequest(String request);
+}
+----
+=== GraphQLRequest
+
+==== Interface Definition
+[source,Java]
+----
+public interface GraphQLRequest {
+    GraphQLRequest addVariable(String name, Object value);
+    GraphQLRequest resetVariables();
+    String toJson();
+}
+----
+
+==== Initialization
+ 
+A GraphQLRequest object is initialised from the builder with a GraphQL request obtained from a Document:
+[source,Java]
+----
+GraphQLRequest graphQLRequest = new graphQLClientBuilder.newRequest(document.toString());
+----
+==== Setting variables
+Optional GraphQL variables can be provided:
+[source,Java]
+----
+graphQLRequest.addVariable("surname", "James");
+graphQLRequest.addVariable("personId", 1);
+----
+In order to make it reuseable for other executions, variables can also be reset:
+[source,Java]
+----
+graphQLRequest.resetVariables();
+graphQLRequest.addVariable("surname", "Roux");
+graphQLRequest.addVariable("personId", 2);
+----
+With this approach, a GraphQLRequest object is immutable regarding the GraphQL request to run and mutable regarding the variables. It is the responsibility of the caller to assign the consistency between the request and the variables.  
+
+Once initialized with a request and optional variables, a GraphQLrequest object can be sent to a GraphQL server. As mentioned in the "non-goal" paragraph, this specification is deliberatly transport agnostic. It is the responsibility of the implementation to propose a transport layer.
+
+For instance:
+
+* JAX-RS in a Jakarta EE or MicroProfile container 
+* raw HTTP using a library such as Apache HTTP client.
+
+==== Examples of JAX-RS transport
+
+To make things more concrete, we propose some examples using JAX-RS.
+
+Suppose we a have an initialized GraphQLRequest. It can be a mutation or a query. We can send it and get the response in the following way;
+[source,Java]
+----
+Client client = clientBuilder.build();
+
+Response response = client
+        .target("http://localhost:8080/graphql")
+        .request("application/json")
+        .post(json(graphQLRequest));
+----
+A registered JAX-RS MessageBodyWriter is needed to automatically turn a GraphQLRequest object into a JSON structure. This is the responsibility of the implementation to provide it.
+
+In the previous example, a generic JAX-RS Response is returned. The GraphQLResponse (described below) can then be read as an entity:
+[source,Java]
+----
+GraphQLResponse graphQLResponse=response
+    .readEntity(GraphQLResponse.class);
+----
+
+Alternatively, we can get a GraphQLResponse directly as a typed entity:
+[source,Java]
+----
+GraphQLResponse graphQLResponse = client
+        .target("http://localhost:8080/graphql")
+        .request(MediaType.APPLICATION_JSON)
+        .post(json(graphQLRequest), GraphQLResponse.class);
+----
+A registered JAX-RS MessageBodyReader is needed to turn a JSON structure into a GraphQLResponse object. This is the responsibility of the implementation to provide it. 
+
+Using JAX-RS, we can even run a request in a reactive way:
+[source,Java]
+----
+CompletionStage csr = client
+        .target("http://localhost:8080/graphql")
+        .request()
+        .rx()
+        .post(json(graphQLRequest),GraphQLResponse.class);
+
+        // Do some other stuff here...
+
+        csr.thenAccept(// Async processing here });
+----
+
+==== Examples of HTTP transport
+
+Let's see how to use a HTTP transport layer with Apache HttpClient: 
+[source,Java]
+----
+// Prepare the HTTP POST
+URI endpoint = new URI("http://localhost:8080/graphql"); 
+HttpPost httpPost = new HttpPost(new URI(endpoint));
+
+StringEntity stringEntity = new StringEntity(jsonRequest.toJson(), ContentType.APPLICATION_JSON);
+httpPost.setEntity(stringEntity);
+
+// Execute the POST
+CloseableHttpClient httpClient = HttpClients.createDefault());
+CloseableHttpResponse httpResponse=httpClient.execute(httpPost);
+
+// Read the response
+InputStream contentStream = serverResponse.getEntity().getContent();
+----
+For the sake of simplicity, this code does not take into account configuration, exception and resource management and omits the details of data conversion.
+
+=== GraphQLResponse
+
+In the previous examples, we have seen how to get a GraphQLResponse from a server.
+
+GraphQLResponse is a holder both for data and errors.
+
+
+==== Interface definition
+[source,Java]
+----
+public interface GraphQLResponse {
+    JsonObject getData();
+    List getErrors();
+     List getList(Class dataType, String rootField);
+     T getObject(Class dataType, String rootField);
+    boolean hasData();
+    boolean hasError();
+    
+    public static interface GraphQLError {
+        String getMessage();
+        List> getLocations();
+        Object[] getPath();
+        Map getExtensions();
+    }
+    
+}
+----
+
+==== Getting errors
+We can check if there is any error and access each of them:
+[source, Java]
+----
+if ( graphQLResponse.hasError() ) {
+    log.warn("GraphQL error:");
+    graphQLResponse.getErrors().forEach( e -> log.warning(e.toString()) );
+    }
+----
+
+The getErrors() method returns a list of GraphQLError objects. In accordance with the specification, a GraphQLError is made of:
+
+* a message
+* a list of locations
+* an array of path
+* a map of extensions
+
+It is the responsibility of the client to decide how to deal with GraphQL errors.
+
+==== Getting data
+The hasData method enables to check if there is any data:
+[source, Java]
+----
+if ( graphQLResponse.hasData() )
+    log.info("Data inside");
+----
+
+Data can be obtained in 2 ways:
+
+* **as a generic JsonObject**: using the getData method, it is the responsibility of the caller to turn this JsonObject into application objects
+* *as an application object* (or a list of them): using the getObject (or getList) method. In that case, it is necessary to provide the expected data rootfield to be retrieved.
+
+For instance, with a UserProfile application class:
+[source, Java]
+----
+// Get the data as a generic JsonObject
+JsonObject data = graphQLResponse.getData();
+
+// Turn it into a UserProfile object
+JsonObject myData = data.getJsonObject("profile");
+Jsonb jsonb = JsonbBuilder.create();
+UserProfile userProfile = jsonb.fromJson(myData.toString(), Profile.class);
+
+// OR
+
+// Directly get a UserProfile object from graphqlReponse 
+UserProfile userProfile = graphQLResponse.getObject(Profile.class, "profile");
+----
+
+In the same way, the getList method enables to get a list of objects:
+[source,Java]
+----
+// Get a list of Person from a graphQLResponse
+List people = graphQLResponse.getList(Person.class, "people");
+----

From 78df0afe412976bca5a77a7a00a7510c46581f95 Mon Sep 17 00:00:00 2001
From: Jean-Francois James 
Date: Fri, 5 Jun 2020 17:42:29 +0200
Subject: [PATCH 049/248] Examples of fluent API for setting variables

Signed-off-by: Jean-Francois James 
---
 .../spec/src/main/asciidoc/dynamic_client.asciidoc | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/client/spec/src/main/asciidoc/dynamic_client.asciidoc b/client/spec/src/main/asciidoc/dynamic_client.asciidoc
index daba3e50..bac4bd21 100644
--- a/client/spec/src/main/asciidoc/dynamic_client.asciidoc
+++ b/client/spec/src/main/asciidoc/dynamic_client.asciidoc
@@ -333,15 +333,17 @@ GraphQLRequest graphQLRequest = new graphQLClientBuilder.newRequest(document.toS
 Optional GraphQL variables can be provided:
 [source,Java]
 ----
-graphQLRequest.addVariable("surname", "James");
-graphQLRequest.addVariable("personId", 1);
+graphQLRequest
+    .addVariable("surname", "James")
+    .addVariable("personId", 1);
 ----
 In order to make it reuseable for other executions, variables can also be reset:
 [source,Java]
 ----
-graphQLRequest.resetVariables();
-graphQLRequest.addVariable("surname", "Roux");
-graphQLRequest.addVariable("personId", 2);
+graphQLRequest
+    .resetVariables()
+    .addVariable("surname", "Roux")
+    .addVariable("personId", 2);
 ----
 With this approach, a GraphQLRequest object is immutable regarding the GraphQL request to run and mutable regarding the variables. It is the responsibility of the caller to assign the consistency between the request and the variables.  
 
@@ -363,7 +365,7 @@ Client client = clientBuilder.build();
 
 Response response = client
         .target("http://localhost:8080/graphql")
-        .request("application/json")
+        .request(MediaType.APPLICATION_JSON)
         .post(json(graphQLRequest));
 ----
 A registered JAX-RS MessageBodyWriter is needed to automatically turn a GraphQLRequest object into a JSON structure. This is the responsibility of the implementation to provide it.

From d7d29ac2ef73a66c36e60d7694919358c0800a39 Mon Sep 17 00:00:00 2001
From: JB 
Date: Fri, 12 Jun 2020 14:17:31 +0200
Subject: [PATCH 050/248] Updated dynamic client spec

Signed-off-by: JRX 
---
 .../src/main/asciidoc/dynamic_client.asciidoc | 192 +++++++++++++-----
 1 file changed, 140 insertions(+), 52 deletions(-)

diff --git a/client/spec/src/main/asciidoc/dynamic_client.asciidoc b/client/spec/src/main/asciidoc/dynamic_client.asciidoc
index bac4bd21..7131f918 100644
--- a/client/spec/src/main/asciidoc/dynamic_client.asciidoc
+++ b/client/spec/src/main/asciidoc/dynamic_client.asciidoc
@@ -25,9 +25,11 @@ MicroProfile GraphQL 1.0 has been focused on the server-side enabling to develop
 
 "Dynamic" means close to the GraphQL specification semantic and structure. We can compare it with what JAX-RS client API is for REST.
 
+A "type-safe" client API, similar to MicroProfile RestClient, should also be proposed in another document.
+
 == Goals
 
-. *Provides full control over the MicroProfile GraphQL capabilities*: operations, arguments, variables, scalars, input object, interface, partial results, errors...
+. *Provides full control over the MicroProfile GraphQL capabilities*: operations, arguments, variables, input types, scalars, interface, partial results, errors ...
 . *Consistency with MicroProfile GraphQL server* annotations (DateFormat, NumberFormat ...) and capabilities
 . *Consistency with MicroProfile*:
 * No dependency outside MicroProfile core
@@ -37,10 +39,10 @@ MicroProfile GraphQL 1.0 has been focused on the server-side enabling to develop
 
 == Non goals
 
-. *Transport layer support*: the GraphQL specification is transport agnostic.
-We propose to stay aligned with this approach, leaving implementations free to use any client network library (JAX-RS, Apache HTTPClient ...). However to make things more concrete, some examples using JAX-RS and HTTP are provided below.
-
-
+. *Transport layer support*: the GraphQL specification is independent of transport layer.
+We propose to stay aligned with this, leaving the final implementation free to use any client network library (JAX-RS, Apache HTTPClient ...).
+. *Serialization of custom Java classes to build requests*
+. *Deserialization of responses into custom Java classes*
 
 == Focus of release 1.1
 
@@ -98,7 +100,9 @@ Java 8 is still widely used in the industry and we propose to stick to it for a
 
 To be studied for next releases:
 
-* GraphQL subscription support
+* GraphQL variables
+* GraphQL subscription
+* Reactive API
 * https://spec.graphql.org/draft/#sec-Document[Multiple operations inside a GraphQL document]
 
 == Workflow of the API
@@ -115,7 +119,7 @@ Document myDocument = document(
                         )));
 
 // Serialization of the document into a string, ready to be sent.
-String graphqlRequest = myDocument.toString();
+String graphqlRequest = myDocument.build();
 
 ----
 == Building a GraphQL Document
@@ -125,13 +129,35 @@ image::back2back.jpg[back2back]
 ****
 *Static factory methods over constructors*
 
-In order to make the writing of request in Java as close as possible to the original GraphQL's philosophy,
-it has been decided to make _static factory methods_ an integral part of the API.
+In order to make the writing of a GraphQL request in Java as close as possible to the original GraphQL's philosophy,
+it has been decided to make the usage of _static factory methods_ an integral part of the API.
 
 Of course, constructors can still be used but at the cost of clarity and
 ease of use.
 ****
+
+=== Buildable
+[source,Java]
+----
+public interface Buildable {
+    String build();
+}
+----
+
+The _build_ method is expected to return the corresponding
+GraphQL source of a component.
+
 === Document
+[source,Java]
+----
+public interface Document extends Buildable {
+
+    List getOperations();
+
+    void setOperations(List operations);
+}
+----
+
 ==== Static factory methods
 [source,Java]
 ----
@@ -141,13 +167,31 @@ public static Document document(Operation... operations);
 public static Document document(List operations);
 ----
 
-==== Constructors
+=== Operation
 [source,Java]
 ----
-public Document(List operations);
+public interface Operation extends Buildable {
+
+    enum Type {
+        QUERY,
+        MUTATION,
+        SUBSCRIPTION
+    }
+
+    Type getType();
+
+    void setType(Type type);
+
+    String getName();
+
+    void setName(String name);
+
+    List getFields();
+
+    void setFields(List fields);
+}
 ----
 
-=== Operation
 ==== Static factory methods
 [source,Java]
 ----
@@ -176,13 +220,27 @@ When omitted,
 * *type* parameter will default to _QUERY_
 * *name* parameter will default to an _empty string_
 ****
-==== Constructors
+
+=== Field
+
 [source,Java]
 ----
-public Operation(Type type, String name, List fields);
+public interface Field extends Buildable {
+
+    String getName();
+
+    void setName(String name);
+
+    List getArguments();
+
+    void setArguments(List arguments);
+
+    List getFields();
+
+    void setFields(List fields);
+}
 ----
 
-=== Field
 ==== Static factory methods
 [source,Java]
 ----
@@ -221,16 +279,24 @@ public static Field field(String name, List fields);
 ****
 
 ****
-When omitted, *args* and *fields* parameters will default to an _empty list_.
+When omitted, *args* and *fields* parameters will default to an _empty list_
 ****
 
-==== Constructors
+=== Argument
 [source,Java]
 ----
-public Field(String name, List args, List fields);
+public interface Argument extends Buildable {
+
+    String getName();
+
+    void setName(String name);
+
+    Object getValue();
+
+    void setValue(Object value);
+}
 ----
 
-=== Argument
 ==== Static factory methods
 [source,Java]
 ----
@@ -240,26 +306,17 @@ public static List args(Argument... args);
 public static Argument arg(String name, Object value);
 ----
 
-==== Constructors
+=== Input Object
 [source,Java]
 ----
-public Argument(String name, Object value);
-----
+public interface InputObject extends Buildable {
 
-=== Enum
-==== Static factory methods
-[source,Java]
-----
-public static GraphQLEnum gqlEnum(String value);
-----
+    List getInputObjectFields();
 
-==== Constructors
-[source,Java]
-----
-public GraphQLEnum(String value);
+    void setInputObjectFields(List inputObjectFields);
+}
 ----
 
-=== Input Object
 ==== Static factory methods
 [source,Java]
 ----
@@ -268,13 +325,20 @@ public static InputObject object(InputObjectField... inputObjectFields);
 public static InputObject object(List inputObjectFields);
 ----
 
-==== Constructors
+=== Input Object Field
 [source,Java]
 ----
-public InputObject(List inputObjectFields);
+public interface InputObjectField extends Buildable {
+String getName();
+
+    void setName(String name);
+
+    Object getValue();
+
+    void setValue(Object value);
+}
 ----
 
-=== Input Object Field
 ==== Static factory methods
 [source,Java]
 ----
@@ -285,18 +349,33 @@ The keyword *prop* (as in _an object's property_) has been chosen instead of *fi
 to avoid confusion with the notion of _field of a selection set_.
 ****
 
-==== Constructors
+=== Enum
+[source,Java]
+----
+public interface GraphQLEnum {
+
+    String getValue();
+
+    void setValue(String value);
+}
+----
+
+==== Static factory methods
 [source,Java]
 ----
-public InputObjectField(String name, Object value);
+public static GraphQLEnum gqlEnum(String value);
 ----
 
+****
+Due to Java's reserved keyword _enum_, the prefixes _GraphQL_ and _gql_ have been added.
+****
+
 == Running a GraphQL document
 
-Once a GraphQL document has been prepared, it can be run against a server. 
+Once a GraphQL document has been prepared, it can be run against a server.
 This specification proposes two abstractions for that:
 
-. **GraphQLRequest**: prepare a request execution including the request and optional variables
+. **GraphQLRequest**: prepare a request execution including the request and optional variables.
 . **GraphQLResponse**: a holder for a GraphQL response including optional errors and data.
 
 === GraphQLClientBuilder
@@ -323,14 +402,14 @@ public interface GraphQLRequest {
 ----
 
 ==== Initialization
- 
+
 A GraphQLRequest object is initialised from the builder with a GraphQL request obtained from a Document:
 [source,Java]
 ----
-GraphQLRequest graphQLRequest = new graphQLClientBuilder.newRequest(document.toString());
+GraphQLRequest graphQLRequest = new graphQLClientBuilder.newRequest(document.build());
 ----
 ==== Setting variables
-Optional GraphQL variables can be provided:
+Optional GraphQL variables can be provided in a fluent manner:
 [source,Java]
 ----
 graphQLRequest
@@ -345,13 +424,14 @@ graphQLRequest
     .addVariable("surname", "Roux")
     .addVariable("personId", 2);
 ----
-With this approach, a GraphQLRequest object is immutable regarding the GraphQL request to run and mutable regarding the variables. It is the responsibility of the caller to assign the consistency between the request and the variables.  
+With this approach, a GraphQLRequest object is immutable regarding the GraphQL request to run and mutable regarding the variables.
+It is the responsibility of the caller to ensure the consistency between the request and the variables.
 
 Once initialized with a request and optional variables, a GraphQLrequest object can be sent to a GraphQL server. As mentioned in the "non-goal" paragraph, this specification is deliberatly transport agnostic. It is the responsibility of the implementation to propose a transport layer.
 
 For instance:
 
-* JAX-RS in a Jakarta EE or MicroProfile container 
+* JAX-RS in a Jakarta EE or MicroProfile container
 * raw HTTP using a library such as Apache HTTP client.
 
 ==== Examples of JAX-RS transport
@@ -385,7 +465,7 @@ GraphQLResponse graphQLResponse = client
         .request(MediaType.APPLICATION_JSON)
         .post(json(graphQLRequest), GraphQLResponse.class);
 ----
-A registered JAX-RS MessageBodyReader is needed to turn a JSON structure into a GraphQLResponse object. This is the responsibility of the implementation to provide it. 
+A registered JAX-RS MessageBodyReader is needed to turn a JSON structure into a GraphQLResponse object. This is the responsibility of the implementation to provide it.
 
 Using JAX-RS, we can even run a request in a reactive way:
 [source,Java]
@@ -403,11 +483,11 @@ CompletionStage csr = client
 
 ==== Examples of HTTP transport
 
-Let's see how to use a HTTP transport layer with Apache HttpClient: 
+Let's see how to use a HTTP transport layer with Apache HttpClient:
 [source,Java]
 ----
 // Prepare the HTTP POST
-URI endpoint = new URI("http://localhost:8080/graphql"); 
+URI endpoint = new URI("http://localhost:8080/graphql");
 HttpPost httpPost = new HttpPost(new URI(endpoint));
 
 StringEntity stringEntity = new StringEntity(jsonRequest.toJson(), ContentType.APPLICATION_JSON);
@@ -433,20 +513,28 @@ GraphQLResponse is a holder both for data and errors.
 [source,Java]
 ----
 public interface GraphQLResponse {
+
     JsonObject getData();
+
     List getErrors();
+
      List getList(Class dataType, String rootField);
+
      T getObject(Class dataType, String rootField);
+
     boolean hasData();
+
     boolean hasError();
-    
+
     public static interface GraphQLError {
         String getMessage();
+
         List> getLocations();
+
         Object[] getPath();
+
         Map getExtensions();
     }
-    
 }
 ----
 
@@ -479,7 +567,7 @@ if ( graphQLResponse.hasData() )
 
 Data can be obtained in 2 ways:
 
-* **as a generic JsonObject**: using the getData method, it is the responsibility of the caller to turn this JsonObject into application objects
+* **as a generic JsonObject**: using the getData method, it is the responsibility of the caller to turn this JsonObject into application objects.
 * *as an application object* (or a list of them): using the getObject (or getList) method. In that case, it is necessary to provide the expected data rootfield to be retrieved.
 
 For instance, with a UserProfile application class:
@@ -495,7 +583,7 @@ UserProfile userProfile = jsonb.fromJson(myData.toString(), Profile.class);
 
 // OR
 
-// Directly get a UserProfile object from graphqlReponse 
+// Directly get a UserProfile object from graphqlReponse
 UserProfile userProfile = graphQLResponse.getObject(Profile.class, "profile");
 ----
 

From 41bbe6c2d4443e8a4b8b63fea2acb282f72ca5ed Mon Sep 17 00:00:00 2001
From: JB 
Date: Fri, 12 Jun 2020 14:30:33 +0200
Subject: [PATCH 051/248] Add API for dynamic client

Signed-off-by: JRX 
---
 client/api/pom.xml                            | 14 ++++++
 .../graphql/client/GraphQLClientBuilder.java  | 21 ++++++++
 .../graphql/client/GraphQLRequest.java        | 28 +++++++++++
 .../graphql/client/GraphQLResponse.java       | 48 +++++++++++++++++++
 .../graphql/client/core/Argument.java         | 27 +++++++++++
 .../graphql/client/core/Buildable.java        | 21 ++++++++
 .../graphql/client/core/Document.java         | 24 ++++++++++
 .../graphql/client/core/Field.java            | 33 +++++++++++++
 .../graphql/client/core/GraphQLEnum.java      | 24 ++++++++++
 .../graphql/client/core/InputObject.java      | 25 ++++++++++
 .../graphql/client/core/InputObjectField.java | 27 +++++++++++
 .../graphql/client/core/Operation.java        | 39 +++++++++++++++
 .../src/main/asciidoc/dynamic_client.asciidoc | 16 +++----
 13 files changed, 339 insertions(+), 8 deletions(-)
 create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLClientBuilder.java
 create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLRequest.java
 create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLResponse.java
 create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Argument.java
 create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Buildable.java
 create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Document.java
 create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Field.java
 create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/GraphQLEnum.java
 create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObject.java
 create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObjectField.java
 create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Operation.java

diff --git a/client/api/pom.xml b/client/api/pom.xml
index d65e0da1..a7343d57 100644
--- a/client/api/pom.xml
+++ b/client/api/pom.xml
@@ -28,12 +28,26 @@
     Client-side code-first GraphQL APIs for MicroProfile :: API
     
     
+        
+        
+            jakarta.json
+            jakarta.json-api
+            1.1.6
+        
+        
+            jakarta.json.bind
+            jakarta.json.bind-api
+            1.0.2
+        
+
         
             org.osgi
             org.osgi.annotation.versioning
             1.1.0
             provided
         
+
+        
         
             org.testng
             testng
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLClientBuilder.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLClientBuilder.java
new file mode 100644
index 00000000..dff8d898
--- /dev/null
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLClientBuilder.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.microprofile.graphql.client;
+
+public interface GraphQLClientBuilder {
+    GraphQLRequest newRequest(String request);
+}
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLRequest.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLRequest.java
new file mode 100644
index 00000000..96a9befb
--- /dev/null
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLRequest.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.microprofile.graphql.client;
+
+
+public interface GraphQLRequest {
+
+    GraphQLRequest addVariable(String name, Object value);
+
+    GraphQLRequest resetVariables();
+
+    String toJson();
+    
+}
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLResponse.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLResponse.java
new file mode 100644
index 00000000..b665ee56
--- /dev/null
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLResponse.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.client;
+
+import javax.json.JsonObject;
+import java.util.List;
+import java.util.Map;
+
+public interface GraphQLResponse {
+
+    JsonObject getData();
+
+    List getErrors();
+
+     List getList(Class dataType, String rootField);
+
+     T getObject(Class dataType, String rootField);
+
+    boolean hasData();
+
+    boolean hasError();
+    
+    public static interface GraphQLError {
+        
+        String getMessage();
+
+        List> getLocations();
+      
+        Object[] getPath();
+
+        Map getExtensions();
+        
+    }
+    
+}
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Argument.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Argument.java
new file mode 100644
index 00000000..dd667dba
--- /dev/null
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Argument.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.microprofile.graphql.client.core;
+
+public interface Argument extends Buildable {
+    String getName();
+
+    void setName(String name);
+
+    Object getValue();
+
+    void setValue(Object value);
+}
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Buildable.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Buildable.java
new file mode 100644
index 00000000..32df8f6e
--- /dev/null
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Buildable.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.microprofile.graphql.client.core;
+
+public interface Buildable {
+    String build();
+}
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Document.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Document.java
new file mode 100644
index 00000000..901edf48
--- /dev/null
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Document.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.microprofile.graphql.client.core;
+
+import java.util.List;
+
+public interface Document extends Buildable {
+    List getOperations();
+    void setOperations(List operations);
+}
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Field.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Field.java
new file mode 100644
index 00000000..25e8a099
--- /dev/null
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Field.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.microprofile.graphql.client.core;
+
+import java.util.List;
+
+public interface Field extends Buildable {
+    String getName();
+
+    void setName(String name);
+
+    List getArguments();
+
+    void setArguments(List arguments);
+
+    List getFields();
+
+    void setFields(List fields);
+}
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/GraphQLEnum.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/GraphQLEnum.java
new file mode 100644
index 00000000..94ab63d6
--- /dev/null
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/GraphQLEnum.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.microprofile.graphql.client.core;
+
+public interface GraphQLEnum {
+
+    String getValue();
+
+    void setValue(String value);
+}
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObject.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObject.java
new file mode 100644
index 00000000..11f6b11e
--- /dev/null
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObject.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.microprofile.graphql.client.core;
+
+import java.util.List;
+
+public interface InputObject extends Buildable {
+    List getInputObjectFields();
+
+    void setInputObjectFields(List inputObjectFields);
+}
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObjectField.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObjectField.java
new file mode 100644
index 00000000..0e29a989
--- /dev/null
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObjectField.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.microprofile.graphql.client.core;
+
+public interface InputObjectField extends Buildable {
+    String getName();
+
+    void setName(String name);
+
+    Object getValue();
+
+    void setValue(Object value);
+}
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Operation.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Operation.java
new file mode 100644
index 00000000..ec1a6b4f
--- /dev/null
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Operation.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.microprofile.graphql.client.core;
+
+import java.util.List;
+
+public interface Operation extends Buildable {
+    enum Type {
+        QUERY,
+        MUTATION,
+        SUBSCRIPTION
+    }
+
+    Type getType();
+
+    void setType(Type type);
+
+    String getName();
+
+    void setName(String name);
+
+    List getFields();
+
+    void setFields(List fields);
+}
diff --git a/client/spec/src/main/asciidoc/dynamic_client.asciidoc b/client/spec/src/main/asciidoc/dynamic_client.asciidoc
index 7131f918..4088e136 100644
--- a/client/spec/src/main/asciidoc/dynamic_client.asciidoc
+++ b/client/spec/src/main/asciidoc/dynamic_client.asciidoc
@@ -152,9 +152,9 @@ GraphQL source of a component.
 ----
 public interface Document extends Buildable {
 
-    List getOperations();
+    List getOperations();
 
-    void setOperations(List operations);
+    void setOperations(List operations);
 }
 ----
 
@@ -186,9 +186,9 @@ public interface Operation extends Buildable {
 
     void setName(String name);
 
-    List getFields();
+    List getFields();
 
-    void setFields(List fields);
+    void setFields(List fields);
 }
 ----
 
@@ -231,9 +231,9 @@ public interface Field extends Buildable {
 
     void setName(String name);
 
-    List getArguments();
+    List getArguments();
 
-    void setArguments(List arguments);
+    void setArguments(List arguments);
 
     List getFields();
 
@@ -311,9 +311,9 @@ public static Argument arg(String name, Object value);
 ----
 public interface InputObject extends Buildable {
 
-    List getInputObjectFields();
+    List getInputObjectFields();
 
-    void setInputObjectFields(List inputObjectFields);
+    void setInputObjectFields(List inputObjectFields);
 }
 ----
 

From 50399022ac328c331f05e898be7d1fa74d86b896 Mon Sep 17 00:00:00 2001
From: Andy McCright 
Date: Fri, 12 Jun 2020 16:06:33 -0500
Subject: [PATCH 052/248] [#264] Deprecate black/whitelist for exceptions

Signed-off-by: Andy McCright 
---
 .../eclipse/microprofile/graphql/ConfigKey.java  |  6 ++++++
 .../src/main/asciidoc/errorhandling.asciidoc     | 16 ++++++++--------
 .../tck/apps/superhero/api/CsvIOException.java   |  3 ++-
 .../superhero/api/FlawNotFoundException.java     |  3 ++-
 .../tck/apps/superhero/api/HeroFinder.java       | 10 +++++-----
 .../graphql/tck/dynamic/DeployableUnit.java      |  5 +++--
 .../input.graphql                                |  0
 .../{blacklist => hideErrorMessage}/output.json  |  0
 .../test.properties                              |  0
 .../input.graphql                                |  0
 .../output.json                                  |  0
 .../test.properties                              |  0
 .../input.graphql                                |  0
 .../{whitelist => showErrorMessage}/output.json  |  0
 .../test.properties                              |  0
 .../input.graphql                                |  0
 .../output.json                                  |  0
 .../test.properties                              |  0
 .../tck/src/main/resources/tests/schemaTests.csv |  2 +-
 19 files changed, 27 insertions(+), 18 deletions(-)
 rename server/tck/src/main/resources/tests/errorHandling/{blacklist => hideErrorMessage}/input.graphql (100%)
 rename server/tck/src/main/resources/tests/errorHandling/{blacklist => hideErrorMessage}/output.json (100%)
 rename server/tck/src/main/resources/tests/errorHandling/{blacklist => hideErrorMessage}/test.properties (100%)
 rename server/tck/src/main/resources/tests/errorHandling/{blacklistTransitive => hideErrorMessageTransitive}/input.graphql (100%)
 rename server/tck/src/main/resources/tests/errorHandling/{blacklistTransitive => hideErrorMessageTransitive}/output.json (100%)
 rename server/tck/src/main/resources/tests/errorHandling/{blacklistTransitive => hideErrorMessageTransitive}/test.properties (100%)
 rename server/tck/src/main/resources/tests/errorHandling/{whitelist => showErrorMessage}/input.graphql (100%)
 rename server/tck/src/main/resources/tests/errorHandling/{whitelist => showErrorMessage}/output.json (100%)
 rename server/tck/src/main/resources/tests/errorHandling/{whitelist => showErrorMessage}/test.properties (100%)
 rename server/tck/src/main/resources/tests/errorHandling/{whitelistTransitive => showErrorMessageTransitive}/input.graphql (100%)
 rename server/tck/src/main/resources/tests/errorHandling/{whitelistTransitive => showErrorMessageTransitive}/output.json (100%)
 rename server/tck/src/main/resources/tests/errorHandling/{whitelistTransitive => showErrorMessageTransitive}/test.properties (100%)

diff --git a/server/api/src/main/java/org/eclipse/microprofile/graphql/ConfigKey.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/ConfigKey.java
index f764808d..1c7a890f 100644
--- a/server/api/src/main/java/org/eclipse/microprofile/graphql/ConfigKey.java
+++ b/server/api/src/main/java/org/eclipse/microprofile/graphql/ConfigKey.java
@@ -22,6 +22,12 @@
  */
 public interface ConfigKey {
     public static final String DEFAULT_ERROR_MESSAGE = "mp.graphql.defaultErrorMessage";
+
+    @Deprecated
     public static final String EXCEPTION_BLACK_LIST = "mp.graphql.exceptionsBlackList";
+    public static final String EXCEPTION_HIDE_ERROR_MESSAGE_LIST = "mp.graphql.hideErrorMessage";
+
+    @Deprecated
     public static final String EXCEPTION_WHITE_LIST = "mp.graphql.exceptionsWhiteList";
+    public static final String EXCEPTION_SHOW_ERROR_MESSAGE_LIST = "mp.graphql.showErrorMessage";
 }
\ No newline at end of file
diff --git a/server/spec/src/main/asciidoc/errorhandling.asciidoc b/server/spec/src/main/asciidoc/errorhandling.asciidoc
index 3143a632..92648130 100644
--- a/server/spec/src/main/asciidoc/errorhandling.asciidoc
+++ b/server/spec/src/main/asciidoc/errorhandling.asciidoc
@@ -96,31 +96,31 @@ Example:
 
 `mp.graphql.defaultErrorMessage=Unexpected failure in the system. Jarvis is working to fix it.`
 
-Users can allow unchecked exception messages to be included (changing the default behavior as described above) by adding the exception class name to a `whitelist`. This is done using MicroProfile Config and setting the `mp.graphql.exceptionsWhiteList` property (comma-separated list)
+Users can allow unchecked exception messages to be included (changing the default behavior as described above) by adding the exception class name to a `showErrorMessage` list. This is done using MicroProfile Config and setting the `mp.graphql.showErrorMessage` property with a comma-separated list (formerly `mp.graphql.exceptionsWhiteList` - this property is deprecated and is scheduled for removal in the next major release).
 
 Example:
 
-`mp.graphql.exceptionsWhiteList=org.eclipse.microprofile.graphql.tck.apps.superhero.api.WeaknessNotFoundException`
+`mp.graphql.showErrorMessage=org.eclipse.microprofile.graphql.tck.apps.superhero.api.WeaknessNotFoundException`
 
-NOTE: By default all unchecked exceptions are on the `blacklist`.
+NOTE: By default all unchecked exceptions are on the `hideErrorMessage` list.
 
 IMPORTANT: Configurations will indicate all instances of the exception class, transitively. Example:
-If you have an exception that extends the above mentioned `WeaknessNotFoundException`, the whitelist will still apply to that specialization.
+If you have an exception that extends the above mentioned `WeaknessNotFoundException`, the showErrorMessage list will still apply to that specialization.
 
 ==== Checked exceptions
 
 By default checked exceptions must include the exception message in the `message` field of the error, and where possible also include the `locations` and `path`.
 
-Implementations must support the ability to 'hide' this message for checked exceptions by allowing users to add them to a `blacklist`. This is done using MicroProfile Config and setting the `mp.graphql.exceptionsBlackList` property (comma-separated list)
+Implementations must support the ability to 'hide' this message for checked exceptions by allowing users to add them to the `hideErrorMessage` list. This is done using MicroProfile Config and setting the `mp.graphql.hideErrorMessage` property with a comma-separated list (formerly `mp.graphql.exceptionsBlackList` - this property is deprecated and is scheduled for removal in the next major release).
 
 Example:
 
-`mp.graphql.exceptionsBlackList=java.io.IOException,java.util.concurrent.TimeoutException`
+`mp.graphql.hideErrorMessage=java.io.IOException,java.util.concurrent.TimeoutException`
 
-NOTE: By default all checked exceptions is on the `whitelist`.
+NOTE: By default all checked exceptions is on the `showErrorMessage` list.
 
 IMPORTANT: Configurations will indicate all instances of the exception class, transitively. Example:
-If you have an exception that extends the above mentioned `IOException`, the blacklist will still apply to any specialization (`MyException extends IOException`)
+If you have an exception that extends the above mentioned `IOException`, the hideErrorMessage list will still apply to any specialization (`MyException extends IOException`)
 
 === Partial Results
 
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/CsvIOException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/CsvIOException.java
index 65de2726..435eea73 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/CsvIOException.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/CsvIOException.java
@@ -18,7 +18,8 @@
 import java.io.IOException;
 
 /**
- * Extending a IOException to test transitive blacklist
+ * Extending a IOException to test transitive hideErrorMessage list
+ * 
  * @author Phillip Kruger (phillip.kruger@redhat.com)
  */
 public class CsvIOException extends IOException {
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/FlawNotFoundException.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/FlawNotFoundException.java
index 8d1a0bfb..8db6932b 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/FlawNotFoundException.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/FlawNotFoundException.java
@@ -16,7 +16,8 @@
 package org.eclipse.microprofile.graphql.tck.apps.superhero.api;
 
 /**
- * To test transitive white list exceptions
+ * To test transitive showErrorMessage list exceptions
+ * 
  * @author Phillip Kruger (phillip.kruger@redhat.com)
  */
 public class FlawNotFoundException extends WeaknessNotFoundException {
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/HeroFinder.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/HeroFinder.java
index 77f381d3..c9571442 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/HeroFinder.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/superhero/api/HeroFinder.java
@@ -98,31 +98,31 @@ public SuperHero superHero(@Name("name") @Description("Super hero name, not real
         return Optional.ofNullable(heroDB.getHero(name)).orElseThrow(() -> new UnknownHeroException(name));
     }
 
-    @Query @Description("Testing the blacklist of Checked Exceptions")
+    @Query @Description("Testing the hideErrorMessage list of Checked Exceptions")
     public SuperHero exportToFile(@Name("name") @Description("Super hero name, not real name") String name) throws IOException {
         LOG.log(Level.INFO, "exportToFile invoked [{0}]", name);
         throw new IOException("No you can not do this.");
     }
 
-    @Query @Description("Testing the blacklist of transitive Checked Exceptions")
+    @Query @Description("Testing the hideErrorMessage list of transitive Checked Exceptions")
     public SuperHero exportToCSVFile(@Name("name") @Description("Super hero name, not real name") String name) throws CsvIOException {
         LOG.log(Level.INFO, "exportToCSVFile invoked [{0}]", name);
         throw new CsvIOException("No you can not do this.");
     }
     
-    @Query @Description("Testing the default blacklist for Runtime Exceptions")
+    @Query @Description("Testing the default hideErrorMessage list for Runtime Exceptions")
     public SuperHero villian(@Name("name") @Description("Super hero name, not real name") String name) {
         LOG.log(Level.INFO, "villian invoked [{0}]", name);
         throw new RuntimeException("SuperHero can not be a villian");
     }
 
-    @Query @Description("Testing the whitelist for Runtime Exceptions")
+    @Query @Description("Testing the showErrorMessage list for Runtime Exceptions")
     public SuperHero weakness(@Name("name") @Description("Super hero name, not real name") String name) {
         LOG.log(Level.INFO, "weakness invoked [{0}]", name);
         throw new WeaknessNotFoundException("Superhero has no weakness");
     }
 
-    @Query @Description("Testing the whitelist for transitive Runtime Exceptions")
+    @Query @Description("Testing the showErrorMessage list for transitive Runtime Exceptions")
     public SuperHero findFlaw(@Name("name") @Description("Super hero name, not real name") String name) {
         LOG.log(Level.INFO, "findFlaw invoked [{0}]", name);
         throw new FlawNotFoundException("Superhero has no flaw");
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DeployableUnit.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DeployableUnit.java
index 5d7215d3..ce620399 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DeployableUnit.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DeployableUnit.java
@@ -58,8 +58,9 @@ private static String getPropertyAsString() throws IOException {
     private static final Properties PROPERTIES = new Properties();
     static {
         PROPERTIES.put(ConfigKey.DEFAULT_ERROR_MESSAGE, "Unexpected failure in the system. Jarvis is working to fix it.");
-        PROPERTIES.put(ConfigKey.EXCEPTION_BLACK_LIST, "java.io.IOException,java.util.concurrent.TimeoutException");
-        PROPERTIES.put(ConfigKey.EXCEPTION_WHITE_LIST, "org.eclipse.microprofile.graphql.tck.apps.superhero.api.WeaknessNotFoundException");
+        PROPERTIES.put(ConfigKey.EXCEPTION_HIDE_ERROR_MESSAGE_LIST, "java.io.IOException,java.util.concurrent.TimeoutException");
+        PROPERTIES.put(ConfigKey.EXCEPTION_SHOW_ERROR_MESSAGE_LIST, 
+                       "org.eclipse.microprofile.graphql.tck.apps.superhero.api.WeaknessNotFoundException");
     }
 
 }
diff --git a/server/tck/src/main/resources/tests/errorHandling/blacklist/input.graphql b/server/tck/src/main/resources/tests/errorHandling/hideErrorMessage/input.graphql
similarity index 100%
rename from server/tck/src/main/resources/tests/errorHandling/blacklist/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/hideErrorMessage/input.graphql
diff --git a/server/tck/src/main/resources/tests/errorHandling/blacklist/output.json b/server/tck/src/main/resources/tests/errorHandling/hideErrorMessage/output.json
similarity index 100%
rename from server/tck/src/main/resources/tests/errorHandling/blacklist/output.json
rename to server/tck/src/main/resources/tests/errorHandling/hideErrorMessage/output.json
diff --git a/server/tck/src/main/resources/tests/errorHandling/blacklist/test.properties b/server/tck/src/main/resources/tests/errorHandling/hideErrorMessage/test.properties
similarity index 100%
rename from server/tck/src/main/resources/tests/errorHandling/blacklist/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/hideErrorMessage/test.properties
diff --git a/server/tck/src/main/resources/tests/errorHandling/blacklistTransitive/input.graphql b/server/tck/src/main/resources/tests/errorHandling/hideErrorMessageTransitive/input.graphql
similarity index 100%
rename from server/tck/src/main/resources/tests/errorHandling/blacklistTransitive/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/hideErrorMessageTransitive/input.graphql
diff --git a/server/tck/src/main/resources/tests/errorHandling/blacklistTransitive/output.json b/server/tck/src/main/resources/tests/errorHandling/hideErrorMessageTransitive/output.json
similarity index 100%
rename from server/tck/src/main/resources/tests/errorHandling/blacklistTransitive/output.json
rename to server/tck/src/main/resources/tests/errorHandling/hideErrorMessageTransitive/output.json
diff --git a/server/tck/src/main/resources/tests/errorHandling/blacklistTransitive/test.properties b/server/tck/src/main/resources/tests/errorHandling/hideErrorMessageTransitive/test.properties
similarity index 100%
rename from server/tck/src/main/resources/tests/errorHandling/blacklistTransitive/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/hideErrorMessageTransitive/test.properties
diff --git a/server/tck/src/main/resources/tests/errorHandling/whitelist/input.graphql b/server/tck/src/main/resources/tests/errorHandling/showErrorMessage/input.graphql
similarity index 100%
rename from server/tck/src/main/resources/tests/errorHandling/whitelist/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/showErrorMessage/input.graphql
diff --git a/server/tck/src/main/resources/tests/errorHandling/whitelist/output.json b/server/tck/src/main/resources/tests/errorHandling/showErrorMessage/output.json
similarity index 100%
rename from server/tck/src/main/resources/tests/errorHandling/whitelist/output.json
rename to server/tck/src/main/resources/tests/errorHandling/showErrorMessage/output.json
diff --git a/server/tck/src/main/resources/tests/errorHandling/whitelist/test.properties b/server/tck/src/main/resources/tests/errorHandling/showErrorMessage/test.properties
similarity index 100%
rename from server/tck/src/main/resources/tests/errorHandling/whitelist/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/showErrorMessage/test.properties
diff --git a/server/tck/src/main/resources/tests/errorHandling/whitelistTransitive/input.graphql b/server/tck/src/main/resources/tests/errorHandling/showErrorMessageTransitive/input.graphql
similarity index 100%
rename from server/tck/src/main/resources/tests/errorHandling/whitelistTransitive/input.graphql
rename to server/tck/src/main/resources/tests/errorHandling/showErrorMessageTransitive/input.graphql
diff --git a/server/tck/src/main/resources/tests/errorHandling/whitelistTransitive/output.json b/server/tck/src/main/resources/tests/errorHandling/showErrorMessageTransitive/output.json
similarity index 100%
rename from server/tck/src/main/resources/tests/errorHandling/whitelistTransitive/output.json
rename to server/tck/src/main/resources/tests/errorHandling/showErrorMessageTransitive/output.json
diff --git a/server/tck/src/main/resources/tests/errorHandling/whitelistTransitive/test.properties b/server/tck/src/main/resources/tests/errorHandling/showErrorMessageTransitive/test.properties
similarity index 100%
rename from server/tck/src/main/resources/tests/errorHandling/whitelistTransitive/test.properties
rename to server/tck/src/main/resources/tests/errorHandling/showErrorMessageTransitive/test.properties
diff --git a/server/tck/src/main/resources/tests/schemaTests.csv b/server/tck/src/main/resources/tests/schemaTests.csv
index 6f7ceaaf..c6d0b181 100644
--- a/server/tck/src/main/resources/tests/schemaTests.csv
+++ b/server/tck/src/main/resources/tests/schemaTests.csv
@@ -101,7 +101,7 @@
 56|type Mutation       |   settlement: String                                      |   Expecting a settlement mutation where the set is not removed
 
 # testDescription
-57|type Query          |   "Testing the blacklist of Checked Exceptions"           |   Expecting a description for the exportToFile query
+57|type Query          |   "Testing the hideErrorMessage list of Checked Exceptions"       |   Expecting a description for the exportToFile query
 58|type Query          |   "Super hero name, not real name"                        |   Expecting a description for the name parameter on the exportToFile query
 
 # testJsonDefault

From acf165a501086f04a41d81bf4cf0cc88e2f28782 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=BCdiger=20zu=20Dohna?= 
Date: Tue, 16 Jun 2020 06:05:48 +0200
Subject: [PATCH 053/248] fix #267: actually set TCK headers (and log it)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Rüdiger zu Dohna 
---
 .../graphql/tck/dynamic/ExecutionDynamicTest.java           | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
index 5634e3f1..bdbfb028 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
@@ -100,8 +100,10 @@ private void runTest(TestData testData){
             this.currentTestData = testData;
             Map httpHeaders = new HashMap<>();
             if(testData.getHttpHeaders()!=null && !testData.getHttpHeaders().isEmpty()){
-                for(Map.Entry header:httpHeaders.entrySet()){
-                    httpHeaders.put(header.getKey(), header.getValue());
+                for(String headerName:testData.getHttpHeaders().stringPropertyNames()){
+                    String value = testData.getHttpHeaders().getProperty(headerName);
+                    LOG.info("setting header " + headerName + " to " + value);
+                    httpHeaders.put(headerName, value);
                 }
             }
 

From 42db04f48929fcae00a6760922b8842d0241cdc0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=BCdiger=20zu=20Dohna?= 
Date: Mon, 15 Jun 2020 07:01:27 +0200
Subject: [PATCH 054/248] #179: test all dynamic non-mutations also with GET
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Rüdiger zu Dohna 
---
 .../tck/dynamic/ExecutionDynamicTest.java     | 85 +++++++++++++------
 .../tck/dynamic/execution/PrintUtil.java      | 39 +++++----
 2 files changed, 83 insertions(+), 41 deletions(-)

diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
index bdbfb028..3c1c6ebb 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
@@ -37,6 +37,7 @@
 import javax.json.Json;
 import javax.json.JsonArray;
 import javax.json.JsonObject;
+import javax.json.JsonObjectBuilder;
 import javax.json.JsonPatchBuilder;
 import javax.json.JsonReader;
 import org.jboss.shrinkwrap.api.Archive;
@@ -52,6 +53,8 @@
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.Test;
 
+import static java.nio.charset.StandardCharsets.UTF_8;
+
 /**
  * This test runs all test defined in the implementation 'src/test/resources' folder 
  * and all test included here in the archive's /tests folder
@@ -62,7 +65,6 @@ public class ExecutionDynamicTest extends Arquillian {
 
     private static final String PATH = "graphql"; // Default. TODO: Test when configured
 
-    private static final String UTF8 = "utf-8";
     private static final String MEDIATYPE_JSON = "application/json";
     private static final String HEADER_CONTENT_TYPE = "Content-Type";
     private static final String HEADER_ACCEPT = "Accept";
@@ -71,6 +73,7 @@ public class ExecutionDynamicTest extends Arquillian {
     private static final int CONNECT_TIMEOUT = Integer.getInteger("mp.tck.connect.timeout", 5000);
     private static final int READ_TIMEOUT = Integer.getInteger("mp.tck.read.timeout", 5000);
 
+    private String currentHttpMethod = null;
     private TestData currentTestData = null;
     private String currentOutput = null;
 
@@ -84,20 +87,33 @@ public static Archive getDeployment() throws Exception {
 
     @RunAsClient
     @Test(dataProvider="specification", dataProviderClass = GraphQLTestDataProvider.class)
-    public void testSpecification(TestData testData){
-        runTest(testData);
+    public void testSpecificationPOST(TestData testData){
+        runTest(testData, "POST");
+    }
+
+    @RunAsClient
+    @Test(dataProvider="implementation", dataProviderClass = GraphQLTestDataProvider.class)
+    public void testImplementationSpecificPOST(TestData testData) {
+        runTest(testData, "POST");
+    }
+
+    @RunAsClient
+    @Test(dataProvider="specification", dataProviderClass = GraphQLTestDataProvider.class)
+    public void testSpecificationGET(TestData testData){
+        runTest(testData, "GET");
     }
 
     @RunAsClient
     @Test(dataProvider="implementation", dataProviderClass = GraphQLTestDataProvider.class)
-    public void testImplementationSpecific(TestData testData) throws IOException {
-        runTest(testData);
+    public void testImplementationSpecificGET(TestData testData) {
+        runTest(testData, "GET");
     }
 
-    private void runTest(TestData testData){
-        if(testData!=null && isValidInput(testData.getInput())) {
-            LOG.info("Running test [" + testData.getName() + "]");
+    private void runTest(TestData testData, String httpMethod){
+        if(testData!=null && isValidInput(testData.getInput()) && !isGetMutation(httpMethod, testData.getInput())) {
+            LOG.info("Running test [" + httpMethod + " :: " + testData.getName() + "]");
             this.currentTestData = testData;
+            this.currentHttpMethod = httpMethod;
             Map httpHeaders = new HashMap<>();
             if(testData.getHttpHeaders()!=null && !testData.getHttpHeaders().isEmpty()){
                 for(String headerName:testData.getHttpHeaders().stringPropertyNames()){
@@ -109,20 +125,20 @@ private void runTest(TestData testData){
 
             // Prepare if needed
             if(isValidInput(testData.getPrepare())){
-                postHTTPRequest(testData.getPrepare(),testData.getVariables(),httpHeaders);
+                executeHttpRequest("POST",testData.getPrepare(),testData.getVariables(),httpHeaders);
             }
 
             // Run the actual test and get the response
-            HttpResponse httpResponse = postHTTPRequest(testData.getInput(),testData.getVariables(),httpHeaders);
+            HttpResponse httpResponse = executeHttpRequest(httpMethod,testData.getInput(),testData.getVariables(),httpHeaders);
+            this.currentOutput = httpResponse.getContent();
             if(httpResponse.isSuccessful()){
-                this.currentOutput = httpResponse.getContent();
-                
+
                 // Validate the output structure
                 validateResponseStructure();
                 
                 // Cleanup if needed
                 if(isValidInput(testData.getCleanup())){
-                    postHTTPRequest(testData.getCleanup(),testData.getVariables(),httpHeaders);
+                    executeHttpRequest("POST",testData.getCleanup(),testData.getVariables(),httpHeaders);
                 }
                 
                 // Compare to expected output
@@ -142,10 +158,22 @@ private void runTest(TestData testData){
         }
     }
 
+    private boolean isGetMutation(String httpMethod, String input) {
+        return "GET".equals(httpMethod) && toHttpQuery(input).startsWith("mutation+");
+    }
+
+    private String toHttpQuery(String graphQlQuery) {
+        return graphQlQuery
+            .trim()
+            .replaceAll("(?s)#.*?\n", "") // comments
+            .replaceAll("(?s)\\s+", "+"); // whitespace, esp. \n
+    }
+
     @AfterMethod
     public void tearDown(ITestResult result) {
        if (result!=null && result.getStatus() == ITestResult.FAILURE) {
-            PrintUtil.toDisk(this.currentTestData,
+            PrintUtil.toDisk(this.currentHttpMethod,
+                    this.currentTestData,
                     this.currentOutput,
                     result.getThrowable());
        }
@@ -202,18 +230,20 @@ private boolean isValidInput(String input){
         return input!=null && !input.isEmpty();
     }
 
-    private HttpResponse postHTTPRequest(String graphQL, JsonObject variables, Map httpHeaders){
+    private HttpResponse executeHttpRequest(String httpMethod, String graphQL, JsonObject variables, Map httpHeaders){
         try {
-            URL url = new URL(this.uri + PATH);
+            boolean isPost = "POST".equals(httpMethod);
+            URL url = new URL(this.uri + PATH + (isPost ? "" :
+                "?query=" + toHttpQuery(graphQL)));
             HttpURLConnection connection = (HttpURLConnection) url.openConnection();
-            connection.setRequestMethod("POST"); // TODO: Also test with GET and query string ? Are we allowing it ?
+            connection.setRequestMethod(httpMethod);
 
             setTimeouts(connection);
             addHeaders(connection,httpHeaders);
 
             connection.setDoOutput(true);
 
-            JsonObject body = createRequestBody(graphQL, variables);
+            JsonObject body = createRequestBody(isPost ? graphQL : null, variables);
 
             postRequest(connection,body);
 
@@ -226,10 +256,10 @@ private HttpResponse postHTTPRequest(String graphQL, JsonObject variables, Map
Date: Sun, 21 Jun 2020 14:19:56 +0200
Subject: [PATCH 055/248] Fix GET Test. (Remove post on GET and encoded with
 line breaks) Signed-off-by:Phillip Kruger 

---
 .../tck/dynamic/ExecutionDynamicTest.java     | 102 +++++++++++-------
 .../tck/dynamic/execution/TestData.java       |   4 +
 2 files changed, 67 insertions(+), 39 deletions(-)

diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
index 3c1c6ebb..4b0bb6d7 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
@@ -26,9 +26,13 @@
 import java.io.OutputStream;
 import java.io.Reader;
 import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
 import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
 import java.net.ProtocolException;
 import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URLEncoder;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
@@ -70,10 +74,12 @@ public class ExecutionDynamicTest extends Arquillian {
     private static final String HEADER_ACCEPT = "Accept";
     private static final String QUERY = "query";
     private static final String VARIABLES = "variables";
+    private static final String EQUALS = "=";
+    private static final String AND = "&";
     private static final int CONNECT_TIMEOUT = Integer.getInteger("mp.tck.connect.timeout", 5000);
     private static final int READ_TIMEOUT = Integer.getInteger("mp.tck.read.timeout", 5000);
 
-    private String currentHttpMethod = null;
+    private HttpMethod currentHttpMethod = null;
     private TestData currentTestData = null;
     private String currentOutput = null;
 
@@ -88,29 +94,29 @@ public static Archive getDeployment() throws Exception {
     @RunAsClient
     @Test(dataProvider="specification", dataProviderClass = GraphQLTestDataProvider.class)
     public void testSpecificationPOST(TestData testData){
-        runTest(testData, "POST");
+        runTest(testData, HttpMethod.POST);
     }
 
     @RunAsClient
     @Test(dataProvider="implementation", dataProviderClass = GraphQLTestDataProvider.class)
     public void testImplementationSpecificPOST(TestData testData) {
-        runTest(testData, "POST");
+        runTest(testData, HttpMethod.POST);
     }
 
     @RunAsClient
     @Test(dataProvider="specification", dataProviderClass = GraphQLTestDataProvider.class)
     public void testSpecificationGET(TestData testData){
-        runTest(testData, "GET");
+        runTest(testData, HttpMethod.GET);
     }
 
     @RunAsClient
     @Test(dataProvider="implementation", dataProviderClass = GraphQLTestDataProvider.class)
     public void testImplementationSpecificGET(TestData testData) {
-        runTest(testData, "GET");
+        runTest(testData,HttpMethod.GET);
     }
-
-    private void runTest(TestData testData, String httpMethod){
-        if(testData!=null && isValidInput(testData.getInput()) && !isGetMutation(httpMethod, testData.getInput())) {
+    
+    private void runTest(TestData testData, HttpMethod httpMethod){
+        if(testData!=null && isValidInput(testData.getInput())) {
             LOG.info("Running test [" + httpMethod + " :: " + testData.getName() + "]");
             this.currentTestData = testData;
             this.currentHttpMethod = httpMethod;
@@ -125,9 +131,14 @@ private void runTest(TestData testData, String httpMethod){
 
             // Prepare if needed
             if(isValidInput(testData.getPrepare())){
-                executeHttpRequest("POST",testData.getPrepare(),testData.getVariables(),httpHeaders);
+                executeHttpRequest(httpMethod.POST,testData.getPrepare(),testData.getVariables(),httpHeaders);
             }
 
+            // We can only do Queries over GET
+            if(testData.isMutation()){
+                httpMethod = HttpMethod.POST;
+            }
+            
             // Run the actual test and get the response
             HttpResponse httpResponse = executeHttpRequest(httpMethod,testData.getInput(),testData.getVariables(),httpHeaders);
             this.currentOutput = httpResponse.getContent();
@@ -135,12 +146,12 @@ private void runTest(TestData testData, String httpMethod){
 
                 // Validate the output structure
                 validateResponseStructure();
-                
+
                 // Cleanup if needed
                 if(isValidInput(testData.getCleanup())){
-                    executeHttpRequest("POST",testData.getCleanup(),testData.getVariables(),httpHeaders);
+                    executeHttpRequest(httpMethod.POST,testData.getCleanup(),testData.getVariables(),httpHeaders);
                 }
-                
+
                 // Compare to expected output
                 try{
                     JSONAssert.assertEquals(testData.getFailMessage(),testData.getOutput(), this.currentOutput, testData.beStrict());
@@ -158,21 +169,10 @@ private void runTest(TestData testData, String httpMethod){
         }
     }
 
-    private boolean isGetMutation(String httpMethod, String input) {
-        return "GET".equals(httpMethod) && toHttpQuery(input).startsWith("mutation+");
-    }
-
-    private String toHttpQuery(String graphQlQuery) {
-        return graphQlQuery
-            .trim()
-            .replaceAll("(?s)#.*?\n", "") // comments
-            .replaceAll("(?s)\\s+", "+"); // whitespace, esp. \n
-    }
-
     @AfterMethod
     public void tearDown(ITestResult result) {
        if (result!=null && result.getStatus() == ITestResult.FAILURE) {
-            PrintUtil.toDisk(this.currentHttpMethod,
+            PrintUtil.toDisk(this.currentHttpMethod.toString(),
                     this.currentTestData,
                     this.currentOutput,
                     result.getThrowable());
@@ -230,23 +230,25 @@ private boolean isValidInput(String input){
         return input!=null && !input.isEmpty();
     }
 
-    private HttpResponse executeHttpRequest(String httpMethod, String graphQL, JsonObject variables, Map httpHeaders){
+    private HttpResponse executeHttpRequest(HttpMethod httpMethod, 
+            String graphQL, 
+            JsonObject variables, 
+            Map httpHeaders){
         try {
-            boolean isPost = "POST".equals(httpMethod);
-            URL url = new URL(this.uri + PATH + (isPost ? "" :
-                "?query=" + toHttpQuery(graphQL)));
+            
+            URL url = getURL(httpMethod,graphQL, variables);
+            
             HttpURLConnection connection = (HttpURLConnection) url.openConnection();
-            connection.setRequestMethod(httpMethod);
-
+            connection.setRequestMethod(httpMethod.toString());
             setTimeouts(connection);
             addHeaders(connection,httpHeaders);
-
             connection.setDoOutput(true);
 
-            JsonObject body = createRequestBody(isPost ? graphQL : null, variables);
-
-            postRequest(connection,body);
-
+            if(httpMethod.POST.equals(httpMethod)){
+                JsonObject body = createRequestBody(graphQL, variables);
+                postRequest(connection,body);
+            }
+            
             int status = connection.getResponseCode();
 
             if(status == 200) {
@@ -256,15 +258,15 @@ private HttpResponse executeHttpRequest(String httpMethod, String graphQL, JsonO
             }
 
         } catch (ProtocolException pex) {
-            LOG.log(Level.SEVERE, "Caught ProtocolException attempting to "+httpMethod+" an HTTP request", pex);
+            LOG.log(Level.SEVERE, "Caught ProtocolException attempting to " + httpMethod + " an HTTP request", pex);
             throw new RuntimeException(pex);
-        } catch (IOException ex) {
-            LOG.log(Level.SEVERE, "Caught IOException attempting to "+httpMethod+" an HTTP request", ex);
+        } catch (IOException | URISyntaxException ex) {
+            LOG.log(Level.SEVERE, "Caught IOException attempting to " + httpMethod + " an HTTP request", ex);
             Assert.fail("Could not open a connection to the test server, is it running ?");
             throw new RuntimeException(ex);
         }
     }
-
+  
     private void addHeaders(HttpURLConnection connection,Map httpHeaders){
         // Default headers
         connection.setRequestProperty(HEADER_CONTENT_TYPE, MEDIATYPE_JSON); // default header.
@@ -284,6 +286,24 @@ private void setTimeouts(HttpURLConnection connection){
         connection.setReadTimeout(READ_TIMEOUT);
     }
 
+    private URL getURL(HttpMethod httpMethod,
+            String graphQL, 
+            JsonObject variables) throws MalformedURLException, URISyntaxException, UnsupportedEncodingException{
+        URL url = new URL(this.uri + PATH);
+        
+        if(HttpMethod.GET.equals(httpMethod)){
+            String query = QUERY + EQUALS + URLEncoder.encode(graphQL,"UTF8");
+            if(variables!=null && !variables.isEmpty()) {
+                query = query + AND + VARIABLES + EQUALS + URLEncoder.encode(variables.toString(),"UTF8");
+            }
+            
+            URI uri = new URI(url.getProtocol(), null, url.getHost(), url.getPort(), url.getPath(), query, null);
+            url = uri.toURL();
+        }
+        
+        return url;
+    }
+    
     private JsonObject createRequestBody(String graphQL, JsonObject variables){
         JsonObjectBuilder builder = Json.createObjectBuilder();
         if(graphQL!=null && !graphQL.isEmpty()) {
@@ -343,4 +363,8 @@ public boolean isSuccessful(){
             return status==200;
         }
     }
+    
+    enum HttpMethod{
+        GET,POST
+    }
 }
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java
index ce71bc83..8ce9b999 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java
@@ -62,6 +62,10 @@ public TestData(String name,
         this.properties = properties;
     }
 
+    public boolean isMutation(){
+        return input.contains("mutation") || input.contains("Mutation");
+    }
+    
     public String getName() {
         return name;
     }

From 58aa6a3adc162dc809f07c40ae96dbf91ff7bb5c Mon Sep 17 00:00:00 2001
From: "Sean C. Sullivan" 
Date: Fri, 24 Jul 2020 19:33:30 -0700
Subject: [PATCH 056/248] ci: add Java 14 to build matrix

Signed-off-by: Sean C. Sullivan 
---
 .github/workflows/build.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 12bc3c2f..6c51a3e5 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -8,7 +8,7 @@ jobs:
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        java: [8, 11]
+        java: [8, 11, 14]
     name: build with jdk ${{matrix.java}}
 
     steps:

From 43b66255b32c1f1f1deaa9007213313a2dc99f94 Mon Sep 17 00:00:00 2001
From: "Sean C. Sullivan" 
Date: Fri, 24 Jul 2020 19:32:34 -0700
Subject: [PATCH 057/248] enable Dependabot v2

Signed-off-by: Sean C. Sullivan 
---
 .github/dependabot.yml | 10 ++++++++++
 1 file changed, 10 insertions(+)
 create mode 100644 .github/dependabot.yml

diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 00000000..b76b8957
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,10 @@
+version: 2
+updates:
+  - package-ecosystem: "maven"
+    directory: "/"
+    schedule:
+      interval: "daily"
+  - package-ecosystem: "github-actions"
+    directory: "/"
+    schedule:
+      interval: "daily"

From 7650cdd59f678d056fdf90a00c6f67a44d1ebbfa Mon Sep 17 00:00:00 2001
From: JB 
Date: Mon, 3 Aug 2020 14:58:25 +0200
Subject: [PATCH 058/248] Adding Variables feature

Signed-off-by: JRX 
---
 .../graphql/client/core/Argument.java         |  2 --
 .../graphql/client/core/Operation.java        |  9 ++---
 .../graphql/client/core/ScalarType.java       | 35 +++++++++++++++++++
 .../graphql/client/core/Variable.java         | 29 +++++++++++++++
 .../graphql/client/core/VariableType.java     | 35 +++++++++++++++++++
 5 files changed, 104 insertions(+), 6 deletions(-)
 create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/ScalarType.java
 create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Variable.java
 create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/VariableType.java

diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Argument.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Argument.java
index dd667dba..48e29baa 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Argument.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Argument.java
@@ -18,10 +18,8 @@
 
 public interface Argument extends Buildable {
     String getName();
-
     void setName(String name);
 
     Object getValue();
-
     void setValue(Object value);
 }
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Operation.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Operation.java
index ec1a6b4f..6a6682e7 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Operation.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Operation.java
@@ -19,6 +19,7 @@
 import java.util.List;
 
 public interface Operation extends Buildable {
+
     enum Type {
         QUERY,
         MUTATION,
@@ -26,14 +27,14 @@ enum Type {
     }
 
     Type getType();
-
     void setType(Type type);
 
     String getName();
-
     void setName(String name);
 
-    List getFields();
+    List getVariables();
+    void setVariables(List vars);
 
-    void setFields(List fields);
+    List getFields();
+    void setFields(List fields);
 }
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/ScalarType.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/ScalarType.java
new file mode 100644
index 00000000..83bf82b0
--- /dev/null
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/ScalarType.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.microprofile.graphql.client.core;
+
+public enum ScalarType {
+    GQL_INT("Int"),
+    GQL_FLOAT("Float"),
+    GQL_STRING("String"),
+    GQL_BOOL("Boolean"),
+    GQL_ID("ID");
+
+    private String type;
+
+    ScalarType(String type) {
+        this.type = type;
+    }
+
+    public String toString() {
+        return type;
+    }
+}
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Variable.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Variable.java
new file mode 100644
index 00000000..3eadbbb4
--- /dev/null
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Variable.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.microprofile.graphql.client.core;
+
+public interface Variable extends Buildable {
+
+    String getName();
+    void setName(String name);
+
+    VariableType getType();
+    void setType(VariableType value);
+
+    Object getDefaultValue();
+    void setDefaultValue(Object value);
+}
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/VariableType.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/VariableType.java
new file mode 100644
index 00000000..b3f7066b
--- /dev/null
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/VariableType.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.microprofile.graphql.client.core;
+
+public interface VariableType extends Buildable {
+    String getName();
+
+    void setName(String name);
+
+    boolean isNonNull();
+
+    void setNonNull(boolean nonNull);
+
+    VariableType getChild();
+
+    void setChild(VariableType child);
+
+    default boolean isList() {
+        return getChild() != null;
+    }
+}

From 0b197f3f35015955763d1425e60133e0571ebc33 Mon Sep 17 00:00:00 2001
From: JB 
Date: Mon, 3 Aug 2020 14:58:57 +0200
Subject: [PATCH 059/248] Removed "GraphQL" prefix

Signed-off-by: JRX 
---
 ...LClientBuilder.java => ClientBuilder.java} |  4 +--
 .../microprofile/graphql/client/Error.java    | 29 +++++++++++++++++++
 .../{GraphQLRequest.java => Request.java}     |  8 ++---
 .../{GraphQLResponse.java => Response.java}   | 21 ++------------
 4 files changed, 37 insertions(+), 25 deletions(-)
 rename client/api/src/main/java/org/eclipse/microprofile/graphql/client/{GraphQLClientBuilder.java => ClientBuilder.java} (88%)
 create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/Error.java
 rename client/api/src/main/java/org/eclipse/microprofile/graphql/client/{GraphQLRequest.java => Request.java} (83%)
 rename client/api/src/main/java/org/eclipse/microprofile/graphql/client/{GraphQLResponse.java => Response.java} (73%)

diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLClientBuilder.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/ClientBuilder.java
similarity index 88%
rename from client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLClientBuilder.java
rename to client/api/src/main/java/org/eclipse/microprofile/graphql/client/ClientBuilder.java
index dff8d898..b3b4fb21 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLClientBuilder.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/ClientBuilder.java
@@ -16,6 +16,6 @@
 
 package org.eclipse.microprofile.graphql.client;
 
-public interface GraphQLClientBuilder {
-    GraphQLRequest newRequest(String request);
+public interface ClientBuilder {
+    Request newRequest(String request);
 }
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Error.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Error.java
new file mode 100644
index 00000000..c899c3a9
--- /dev/null
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Error.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.microprofile.graphql.client;
+
+import java.util.List;
+import java.util.Map;
+
+public interface Error {
+
+    String getMessage();
+    List> getLocations();
+
+    Object[] getPath();
+    Map getExtensions();
+}
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLRequest.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Request.java
similarity index 83%
rename from client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLRequest.java
rename to client/api/src/main/java/org/eclipse/microprofile/graphql/client/Request.java
index 96a9befb..8e3131f1 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLRequest.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Request.java
@@ -16,13 +16,11 @@
 
 package org.eclipse.microprofile.graphql.client;
 
+public interface Request {
 
-public interface GraphQLRequest {
+    Request addVariable(String name, Object value);
 
-    GraphQLRequest addVariable(String name, Object value);
-
-    GraphQLRequest resetVariables();
+    Request resetVariables();
 
     String toJson();
-    
 }
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLResponse.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Response.java
similarity index 73%
rename from client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLResponse.java
rename to client/api/src/main/java/org/eclipse/microprofile/graphql/client/Response.java
index b665ee56..2776b646 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLResponse.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Response.java
@@ -13,36 +13,21 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package org.eclipse.microprofile.graphql.client;
 
 import javax.json.JsonObject;
 import java.util.List;
-import java.util.Map;
 
-public interface GraphQLResponse {
+public interface Response {
 
     JsonObject getData();
-
-    List getErrors();
+    List getErrors();
 
      List getList(Class dataType, String rootField);
-
      T getObject(Class dataType, String rootField);
 
     boolean hasData();
 
     boolean hasError();
-    
-    public static interface GraphQLError {
-        
-        String getMessage();
-
-        List> getLocations();
-      
-        Object[] getPath();
-
-        Map getExtensions();
-        
-    }
-    
 }

From d0f5998c4ba6e50d3d1f36f626cf7af0a52b7df9 Mon Sep 17 00:00:00 2001
From: JB 
Date: Mon, 3 Aug 2020 14:59:58 +0200
Subject: [PATCH 060/248] enhance formating and use list generics

Signed-off-by: JRX 
---
 .../microprofile/graphql/client/core/Document.java        | 5 +++--
 .../graphql/client/core/{GraphQLEnum.java => Enum.java}   | 3 +--
 .../eclipse/microprofile/graphql/client/core/Field.java   | 8 +++-----
 .../microprofile/graphql/client/core/InputObject.java     | 4 ++--
 .../graphql/client/core/InputObjectField.java             | 3 +--
 5 files changed, 10 insertions(+), 13 deletions(-)
 rename client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/{GraphQLEnum.java => Enum.java} (95%)

diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Document.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Document.java
index 901edf48..af29896f 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Document.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Document.java
@@ -19,6 +19,7 @@
 import java.util.List;
 
 public interface Document extends Buildable {
-    List getOperations();
-    void setOperations(List operations);
+
+    List getOperations();
+    void setOperations(List operations);
 }
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/GraphQLEnum.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Enum.java
similarity index 95%
rename from client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/GraphQLEnum.java
rename to client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Enum.java
index 94ab63d6..64051717 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/GraphQLEnum.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Enum.java
@@ -16,9 +16,8 @@
 
 package org.eclipse.microprofile.graphql.client.core;
 
-public interface GraphQLEnum {
+public interface Enum {
 
     String getValue();
-
     void setValue(String value);
 }
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Field.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Field.java
index 25e8a099..ac59a5b6 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Field.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Field.java
@@ -19,15 +19,13 @@
 import java.util.List;
 
 public interface Field extends Buildable {
-    String getName();
 
+    String getName();
     void setName(String name);
 
-    List getArguments();
-
-    void setArguments(List arguments);
+    List getArguments();
+    void setArguments(List arguments);
 
     List getFields();
-
     void setFields(List fields);
 }
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObject.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObject.java
index 11f6b11e..660f85e6 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObject.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObject.java
@@ -19,7 +19,7 @@
 import java.util.List;
 
 public interface InputObject extends Buildable {
-    List getInputObjectFields();
 
-    void setInputObjectFields(List inputObjectFields);
+    List getInputObjectFields();
+    void setInputObjectFields(List inputObjectFields);
 }
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObjectField.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObjectField.java
index 0e29a989..baf633de 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObjectField.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObjectField.java
@@ -17,11 +17,10 @@
 package org.eclipse.microprofile.graphql.client.core;
 
 public interface InputObjectField extends Buildable {
-    String getName();
 
+    String getName();
     void setName(String name);
 
     Object getValue();
-
     void setValue(Object value);
 }

From 8c28a213981f21dcbc5fb943a29b7a343e68bade Mon Sep 17 00:00:00 2001
From: JB 
Date: Mon, 3 Aug 2020 15:01:55 +0200
Subject: [PATCH 061/248] update spec with Variables feature

remove impl details on static factory methods

Signed-off-by: JRX 
---
 .../src/main/asciidoc/dynamic_client.asciidoc | 545 ++++++++++--------
 1 file changed, 307 insertions(+), 238 deletions(-)

diff --git a/client/spec/src/main/asciidoc/dynamic_client.asciidoc b/client/spec/src/main/asciidoc/dynamic_client.asciidoc
index e9f62de5..d72c4221 100644
--- a/client/spec/src/main/asciidoc/dynamic_client.asciidoc
+++ b/client/spec/src/main/asciidoc/dynamic_client.asciidoc
@@ -29,7 +29,7 @@ A "type-safe" client API, similar to MicroProfile RestClient, should also be pro
 
 == Goals
 
-. *Provides full control over the MicroProfile GraphQL capabilities*: operations, arguments, variables, scalars, input object, interface, partial results, errors...
+. *Provides full control over the MicroProfile GraphQL capabilities*: operations, arguments, variables, input types, scalars, interface, partial results, errors ...
 . *Consistency with MicroProfile GraphQL server* annotations (DateFormat, NumberFormat ...) and capabilities
 . *Consistency with MicroProfile*:
 * No dependency outside MicroProfile core
@@ -39,10 +39,10 @@ A "type-safe" client API, similar to MicroProfile RestClient, should also be pro
 
 == Non goals
 
-. *Transport layer support*: the GraphQL specification is transport agnostic.
-We propose to stay aligned with this approach, leaving implementations free to use any client network library (JAX-RS, Apache HTTPClient ...). However to make things more concrete, some examples using JAX-RS and HTTP are provided below.
-
-
+. *Transport layer support*: the GraphQL specification is independent of transport layer.
+We propose to stay aligned with this, leaving the final implementation free to use any client network library (JAX-RS, Apache HTTPClient ...).
+. *Serialization of custom Java classes to build requests*
+. *Deserialization of responses into custom Java classes*
 
 == Focus of release 1.1
 
@@ -52,11 +52,11 @@ For this first step, we propose to focus on the following core features.
 
 ==== GraphQL components support
 ****
-*bold*: supported components.
+*bold*: fully supported components.
 
 *_italic bold_*: partially supported components.
 
-blank: not supported components.
+blank: not yet supported components.
 ****
 
 * *_Document_*
@@ -66,9 +66,9 @@ blank: not supported components.
 **** *Mutation*
 **** Subscription
 *** *Name*
-*** Variable definitions
-**** Type
-**** Default value
+*** *_Variable definitions_*
+**** *Type*
+**** *Default value*
 **** Directives
 *** Directives
 *** *_Selection set_*
@@ -76,7 +76,7 @@ blank: not supported components.
 ***** Alias
 ***** *Name*
 ***** *_Arguments_*
-****** Variable
+****** *Variable*
 ****** *Int value*
 ****** *Float value*
 ****** *String value*
@@ -101,7 +101,7 @@ Java 8 is still widely used in the industry and we propose to stick to it for a
 To be studied for next releases:
 
 * GraphQL variables
-* GraphQL subscription support
+* GraphQL subscription
 * Reactive API
 * https://spec.graphql.org/draft/#sec-Document[Multiple operations inside a GraphQL document]
 
@@ -152,9 +152,8 @@ GraphQL source of a component.
 ----
 public interface Document extends Buildable {
 
-    List getOperations();
-
-    void setOperations(List operations);
+    List getOperations();
+    void setOperations(List operations);
 }
 ----
 
@@ -162,9 +161,9 @@ public interface Document extends Buildable {
 [source,Java]
 ----
 @SafeVarargs
-public static Document document(Operation... operations);
-
-public static Document document(List operations);
+public static Document document(Operation... operations) {
+    [...]
+}
 ----
 
 === Operation
@@ -179,16 +178,16 @@ public interface Operation extends Buildable {
     }
 
     Type getType();
-
     void setType(Type type);
 
     String getName();
-
     void setName(String name);
 
-    List getFields();
+    List getVariables();
+    void setVariables(List vars);
 
-    void setFields(List fields);
+    List getFields();
+    void setFields(List fields);
 }
 ----
 
@@ -196,48 +195,79 @@ public interface Operation extends Buildable {
 [source,Java]
 ----
 @SafeVarargs
-public static List operations(Operation... operations);
+public static List operations(Operation... operations) {
+    [...]
+}
+
+// (fields)
+@SafeVarargs
+public static Operation operation(Field... fields) {
+    [...]
+}
+
+// (vars, fields)
+@SafeVarargs
+public static Operation operation(List vars, Field... fields) {
+    [...]
+}
+
+// (type, fields)
+@SafeVarargs
+public static Operation operation(Type type, Field... fields) {
+    [...]
+}
 
+// (type, vars, fields)
 @SafeVarargs
-public static Operation operation(Field... fields);
-public static Operation operation(List fields);
+public static Operation operation(Type type, List vars, Field... fields) {
+    [...]
+}
 
+// (name, fields)
 @SafeVarargs
-public static Operation operation(Type type, Field... fields);
-public static Operation operation(Type type, List fields);
+public static Operation operation(String name, Field... fields) {
+    [...]
+}
 
+// (type, name, fields)
 @SafeVarargs
-public static Operation operation(String name, Field... fields);
-public static Operation operation(String name, List fields);
+public static Operation operation(Type type, String name, Field... fields) {
+    [...]
+}
 
+// (name, vars, fields)
 @SafeVarargs
-public static Operation operation(Type type, String name, Field... fields);
-public static Operation operation(Type type, String name, List fields);
+public static Operation operation(String name, List vars, Field... fields) {
+    [...]
+}
+
+// (type, name, vars, fields)
+@SafeVarargs
+public static Operation operation(Type type, String name, List vars, Field... fields) {
+    [...]
+}
 ----
 ****
 When omitted,
 
-* *type* parameter will default to _QUERY_
-* *name* parameter will default to an _empty string_
+* *Operation's type* parameter will default to _QUERY_.
+* *Operation's name* parameter will default to an _empty string_.
+* *Operation's vars* parameter will default to an _empty list_.
 ****
 
-=== Field
-
+=== Variable
 [source,Java]
 ----
-public interface Field extends Buildable {
+public interface Variable extends Buildable {
 
     String getName();
-
     void setName(String name);
 
-    List getArguments();
+    VariableType getType();
+    void setType(VariableType value);
 
-    void setArguments(List arguments);
-
-    List getFields();
-
-    void setFields(List fields);
+    Object getDefaultValue();
+    void setDefaultValue(Object value);
 }
 ----
 
@@ -245,41 +275,172 @@ public interface Field extends Buildable {
 [source,Java]
 ----
 @SafeVarargs
-public static List fields(Field... fields);
+public static List vars(Variable... vars) {
+    [...]
+}
 
-public static Field field(String name);
+// (name, scalarType)
+public static Variable var(String name, ScalarType scalarType) {
+    [...]
+}
 
-@SafeVarargs
-public static Field field(String name, Field... fields);
-public static Field field(String name, List fields);
+// (name, scalarType, defaultValue)
+public static Variable var(String name, ScalarType scalarType, Object defaultValue) {
+    [...]
+}
 
-@SafeVarargs
-public static Field field(String name, Argument... args);
+// (name, objectType)
+public static Variable var(String name, String objectType) {
+    [...]
+}
 
-@SafeVarargs
-public static Field field(String name, List args, Field... fields);
-public static Field field(String name, List args, List fields);
+// (name, objectType, defaultValue)
+public static Variable var(String name, String objectType, Object defaultValue) {
+    [...]
+}
+
+// (name, VariableType)
+public static Variable var(String name, VariableType type) {
+    [...]
+}
+
+// (name, VariableType, defaultValue)
+public static Variable var(String name, VariableType type, Object defaultValue) {
+    [...]
+}
+----
+
+=== Scalar type
+[source,Java]
 ----
+public enum ScalarType {
+    GQL_INT("Int"),
+    GQL_FLOAT("Float"),
+    GQL_STRING("String"),
+    GQL_BOOL("Boolean"),
+    GQL_ID("ID");
+
+    private String type;
+
+    ScalarType(String type) {
+        this.type = type;
+    }
+
+    public String toString() {
+        return type;
+    }
+}
+----
+****
+The *ScalarType enum* is meant to represents the basic scalar types
+as described in the GraphQL spec (https://spec.graphql.org/draft/#sec-Scalars).
 ****
-Due to Java's type erasure at compile-time, it is not possible to have both:
+
+=== Variable type
 [source,Java]
 ----
-public static Field field(String name, List fields);
+public interface VariableType extends Buildable {
+
+    String getName();
+    void setName(String name);
+
+    boolean isNonNull();
+    void setNonNull(boolean nonNull);
+
+    VariableType getChild();
+    void setChild(VariableType child);
+
+    default boolean isList() {
+        return getChild() != null;
+    }
+}
 ----
-and
+
+==== Static factory methods
 [source,Java]
 ----
-public static Field field(String name, List args);
+// (scalarType)
+public static VariableType nonNull(ScalarType scalarType) {
+    [...]
+}
+
+// (objectType)
+public static VariableType nonNull(String name) {
+    [...]
+}
+
+// (varType object)
+public static VariableType nonNull(VariableType type) {
+    [...]
+}
+
+// (scalarType)
+public static VariableType list(ScalarType scalarType) {
+    [...]
+}
+
+// (typeName)
+public static VariableType list(String name) {
+    [...]
+}
+
+// (variableType object)
+public static VariableType list(VariableType childVarType) {
+    [...]
+}
 ----
-So, it has been decided to only retain:
+
+=== Field
+
 [source,Java]
 ----
-public static Field field(String name, List fields);
+public interface Field extends Buildable {
+
+    String getName();
+    void setName(String name);
+
+    List getArguments();
+    void setArguments(List arguments);
+
+    List getFields();
+    void setFields(List fields);
+}
+----
+
+==== Static factory methods
+[source,Java]
+----
+@SafeVarargs
+public static List fields(Field... fields) {
+    [...]
+}
+
+// (name)
+public static Field field(String name) {
+    [...]
+}
+
+// (name, subfields)
+@SafeVarargs
+public static Field field(String name, Field... fields) {
+    [...]
+}
+
+// (name, args)
+@SafeVarargs
+public static Field field(String name, Argument... args) {
+    [...]
+}
+
+// (name, args, subfields)
+@SafeVarargs
+public static Field field(String name, List args, Field... fields) {
+    [...]
+}
 ----
-****
 
 ****
-When omitted, *args* and *fields* parameters will default to an _empty list_
+When omitted, *args* and *fields* parameters will default to an _empty list_.
 ****
 
 === Argument
@@ -288,11 +449,9 @@ When omitted, *args* and *fields* parameters will default to an _empty list_
 public interface Argument extends Buildable {
 
     String getName();
-
     void setName(String name);
 
     Object getValue();
-
     void setValue(Object value);
 }
 ----
@@ -301,9 +460,24 @@ public interface Argument extends Buildable {
 [source,Java]
 ----
 @SafeVarargs
-public static List args(Argument... args);
+public static List args(Argument... args) {
+    [...]
+}
+
+// (name, raw value)
+public static Argument arg(String name, Object value) {
+    [...]
+}
 
-public static Argument arg(String name, Object value);
+// (name, inputObject)
+public static Argument arg(String name, InputObject inputObject) {
+    [...]
+}
+
+// (name, variable)
+public static Argument arg(String name, Variable var) {
+    [...]
+}
 ----
 
 === Input Object
@@ -311,9 +485,8 @@ public static Argument arg(String name, Object value);
 ----
 public interface InputObject extends Buildable {
 
-    List getInputObjectFields();
-
-    void setInputObjectFields(List inputObjectFields);
+    List getInputObjectFields();
+    void setInputObjectFields(List inputObjectFields);
 }
 ----
 
@@ -321,20 +494,20 @@ public interface InputObject extends Buildable {
 [source,Java]
 ----
 @SafeVarargs
-public static InputObject object(InputObjectField... inputObjectFields);
-public static InputObject object(List inputObjectFields);
+public static InputObject inputObject(InputObjectField... inputObjectFields) {
+    [...]
+}
 ----
 
 === Input Object Field
 [source,Java]
 ----
 public interface InputObjectField extends Buildable {
-String getName();
 
+    String getName();
     void setName(String name);
 
     Object getValue();
-
     void setValue(Object value);
 }
 ----
@@ -342,7 +515,15 @@ String getName();
 ==== Static factory methods
 [source,Java]
 ----
-public static InputObjectField prop(String name, Object value);
+// (name, value)
+public static InputObjectField prop(String name, Object value) {
+    [...]
+}
+
+// (name, variable)
+public static InputObjectField prop(String name, Variable var) {
+    [...]
+}
 ----
 ****
 The keyword *prop* (as in _an object's property_) has been chosen instead of *field*
@@ -352,10 +533,9 @@ to avoid confusion with the notion of _field of a selection set_.
 === Enum
 [source,Java]
 ----
-public interface GraphQLEnum {
+public interface Enum {
 
     String getValue();
-
     void setValue(String value);
 }
 ----
@@ -363,11 +543,11 @@ public interface GraphQLEnum {
 ==== Static factory methods
 [source,Java]
 ----
-public static GraphQLEnum gqlEnum(String value);
+public static Enum gqlEnum(String value);
 ----
 
 ****
-Due to Java's reserved keyword _enum_, the prefixes _GraphQL_ and _gql_ have been added.
+Due to Java's reserved keyword _enum_, the prefixe _gql_ have been added for the static factory method.
 ****
 
 == Running a GraphQL document
@@ -375,38 +555,41 @@ Due to Java's reserved keyword _enum_, the prefixes _GraphQL_ and _gql_ have bee
 Once a GraphQL document has been prepared, it can be run against a server.
 This specification proposes two abstractions for that:
 
-. **GraphQLRequest**: prepare a request execution including the request and optional variables.
-. **GraphQLResponse**: a holder for a GraphQL response including optional errors and data.
+. **Request**: prepare a request execution including the request and optional variables.
+. **Response**: a holder for a GraphQL response including optional errors and data.
 
 === GraphQLClientBuilder
 
-A **GraphQLClientBuilder** class is defined to bootstrap a client implementation. This can be done using the Service Loader approach.
+A **ClientBuilder** class is defined to bootstrap a client implementation. This can be done using the Service Loader approach.
 
 ==== Interface defintion
 [source,Java]
 ----
-public interface GraphQLClientBuilder {
-    GraphQLRequest newRequest(String request);
+public interface ClientBuilder {
+    Request newRequest(String request);
 }
 ----
-=== GraphQLRequest
+=== Request
 
 ==== Interface Definition
 [source,Java]
 ----
-public interface GraphQLRequest {
-    GraphQLRequest addVariable(String name, Object value);
-    GraphQLRequest resetVariables();
+public interface Request {
+
+    Request addVariable(String name, Object value);
+
+    Request resetVariables();
+
     String toJson();
 }
 ----
 
 ==== Initialization
 
-A GraphQLRequest object is initialised from the builder with a GraphQL request obtained from a Document:
+A Request object is initialised from the builder with a GraphQL request obtained from a Document:
 [source,Java]
 ----
-GraphQLRequest graphQLRequest = new graphQLClientBuilder.newRequest(document.build());
+Request graphQLRequest = graphQLClientBuilder.newRequest(document.build());
 ----
 ==== Setting variables
 Optional GraphQL variables can be provided in a fluent manner:
@@ -424,10 +607,10 @@ graphQLRequest
     .addVariable("surname", "Roux")
     .addVariable("personId", 2);
 ----
-With this approach, a GraphQLRequest object is immutable regarding the GraphQL request to run and mutable regarding the variables.
+With this approach, a _Request_ object is immutable regarding the GraphQL document to send and mutable regarding the variables.
 It is the responsibility of the caller to ensure the consistency between the request and the variables.
 
-Once initialized with a request and optional variables, a GraphQLrequest object can be sent to a GraphQL server. As mentioned in the "non-goal" paragraph, this specification is deliberatly transport agnostic. It is the responsibility of the implementation to propose a transport layer.
+Once initialized with a document and optional variables, a _Request_ object can be sent to a GraphQL server. As mentioned in the "non-goal" paragraph, this specification is deliberatly transport agnostic. It is the responsibility of the implementation to propose a transport layer.
 
 For instance:
 
@@ -438,7 +621,7 @@ For instance:
 
 To make things more concrete, we propose some examples using JAX-RS.
 
-Suppose we a have an initialized GraphQLRequest. It can be a mutation or a query. We can send it and get the response in the following way;
+Suppose we a have an initialized _Request_. It can be a mutation or a query. We can send it and get the response in the following way;
 [source,Java]
 ----
 Client client = clientBuilder.build();
@@ -453,28 +636,28 @@ A registered JAX-RS MessageBodyWriter is needed to automatically turn a GraphQLR
 In the previous example, a generic JAX-RS Response is returned. The GraphQLResponse (described below) can then be read as an entity:
 [source,Java]
 ----
-GraphQLResponse graphQLResponse=response
-    .readEntity(GraphQLResponse.class);
+Response graphQLResponse = response
+    .readEntity(Response.class);
 ----
 
-Alternatively, we can get a GraphQLResponse directly as a typed entity:
+Alternatively, we can get a _Response_ directly as a typed entity:
 [source,Java]
 ----
-GraphQLResponse graphQLResponse = client
+Response graphQLResponse = client
         .target("http://localhost:8080/graphql")
         .request(MediaType.APPLICATION_JSON)
-        .post(json(graphQLRequest), GraphQLResponse.class);
+        .post(json(graphQLRequest), Response.class);
 ----
-A registered JAX-RS MessageBodyReader is needed to turn a JSON structure into a GraphQLResponse object. This is the responsibility of the implementation to provide it.
+A registered JAX-RS MessageBodyReader is needed to turn a JSON structure into a _Response_ object. This is the responsibility of the implementation to provide it.
 
 Using JAX-RS, we can even run a request in a reactive way:
 [source,Java]
 ----
-CompletionStage csr = client
+CompletionStage csr = client
         .target("http://localhost:8080/graphql")
         .request()
         .rx()
-        .post(json(graphQLRequest),GraphQLResponse.class);
+        .post(json(graphQLRequest), Response.class);
 
         // Do some other stuff here...
 
@@ -493,138 +676,16 @@ HttpPost httpPost = new HttpPost(new URI(endpoint));
 StringEntity stringEntity = new StringEntity(jsonRequest.toJson(), ContentType.APPLICATION_JSON);
 httpPost.setEntity(stringEntity);
 
-== Running a GraphQL document
-
-Once a GraphQL document has been prepared, it can be run against a server. 
-This specification proposes two abstractions for that:
-
-. **GraphQLRequest**: prepare a request execution including the request and optional variables
-. **GraphQLResponse**: a holder for a GraphQL response including optional errors and data.
-
-=== GraphQLClientBuilder
-
-A **GraphQLClientBuilder** class is defined to bootstrap a client implementation. This can be done using the Service Loader approach.
-
-==== Interface defintion
-[source,Java]
-----
-public interface GraphQLClientBuilder {
-    GraphQLRequest newRequest(String request);
-}
-----
-=== GraphQLRequest
-
-==== Interface Definition
-[source,Java]
-----
-public interface GraphQLRequest {
-    GraphQLRequest addVariable(String name, Object value);
-    GraphQLRequest resetVariables();
-    String toJson();
-}
-----
-
-==== Initialization
- 
-A GraphQLRequest object is initialised from the builder with a GraphQL request obtained from a Document:
-[source,Java]
-----
-GraphQLRequest graphQLRequest = new graphQLClientBuilder.newRequest(document.toString());
-----
-==== Setting variables
-Optional GraphQL variables can be provided:
-[source,Java]
-----
-graphQLRequest
-    .addVariable("surname", "James")
-    .addVariable("personId", 1);
-----
-In order to make it reuseable for other executions, variables can also be reset:
-[source,Java]
-----
-graphQLRequest
-    .resetVariables()
-    .addVariable("surname", "Roux")
-    .addVariable("personId", 2);
-----
-With this approach, a GraphQLRequest object is immutable regarding the GraphQL request to run and mutable regarding the variables. It is the responsibility of the caller to assign the consistency between the request and the variables.  
-
-Once initialized with a request and optional variables, a GraphQLrequest object can be sent to a GraphQL server. As mentioned in the "non-goal" paragraph, this specification is deliberatly transport agnostic. It is the responsibility of the implementation to propose a transport layer.
-
-For instance:
-
-* JAX-RS in a Jakarta EE or MicroProfile container 
-* raw HTTP using a library such as Apache HTTP client.
-
-==== Examples of JAX-RS transport
-
-To make things more concrete, we propose some examples using JAX-RS.
-
-Suppose we a have an initialized GraphQLRequest. It can be a mutation or a query. We can send it and get the response in the following way;
-[source,Java]
-----
-Client client = clientBuilder.build();
-
-Response response = client
-        .target("http://localhost:8080/graphql")
-        .request(MediaType.APPLICATION_JSON)
-        .post(json(graphQLRequest));
-----
-A registered JAX-RS MessageBodyWriter is needed to automatically turn a GraphQLRequest object into a JSON structure. This is the responsibility of the implementation to provide it.
-
-In the previous example, a generic JAX-RS Response is returned. The GraphQLResponse (described below) can then be read as an entity:
-[source,Java]
-----
-GraphQLResponse graphQLResponse=response
-    .readEntity(GraphQLResponse.class);
-----
-
-Alternatively, we can get a GraphQLResponse directly as a typed entity:
-[source,Java]
-----
-GraphQLResponse graphQLResponse = client
-        .target("http://localhost:8080/graphql")
-        .request(MediaType.APPLICATION_JSON)
-        .post(json(graphQLRequest), GraphQLResponse.class);
-----
-A registered JAX-RS MessageBodyReader is needed to turn a JSON structure into a GraphQLResponse object. This is the responsibility of the implementation to provide it. 
-
-Using JAX-RS, we can even run a request in a reactive way:
-[source,Java]
-----
-CompletionStage csr = client
-        .target("http://localhost:8080/graphql")
-        .request()
-        .rx()
-        .post(json(graphQLRequest),GraphQLResponse.class);
-
-        // Do some other stuff here...
-
-        csr.thenAccept(// Async processing here });
-----
-
-==== Examples of HTTP transport
-
-Let's see how to use a HTTP transport layer with Apache HttpClient: 
-[source,Java]
-----
-// Prepare the HTTP POST
-URI endpoint = new URI("http://localhost:8080/graphql"); 
-HttpPost httpPost = new HttpPost(new URI(endpoint));
-
-StringEntity stringEntity = new StringEntity(jsonRequest.toJson(), ContentType.APPLICATION_JSON);
-httpPost.setEntity(stringEntity);
-
 // Execute the POST
 CloseableHttpClient httpClient = HttpClients.createDefault());
-CloseableHttpResponse httpResponse=httpClient.execute(httpPost);
+CloseableHttpResponse httpResponse = httpClient.execute(httpPost);
 
 // Read the response
 InputStream contentStream = serverResponse.getEntity().getContent();
 ----
 For the sake of simplicity, this code does not take into account configuration, exception and resource management and omits the details of data conversion.
 
-=== GraphQLResponse
+=== Response
 
 In the previous examples, we have seen how to get a GraphQLResponse from a server.
 
@@ -634,20 +695,28 @@ GraphQLResponse is a holder both for data and errors.
 ==== Interface definition
 [source,Java]
 ----
-public interface GraphQLResponse {
+public interface Response {
+
     JsonObject getData();
-    List getErrors();
+    List getErrors();
+
      List getList(Class dataType, String rootField);
      T getObject(Class dataType, String rootField);
+
     boolean hasData();
+
     boolean hasError();
-    
-    public static interface GraphQLError {
-        String getMessage();
-        List> getLocations();
-        Object[] getPath();
-        Map getExtensions();
-    }
+}
+----
+[source,Java]
+----
+public interface Error {
+
+    String getMessage();
+    List> getLocations();
+
+    Object[] getPath();
+    Map getExtensions();
 }
 ----
 
@@ -658,10 +727,11 @@ We can check if there is any error and access each of them:
 if ( graphQLResponse.hasError() ) {
     log.warn("GraphQL error:");
     graphQLResponse.getErrors().forEach( e -> log.warning(e.toString()) );
-    }
+}
 ----
 
-The getErrors() method returns a list of GraphQLError objects. In accordance with the specification, a GraphQLError is made of:
+The getErrors() method returns a list of _Error_ objects.
+In accordance with the specification, a _Error_ is made of:
 
 * a message
 * a list of locations
@@ -674,14 +744,13 @@ It is the responsibility of the client to decide how to deal with GraphQL errors
 The hasData method enables to check if there is any data:
 [source, Java]
 ----
-if ( graphQLResponse.hasData() )
+if (graphQLResponse.hasData())
     log.info("Data inside");
 ----
 
 Data can be obtained in 2 ways:
 
-
-* **as a generic JsonObject**: using the getData method, it is the responsibility of the caller to turn this JsonObject into application objects.
+* *as a generic JsonObject*: using the getData method, it is the responsibility of the caller to turn this JsonObject into application objects.
 * *as an application object* (or a list of them): using the getObject (or getList) method. In that case, it is necessary to provide the expected data rootfield to be retrieved.
 
 For instance, with a UserProfile application class:
@@ -697,7 +766,7 @@ UserProfile userProfile = jsonb.fromJson(myData.toString(), Profile.class);
 
 // OR
 
-// Directly get a UserProfile object from graphqlReponse 
+// Directly get a UserProfile object from graphqlReponse
 UserProfile userProfile = graphQLResponse.getObject(Profile.class, "profile");
 ----
 

From a87245f77c6a916b2020ed4d060bb32a910f5a04 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Phillip=20Kr=C3=BCger?= 
Date: Fri, 28 Aug 2020 17:49:36 +0200
Subject: [PATCH 062/248] Added Wildfly to the implementation list

---
 README.asciidoc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/README.asciidoc b/README.asciidoc
index 9c7e514b..d90d7d12 100644
--- a/README.asciidoc
+++ b/README.asciidoc
@@ -87,6 +87,7 @@ Where the data comes from (NoSQL, Relational DB, another service, etc.) is not t
 * SmallRye GraphQL - https://github.com/smallrye/smallrye-graphql (standalone implementation)
 * Open Liberty 20.0.0.6 - https://openliberty.io/blog/2020/06/05/graphql-open-liberty-20006.html
 * Quarkus 1.5 - https://quarkus.io/blog/quarkus-1-5-final-released/
+* Wildfly - https://www.wildfly.org/news/2020/08/13/Introducing-the-WildFly-GraphQL-feature-pack/
 
 == Acknowledgements
 

From db45963baa4006e10b159a9cac310fbfe0f06591 Mon Sep 17 00:00:00 2001
From: Tomas Langer 
Date: Wed, 9 Sep 2020 14:16:38 +0200
Subject: [PATCH 063/248] Removed beans.xml, as it is provided as part of each
 TCK test.

---
 .../tck/src/main/resources/META-INF/beans.xml | 20 -------------------
 1 file changed, 20 deletions(-)
 delete mode 100644 server/tck/src/main/resources/META-INF/beans.xml

diff --git a/server/tck/src/main/resources/META-INF/beans.xml b/server/tck/src/main/resources/META-INF/beans.xml
deleted file mode 100644
index ce21305d..00000000
--- a/server/tck/src/main/resources/META-INF/beans.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-

From f2692ef380762cdb1ed6d918c722655a02aa57c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Phillip=20Kr=C3=BCger?= 
Date: Wed, 9 Sep 2020 14:43:11 +0200
Subject: [PATCH 064/248] Revert "Removed beans.xml, as it is provided as part
 of each TCK test."

---
 .../tck/src/main/resources/META-INF/beans.xml | 20 +++++++++++++++++++
 1 file changed, 20 insertions(+)
 create mode 100644 server/tck/src/main/resources/META-INF/beans.xml

diff --git a/server/tck/src/main/resources/META-INF/beans.xml b/server/tck/src/main/resources/META-INF/beans.xml
new file mode 100644
index 00000000..ce21305d
--- /dev/null
+++ b/server/tck/src/main/resources/META-INF/beans.xml
@@ -0,0 +1,20 @@
+
+
+

From dff7fafe7d018bebb6b15dbadd05e3c3d8204ea7 Mon Sep 17 00:00:00 2001
From: Tomas Langer 
Date: Wed, 9 Sep 2020 14:54:58 +0200
Subject: [PATCH 065/248] Removed beans.xml, as it is provided as part of each
 TCK test.

Signed-off-by: Tomas Langer 
---
 .../tck/src/main/resources/META-INF/beans.xml | 20 -------------------
 1 file changed, 20 deletions(-)
 delete mode 100644 server/tck/src/main/resources/META-INF/beans.xml

diff --git a/server/tck/src/main/resources/META-INF/beans.xml b/server/tck/src/main/resources/META-INF/beans.xml
deleted file mode 100644
index ce21305d..00000000
--- a/server/tck/src/main/resources/META-INF/beans.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-

From 95da037eb4e01ddd012b12fcc33178a4d95b42df Mon Sep 17 00:00:00 2001
From: Phillip Kruger 
Date: Wed, 9 Sep 2020 19:46:36 +0200
Subject: [PATCH 066/248] Fix for JDK14 Signed-off-by:Phillip Kruger
 

---
 .../eclipse/microprofile/graphql/tck/dynamic/DynamicPaths.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DynamicPaths.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DynamicPaths.java
index 3902b04d..48c237fa 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DynamicPaths.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/DynamicPaths.java
@@ -43,7 +43,7 @@ public static DirectoryStream getDataForImplementation() throws IOExceptio
     public static DirectoryStream getDataForSpecification() throws IOException, URISyntaxException {
         URL jar = DynamicPaths.class.getProtectionDomain().getCodeSource().getLocation();
         Path jarFile = Paths.get(jar.toURI());
-        FileSystem fs = FileSystems.newFileSystem(jarFile, null);
+        FileSystem fs = FileSystems.newFileSystem(jarFile, (ClassLoader)null);
         return Files.newDirectoryStream(fs.getPath(SPEC));
     }
 }

From 5e97078fc856e1b9a13f5e44598e2268288c4c22 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 9 Sep 2020 17:48:59 +0000
Subject: [PATCH 067/248] Bump maven-javadoc-plugin from 3.1.1 to 3.2.0

Bumps [maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.1.1 to 3.2.0.
- [Release notes](https://github.com/apache/maven-javadoc-plugin/releases)
- [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.1.1...maven-javadoc-plugin-3.2.0)

Signed-off-by: dependabot[bot] 
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 2cb40eaa..7a3838f9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -198,7 +198,7 @@
                 
                     org.apache.maven.plugins
                     maven-javadoc-plugin
-                    3.1.1
+                    3.2.0
                 
                 
                     org.apache.maven.plugins

From 29c3f837db142d187700fa79f8e10d48640e5f30 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 9 Sep 2020 17:49:56 +0000
Subject: [PATCH 068/248] Bump asciidoctorj-pdf from 1.5.0 to 1.5.3

Bumps [asciidoctorj-pdf](https://github.com/asciidoctor/asciidoctorj) from 1.5.0 to 1.5.3.
- [Release notes](https://github.com/asciidoctor/asciidoctorj/releases)
- [Changelog](https://github.com/asciidoctor/asciidoctorj/blob/master/CHANGELOG.adoc)
- [Commits](https://github.com/asciidoctor/asciidoctorj/compare/asciidoctorj-1.5.0...v1.5.3)

Signed-off-by: dependabot[bot] 
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 2cb40eaa..bbc33c64 100644
--- a/pom.xml
+++ b/pom.xml
@@ -44,7 +44,7 @@
 
         
         1.6.0
-        1.5.0
+        1.5.3
         MMMM dd, yyyy
         ${maven.build.timestamp}
         Draft

From 748098d8dc78d4e70735f5f7372ed016dcd433cc Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 9 Sep 2020 17:50:18 +0000
Subject: [PATCH 069/248] Bump commons-io from 2.6 to 2.8.0

Bumps commons-io from 2.6 to 2.8.0.

Signed-off-by: dependabot[bot] 
---
 server/tck/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/tck/pom.xml b/server/tck/pom.xml
index c6c905e6..bd99dfc1 100644
--- a/server/tck/pom.xml
+++ b/server/tck/pom.xml
@@ -28,7 +28,7 @@
     Server-side code-first GraphQL APIs for MicroProfile :: TCK
 
     
-        2.6
+        2.8.0
         1.5.0
     
 

From 6b92691e73b90d4868b301985b28f65aa0f8a74c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 9 Sep 2020 17:51:09 +0000
Subject: [PATCH 070/248] Bump actions/setup-java from v1.3.0 to v1.4.2

Bumps [actions/setup-java](https://github.com/actions/setup-java) from v1.3.0 to v1.4.2.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v1.3.0...8bb50d97d6b4d316daf284fdf8eafbfc988421fc)

Signed-off-by: dependabot[bot] 
---
 .github/workflows/build.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 6c51a3e5..8b6a4d0a 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -15,7 +15,7 @@ jobs:
       - uses: actions/checkout@v2
         name: checkout
 
-      - uses: actions/setup-java@v1.3.0
+      - uses: actions/setup-java@v1.4.2
         name: set up jdk ${{matrix.java}}
         with:
           java-version: ${{matrix.java}}

From 9d00062fb11b281b43b0310302185b562613c699 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 9 Sep 2020 17:56:25 +0000
Subject: [PATCH 071/248] Bump asciidoctor-maven-plugin from 1.6.0 to 2.0.0

Bumps [asciidoctor-maven-plugin](https://github.com/asciidoctor/asciidoctor-maven-plugin) from 1.6.0 to 2.0.0.
- [Release notes](https://github.com/asciidoctor/asciidoctor-maven-plugin/releases)
- [Changelog](https://github.com/asciidoctor/asciidoctor-maven-plugin/blob/master/CHANGELOG.adoc)
- [Commits](https://github.com/asciidoctor/asciidoctor-maven-plugin/compare/asciidoctor-maven-plugin-1.6.0...asciidoctor-maven-plugin-2.0.0)

Signed-off-by: dependabot[bot] 
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index bd6d1b96..9fdae710 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,7 +43,7 @@
         1.6.0.Final
 
         
-        1.6.0
+        2.0.0
         1.5.3
         MMMM dd, yyyy
         ${maven.build.timestamp}

From b960b16887d939a81846016fd445f152d0ea5464 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 10 Sep 2020 05:50:42 +0000
Subject: [PATCH 072/248] Bump testng from 7.1.0 to 7.3.0

Bumps [testng](https://github.com/cbeust/testng) from 7.1.0 to 7.3.0.
- [Release notes](https://github.com/cbeust/testng/releases)
- [Changelog](https://github.com/cbeust/testng/blob/master/CHANGES.txt)
- [Commits](https://github.com/cbeust/testng/commits)

Signed-off-by: dependabot[bot] 
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 9fdae710..cb713086 100644
--- a/pom.xml
+++ b/pom.xml
@@ -39,7 +39,7 @@
         1.0.2
         
         
-        7.1.0
+        7.3.0
         1.6.0.Final
 
         

From 9c846a8a49179291689bdca0e3b894d21764f2c5 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 10 Sep 2020 05:50:44 +0000
Subject: [PATCH 073/248] Bump bnd-maven-plugin from 4.3.1 to 5.1.2

Bumps [bnd-maven-plugin](https://github.com/bndtools/bnd) from 4.3.1 to 5.1.2.
- [Release notes](https://github.com/bndtools/bnd/releases)
- [Changelog](https://github.com/bndtools/bnd/blob/master/docs/ADDING_RELEASE_DOCS.md)
- [Commits](https://github.com/bndtools/bnd/commits)

Signed-off-by: dependabot[bot] 
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 9fdae710..239791a2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -208,7 +208,7 @@
                 
                     biz.aQute.bnd
                     bnd-maven-plugin
-                    4.3.1
+                    5.1.2
                 
                 
                     org.asciidoctor

From 9423f5dbfc0e87b0f5606e357e915eba98f9045c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 15 Sep 2020 06:23:54 +0000
Subject: [PATCH 074/248] Bump asciidoctor-maven-plugin from 2.0.0 to 2.1.0

Bumps [asciidoctor-maven-plugin](https://github.com/asciidoctor/asciidoctor-maven-plugin) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/asciidoctor/asciidoctor-maven-plugin/releases)
- [Changelog](https://github.com/asciidoctor/asciidoctor-maven-plugin/blob/master/CHANGELOG.adoc)
- [Commits](https://github.com/asciidoctor/asciidoctor-maven-plugin/compare/asciidoctor-maven-plugin-2.0.0...asciidoctor-maven-plugin-2.1.0)

Signed-off-by: dependabot[bot] 
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index a20d7927..eae32cba 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,7 +43,7 @@
         1.6.0.Final
 
         
-        2.0.0
+        2.1.0
         1.5.3
         MMMM dd, yyyy
         ${maven.build.timestamp}

From 7829661ae20c0f957c5b74724a425ef7901911ba Mon Sep 17 00:00:00 2001
From: Tim Middleton 
Date: Tue, 15 Sep 2020 15:48:25 +0800
Subject: [PATCH 075/248] Fix #306 in master. Signed-off-by: Tim Middleton
 (Software Engineer) 

---
 README.asciidoc                                               | 4 ++--
 .../graphql/tck/apps/basic/api/ScalarTestApi.java             | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/README.asciidoc b/README.asciidoc
index d90d7d12..4f8af6e3 100644
--- a/README.asciidoc
+++ b/README.asciidoc
@@ -22,7 +22,7 @@ image:https://badges.gitter.im/eclipse/microprofile-graphql.svg[link="https://gi
 
 = Microprofile GraphQL Specification
 
-Read the https://download.eclipse.org/microprofile/microprofile-graphql-1.0.1/microprofile-graphql.html[MicroProfile GraphQL 1.0.1] Specification
+Read the https://download.eclipse.org/microprofile/microprofile-graphql-1.0.2/microprofile-graphql.html[MicroProfile GraphQL 1.0.2] Specification
 
 == Structure
 
@@ -41,7 +41,7 @@ Implementations can decide to implement only the Server, or only the Client, or
 
   org.eclipse.microprofile.graphql
   microprofile-graphql-api
-  1.0.1
+  1.0.2
 
 ----
 
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java
index 0aa59358..2201b604 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java
@@ -283,7 +283,7 @@ public String settlement(){
 
     @Query
     @Description("Testing transformed date as a response")
-    @DateFormat(value = "dd MMM yyyy")
+    @DateFormat(value = "dd MMM yyyy", locale = "en-GB")
     public LocalDate transformedDate(){
         String date = "2016-08-16";
         return LocalDate.parse(date);

From 19c08db335e969a4ae686baa3d204753a494aa5f Mon Sep 17 00:00:00 2001
From: JRX 
Date: Tue, 15 Sep 2020 11:10:53 +0200
Subject: [PATCH 076/248] Dynamic client with SPI + SPEC update

Signed-off-by: JRX 
---
 client/api/pom.xml                            |  66 --
 .../microprofile/graphql/client/Request.java  |  11 +-
 .../microprofile/graphql/client/Response.java |   2 +
 .../graphql/client/core/Argument.java         |  51 +-
 .../graphql/client/core/Buildable.java        |   5 +-
 .../graphql/client/core/Document.java         |  23 +-
 .../graphql/client/core/Enum.java             |  20 +-
 .../graphql/client/core/Field.java            |  69 +-
 .../graphql/client/core/InputObject.java      |  21 +-
 .../graphql/client/core/InputObjectField.java |  31 +-
 .../graphql/client/core/Operation.java        | 129 +++-
 .../OperationType.java}                       |   8 +-
 .../graphql/client/core/ScalarType.java       |   1 -
 .../graphql/client/core/Variable.java         |  90 ++-
 .../graphql/client/core/VariableType.java     |  93 ++-
 .../core/exceptions/BuildException.java       |  22 +
 .../client/core/utils/ServiceUtils.java       |  32 +
 client/pom.xml                                |   9 +
 client/spec/pom.xml                           |  99 ++-
 client/spec/src/main/asciidoc/back2back.jpg   | Bin 139348 -> 0 bytes
 client/spec/src/main/asciidoc/client.asciidoc |   4 +-
 .../src/main/asciidoc/dynamic_client.asciidoc | 716 ++++--------------
 client/spec/src/main/asciidoc/index.asciidoc  |   3 +-
 .../api_client_class_diagram.asciidoc         |  40 +
 .../generated/api_core_class_diagram.asciidoc | 155 ++++
 client/tck/pom.xml                            |  19 +
 .../graphql/client/tck/core/ArraysTest.java   | 112 +++
 .../graphql/client/tck/core/FieldsTest.java   |  61 ++
 .../client/tck/core/NestedObjectsTest.java    | 216 ++++++
 .../graphql/client/tck/core/ScalarsTest.java  | 113 +++
 .../client/tck/core/VariablesTest.java        | 203 +++++
 .../client/tck/helper/AssertGraphQL.java      |  59 ++
 .../graphql/client/tck/helper/Utils.java      |  37 +
 .../src/main/resources/core/arrays.graphql    |  61 ++
 .../tck/src/main/resources/core/dates.graphql |  19 +
 .../tck/src/main/resources/core/enums.graphql |   0
 .../src/main/resources/core/fields.graphql    |  14 +
 .../main/resources/core/nestedObjects.graphql | 231 ++++++
 .../src/main/resources/core/scalars.graphql   |  61 ++
 .../resources/core/variablesArrays.graphql    |  27 +
 .../core/variablesDefaultValue.graphql        |   3 +
 .../main/resources/core/variablesFlat.graphql |   7 +
 .../core/variablesInInputObject.graphql       |  15 +
 pom.xml                                       |   1 +
 44 files changed, 2277 insertions(+), 682 deletions(-)
 rename client/api/src/main/java/org/eclipse/microprofile/graphql/client/{ClientBuilder.java => core/OperationType.java} (83%)
 create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/exceptions/BuildException.java
 create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/utils/ServiceUtils.java
 delete mode 100644 client/spec/src/main/asciidoc/back2back.jpg
 create mode 100644 client/spec/src/main/resources/generated/api_client_class_diagram.asciidoc
 create mode 100644 client/spec/src/main/resources/generated/api_core_class_diagram.asciidoc
 create mode 100644 client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/ArraysTest.java
 create mode 100644 client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/FieldsTest.java
 create mode 100644 client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/NestedObjectsTest.java
 create mode 100644 client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/ScalarsTest.java
 create mode 100644 client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/VariablesTest.java
 create mode 100644 client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/helper/AssertGraphQL.java
 create mode 100644 client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/helper/Utils.java
 create mode 100644 client/tck/src/main/resources/core/arrays.graphql
 create mode 100644 client/tck/src/main/resources/core/dates.graphql
 create mode 100644 client/tck/src/main/resources/core/enums.graphql
 create mode 100644 client/tck/src/main/resources/core/fields.graphql
 create mode 100644 client/tck/src/main/resources/core/nestedObjects.graphql
 create mode 100644 client/tck/src/main/resources/core/scalars.graphql
 create mode 100644 client/tck/src/main/resources/core/variablesArrays.graphql
 create mode 100644 client/tck/src/main/resources/core/variablesDefaultValue.graphql
 create mode 100644 client/tck/src/main/resources/core/variablesFlat.graphql
 create mode 100644 client/tck/src/main/resources/core/variablesInInputObject.graphql

diff --git a/client/api/pom.xml b/client/api/pom.xml
index a7343d57..dee2e291 100644
--- a/client/api/pom.xml
+++ b/client/api/pom.xml
@@ -33,73 +33,7 @@
             jakarta.json
             jakarta.json-api
             1.1.6
-        
-        
-            jakarta.json.bind
-            jakarta.json.bind-api
-            1.0.2
-        
-
-        
-            org.osgi
-            org.osgi.annotation.versioning
-            1.1.0
             provided
         
-
-        
-        
-            org.testng
-            testng
-            test
-        
     
-
-    
-        
-            
-                biz.aQute.bnd
-                bnd-maven-plugin
-                
-                    
-                        
-                            bnd-process
-                        
-                    
-                
-            
-            
-                org.apache.maven.plugins
-                maven-jar-plugin
-                
-                    org.eclipse.microprofile.graphql.client
-                    MicroProfile GraphQL Client bundle
-                    
-                        ${project.build.outputDirectory}/META-INF/MANIFEST.MF
-                    
-                
-            
-        
-    
-
-    
-        
-            eclipse-jarsigner
-            
-                
-                    
-                        org.eclipse.cbi.maven.plugins
-                        eclipse-jarsigner-plugin
-                        
-                            
-                                
-                                    sign
-                                
-                            
-                        
-                    
-                
-            
-        
-    
 
\ No newline at end of file
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Request.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Request.java
index 8e3131f1..fea9a528 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Request.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Request.java
@@ -16,9 +16,18 @@
 
 package org.eclipse.microprofile.graphql.client;
 
+import java.util.Map;
+
 public interface Request {
+    String getDocument();
+
+    Map getVariables();
+
+    void setVariables(Map variables);
+
+    Object getVariable(String key);
 
-    Request addVariable(String name, Object value);
+    Request setVariable(String key, Object value);
 
     Request resetVariables();
 
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Response.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Response.java
index 2776b646..1e7513ba 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Response.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Response.java
@@ -22,9 +22,11 @@
 public interface Response {
 
     JsonObject getData();
+
     List getErrors();
 
      List getList(Class dataType, String rootField);
+
      T getObject(Class dataType, String rootField);
 
     boolean hasData();
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Argument.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Argument.java
index 48e29baa..5528193c 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Argument.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Argument.java
@@ -13,13 +13,60 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.eclipse.microprofile.graphql.client.core;
 
+
+import java.util.List;
+
+import static java.util.Arrays.asList;
+import static org.eclipse.microprofile.graphql.client.core.utils.ServiceUtils.getNewInstanceOf;
+
 public interface Argument extends Buildable {
+    /*
+        Static factory methods
+     */
+    static List args(Argument... args) {
+        return asList(args);
+    }
+
+    // (name, raw value)
+    static Argument arg(String name, Object value)  {
+        Argument argument = getNewInstanceOf(Argument.class);
+
+        argument.setName(name);
+        argument.setValue(value);
+
+        return argument;
+    }
+
+    // (name, inputObject)
+    static Argument arg(String name, InputObject inputObject) {
+        Argument argument = getNewInstanceOf(Argument.class);
+
+        argument.setName(name);
+        argument.setValue(inputObject);
+
+        return argument;
+    }
+
+    // (name, variable)
+    static Argument arg(String name, Variable var) {
+        Argument argument = getNewInstanceOf(Argument.class);
+
+        argument.setName(name);
+        argument.setValue(var);
+
+        return argument;
+    }
+
+    /*
+        Getter/Setter
+    */
     String getName();
-    void setName(String name);
+
+    void setName(String name1);
 
     Object getValue();
+
     void setValue(Object value);
 }
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Buildable.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Buildable.java
index 32df8f6e..eb2fb88b 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Buildable.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Buildable.java
@@ -13,9 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.eclipse.microprofile.graphql.client.core;
 
+import org.eclipse.microprofile.graphql.client.core.exceptions.BuildException;
+
 public interface Buildable {
-    String build();
+    String build() throws BuildException;
 }
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Document.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Document.java
index af29896f..afef5854 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Document.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Document.java
@@ -13,13 +13,30 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.eclipse.microprofile.graphql.client.core;
 
 import java.util.List;
 
+import static java.util.Arrays.asList;
+import static org.eclipse.microprofile.graphql.client.core.utils.ServiceUtils.getNewInstanceOf;
+
 public interface Document extends Buildable {
 
-    List getOperations();
-    void setOperations(List operations);
+    /*
+        Static factory methods
+    */
+    static Document document(Operation... operations) {
+        Document document = getNewInstanceOf(Document.class);
+
+        document.setOperations(asList(operations));
+
+        return document;
+    }
+
+    /*
+        Getter/Setter
+    */
+    List getOperations();
+
+    void setOperations(List operations);
 }
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Enum.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Enum.java
index 64051717..6026e3a6 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Enum.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Enum.java
@@ -13,11 +13,27 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.eclipse.microprofile.graphql.client.core;
 
-public interface Enum {
+import static org.eclipse.microprofile.graphql.client.core.utils.ServiceUtils.getNewInstanceOf;
+
+public interface Enum extends Buildable {
+    /*
+        Static factory methods
+    */
+    static Enum gqlEnum(String value) {
+        Enum gqlEnum = getNewInstanceOf(Enum.class);
+
+        gqlEnum.setValue(value);
 
+        return gqlEnum;
+    }
+
+
+    /*
+        Getter/Setter
+    */
     String getValue();
+
     void setValue(String value);
 }
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Field.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Field.java
index ac59a5b6..102a7173 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Field.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Field.java
@@ -13,19 +13,78 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.eclipse.microprofile.graphql.client.core;
 
 import java.util.List;
 
+import static java.util.Arrays.asList;
+import static java.util.Collections.emptyList;
+import static org.eclipse.microprofile.graphql.client.core.utils.ServiceUtils.getNewInstanceOf;
+
 public interface Field extends Buildable {
+    /*
+        Static factory methods
+    */
+    static List fields(Field... fields) {
+        return asList(fields);
+    }
+
+    // (name)
+    static Field field(String name) {
+        Field field = getNewInstanceOf(Field.class);
+
+        field.setName(name);
+        field.setArguments(emptyList());
+        field.setFields(emptyList());
+
+        return field;
+    }
+
+    // (name, subfields)
+    static Field field(String name, Field... fields) {
+        Field field = getNewInstanceOf(Field.class);
+
+        field.setName(name);
+        field.setArguments(emptyList());
+        field.setFields(asList(fields));
+
+        return field;
+    }
+
+    // (name, args)
+    static Field field(String name, Argument... args) {
+        Field field = getNewInstanceOf(Field.class);
 
+        field.setName(name);
+        field.setArguments(asList(args));
+        field.setFields(emptyList());
+
+        return field;
+    }
+
+    // (name, args, subfields)
+    static Field field(String name, List args, Field... fields) {
+        Field field = getNewInstanceOf(Field.class);
+
+        field.setName(name);
+        field.setArguments(args);
+        field.setFields(asList(fields));
+
+        return field;
+    }
+
+    /*
+        Getter/Setter
+    */
     String getName();
+
     void setName(String name);
 
-    List getArguments();
-    void setArguments(List arguments);
+    List getArguments();
+
+    void setArguments(List arguments);
+
+    List getFields();
 
-    List getFields();
-    void setFields(List fields);
+    void setFields(List fields);
 }
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObject.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObject.java
index 660f85e6..f7b072f2 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObject.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObject.java
@@ -13,13 +13,28 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.eclipse.microprofile.graphql.client.core;
 
 import java.util.List;
 
+import static java.util.Arrays.asList;
+import static org.eclipse.microprofile.graphql.client.core.utils.ServiceUtils.getNewInstanceOf;
+
 public interface InputObject extends Buildable {
+    /*
+        Static factory methods
+    */
+    static InputObject inputObject(InputObjectField... inputObjectFields) {
+        InputObject inputObject = getNewInstanceOf(InputObject.class);
+
+        inputObject.setInputObjectFields(asList(inputObjectFields));
+
+        return inputObject;
+    }
 
-    List getInputObjectFields();
-    void setInputObjectFields(List inputObjectFields);
+    /*
+        Getter/Setter
+     */
+    List getInputObjectFields();
+    void setInputObjectFields(List inputObjectFields);
 }
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObjectField.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObjectField.java
index baf633de..0021c1ea 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObjectField.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObjectField.java
@@ -13,14 +13,43 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.eclipse.microprofile.graphql.client.core;
 
+import static org.eclipse.microprofile.graphql.client.core.utils.ServiceUtils.getNewInstanceOf;
+
 public interface InputObjectField extends Buildable {
 
+    /*
+        Static factory methods
+    */
+    // (name, value)
+    static InputObjectField prop(String name, Object value) {
+        InputObjectField inputObjectField = getNewInstanceOf(InputObjectField.class);
+
+        inputObjectField.setName(name);
+        inputObjectField.setValue(value);
+
+        return inputObjectField;
+    }
+
+    // (name, variable)
+    static InputObjectField prop(String name, Variable var) {
+        InputObjectField inputObjectField = getNewInstanceOf(InputObjectField.class);
+
+        inputObjectField.setName(name);
+        inputObjectField.setValue(var);
+
+        return inputObjectField;
+    }
+
+    /*
+        Getter/Setter
+    */
     String getName();
+
     void setName(String name);
 
     Object getValue();
+
     void setValue(Object value);
 }
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Operation.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Operation.java
index 6a6682e7..c47aa6bc 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Operation.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Operation.java
@@ -13,28 +13,135 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.eclipse.microprofile.graphql.client.core;
 
 import java.util.List;
 
+import static java.util.Arrays.asList;
+import static java.util.Collections.emptyList;
+import static org.eclipse.microprofile.graphql.client.core.OperationType.QUERY;
+import static org.eclipse.microprofile.graphql.client.core.utils.ServiceUtils.getNewInstanceOf;
+
 public interface Operation extends Buildable {
+    /*
+        Helpers
+     */
+    static List operations(Operation... operations) {
+        return asList(operations);
+    }
+
+    // (fields)
+    static Operation operation(Field... fields) {
+        Operation operation = getNewInstanceOf(Operation.class);
+
+        operation.setType(QUERY);
+        operation.setName("");
+        operation.setVariables(emptyList());
+        operation.setFields(asList(fields));
 
-    enum Type {
-        QUERY,
-        MUTATION,
-        SUBSCRIPTION
+        return operation;
     }
 
-    Type getType();
-    void setType(Type type);
+    // (vars, fields)
+    static Operation operation(List vars, Field... fields) {
+        Operation operation = getNewInstanceOf(Operation.class);
+
+        operation.setType(QUERY);
+        operation.setName("");
+        operation.setVariables(vars);
+        operation.setFields(asList(fields));
+
+        return operation;
+    }
+
+    // (type, fields)
+    static Operation operation(OperationType type, Field... fields) {
+        Operation operation = getNewInstanceOf(Operation.class);
+
+        operation.setType(type);
+        operation.setName("");
+        operation.setVariables(emptyList());
+        operation.setFields(asList(fields));
+
+        return operation;
+    }
+
+    // (type, vars, fields)
+    static Operation operation(OperationType type, List vars, Field... fields) {
+        Operation operation = getNewInstanceOf(Operation.class);
+
+        operation.setType(type);
+        operation.setName("");
+        operation.setVariables(vars);
+        operation.setFields(asList(fields));
+
+        return operation;
+    }
+
+    // (name, fields)
+    static Operation operation(String name, Field... fields) {
+        Operation operation = getNewInstanceOf(Operation.class);
+
+        operation.setType(QUERY);
+        operation.setName(name);
+        operation.setVariables(emptyList());
+        operation.setFields(asList(fields));
+
+        return operation;
+    }
+
+    // (type, name, fields)
+    static Operation operation(OperationType type, String name, Field... fields) {
+        Operation operation = getNewInstanceOf(Operation.class);
+
+        operation.setType(type);
+        operation.setName(name);
+        operation.setVariables(emptyList());
+        operation.setFields(asList(fields));
+
+        return operation;
+    }
+
+    // (name, vars, fields)
+    static Operation operation(String name, List vars, Field... fields) {
+        Operation operation = getNewInstanceOf(Operation.class);
+
+        operation.setType(QUERY);
+        operation.setName(name);
+        operation.setVariables(vars);
+        operation.setFields(asList(fields));
+
+        return operation;
+    }
+
+    // (type, name, vars, fields)
+    static Operation operation(OperationType type, String name, List vars, Field... fields) {
+        Operation operation = getNewInstanceOf(Operation.class);
+
+        operation.setType(type);
+        operation.setName(name);
+        operation.setVariables(vars);
+        operation.setFields(asList(fields));
+
+        return operation;
+    }
+
+    /*
+        Getter/Setter
+    */
+    OperationType getType();
+
+    void setType(OperationType type);
 
     String getName();
+
     void setName(String name);
 
-    List getVariables();
-    void setVariables(List vars);
+    List getVariables();
+
+    void setVariables(List vars);
+
+    List getFields();
 
-    List getFields();
-    void setFields(List fields);
+    void setFields(List fields);
 }
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/ClientBuilder.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/OperationType.java
similarity index 83%
rename from client/api/src/main/java/org/eclipse/microprofile/graphql/client/ClientBuilder.java
rename to client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/OperationType.java
index b3b4fb21..435c1faf 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/ClientBuilder.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/OperationType.java
@@ -13,9 +13,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.eclipse.microprofile.graphql.client.core;
 
-package org.eclipse.microprofile.graphql.client;
-
-public interface ClientBuilder {
-    Request newRequest(String request);
+public enum OperationType {
+    QUERY,
+    MUTATION
 }
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/ScalarType.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/ScalarType.java
index 83bf82b0..0ec49e3d 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/ScalarType.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/ScalarType.java
@@ -13,7 +13,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.eclipse.microprofile.graphql.client.core;
 
 public enum ScalarType {
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Variable.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Variable.java
index 3eadbbb4..df96e719 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Variable.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Variable.java
@@ -13,17 +13,101 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.eclipse.microprofile.graphql.client.core;
 
+import java.util.List;
+import java.util.Optional;
+
+import static java.util.Arrays.asList;
+import static org.eclipse.microprofile.graphql.client.core.VariableType.varType;
+import static org.eclipse.microprofile.graphql.client.core.utils.ServiceUtils.getNewInstanceOf;
+
 public interface Variable extends Buildable {
+    /*
+        Helpers
+     */
+    static List vars(Variable... vars) {
+        return asList(vars);
+    }
+
+    // (name, scalarType)
+    static Variable var(String name, ScalarType scalarType) {
+        Variable var = getNewInstanceOf(Variable.class);
+
+        var.setName(name);
+        var.setType(varType(scalarType));
+        var.setDefaultValue(Optional.empty());
+
+        return var;
+    }
+
+    // (name, scalarType, defaultValue)
+    static Variable var(String name, ScalarType scalarType, Object defaultValue) {
+        Variable var = getNewInstanceOf(Variable.class);
+
+        var.setName(name);
+        var.setType(varType(scalarType));
+        var.setDefaultValue(Optional.of(defaultValue));
+
+        return var;
+    }
+
+    // (name, objectType)
+    static Variable var(String name, String objectTypeName) {
+        Variable var = getNewInstanceOf(Variable.class);
+
+        var.setName(name);
+        var.setType(varType(objectTypeName));
+        var.setDefaultValue(Optional.empty());
+
+        return var;
+    }
 
+    // (name, objectType, defaultValue)
+    static Variable var(String name, String objectTypeName, Object defaultValue) {
+        Variable var = getNewInstanceOf(Variable.class);
+
+        var.setName(name);
+        var.setType(varType(objectTypeName));
+        var.setDefaultValue(Optional.of(defaultValue));
+
+        return var;
+    }
+
+    // (name, variableType)
+    static Variable var(String name, VariableType varType) {
+        Variable var = getNewInstanceOf(Variable.class);
+
+        var.setName(name);
+        var.setType(varType);
+        var.setDefaultValue(Optional.empty());
+
+        return var;
+    }
+
+    // (name, variableType, defaultValue)
+    static Variable var(String name, VariableType varType, Object defaultValue) {
+        Variable var = getNewInstanceOf(Variable.class);
+
+        var.setName(name);
+        var.setType(varType);
+        var.setDefaultValue(Optional.of(defaultValue));
+
+        return var;
+    }
+
+    /*
+        Getter/Setter
+    */
     String getName();
+
     void setName(String name);
 
     VariableType getType();
+
     void setType(VariableType value);
 
-    Object getDefaultValue();
-    void setDefaultValue(Object value);
+    Optional getDefaultValue();
+
+    void setDefaultValue(Optional value);
 }
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/VariableType.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/VariableType.java
index b3f7066b..711c035b 100644
--- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/VariableType.java
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/VariableType.java
@@ -13,10 +13,101 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.eclipse.microprofile.graphql.client.core;
 
+import static org.eclipse.microprofile.graphql.client.core.utils.ServiceUtils.getNewInstanceOf;
+
 public interface VariableType extends Buildable {
+
+    /*
+       Static factory methods
+   */
+    // (objectTypeName)
+    static VariableType varType(String objectTypeName) {
+        VariableType varType = getNewInstanceOf(VariableType.class);
+
+        varType.setName(objectTypeName);
+        varType.setNonNull(false);
+        varType.setChild(null);
+
+        return varType;
+    }
+
+    // (scalarType)
+    static VariableType varType(ScalarType scalarType) {
+        VariableType varType = getNewInstanceOf(VariableType.class);
+
+        varType.setName(scalarType.toString());
+        varType.setNonNull(false);
+        varType.setChild(null);
+
+        return varType;
+    }
+
+    // nonNull(scalarType)
+    static VariableType nonNull(ScalarType scalarType) {
+        VariableType varType = getNewInstanceOf(VariableType.class);
+
+        varType.setName(scalarType.toString());
+        varType.setNonNull(true);
+        varType.setChild(null);
+
+        return varType;
+    }
+
+    // nonNull(objectTypeName)
+    static VariableType nonNull(String objectTypeName) {
+        VariableType varType = getNewInstanceOf(VariableType.class);
+
+        varType.setName(objectTypeName);
+        varType.setNonNull(true);
+        varType.setChild(null);
+
+        return varType;
+    }
+
+    // nonNull(varType)
+    static VariableType nonNull(VariableType varType) {
+        varType.setNonNull(true);
+        return varType;
+    }
+
+    // list(scalarType)
+    static VariableType list(ScalarType scalarType) {
+        VariableType varType = getNewInstanceOf(VariableType.class);
+
+        varType.setName("list(" + scalarType.toString() + ")");
+        varType.setNonNull(false);
+        varType.setChild(varType(scalarType));
+
+        return varType;
+    }
+
+    // list(typeName)
+     static VariableType list(String objectTypeName) {
+         VariableType varType = getNewInstanceOf(VariableType.class);
+
+         varType.setName("list(" + objectTypeName + ")");
+         varType.setNonNull(false);
+         varType.setChild(varType(objectTypeName));
+
+         return varType;
+    }
+
+    // list(variableType)
+    static VariableType list(VariableType childVarType) {
+        VariableType varType = getNewInstanceOf(VariableType.class);
+
+        varType.setName("list(" + childVarType.getName() + ")");
+        varType.setNonNull(false);
+        varType.setChild(childVarType);
+
+        return varType;
+    }
+
+    /*
+        Getter/Setter
+     */
     String getName();
 
     void setName(String name);
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/exceptions/BuildException.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/exceptions/BuildException.java
new file mode 100644
index 00000000..3d72f9e6
--- /dev/null
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/exceptions/BuildException.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.client.core.exceptions;
+
+public class BuildException extends RuntimeException {
+    public BuildException(String msg) {
+        super(msg);
+    }
+}
diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/utils/ServiceUtils.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/utils/ServiceUtils.java
new file mode 100644
index 00000000..c05180db
--- /dev/null
+++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/utils/ServiceUtils.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.client.core.utils;
+
+import java.util.ServiceLoader;
+
+public class ServiceUtils {
+    // TODO: check if 0 or >1 instance found. Throw exception if either.
+    public static  T getNewInstanceOf(Class clazz) {
+        ServiceLoader sl = ServiceLoader.load(clazz);
+        T t = sl.iterator().next();
+
+        return t;
+    }
+
+    private ServiceUtils() {
+        // HideUtilityClassConstructor
+    }
+}
diff --git a/client/pom.xml b/client/pom.xml
index d30ad04c..cd6e6800 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -28,6 +28,15 @@
     Client-side code-first API for developing GraphQL services in MicroProfile
     microprofile-graphql-client
     pom
+
+    
+        
+        1.8
+        1.8
+        UTF-8
+        UTF-8
+    
+
     
         spec
         api
diff --git a/client/spec/pom.xml b/client/spec/pom.xml
index f1cfb2a9..b667b34b 100644
--- a/client/spec/pom.xml
+++ b/client/spec/pom.xml
@@ -14,7 +14,8 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-
+
     4.0.0
     
         org.eclipse.microprofile.graphql
@@ -22,21 +23,51 @@
         1.1-SNAPSHOT
         ../
     
-    
+
     microprofile-graphql-client-spec
     pom
-    
+
     MicroProfile GraphQL Client :: Specification
     Client-side code-first GraphQL APIs for MicroProfile :: Specification
-    
+
+    
+        
+        
+            ${project.groupId}
+            microprofile-graphql-client-api
+            ${project.version}
+        
+
+        
+        
+            jakarta.json
+            jakarta.json-api
+            1.1.6
+            provided
+        
+    
+
     
         clean package
         
-            
             
                 org.asciidoctor
                 asciidoctor-maven-plugin
-                
+                
+                    
+                        org.asciidoctor
+                        asciidoctorj-diagram
+                        2.0.2
+                    
+                
+                
+                    
+                        asciidoctor-diagram
+                    
+                    
+                        
+                    
+                
                 
                     
                         generate-pdf-doc
@@ -59,9 +90,61 @@
                         
                     
                 
-                
             
-            
+
+
+            
+                de.elnarion.maven
+                plantuml-generator-maven-plugin
+                jibz-0.0.1-SNAPSHOT
+                
+                    
+                        generate-api_core-diagram
+                        
+                            generate
+                        
+                        generate-resources
+                        
+                            src/main/resources/generated
+                            api_core_class_diagram.asciidoc
+                            api_core_class_diagram
+                            true
+                            true
+                            left to right direction
+                            
+                                
+                                    org.eclipse.microprofile.graphql.client.core
+                                
+                            
+                        
+                    
+                    
+                        generate-api_client-diagram
+                        
+                            generate
+                        
+                        generate-resources
+                        
+                            src/main/resources/generated
+                            api_client_class_diagram.asciidoc
+                            api_client_class_diagram
+                            true
+                            true
+                            top to bottom direction
+                            
+                                
+                                    org.eclipse.microprofile.graphql.client
+                                
+                            
+                        
+                    
+                
+            
         
     
 
\ No newline at end of file
diff --git a/client/spec/src/main/asciidoc/back2back.jpg b/client/spec/src/main/asciidoc/back2back.jpg
deleted file mode 100644
index 174bfd55685d8f000beeae4116efcf8e81353294..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 139348
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 getOperations();
-    void setOperations(List operations);
-}
-----
+Samples are inspired by https://github.com/graphql/graphql-js/[graphql-js] tests suite.
 
-==== Static factory methods
-[source,Java]
-----
-@SafeVarargs
-public static Document document(Operation... operations) {
-    [...]
-}
+=== Basic Queries
+.GraphQL
+[source,graphql,numbered]
 ----
-
-=== Operation
-[source,Java]
-----
-public interface Operation extends Buildable {
-
-    enum Type {
-        QUERY,
-        MUTATION,
-        SUBSCRIPTION
+query HeroNameQuery {
+    hero {
+        name
     }
-
-    Type getType();
-    void setType(Type type);
-
-    String getName();
-    void setName(String name);
-
-    List getVariables();
-    void setVariables(List vars);
-
-    List getFields();
-    void setFields(List fields);
 }
 ----
-
-==== Static factory methods
-[source,Java]
+.Java
+[source,java,numbered]
 ----
-@SafeVarargs
-public static List operations(Operation... operations) {
-    [...]
-}
-
-// (fields)
-@SafeVarargs
-public static Operation operation(Field... fields) {
-    [...]
-}
-
-// (vars, fields)
-@SafeVarargs
-public static Operation operation(List vars, Field... fields) {
-    [...]
-}
-
-// (type, fields)
-@SafeVarargs
-public static Operation operation(Type type, Field... fields) {
-    [...]
-}
-
-// (type, vars, fields)
-@SafeVarargs
-public static Operation operation(Type type, List vars, Field... fields) {
-    [...]
-}
-
-// (name, fields)
-@SafeVarargs
-public static Operation operation(String name, Field... fields) {
-    [...]
-}
-
-// (type, name, fields)
-@SafeVarargs
-public static Operation operation(Type type, String name, Field... fields) {
-    [...]
-}
-
-// (name, vars, fields)
-@SafeVarargs
-public static Operation operation(String name, List vars, Field... fields) {
-    [...]
-}
-
-// (type, name, vars, fields)
-@SafeVarargs
-public static Operation operation(Type type, String name, List vars, Field... fields) {
-    [...]
-}
-----
-****
-When omitted,
-
-* *Operation's type* parameter will default to _QUERY_.
-* *Operation's name* parameter will default to an _empty string_.
-* *Operation's vars* parameter will default to an _empty list_.
-****
-
-=== Variable
-[source,Java]
+Document gqlDoc = document(
+    operation("HeroNameQuery",
+        field("hero",
+            field("name")))
+);
 ----
-public interface Variable extends Buildable {
 
-    String getName();
-    void setName(String name);
+'''
 
-    VariableType getType();
-    void setType(VariableType value);
-
-    Object getDefaultValue();
-    void setDefaultValue(Object value);
-}
+.GraphQL
+[source,graphql,numbered]
 ----
-
-==== Static factory methods
-[source,Java]
-----
-@SafeVarargs
-public static List vars(Variable... vars) {
-    [...]
-}
-
-// (name, scalarType)
-public static Variable var(String name, ScalarType scalarType) {
-    [...]
-}
-
-// (name, scalarType, defaultValue)
-public static Variable var(String name, ScalarType scalarType, Object defaultValue) {
-    [...]
-}
-
-// (name, objectType)
-public static Variable var(String name, String objectType) {
-    [...]
-}
-
-// (name, objectType, defaultValue)
-public static Variable var(String name, String objectType, Object defaultValue) {
-    [...]
-}
-
-// (name, VariableType)
-public static Variable var(String name, VariableType type) {
-    [...]
-}
-
-// (name, VariableType, defaultValue)
-public static Variable var(String name, VariableType type, Object defaultValue) {
-    [...]
-}
-----
-
-=== Scalar type
-[source,Java]
-----
-public enum ScalarType {
-    GQL_INT("Int"),
-    GQL_FLOAT("Float"),
-    GQL_STRING("String"),
-    GQL_BOOL("Boolean"),
-    GQL_ID("ID");
-
-    private String type;
-
-    ScalarType(String type) {
-        this.type = type;
-    }
-
-    public String toString() {
-        return type;
+query HeroNameAndFriendsQuery {
+    hero {
+        id
+        name
+        friends {
+            name
+        }
     }
 }
 ----
-****
-The *ScalarType enum* is meant to represents the basic scalar types
-as described in the GraphQL spec (https://spec.graphql.org/draft/#sec-Scalars).
-****
-
-=== Variable type
-[source,Java]
-----
-public interface VariableType extends Buildable {
-
-    String getName();
-    void setName(String name);
-
-    boolean isNonNull();
-    void setNonNull(boolean nonNull);
-
-    VariableType getChild();
-    void setChild(VariableType child);
-
-    default boolean isList() {
-        return getChild() != null;
+.Java
+[source,java,numbered]
+----
+Document gqlDoc = document(
+    operation("HeroNameAndFriendsQuery",
+        field("hero",
+            field("id"),
+            field("name"),
+            field("friends",
+                field("name"))))
+);
+----
+
+=== Nested Queries
+.GraphQL
+[source,graphql,numbered]
+----
+query NestedQuery {
+    hero {
+        name
+        friends {
+            name
+            appearsIn
+            friends {
+                name
+            }
+        }
     }
 }
 ----
-
-==== Static factory methods
-[source,Java]
-----
-// (scalarType)
-public static VariableType nonNull(ScalarType scalarType) {
-    [...]
-}
-
-// (objectType)
-public static VariableType nonNull(String name) {
-    [...]
-}
-
-// (varType object)
-public static VariableType nonNull(VariableType type) {
-    [...]
-}
-
-// (scalarType)
-public static VariableType list(ScalarType scalarType) {
-    [...]
-}
-
-// (typeName)
-public static VariableType list(String name) {
-    [...]
-}
-
-// (variableType object)
-public static VariableType list(VariableType childVarType) {
-    [...]
-}
-----
-
-=== Field
-
-[source,Java]
-----
-public interface Field extends Buildable {
-
-    String getName();
-    void setName(String name);
-
-    List getArguments();
-    void setArguments(List arguments);
-
-    List getFields();
-    void setFields(List fields);
-}
-----
-
-==== Static factory methods
-[source,Java]
-----
-@SafeVarargs
-public static List fields(Field... fields) {
-    [...]
-}
-
-// (name)
-public static Field field(String name) {
-    [...]
-}
-
-// (name, subfields)
-@SafeVarargs
-public static Field field(String name, Field... fields) {
-    [...]
-}
-
-// (name, args)
-@SafeVarargs
-public static Field field(String name, Argument... args) {
-    [...]
-}
-
-// (name, args, subfields)
-@SafeVarargs
-public static Field field(String name, List args, Field... fields) {
-    [...]
-}
-----
-
-****
-When omitted, *args* and *fields* parameters will default to an _empty list_.
-****
-
-=== Argument
-[source,Java]
-----
-public interface Argument extends Buildable {
-
-    String getName();
-    void setName(String name);
-
-    Object getValue();
-    void setValue(Object value);
-}
+.Java
+[source,java,numbered]
 ----
-
-==== Static factory methods
-[source,Java]
+Document gqlDoc = document(
+    operation("NestedQuery",
+        field("hero",
+            field("name"),
+            field("friends",
+                field("name"),
+                field("appearsIn"),
+                field("friends",
+                    field("name")))))
+);
 ----
-@SafeVarargs
-public static List args(Argument... args) {
-    [...]
-}
 
-// (name, raw value)
-public static Argument arg(String name, Object value) {
-    [...]
-}
-
-// (name, inputObject)
-public static Argument arg(String name, InputObject inputObject) {
-    [...]
-}
-
-// (name, variable)
-public static Argument arg(String name, Variable var) {
-    [...]
-}
+=== Queries with arguments
+.GraphQL
+[source,graphql,numbered]
 ----
-
-=== Input Object
-[source,Java]
-----
-public interface InputObject extends Buildable {
-
-    List getInputObjectFields();
-    void setInputObjectFields(List inputObjectFields);
-}
-----
-
-==== Static factory methods
-[source,Java]
-----
-@SafeVarargs
-public static InputObject inputObject(InputObjectField... inputObjectFields) {
-    [...]
+query FetchLukeAndC3POQuery {
+    human(id: "1000") {
+        name
+    }
+    droid(id: "2000") {
+        name
+    }
 }
 ----
-
-=== Input Object Field
-[source,Java]
+.Java
+[source,java,numbered]
 ----
-public interface InputObjectField extends Buildable {
-
-    String getName();
-    void setName(String name);
-
-    Object getValue();
-    void setValue(Object value);
-}
+Document gqlDoc = document(
+    operation("FetchLukeAndC3POQuery",
+        field("human", args(arg("id", "1000")),
+            field("name")),
+        field("droid", args(arg("id", "2000")),
+            field("name")))
+);
 ----
 
-==== Static factory methods
-[source,Java]
+=== Queries with variables
+.GraphQL
+[source,graphql,numbered]
 ----
-// (name, value)
-public static InputObjectField prop(String name, Object value) {
-    [...]
-}
-
-// (name, variable)
-public static InputObjectField prop(String name, Variable var) {
-    [...]
+query FetchSomeIDQuery($someId: String!) {
+    human(id: $someId) {
+        name
+    }
 }
 ----
-****
-The keyword *prop* (as in _an object's property_) has been chosen instead of *field*
-to avoid confusion with the notion of _field of a selection set_.
-****
-
-=== Enum
-[source,Java]
-----
-public interface Enum {
-
-    String getValue();
-    void setValue(String value);
-}
+.Java
+[source,java,numbered]
 ----
+Variable someId = var("someId", nonNull(GQL_STRING));
 
-==== Static factory methods
-[source,Java]
-----
-public static Enum gqlEnum(String value);
+Document gqlDoc = document(
+    operation("FetchSomeIDQuery", vars(someId),
+        field("human", args(arg("id", someId)),
+            field("name"))
+);
 ----
 
-****
-Due to Java's reserved keyword _enum_, the prefixe _gql_ have been added for the static factory method.
-****
-
-== Running a GraphQL document
+== Sending a GraphQL document
 
 Once a GraphQL document has been prepared, it can be run against a server.
 This specification proposes two abstractions for that:
 
-. **Request**: prepare a request execution including the request and optional variables.
-. **Response**: a holder for a GraphQL response including optional errors and data.
+. **Request**: prepare a GraphQL request execution with the possibility to set variables.
 
-=== GraphQLClientBuilder
+. **Response**: a holder for a GraphQL response including data and errors (if any).
 
-A **ClientBuilder** class is defined to bootstrap a client implementation. This can be done using the Service Loader approach.
+=== Client API
+include::../resources/generated/api_client_class_diagram.asciidoc[]
 
-==== Interface defintion
-[source,Java]
-----
-public interface ClientBuilder {
-    Request newRequest(String request);
-}
-----
-=== Request
+==== Request
+===== Initialization
 
-==== Interface Definition
+A Request object is initialised with a GraphQL document:
 [source,Java]
 ----
-public interface Request {
-
-    Request addVariable(String name, Object value);
+Document gqlDoc = document(
+                operation("HeroNameQuery",
+                        field("hero",
+                                field("name"))));
 
-    Request resetVariables();
-
-    String toJson();
-}
+Request request = new DynaQLRequest(gqlDoc.build());
 ----
-
-==== Initialization
-
-A Request object is initialised from the builder with a GraphQL request obtained from a Document:
+===== Setting variables
+Optional GraphQL variables can be provided fluently:
 [source,Java]
 ----
-Request graphQLRequest = graphQLClientBuilder.newRequest(document.build());
-----
-==== Setting variables
-Optional GraphQL variables can be provided in a fluent manner:
-[source,Java]
-----
-graphQLRequest
-    .addVariable("surname", "James")
-    .addVariable("personId", 1);
+Request request = new DynaQLRequest(document)
+            .setVariable("surname", "Mike")
+            .setVariable("personId", 1001);
 ----
 In order to make it reuseable for other executions, variables can also be reset:
 [source,Java]
 ----
-graphQLRequest
+request
     .resetVariables()
-    .addVariable("surname", "Roux")
-    .addVariable("personId", 2);
+    .setVariable("surname", "John")
+    .setVariable("personId", 2002);
 ----
 With this approach, a _Request_ object is immutable regarding the GraphQL document to send and mutable regarding the variables.
 It is the responsibility of the caller to ensure the consistency between the request and the variables.
@@ -614,124 +289,33 @@ Once initialized with a document and optional variables, a _Request_ object can
 
 For instance:
 
-* JAX-RS in a Jakarta EE or MicroProfile container
+* JAX-RS in a Jakarta EE or MicroProfile container.
 * raw HTTP using a library such as Apache HTTP client.
 
-==== Examples of JAX-RS transport
-
-To make things more concrete, we propose some examples using JAX-RS.
-
-Suppose we a have an initialized _Request_. It can be a mutation or a query. We can send it and get the response in the following way;
-[source,Java]
-----
-Client client = clientBuilder.build();
-
-Response response = client
-        .target("http://localhost:8080/graphql")
-        .request(MediaType.APPLICATION_JSON)
-        .post(json(graphQLRequest));
-----
-A registered JAX-RS MessageBodyWriter is needed to automatically turn a GraphQLRequest object into a JSON structure. This is the responsibility of the implementation to provide it.
-
-In the previous example, a generic JAX-RS Response is returned. The GraphQLResponse (described below) can then be read as an entity:
-[source,Java]
-----
-Response graphQLResponse = response
-    .readEntity(Response.class);
-----
-
-Alternatively, we can get a _Response_ directly as a typed entity:
-[source,Java]
-----
-Response graphQLResponse = client
-        .target("http://localhost:8080/graphql")
-        .request(MediaType.APPLICATION_JSON)
-        .post(json(graphQLRequest), Response.class);
-----
-A registered JAX-RS MessageBodyReader is needed to turn a JSON structure into a _Response_ object. This is the responsibility of the implementation to provide it.
-
-Using JAX-RS, we can even run a request in a reactive way:
-[source,Java]
-----
-CompletionStage csr = client
-        .target("http://localhost:8080/graphql")
-        .request()
-        .rx()
-        .post(json(graphQLRequest), Response.class);
-
-        // Do some other stuff here...
-
-        csr.thenAccept(// Async processing here });
-----
-
-==== Examples of HTTP transport
-
-Let's see how to use a HTTP transport layer with Apache HttpClient:
-[source,Java]
-----
-// Prepare the HTTP POST
-URI endpoint = new URI("http://localhost:8080/graphql");
-HttpPost httpPost = new HttpPost(new URI(endpoint));
+You can lookup https://github.com/worldline/dynaql/[DynaQL] for an implementation of both.
 
-StringEntity stringEntity = new StringEntity(jsonRequest.toJson(), ContentType.APPLICATION_JSON);
-httpPost.setEntity(stringEntity);
+==== Response
 
-// Execute the POST
-CloseableHttpClient httpClient = HttpClients.createDefault());
-CloseableHttpResponse httpResponse = httpClient.execute(httpPost);
+Response is a holder both for data and errors with some handy capabilities to retrieve the data directly as POJOs.
 
-// Read the response
-InputStream contentStream = serverResponse.getEntity().getContent();
-----
-For the sake of simplicity, this code does not take into account configuration, exception and resource management and omits the details of data conversion.
-
-=== Response
-
-In the previous examples, we have seen how to get a GraphQLResponse from a server.
-
-GraphQLResponse is a holder both for data and errors.
-
-
-==== Interface definition
-[source,Java]
-----
-public interface Response {
-
-    JsonObject getData();
-    List getErrors();
-
-     List getList(Class dataType, String rootField);
-     T getObject(Class dataType, String rootField);
-
-    boolean hasData();
-
-    boolean hasError();
-}
-----
-[source,Java]
-----
-public interface Error {
-
-    String getMessage();
-    List> getLocations();
+****
+NOTE: *Partial results*
 
-    Object[] getPath();
-    Map getExtensions();
-}
-----
+In GraphQL you can have _partial results_, meaning you can get data for some fields and errors for some others in the same response.
+****
 
-==== Getting errors
+===== Getting errors
 We can check if there is any error and access each of them:
 [source, Java]
 ----
-if ( graphQLResponse.hasError() ) {
+if (response.hasError()) {
     log.warn("GraphQL error:");
-    graphQLResponse.getErrors().forEach( e -> log.warning(e.toString()) );
+    graphQLResponse.getErrors().forEach(e -> log.warning(e.toString()));
 }
 ----
 
 The getErrors() method returns a list of _Error_ objects.
-In accordance with the specification, a _Error_ is made of:
+In accordance with the specification, an _Error_ is made of:
 
 * a message
 * a list of locations
@@ -744,20 +328,20 @@ It is the responsibility of the client to decide how to deal with GraphQL errors
 The hasData method enables to check if there is any data:
 [source, Java]
 ----
-if (graphQLResponse.hasData())
+if (response.hasData())
     log.info("Data inside");
 ----
 
 Data can be obtained in 2 ways:
 
-* *as a generic JsonObject*: using the getData method, it is the responsibility of the caller to turn this JsonObject into application objects.
-* *as an application object* (or a list of them): using the getObject (or getList) method. In that case, it is necessary to provide the expected data rootfield to be retrieved.
+* *as a generic JsonObject*: using the getData method.
+* *as a POJO* (or a list of them): using the getObject (or getList) method. In that case, it is necessary to provide the expected data rootfield to be retrieved.
 
 For instance, with a UserProfile application class:
 [source, Java]
 ----
 // Get the data as a generic JsonObject
-JsonObject data = graphQLResponse.getData();
+JsonObject data = response.getData();
 
 // Turn it into a UserProfile object
 JsonObject myData = data.getJsonObject("profile");
@@ -766,13 +350,13 @@ UserProfile userProfile = jsonb.fromJson(myData.toString(), Profile.class);
 
 // OR
 
-// Directly get a UserProfile object from graphqlReponse
-UserProfile userProfile = graphQLResponse.getObject(Profile.class, "profile");
+// Directly get a UserProfile object from response
+UserProfile userProfile = response.getObject(Profile.class, "profile");
 ----
 
 In the same way, the getList method enables to get a list of objects:
 [source,Java]
 ----
-// Get a list of Person from a graphQLResponse
-List people = graphQLResponse.getList(Person.class, "people");
+// Get a list of Person from a response
+List people = response.getList(Person.class, "people");
 ----
diff --git a/client/spec/src/main/asciidoc/index.asciidoc b/client/spec/src/main/asciidoc/index.asciidoc
index 537b84dc..a1135443 100644
--- a/client/spec/src/main/asciidoc/index.asciidoc
+++ b/client/spec/src/main/asciidoc/index.asciidoc
@@ -34,4 +34,5 @@ endif::[]
 
 include::license-alv2.asciidoc[]
 
-include::client.asciidoc[]
\ No newline at end of file
+include::dynamic_client.asciidoc[]
+
diff --git a/client/spec/src/main/resources/generated/api_client_class_diagram.asciidoc b/client/spec/src/main/resources/generated/api_client_class_diagram.asciidoc
new file mode 100644
index 00000000..c6cce054
--- /dev/null
+++ b/client/spec/src/main/resources/generated/api_client_class_diagram.asciidoc
@@ -0,0 +1,40 @@
+[plantuml,api_client_class_diagram,png]
+----
+@startuml
+top to bottom direction
+
+interface Error {
+	{method}  {abstract} +getExtensions () : Map
+	{method}  {abstract} +getLocations () : List
+	{method}  {abstract} +getMessage () : String
+	{method}  {abstract} +getPath () : Object[]
+}
+
+
+interface Request {
+	{method}  {abstract} +getDocument () : String
+	{method}  {abstract} +getVariable ( String ) : Object
+	{method}  {abstract} +getVariables () : Map
+	{method}  {abstract} +resetVariables () : Request
+	{method}  {abstract} +setVariable ( String , Object ) : Request
+	{method}  {abstract} +setVariables ( Map ) : void
+	{method}  {abstract} +toJson () : String
+}
+
+
+interface Response {
+	{method}  {abstract} +getData () : JsonObject
+	{method}  {abstract} +getErrors () : List
+	{method}  {abstract} +getList ( Class , String ) : List
+	{method}  {abstract} +getObject ( Class , String ) : Object
+	{method}  {abstract} +hasData () : boolean
+	{method}  {abstract} +hasError () : boolean
+}
+
+
+
+
+
+
+@enduml
+----
\ No newline at end of file
diff --git a/client/spec/src/main/resources/generated/api_core_class_diagram.asciidoc b/client/spec/src/main/resources/generated/api_core_class_diagram.asciidoc
new file mode 100644
index 00000000..fac9a19c
--- /dev/null
+++ b/client/spec/src/main/resources/generated/api_core_class_diagram.asciidoc
@@ -0,0 +1,155 @@
+[plantuml,api_core_class_diagram,png]
+----
+@startuml
+left to right direction
+
+interface Argument {
+	{method}  {static} +arg ( String , InputObject ) : Argument
+	{method}  {static} +arg ( String , Object ) : Argument
+	{method}  {static} +arg ( String , Variable ) : Argument
+	{method}  {static} +args ( Argument[] ) : List
+	{method}  {abstract} +getName () : String
+	{method}  {abstract} +getValue () : Object
+	{method}  {abstract} +setName ( String ) : void
+	{method}  {abstract} +setValue ( Object ) : void
+}
+
+
+interface Buildable {
+	{method}  {abstract} +build () : String
+}
+
+
+interface Document {
+	{method}  {static} +document ( Operation[] ) : Document
+	{method}  {abstract} +getOperations () : List
+	{method}  {abstract} +setOperations ( List ) : void
+}
+
+
+interface Enum {
+	{method}  {abstract} +getValue () : String
+	{method}  {static} +gqlEnum ( String ) : Enum
+	{method}  {abstract} +setValue ( String ) : void
+}
+
+
+interface Field {
+	{method}  {static} +field ( String ) : Field
+	{method}  {static} +field ( String , Argument[] ) : Field
+	{method}  {static} +field ( String , Field[] ) : Field
+	{method}  {static} +field ( String , List , Field[] ) : Field
+	{method}  {static} +fields ( Field[] ) : List
+	{method}  {abstract} +getArguments () : List
+	{method}  {abstract} +getFields () : List
+	{method}  {abstract} +getName () : String
+	{method}  {abstract} +setArguments ( List ) : void
+	{method}  {abstract} +setFields ( List ) : void
+	{method}  {abstract} +setName ( String ) : void
+}
+
+
+interface InputObject {
+	{method}  {abstract} +getInputObjectFields () : List
+	{method}  {static} +inputObject ( InputObjectField[] ) : InputObject
+	{method}  {abstract} +setInputObjectFields ( List ) : void
+}
+
+
+interface InputObjectField {
+	{method}  {abstract} +getName () : String
+	{method}  {abstract} +getValue () : Object
+	{method}  {static} +prop ( String , Object ) : InputObjectField
+	{method}  {static} +prop ( String , Variable ) : InputObjectField
+	{method}  {abstract} +setName ( String ) : void
+	{method}  {abstract} +setValue ( Object ) : void
+}
+
+
+interface Operation {
+	{method}  {abstract} +getFields () : List
+	{method}  {abstract} +getName () : String
+	{method}  {abstract} +getType () : OperationType
+	{method}  {abstract} +getVariables () : List
+	{method}  {static} +operation ( Field[] ) : Operation
+	{method}  {static} +operation ( List , Field[] ) : Operation
+	{method}  {static} +operation ( OperationType , Field[] ) : Operation
+	{method}  {static} +operation ( String , Field[] ) : Operation
+	{method}  {static} +operation ( OperationType , List , Field[] ) : Operation
+	{method}  {static} +operation ( OperationType , String , Field[] ) : Operation
+	{method}  {static} +operation ( String , List , Field[] ) : Operation
+	{method}  {static} +operation ( OperationType , String , List , Field[] ) : Operation
+	{method}  {static} +operations ( Operation[] ) : List
+	{method}  {abstract} +setFields ( List ) : void
+	{method}  {abstract} +setName ( String ) : void
+	{method}  {abstract} +setType ( OperationType ) : void
+	{method}  {abstract} +setVariables ( List ) : void
+}
+
+
+enum OperationType {
+	{field} +MUTATION
+	{field} +QUERY
+}
+
+
+enum ScalarType {
+	{field} +Boolean
+	{field} +Float
+	{field} +ID
+	{field} +Int
+	{field} +String
+}
+
+
+interface Variable {
+	{method}  {abstract} +getDefaultValue () : Optional
+	{method}  {abstract} +getName () : String
+	{method}  {abstract} +getType () : VariableType
+	{method}  {abstract} +setDefaultValue ( Optional ) : void
+	{method}  {abstract} +setName ( String ) : void
+	{method}  {abstract} +setType ( VariableType ) : void
+	{method}  {static} +var ( String , ScalarType ) : Variable
+	{method}  {static} +var ( String , String ) : Variable
+	{method}  {static} +var ( String , VariableType ) : Variable
+	{method}  {static} +var ( String , ScalarType , Object ) : Variable
+	{method}  {static} +var ( String , String , Object ) : Variable
+	{method}  {static} +var ( String , VariableType , Object ) : Variable
+	{method}  {static} +vars ( Variable[] ) : List
+}
+
+
+interface VariableType {
+	{method}  {abstract} +getChild () : VariableType
+	{method}  {abstract} +getName () : String
+	{method} +isList () : boolean
+	{method}  {abstract} +isNonNull () : boolean
+	{method}  {static} +list ( ScalarType ) : VariableType
+	{method}  {static} +list ( String ) : VariableType
+	{method}  {static} +list ( VariableType ) : VariableType
+	{method}  {static} +nonNull ( ScalarType ) : VariableType
+	{method}  {static} +nonNull ( String ) : VariableType
+	{method}  {static} +nonNull ( VariableType ) : VariableType
+	{method}  {abstract} +setChild ( VariableType ) : void
+	{method}  {abstract} +setName ( String ) : void
+	{method}  {abstract} +setNonNull ( boolean ) : void
+	{method}  {static} +varType ( ScalarType ) : VariableType
+	{method}  {static} +varType ( String ) : VariableType
+}
+
+
+
+
+Argument ..|>  Buildable
+Document ..|>  Buildable
+Enum ..|>  Buildable
+Field ..|>  Buildable
+InputObject ..|>  Buildable
+InputObjectField ..|>  Buildable
+Operation ..|>  Buildable
+Variable ..|>  Buildable
+VariableType ..|>  Buildable
+
+
+@enduml
+----
\ No newline at end of file
diff --git a/client/tck/pom.xml b/client/tck/pom.xml
index 7ed2fa4d..293e51d6 100644
--- a/client/tck/pom.xml
+++ b/client/tck/pom.xml
@@ -27,13 +27,32 @@
     MicroProfile GraphQL Client :: TCK
     Client-side code-first GraphQL APIs for MicroProfile :: TCK
 
+    
+        
+        5.7.0
+        15.0
+    
+
     
+        
         
             ${project.groupId}
             microprofile-graphql-client-api
             ${project.version}
             provided
         
+
+        
+        
+            org.junit.jupiter
+            junit-jupiter
+            ${junit.jupiter.version}
+        
+        
+            com.graphql-java
+            graphql-java
+            ${graphql-java.version}
+        
     
 
     
diff --git a/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/ArraysTest.java b/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/ArraysTest.java
new file mode 100644
index 00000000..daab071e
--- /dev/null
+++ b/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/ArraysTest.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.client.tck.core;
+
+import org.eclipse.microprofile.graphql.client.core.Document;
+import org.eclipse.microprofile.graphql.client.tck.helper.AssertGraphQL;
+import org.eclipse.microprofile.graphql.client.tck.helper.Utils;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.net.URISyntaxException;
+
+import static org.eclipse.microprofile.graphql.client.core.Argument.arg;
+import static org.eclipse.microprofile.graphql.client.core.Argument.args;
+import static org.eclipse.microprofile.graphql.client.core.Document.document;
+import static org.eclipse.microprofile.graphql.client.core.Field.field;
+import static org.eclipse.microprofile.graphql.client.core.InputObject.inputObject;
+import static org.eclipse.microprofile.graphql.client.core.InputObjectField.prop;
+import static org.eclipse.microprofile.graphql.client.core.Operation.operation;
+import static org.eclipse.microprofile.graphql.client.core.OperationType.QUERY;
+
+public class ArraysTest {
+
+    @Test
+    public void arraysTest() throws IOException, URISyntaxException {
+        String expectedRequest = Utils.getResourceFileContent("core/arrays.graphql");
+
+        Document document = document(
+                operation(QUERY, "arrayHolderQuery",
+                        field("arrayHolder",
+                                args(
+                                        arg("arrayHolder", inputObject(
+                                                prop("boolPrimitiveArray", new boolean[]{true, false, true}),
+                                                prop("boolObjectArray", new Boolean[]{true, false, true}),
+
+                                                prop("bytePrimitiveArray", new byte[]{0, 2, 3}),
+                                                prop("byteObjectArray", new Byte[]{0, 2, 3}),
+
+                                                prop("shortPrimitiveArray", new short[]{78, 789, 645}),
+                                                prop("shortObjectArray", new Short[]{78, 789, 645}),
+
+                                                prop("intPrimitiveArray", new int[]{78, 65, 12354}),
+                                                prop("intObjectArray", new Integer[]{78, 65, 12354}),
+
+                                                prop("longPrimitiveArray", new long[]{789L, 947894L, 1874448L}),
+                                                prop("longObjectArray", new Long[]{789L, 947894L, 1874448L}),
+
+                                                prop("floatPrimitiveArray", new float[]{1567.654f, 8765f, 123789456.1851f}),
+                                                prop("floatObjectArray", new Float[]{1567.654f, 8765f, 123789456.1851f}),
+
+                                                prop("doublePrimitiveArray", new double[]{789.3242d, 1815d, 98765421.654897d}),
+                                                prop("doubleObjectArray", new Double[]{789.3242d, 1815d, 98765421.654897d}),
+
+                                                prop("bigIntegerArray", new BigInteger[]{BigInteger.ZERO, BigInteger.ONE, BigInteger.TEN}),
+                                                prop("bigDecimalArray", new BigDecimal[]{BigDecimal.ZERO, BigDecimal.ONE, BigDecimal.TEN}),
+
+                                                prop("charPrimitiveArray", new char[]{'f', 'o', 'o'}),
+                                                prop("charObjectArray", new Character[]{'f', 'o', 'o'}),
+
+                                                prop("stringArray", new String[]{"foo", "bar", "baz"})
+                                        ))),
+                                field("boolPrimitiveArray"),
+                                field("boolObjectArray"),
+
+                                field("bytePrimitiveArray"),
+                                field("byteObjectArray"),
+
+                                field("shortPrimitiveArray"),
+                                field("shortObjectArray"),
+
+                                field("intPrimitiveArray"),
+                                field("intObjectArray"),
+
+                                field("longPrimitiveArray"),
+                                field("longObjectArray"),
+
+                                field("floatPrimitiveArray"),
+                                field("floatObjectArray"),
+
+                                field("doublePrimitiveArray"),
+                                field("doubleObjectArray"),
+
+                                field("bigIntegerArray"),
+                                field("bigDecimalArray"),
+
+                                field("charPrimitiveArray"),
+                                field("charObjectArray"),
+
+                                field("stringArray")
+                        )
+                )
+        );
+
+        String generatedRequest = document.build();
+        AssertGraphQL.assertEquivalentGraphQLRequest(expectedRequest, generatedRequest);
+    }
+}
diff --git a/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/FieldsTest.java b/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/FieldsTest.java
new file mode 100644
index 00000000..b4b4ea08
--- /dev/null
+++ b/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/FieldsTest.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.client.tck.core;
+
+import org.eclipse.microprofile.graphql.client.core.Document;
+import org.eclipse.microprofile.graphql.client.tck.helper.AssertGraphQL;
+import org.eclipse.microprofile.graphql.client.tck.helper.Utils;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+import static org.eclipse.microprofile.graphql.client.core.Argument.arg;
+import static org.eclipse.microprofile.graphql.client.core.Argument.args;
+import static org.eclipse.microprofile.graphql.client.core.Document.document;
+import static org.eclipse.microprofile.graphql.client.core.Field.field;
+import static org.eclipse.microprofile.graphql.client.core.Operation.operation;
+import static org.eclipse.microprofile.graphql.client.core.OperationType.QUERY;
+
+public class FieldsTest {
+
+    @Test
+    public void fieldsTest() throws IOException, URISyntaxException {
+        String expectedRequest = Utils.getResourceFileContent("core/fields.graphql");
+
+        Document document = document(
+                operation(QUERY,
+                        field("noArgNoSubField"),
+                        field("noArgWithSubField",
+                                field("bool"),
+                                field("string"),
+                                field("double")
+                        ),
+                        field("withArgNoSubField", arg("anInt", 42)),
+                        field("withArgWithSubField", args(
+                                arg("aString", "world"),
+                                arg("aDouble", 78.12d),
+                                arg("aBool", false)),
+                                    field("bool"),
+                                    field("string"),
+                                    field("double")
+                        ))
+        );
+
+        String generatedRequest = document.build();
+        AssertGraphQL.assertEquivalentGraphQLRequest(expectedRequest, generatedRequest);
+    }
+}
diff --git a/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/NestedObjectsTest.java b/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/NestedObjectsTest.java
new file mode 100644
index 00000000..20312d5c
--- /dev/null
+++ b/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/NestedObjectsTest.java
@@ -0,0 +1,216 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.client.tck.core;
+
+
+import org.eclipse.microprofile.graphql.client.core.Document;
+import org.eclipse.microprofile.graphql.client.core.InputObject;
+import org.eclipse.microprofile.graphql.client.tck.helper.AssertGraphQL;
+import org.eclipse.microprofile.graphql.client.tck.helper.Utils;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+
+import static org.eclipse.microprofile.graphql.client.core.Argument.arg;
+import static org.eclipse.microprofile.graphql.client.core.Argument.args;
+import static org.eclipse.microprofile.graphql.client.core.Document.document;
+import static org.eclipse.microprofile.graphql.client.core.Field.field;
+import static org.eclipse.microprofile.graphql.client.core.InputObject.inputObject;
+import static org.eclipse.microprofile.graphql.client.core.InputObjectField.prop;
+import static org.eclipse.microprofile.graphql.client.core.Operation.operation;
+import static org.eclipse.microprofile.graphql.client.core.OperationType.MUTATION;
+
+public class NestedObjectsTest {
+
+    @Test
+    public void nestedObjectsTest() throws IOException, URISyntaxException {
+        String expectedRequest = Utils.getResourceFileContent("core/nestedObjects.graphql");
+
+        InputObject baseObject0 = inputObject(
+                prop("level", 0),
+                prop("name", "level 0"),
+                prop("levelLineage", new byte[]{}),
+                prop("nestedObjectLineage", new InputObject[]{})
+        );
+        InputObject baseObject1 = inputObject(
+                prop("level", 1),
+                prop("name", "level 1"),
+                prop("levelLineage", new byte[]{0}),
+                prop("nestedObjectLineage", new InputObject[]{baseObject0})
+        );
+        InputObject baseObject2 = inputObject(
+                prop("level", 2),
+                prop("name", "level 2"),
+                prop("levelLineage", new byte[]{0, 1}),
+                prop("nestedObjectLineage", new InputObject[]{baseObject0, baseObject1})
+        );
+        InputObject baseObject3 = inputObject(
+                prop("level", 3),
+                prop("name", "level 3"),
+                prop("levelLineage", new byte[]{0, 1, 2}),
+                prop("nestedObjectLineage", new InputObject[]{baseObject0, baseObject1, baseObject2})
+        );
+
+        /*
+        We use cloning hereafter to avoid circular references.
+         */
+        InputObject object3 = inputObject();
+        object3.setInputObjectFields(new ArrayList<>(baseObject3.getInputObjectFields()));
+        object3.getInputObjectFields().add(prop("nestedObject", null));
+
+        InputObject object2 = inputObject();
+        object2.setInputObjectFields(new ArrayList<>(baseObject2.getInputObjectFields()));
+        object2.getInputObjectFields().add(prop("nestedObject", object3));
+
+        InputObject object1 = inputObject();
+        object1.setInputObjectFields(new ArrayList<>(baseObject1.getInputObjectFields()));
+        object1.getInputObjectFields().add(prop("nestedObject", object2));
+
+        InputObject object0 = inputObject();
+        object0.setInputObjectFields(new ArrayList<>(baseObject0.getInputObjectFields()));
+        object0.getInputObjectFields().add(prop("nestedObject", object1));
+
+        Document document = document(
+                operation(MUTATION, "nestedObjects",
+                        field("nestedObjectHolder", args(
+                                arg("nestedObjectHolder", object0)),
+                                field("level"),
+                                field("name"),
+                                field("levelLineage"),
+                                field("nestedObjectLineage",
+                                        field("level"),
+                                        field("name"),
+                                        field("levelLineage"),
+                                        field("nestedObjectLineage",
+                                                field("level"),
+                                                field("name"),
+                                                field("levelLineage"),
+                                                field("nestedObjectLineage",
+                                                        field("level"),
+                                                        field("name"),
+                                                        field("levelLineage"),
+                                                        field("nestedObjectLineage",
+                                                                field("level"),
+                                                                field("name"),
+                                                                field("levelLineage"))))),
+                                field("nestedObject",
+                                        field("level"),
+                                        field("name"),
+                                        field("levelLineage"),
+                                        field("nestedObjectLineage",
+                                                field("level"),
+                                                field("name"),
+                                                field("levelLineage"),
+                                                field("nestedObjectLineage",
+                                                        field("level"),
+                                                        field("name"),
+                                                        field("levelLineage"),
+                                                        field("nestedObjectLineage",
+                                                                field("level"),
+                                                                field("name"),
+                                                                field("levelLineage"),
+                                                                field("nestedObjectLineage",
+                                                                        field("level"),
+                                                                        field("name"),
+                                                                        field("levelLineage"))))),
+                                        field("nestedObject",
+                                                field("level"),
+                                                field("name"),
+                                                field("levelLineage"),
+                                                field("nestedObjectLineage",
+                                                        field("level"),
+                                                        field("name"),
+                                                        field("levelLineage"),
+                                                        field("nestedObjectLineage",
+                                                                field("level"),
+                                                                field("name"),
+                                                                field("levelLineage"),
+                                                                field("nestedObjectLineage",
+                                                                        field("level"),
+                                                                        field("name"),
+                                                                        field("levelLineage"),
+                                                                        field("nestedObjectLineage",
+                                                                                field("level"),
+                                                                                field("name"),
+                                                                                field("levelLineage"))))),
+                                                field("nestedObject",
+                                                        field("level"),
+                                                        field("name"),
+                                                        field("levelLineage"),
+                                                        field("nestedObjectLineage",
+                                                                field("level"),
+                                                                field("name"),
+                                                                field("levelLineage"),
+                                                                field("nestedObjectLineage",
+                                                                        field("level"),
+                                                                        field("name"),
+                                                                        field("levelLineage"),
+                                                                        field("nestedObjectLineage",
+                                                                                field("level"),
+                                                                                field("name"),
+                                                                                field("levelLineage"),
+                                                                                field("nestedObjectLineage",
+                                                                                        field("level"),
+                                                                                        field("name"),
+                                                                                        field("levelLineage"))))),
+                                                        field("nestedObject",
+                                                                field("level"),
+                                                                field("name"),
+                                                                field("levelLineage"),
+                                                                field("nestedObjectLineage",
+                                                                        field("level"),
+                                                                        field("name"),
+                                                                        field("levelLineage"),
+                                                                        field("nestedObjectLineage",
+                                                                                field("level"),
+                                                                                field("name"),
+                                                                                field("levelLineage"),
+                                                                                field("nestedObjectLineage",
+                                                                                        field("level"),
+                                                                                        field("name"),
+                                                                                        field("levelLineage"),
+                                                                                        field("nestedObjectLineage",
+                                                                                                field("level"),
+                                                                                                field("name"),
+                                                                                                field("levelLineage"))))),
+                                                                field("nestedObject",
+                                                                        field("level"),
+                                                                        field("name"),
+                                                                        field("levelLineage"),
+                                                                        field("nestedObjectLineage",
+                                                                                field("level"),
+                                                                                field("name"),
+                                                                                field("levelLineage"),
+                                                                                field("nestedObjectLineage",
+                                                                                        field("level"),
+                                                                                        field("name"),
+                                                                                        field("levelLineage"),
+                                                                                        field("nestedObjectLineage",
+                                                                                                field("level"),
+                                                                                                field("name"),
+                                                                                                field("levelLineage"),
+                                                                                                field("nestedObjectLineage",
+                                                                                                        field("level"),
+                                                                                                        field("name"),
+                                                                                                        field("levelLineage")))))))))))));
+
+        String generatedRequest = document.build();
+        //System.out.println(generatedRequest);
+        AssertGraphQL.assertEquivalentGraphQLRequest(expectedRequest, generatedRequest);
+    }
+}
diff --git a/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/ScalarsTest.java b/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/ScalarsTest.java
new file mode 100644
index 00000000..a13e5215
--- /dev/null
+++ b/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/ScalarsTest.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.client.tck.core;
+
+
+import org.eclipse.microprofile.graphql.client.core.Document;
+import org.eclipse.microprofile.graphql.client.tck.helper.AssertGraphQL;
+import org.eclipse.microprofile.graphql.client.tck.helper.Utils;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.net.URISyntaxException;
+
+import static org.eclipse.microprofile.graphql.client.core.Argument.arg;
+import static org.eclipse.microprofile.graphql.client.core.Argument.args;
+import static org.eclipse.microprofile.graphql.client.core.Document.document;
+import static org.eclipse.microprofile.graphql.client.core.Field.field;
+import static org.eclipse.microprofile.graphql.client.core.InputObject.inputObject;
+import static org.eclipse.microprofile.graphql.client.core.InputObjectField.prop;
+import static org.eclipse.microprofile.graphql.client.core.Operation.operation;
+import static org.eclipse.microprofile.graphql.client.core.OperationType.MUTATION;
+
+public class ScalarsTest {
+
+    @Test
+    public void scalarsTest() throws IOException, URISyntaxException {
+        String expectedRequest = Utils.getResourceFileContent("core/scalars.graphql");
+
+        Document document = document(
+                operation(MUTATION, "scalarHolderMutation",
+                        field("scalarHolder",
+                                args(
+                                        arg("scalarHolder", inputObject(
+                                                prop("booleanPrimitive", false),
+                                                prop("booleanObject", Boolean.valueOf(true)),
+
+                                                prop("bytePrimitive", Byte.MIN_VALUE),
+                                                prop("byteObject", Byte.valueOf(Byte.MAX_VALUE)),
+
+                                                prop("shortPrimitive", Short.MIN_VALUE),
+                                                prop("shortObject", Short.valueOf(Short.MAX_VALUE)),
+
+                                                prop("intPrimitive", Integer.MIN_VALUE + 1),
+                                                prop("intObject", Integer.valueOf(Integer.MAX_VALUE)),
+
+                                                prop("longPrimitive", Long.MIN_VALUE),
+                                                prop("longObject", Long.valueOf(Long.MAX_VALUE)),
+
+                                                prop("floatPrimitive", Float.MIN_VALUE),
+                                                prop("floatObject", Float.valueOf(Float.MAX_VALUE)),
+
+                                                prop("doublePrimitive", Double.MIN_VALUE),
+                                                prop("doubleObject", Double.valueOf(Double.MAX_VALUE)),
+
+                                                prop("bigInteger", BigInteger.TEN),
+                                                prop("bigDecimal", BigDecimal.TEN),
+
+                                                prop("charPrimitive", 'a'),
+                                                prop("charObject", Character.valueOf('Z')),
+
+                                                prop("stringObject", "Hello World !")
+                                        ))),
+                                field("booleanPrimitive"),
+                                field("booleanObject"),
+
+                                field("bytePrimitive"),
+                                field("byteObject"),
+
+                                field("shortPrimitive"),
+                                field("shortObject"),
+
+                                field("intPrimitive"),
+                                field("intObject"),
+
+                                field("longPrimitive"),
+                                field("longObject"),
+
+                                field("floatPrimitive"),
+                                field("floatObject"),
+
+                                field("doublePrimitive"),
+                                field("doubleObject"),
+
+                                field("bigInteger"),
+                                field("bigDecimal"),
+
+                                field("charPrimitive"),
+                                field("charObject"),
+
+                                field("stringObject")
+                        )
+                )
+        );
+
+        String generatedRequest = document.build();
+        AssertGraphQL.assertEquivalentGraphQLRequest(expectedRequest, generatedRequest);
+    }
+}
diff --git a/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/VariablesTest.java b/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/VariablesTest.java
new file mode 100644
index 00000000..55cfb12e
--- /dev/null
+++ b/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/VariablesTest.java
@@ -0,0 +1,203 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.client.tck.core;
+
+
+import org.eclipse.microprofile.graphql.client.core.Document;
+import org.eclipse.microprofile.graphql.client.core.Variable;
+import org.eclipse.microprofile.graphql.client.tck.helper.AssertGraphQL;
+import org.eclipse.microprofile.graphql.client.tck.helper.Utils;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+import static org.eclipse.microprofile.graphql.client.core.Argument.arg;
+import static org.eclipse.microprofile.graphql.client.core.Argument.args;
+import static org.eclipse.microprofile.graphql.client.core.Document.document;
+import static org.eclipse.microprofile.graphql.client.core.Field.field;
+import static org.eclipse.microprofile.graphql.client.core.InputObject.inputObject;
+import static org.eclipse.microprofile.graphql.client.core.InputObjectField.prop;
+import static org.eclipse.microprofile.graphql.client.core.Operation.operation;
+import static org.eclipse.microprofile.graphql.client.core.OperationType.MUTATION;
+import static org.eclipse.microprofile.graphql.client.core.OperationType.QUERY;
+import static org.eclipse.microprofile.graphql.client.core.ScalarType.GQL_BOOL;
+import static org.eclipse.microprofile.graphql.client.core.ScalarType.GQL_FLOAT;
+import static org.eclipse.microprofile.graphql.client.core.ScalarType.GQL_ID;
+import static org.eclipse.microprofile.graphql.client.core.ScalarType.GQL_INT;
+import static org.eclipse.microprofile.graphql.client.core.ScalarType.GQL_STRING;
+import static org.eclipse.microprofile.graphql.client.core.Variable.var;
+import static org.eclipse.microprofile.graphql.client.core.Variable.vars;
+import static org.eclipse.microprofile.graphql.client.core.VariableType.list;
+import static org.eclipse.microprofile.graphql.client.core.VariableType.nonNull;
+
+public class VariablesTest {
+
+    @Test
+    public void variablesDefaultValueTest() throws IOException, URISyntaxException {
+        String expectedRequest = Utils.getResourceFileContent("core/variablesDefaultValue.graphql");
+
+        Variable varName = var("name", GQL_STRING, "Lee Byron");
+
+        Document document = document(
+                operation(QUERY,
+                        vars(varName),
+                        field("helloYou", arg("name", varName))
+                )
+        );
+
+        String generatedRequest = document.build();
+        AssertGraphQL.assertEquivalentGraphQLRequest(expectedRequest, generatedRequest);
+    }
+
+    @Test
+    public void variablesFlatTest() throws IOException, URISyntaxException {
+        String expectedRequest = Utils.getResourceFileContent("core/variablesFlat.graphql");
+
+        Variable varBool = var("varBool", nonNull(GQL_BOOL));
+        Variable varDouble = var("varDouble", nonNull(GQL_FLOAT));
+        Variable varString = var("varString", nonNull(GQL_STRING));
+
+        Document document = document(
+                operation(QUERY,
+                        vars(
+                                varBool,
+                                varDouble,
+                                varString
+                        ),
+                        field("withArgWithSubField", args(
+                                arg("aString", varString),
+                                arg("aDouble", varDouble),
+                                arg("aBool", varBool)
+                                ),
+                                field("bool"),
+                                field("double"),
+                                field("string")
+                        )
+                )
+        );
+
+        String generatedRequest = document.build();
+        AssertGraphQL.assertEquivalentGraphQLRequest(expectedRequest, generatedRequest);
+    }
+
+    @Test
+    public void variablesInInputObjectTest() throws IOException, URISyntaxException {
+        String expectedRequest = Utils.getResourceFileContent("core/variablesInInputObject.graphql");
+
+        Variable varBool = var("varBool", nonNull(GQL_BOOL));
+        Variable varInt = var("varInt", nonNull(GQL_INT));
+        Variable varFloat = var("varFloat", nonNull(GQL_FLOAT));
+        Variable varString = var("varString", nonNull(GQL_STRING));
+        Variable varID = var("varID", GQL_ID);
+
+        Document document = document(
+                operation(QUERY,
+                        vars(
+                                varBool,
+                                varInt,
+                                varFloat,
+                                varString,
+                                varID
+                        ),
+                        field("basicScalarHolder", args(
+                                arg("basicScalarHolder", inputObject(
+                                        prop("bool", varBool),
+                                        prop("int", varInt),
+                                        prop("float", varFloat),
+                                        prop("string", varString),
+                                        prop("iD", varID)
+                                ))),
+                                field("bool"),
+                                field("int"),
+                                field("float"),
+                                field("string"),
+                                field("iD")
+                        )
+                )
+        );
+
+        String generatedRequest = document.build();
+        AssertGraphQL.assertEquivalentGraphQLRequest(expectedRequest, generatedRequest);
+    }
+
+    @Test
+    public void variablesArraysTest() throws IOException, URISyntaxException {
+        String expectedRequest = Utils.getResourceFileContent("core/variablesArrays.graphql");
+
+        Variable varInt1 = var("varInt_1", list(GQL_INT));
+        Variable varInt1bang = var("varInt_1_bang", nonNull(list(GQL_INT)));
+        Variable varIntbang1 = var("varInt_bang_1", list(nonNull(GQL_INT)));
+        Variable varInt12 = var("varInt_1_2", list(list(GQL_INT)));
+        Variable varInt123 = var("varInt_1_2_3", list(list(list(GQL_INT))));
+        Variable varInt1bang23bang = var("varInt_1_bang_2_3_bang",
+                nonNull(list(
+                        list(
+                                nonNull(list(GQL_INT))))));
+        Variable varIntbang1bang2bang3bang = var("varInt_bang_1_bang_2_bang_3_bang",
+                nonNull(list(
+                        nonNull(list(
+                                nonNull(list(
+                                        nonNull(GQL_INT))))))));
+
+        /* To use for e2e tests
+            {
+              "varInt_1": [12, 34, 567, 89],
+              "varInt_1_2": null,
+              "varInt_1_2_3": [[[1, null], [3, 4]], null, [[7], null]],
+              "varInt_1_bang": [null],
+              "varInt_bang_1": null,
+              "varInt_1_bang_2_3_bang": [[[null, 2], [null, 4]], [[5, 6]], null],
+              "varInt_bang_1_bang_2_bang_3_bang": [[[1, 2], [3, 4]], [[5, 6], [7], [8, 9]]]
+            }
+         */
+
+        Document document = document(
+                operation(MUTATION,
+                        vars(
+                                varInt1,
+                                varInt12,
+                                varInt123,
+                                varInt1bang,
+                                varIntbang1,
+                                varInt1bang23bang,
+                                varIntbang1bang2bang3bang
+                        ),
+                        field("nestedArraysHolder", args(
+                                arg("nestedArraysHolder", inputObject(
+                                        prop("int_1", varInt1),
+                                        prop("int_1_2", varInt12),
+                                        prop("int_1_2_3", varInt123),
+                                        prop("int_1_bang", varInt1bang),
+                                        prop("int_bang_1", varIntbang1),
+                                        prop("int_1_bang_2_3_bang", varInt1bang23bang),
+                                        prop("int_bang_1_bang_2_bang_3_bang", varIntbang1bang2bang3bang)
+                                ))),
+                                field("int_1"),
+                                field("int_1_2"),
+                                field("int_1_2_3"),
+                                field("int_1_bang"),
+                                field("int_1_bang_2_3_bang"),
+                                field("int_bang_1"),
+                                field("int_bang_1_bang_2_bang_3_bang")
+                        )
+                )
+        );
+
+        String generatedRequest = document.build();
+        AssertGraphQL.assertEquivalentGraphQLRequest(expectedRequest, generatedRequest);
+    }
+}
diff --git a/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/helper/AssertGraphQL.java b/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/helper/AssertGraphQL.java
new file mode 100644
index 00000000..d7b07314
--- /dev/null
+++ b/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/helper/AssertGraphQL.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.client.tck.helper;
+
+import graphql.parser.InvalidSyntaxException;
+import graphql.parser.Parser;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+public class AssertGraphQL {
+    public static void assertEquivalentGraphQLRequest(String expectedRequest, String actualRequest) {
+        validateRequest(expectedRequest);
+        validateRequest(actualRequest);
+
+        /*
+        Once requests have been deemed syntactically correct, we can remove some tokens
+        to actually be able to compare them without taking into account insignificant differences.
+         */
+        expectedRequest = unformatRequest(expectedRequest);
+        actualRequest = unformatRequest(actualRequest);
+
+        assertEquals(expectedRequest, actualRequest);
+    }
+
+    private static void validateRequest(String request) {
+        Parser parser = new Parser();
+        try {
+            parser.parseDocument(request);
+        } catch (InvalidSyntaxException e) {
+            System.err.println(request);
+            throw (e);
+        }
+    }
+
+    private static String unformatRequest(String request) {
+        return request
+                .trim()
+                .replaceAll("\\s+", "")
+                .replaceAll(System.getProperty("line.separator"), "")
+                .replaceAll(",", "");
+    }
+
+    private AssertGraphQL() {
+        // HideUtilityClassConstructor
+    }
+}
diff --git a/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/helper/Utils.java b/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/helper/Utils.java
new file mode 100644
index 00000000..b1720019
--- /dev/null
+++ b/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/helper/Utils.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.microprofile.graphql.client.tck.helper;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.stream.Collectors;
+
+public class Utils {
+
+    public static String getResourceFileContent(String resourceName) {
+        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+        InputStream in =classLoader.getResourceAsStream(resourceName);
+        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
+        String content = reader.lines().collect(Collectors.joining("\n"));
+
+        return content;
+    }
+
+    private Utils() {
+        // HideUtilityClassConstructor
+    }
+}
diff --git a/client/tck/src/main/resources/core/arrays.graphql b/client/tck/src/main/resources/core/arrays.graphql
new file mode 100644
index 00000000..4b306d72
--- /dev/null
+++ b/client/tck/src/main/resources/core/arrays.graphql
@@ -0,0 +1,61 @@
+query arrayHolderQuery {
+    arrayHolder(arrayHolder:{
+        boolPrimitiveArray: [true, false, true],
+        boolObjectArray: [true, false, true],
+
+        bytePrimitiveArray: [0, 2, 3],
+        byteObjectArray: [0, 2, 3],
+
+        shortPrimitiveArray: [78, 789, 645],
+        shortObjectArray: [78, 789, 645],
+
+        intPrimitiveArray: [78, 65, 12354],
+        intObjectArray: [78, 65, 12354],
+
+        longPrimitiveArray: [789, 947894, 1874448],
+        longObjectArray: [789, 947894, 1874448],
+
+        floatPrimitiveArray: [1567.654, 8765.0, 1.23789456E8],
+        floatObjectArray: [1567.654, 8765.0, 1.23789456E8],
+
+        doublePrimitiveArray: [789.3242, 1815.0, 9.8765421654897E7],
+        doubleObjectArray:  [789.3242, 1815.0, 9.8765421654897E7],
+
+        bigIntegerArray: [0, 1, 10]
+        bigDecimalArray: [0, 1, 10]
+
+        charPrimitiveArray: ["f", "o", "o"],
+        charObjectArray: ["f", "o", "o"],
+
+        stringArray: ["foo", "bar", "baz"],
+    }) {
+        boolPrimitiveArray
+        boolObjectArray
+
+        bytePrimitiveArray
+        byteObjectArray
+
+        shortPrimitiveArray
+        shortObjectArray
+
+        intPrimitiveArray
+        intObjectArray
+
+        longPrimitiveArray
+        longObjectArray
+
+        floatPrimitiveArray
+        floatObjectArray
+
+        doublePrimitiveArray
+        doubleObjectArray
+
+        bigIntegerArray
+        bigDecimalArray
+
+        charPrimitiveArray
+        charObjectArray
+
+        stringArray
+    }
+}
\ No newline at end of file
diff --git a/client/tck/src/main/resources/core/dates.graphql b/client/tck/src/main/resources/core/dates.graphql
new file mode 100644
index 00000000..d3d04b63
--- /dev/null
+++ b/client/tck/src/main/resources/core/dates.graphql
@@ -0,0 +1,19 @@
+mutation scalarHolderMutation {
+    scalarHolder (scalarHolder: {
+        dateObject: "2019-10-23"
+        anotherDateObject: "2019-10-23"
+        timeObject: "11:46:34.263"
+        anotherTimeObject: "11:46:34.263"
+        dateTimeObject: "2019-10-23T11:46:34.263"
+        anotherDateTimeObject: "2019-10-23T11:46:34.263"
+    }) {
+        dateObject
+        anotherDateObject
+
+        timeObject
+        anotherTimeObject
+
+        dateTimeObject
+        anotherDateTimeObject
+    }
+}
\ No newline at end of file
diff --git a/client/tck/src/main/resources/core/enums.graphql b/client/tck/src/main/resources/core/enums.graphql
new file mode 100644
index 00000000..e69de29b
diff --git a/client/tck/src/main/resources/core/fields.graphql b/client/tck/src/main/resources/core/fields.graphql
new file mode 100644
index 00000000..c1e29788
--- /dev/null
+++ b/client/tck/src/main/resources/core/fields.graphql
@@ -0,0 +1,14 @@
+query {
+    noArgNoSubField
+    noArgWithSubField {
+        bool
+        string
+        double
+    }
+    withArgNoSubField(anInt: 42)
+    withArgWithSubField(aString: "world", aDouble: 78.12, aBool: false) {
+        bool
+        string
+        double
+    }
+}
diff --git a/client/tck/src/main/resources/core/nestedObjects.graphql b/client/tck/src/main/resources/core/nestedObjects.graphql
new file mode 100644
index 00000000..8cab00f7
--- /dev/null
+++ b/client/tck/src/main/resources/core/nestedObjects.graphql
@@ -0,0 +1,231 @@
+mutation nestedObjects {
+    nestedObjectHolder(nestedObjectHolder:{
+        level: 0,
+        name: "level 0",
+        levelLineage: [],
+        nestedObjectLineage: []
+        nestedObject: {
+            level: 1,
+            name: "level 1",
+            levelLineage: [0],
+            nestedObjectLineage: [{
+                level: 0,
+                name: "level 0",
+                levelLineage: [],
+                nestedObjectLineage: []
+            }]
+            nestedObject: {
+                level: 2,
+                name: "level 2",
+                levelLineage: [0, 1]
+                nestedObjectLineage: [{
+                    level: 0,
+                    name: "level 0",
+                    levelLineage: [],
+                    nestedObjectLineage: []
+                },{
+                    level: 1,
+                    name: "level 1",
+                    levelLineage: [0],
+                    nestedObjectLineage: [{
+                        level: 0,
+                        name: "level 0",
+                        levelLineage: [],
+                        nestedObjectLineage: []
+                    }]
+                }]
+                nestedObject: {
+                    level: 3,
+                    name: "level 3",
+                    levelLineage: [0, 1, 2]
+                    nestedObjectLineage: [{
+                        level: 0,
+                        name: "level 0",
+                        levelLineage: [],
+                        nestedObjectLineage: []
+                    }, {
+                        level: 1,
+                        name: "level 1",
+                        levelLineage: [0],
+                        nestedObjectLineage: [{
+                            level: 0,
+                            name: "level 0",
+                            levelLineage: [],
+                            nestedObjectLineage: []
+                        }]
+                    }, {
+                        level: 2,
+                        name: "level 2",
+                        levelLineage: [0, 1]
+                        nestedObjectLineage: [{
+                            level: 0,
+                            name: "level 0",
+                            levelLineage: [],
+                            nestedObjectLineage: []
+                        },{
+                            level: 1,
+                            name: "level 1",
+                            levelLineage: [0],
+                            nestedObjectLineage: [{
+                                level: 0,
+                                name: "level 0",
+                                levelLineage: [],
+                                nestedObjectLineage: []
+                            }]
+                        }]
+                    }]
+                    nestedObject: null
+                }
+            }
+        }
+    }) {
+        level
+        name
+        levelLineage
+        nestedObjectLineage {
+            level
+            name
+            levelLineage
+            nestedObjectLineage {
+                level
+                name
+                levelLineage
+                nestedObjectLineage {
+                    level
+                    name
+                    levelLineage
+                    nestedObjectLineage {
+                        level
+                        name
+                        levelLineage
+                    }
+                }
+            }
+        }
+        nestedObject {
+            level
+            name
+            levelLineage
+            nestedObjectLineage {
+                level
+                name
+                levelLineage
+                nestedObjectLineage {
+                    level
+                    name
+                    levelLineage
+                    nestedObjectLineage {
+                        level
+                        name
+                        levelLineage
+                        nestedObjectLineage {
+                            level
+                            name
+                            levelLineage
+                        }
+                    }
+                }
+            }
+            nestedObject {
+                level
+                name
+                levelLineage
+                nestedObjectLineage {
+                    level
+                    name
+                    levelLineage
+                    nestedObjectLineage {
+                        level
+                        name
+                        levelLineage
+                        nestedObjectLineage {
+                            level
+                            name
+                            levelLineage
+                            nestedObjectLineage {
+                                level
+                                name
+                                levelLineage
+                            }
+                        }
+                    }
+                }
+                nestedObject {
+                    level
+                    name
+                    levelLineage
+                    nestedObjectLineage {
+                        level
+                        name
+                        levelLineage
+                        nestedObjectLineage {
+                            level
+                            name
+                            levelLineage
+                            nestedObjectLineage {
+                                level
+                                name
+                                levelLineage
+                                nestedObjectLineage {
+                                    level
+                                    name
+                                    levelLineage
+                                }
+                            }
+                        }
+                    }
+                    nestedObject {
+                        level
+                        name
+                        levelLineage
+                        nestedObjectLineage {
+                            level
+                            name
+                            levelLineage
+                            nestedObjectLineage {
+                                level
+                                name
+                                levelLineage
+                                nestedObjectLineage {
+                                    level
+                                    name
+                                    levelLineage
+                                    nestedObjectLineage {
+                                        level
+                                        name
+                                        levelLineage
+                                    }
+                                }
+                            }
+                        }
+                        nestedObject {
+                            level
+                            name
+                            levelLineage
+                            nestedObjectLineage {
+                                level
+                                name
+                                levelLineage
+                                nestedObjectLineage {
+                                    level
+                                    name
+                                    levelLineage
+                                    nestedObjectLineage {
+                                        level
+                                        name
+                                        levelLineage
+                                        nestedObjectLineage {
+                                            level
+                                            name
+                                            levelLineage
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/client/tck/src/main/resources/core/scalars.graphql b/client/tck/src/main/resources/core/scalars.graphql
new file mode 100644
index 00000000..78c76be3
--- /dev/null
+++ b/client/tck/src/main/resources/core/scalars.graphql
@@ -0,0 +1,61 @@
+mutation scalarHolderMutation {
+    scalarHolder (scalarHolder: {
+        booleanPrimitive: false
+        booleanObject: true
+
+        bytePrimitive: -128
+        byteObject: 127
+
+        shortPrimitive: -32768
+        shortObject: 32767
+
+        intPrimitive: -2147483647
+        intObject: 2147483647
+
+        longPrimitive: -9223372036854775808
+        longObject: 9223372036854775807
+
+        floatPrimitive: 1.4E-45
+        floatObject: 3.4028235E38
+
+        doublePrimitive: 4.9E-324
+        doubleObject: 1.7976931348623157E308
+
+        bigInteger: 10
+        bigDecimal: 10
+
+        charPrimitive: "a"
+        charObject: "Z"
+
+        stringObject: "Hello World !"
+    }) {
+        booleanPrimitive
+        booleanObject
+
+        bytePrimitive
+        byteObject
+
+        shortPrimitive
+        shortObject
+
+        intPrimitive
+        intObject
+
+        longPrimitive
+        longObject
+
+        floatPrimitive
+        floatObject
+
+        doublePrimitive
+        doubleObject
+
+        bigInteger
+        bigDecimal
+
+        charPrimitive
+        charObject
+
+        stringObject
+    }
+}
\ No newline at end of file
diff --git a/client/tck/src/main/resources/core/variablesArrays.graphql b/client/tck/src/main/resources/core/variablesArrays.graphql
new file mode 100644
index 00000000..4ff97b90
--- /dev/null
+++ b/client/tck/src/main/resources/core/variablesArrays.graphql
@@ -0,0 +1,27 @@
+mutation (
+    $varInt_1: [Int],
+    $varInt_1_2: [[Int]],
+    $varInt_1_2_3: [[[Int]]],
+    $varInt_1_bang: [Int]!,
+    $varInt_bang_1: [Int!],
+    $varInt_1_bang_2_3_bang: [[[Int]!]]!,
+    $varInt_bang_1_bang_2_bang_3_bang: [[[Int!]!]!]!
+) {
+    nestedArraysHolder(nestedArraysHolder:{
+        int_1: $varInt_1
+        int_1_2: $varInt_1_2
+        int_1_2_3: $varInt_1_2_3
+        int_1_bang: $varInt_1_bang
+        int_bang_1: $varInt_bang_1
+        int_1_bang_2_3_bang: $varInt_1_bang_2_3_bang
+        int_bang_1_bang_2_bang_3_bang: $varInt_bang_1_bang_2_bang_3_bang
+    }) {
+        int_1
+        int_1_2
+        int_1_2_3
+        int_1_bang
+        int_1_bang_2_3_bang
+        int_bang_1
+        int_bang_1_bang_2_bang_3_bang
+    }
+}
\ No newline at end of file
diff --git a/client/tck/src/main/resources/core/variablesDefaultValue.graphql b/client/tck/src/main/resources/core/variablesDefaultValue.graphql
new file mode 100644
index 00000000..85df7b33
--- /dev/null
+++ b/client/tck/src/main/resources/core/variablesDefaultValue.graphql
@@ -0,0 +1,3 @@
+query ($name: String = "Lee Byron") {
+    helloYou(name: $name)
+}
\ No newline at end of file
diff --git a/client/tck/src/main/resources/core/variablesFlat.graphql b/client/tck/src/main/resources/core/variablesFlat.graphql
new file mode 100644
index 00000000..cc67b77d
--- /dev/null
+++ b/client/tck/src/main/resources/core/variablesFlat.graphql
@@ -0,0 +1,7 @@
+query ($varBool: Boolean!, $varDouble: Float!, $varString: String!) {
+    withArgWithSubField(aString: $varString, aDouble: $varDouble, aBool: $varBool) {
+        bool
+        double
+        string
+    }
+}
diff --git a/client/tck/src/main/resources/core/variablesInInputObject.graphql b/client/tck/src/main/resources/core/variablesInInputObject.graphql
new file mode 100644
index 00000000..13ca5c8c
--- /dev/null
+++ b/client/tck/src/main/resources/core/variablesInInputObject.graphql
@@ -0,0 +1,15 @@
+query ($varBool: Boolean! $varInt: Int! $varFloat: Float! $varString: String! $varID: ID) {
+    basicScalarHolder(basicScalarHolder:{
+        bool: $varBool
+        int: $varInt
+        float: $varFloat
+        string: $varString
+        iD: $varID
+    }) {
+        bool
+        int
+        float
+        string
+        iD
+    }
+}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index eae32cba..63be528c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -381,6 +381,7 @@
                         **/.classpath
                         **/.project
                         **/.github/**
+                        **/resources/generated/**
                     
                 
             

From 2ca2a65099934abd73320c2d7bfc67f2e5b60cc0 Mon Sep 17 00:00:00 2001
From: JRX 
Date: Thu, 17 Sep 2020 15:36:42 +0200
Subject: [PATCH 077/248] comment the maven plugin that generate diagrams in
 order to avoid compile error if the jar is not locally installed.

Signed-off-by: JRX 
---
 client/spec/pom.xml | 94 ++++++++++++++++++++++-----------------------
 1 file changed, 47 insertions(+), 47 deletions(-)

diff --git a/client/spec/pom.xml b/client/spec/pom.xml
index b667b34b..114fb429 100644
--- a/client/spec/pom.xml
+++ b/client/spec/pom.xml
@@ -98,53 +98,53 @@
                 https://github.com/thejibz/plantuml-generator and run a "mvn install" on it.
 
 -->
-            
-                de.elnarion.maven
-                plantuml-generator-maven-plugin
-                jibz-0.0.1-SNAPSHOT
-                
-                    
-                        generate-api_core-diagram
-                        
-                            generate
-                        
-                        generate-resources
-                        
-                            src/main/resources/generated
-                            api_core_class_diagram.asciidoc
-                            api_core_class_diagram
-                            true
-                            true
-                            left to right direction
-                            
-                                
-                                    org.eclipse.microprofile.graphql.client.core
-                                
-                            
-                        
-                    
-                    
-                        generate-api_client-diagram
-                        
-                            generate
-                        
-                        generate-resources
-                        
-                            src/main/resources/generated
-                            api_client_class_diagram.asciidoc
-                            api_client_class_diagram
-                            true
-                            true
-                            top to bottom direction
-                            
-                                
-                                    org.eclipse.microprofile.graphql.client
-                                
-                            
-                        
-                    
-                
-            
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
         
     
 
\ No newline at end of file

From 47b3d2f400e1c8cf446f7b2d74104870a695c770 Mon Sep 17 00:00:00 2001
From: Tim Middleton 
Date: Mon, 21 Sep 2020 08:05:34 +0800
Subject: [PATCH 078/248] Merge fix for #304 into master. Signed-off-by: Tim
 Middleton (Software Engineer) 

---
 .../tck/dynamic/ExecutionDynamicTest.java     | 24 ++++-
 .../execution/GraphQLTestDataProvider.java    | 96 ++++++++++---------
 .../tck/dynamic/execution/PrintUtil.java      |  8 +-
 .../tck/dynamic/execution/TestData.java       | 13 ++-
 .../resources/tests/basicScalar/output.json   |  1 -
 .../resources/tests/basicScalar/output2.json  | 55 +++++++++++
 6 files changed, 139 insertions(+), 58 deletions(-)
 create mode 100644 server/tck/src/main/resources/tests/basicScalar/output2.json

diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
index 4b0bb6d7..dc758c66 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
@@ -33,6 +33,7 @@
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URLEncoder;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
@@ -152,12 +153,25 @@ private void runTest(TestData testData, HttpMethod httpMethod){
                     executeHttpRequest(httpMethod.POST,testData.getCleanup(),testData.getVariables(),httpHeaders);
                 }
 
-                // Compare to expected output
-                try{
-                    JSONAssert.assertEquals(testData.getFailMessage(),testData.getOutput(), this.currentOutput, testData.beStrict());
-                } catch (JSONException ex) {
+                boolean success = false;
+                ArrayList listExceptions = new ArrayList<>();
+
+                // Compare to expected output and pass if at least one of the output files match
+                for (String output : testData.getOutput()) {
+                    try {
+                        JSONAssert.assertEquals(testData.getFailMessage(), output, this.currentOutput, testData.beStrict());
+                        success = true;
+                        break;
+                    } catch (AssertionError | JSONException ex) {
+                        // don't raise assertion failure as this is checked below
+                        listExceptions.add(ex);
+                    }
+                }
+                if (!success) {
                     clearGlobals();
-                    Assert.fail(ex.getMessage());
+                    StringBuilder sb = new StringBuilder();
+                    listExceptions.forEach(ex -> sb.append(ex.getMessage()).append('\n'));
+                    Assert.fail(sb.toString());
                 }
             } else {
                 Assert.assertEquals(httpResponse.status, testData.getExpectedHttpStatusCode(),httpResponse.getContent());
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java
index 6dcf1a76..f0bf70ab 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java
@@ -139,54 +139,56 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
                 if(!Files.isDirectory(file)){
                     String filename = file.getFileName().toString();
 
-                    switch (filename) {
-                        case "input.graphql":
-                            {
-                                String content = getFileContent(file);
-                                testData.setInput(content);
+                    if (filename.matches("output.*\\.json")){
+                        // Special case to cater for multiple output*.json files where the
+                        // test will pass on the first file content that matches.
+                        // If no content matches, then the test will fail.
+                        String content = getFileContent(file);
+                        testData.addOutput(content);
+                    } else {
+                        switch (filename) {
+                            case "input.graphql":
+                                {
+                                    String content = getFileContent(file);
+                                    testData.setInput(content);
+                                    break;
+                                }
+                            case "httpHeader.properties":
+                                {
+                                    Properties properties = new Properties();
+                                    properties.load(Files.newInputStream(file));
+                                    testData.setHttpHeaders(properties);
+                                    break;
+                                }
+                            case "variables.json":
+                                {
+                                    String content = getFileContent(file);
+                                    testData.setVariables(toJsonObject(content));
+                                    break;
+                                }
+                            case "test.properties":
+                                {
+                                    Properties properties = new Properties();
+                                    properties.load(Files.newInputStream(file));
+                                    testData.setProperties(properties);
+                                    break;
+                                }
+                            case "cleanup.graphql":
+                                {
+                                    String content = getFileContent(file);
+                                    testData.setCleanup(content);
+                                    break;
+                                }
+                            case "prepare.graphql":
+                                {
+                                    String content = getFileContent(file);
+                                    testData.setPrepare(content);
+                                    break;
+                                }
+                            default:
+                                LOG.log(Level.WARNING, "Ignoring unknown file {0}", filename);
                                 break;
-                            }
-                        case "httpHeader.properties":
-                            {
-                                Properties properties = new Properties();
-                                properties.load(Files.newInputStream(file));
-                                testData.setHttpHeaders(properties);
-                                break;
-                            }    
-                        case "output.json":
-                            {
-                                String content = getFileContent(file);
-                                testData.setOutput(content);
-                                break;
-                            }
-                        case "variables.json":
-                            {
-                                String content = getFileContent(file);
-                                testData.setVariables(toJsonObject(content));
-                                break;
-                            }
-                        case "test.properties":
-                            {
-                                Properties properties = new Properties();
-                                properties.load(Files.newInputStream(file));
-                                testData.setProperties(properties);
-                                break;
-                            }
-                        case "cleanup.graphql":
-                            {
-                                String content = getFileContent(file);
-                                testData.setCleanup(content);
-                                break;
-                            }    
-                        case "prepare.graphql":
-                            {
-                                String content = getFileContent(file);
-                                testData.setPrepare(content);
-                                break;
-                            }    
-                        default:
-                            LOG.log(Level.WARNING, "Ignoring unknown file {0}", filename);
-                            break;
+                        }
                     }
                 }
                 return FileVisitResult.CONTINUE;
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/PrintUtil.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/PrintUtil.java
index f8e855ef..27e080af 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/PrintUtil.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/PrintUtil.java
@@ -72,7 +72,13 @@ private static String toString(String httpMethod, TestData testData, String outp
             sw.write("\n\n");
             sw.write("http headers input = " + testData.getHttpHeaders());
             sw.write("\n\n");
-            sw.write("expected output = " + prettyJson(testData.getOutput()));
+
+            if (testData.getOutput().size() == 1) {
+                sw.write("expected output = " + prettyJson(testData.getOutput().iterator().next()));
+            } else {
+                sw.write("expected output was either of the following = " + String.join("\nOR\n", testData.getOutput()));
+            }
+
             sw.write("\n\n");
             sw.write("received output = " +  prettyJson(output));
             sw.write("\n\n");
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java
index 8ce9b999..f1cf4fba 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java
@@ -19,6 +19,7 @@
 
 import java.util.Objects;
 import java.util.Properties;
+import java.util.Set;
 import javax.json.JsonObject;
 
 /**
@@ -29,7 +30,7 @@ public class TestData {
     private String name;
     private String input;
     private Properties httpHeaders;
-    private String output;
+    private Set output;
     private JsonObject variables;
     private String prepare;
     private String cleanup;
@@ -46,7 +47,7 @@ public TestData(String name){
     public TestData(String name, 
                     String input, 
                     Properties httpHeaders, 
-                    String output, 
+                    Set output,
                     JsonObject variables, 
                     String prepare, 
                     String cleanup, 
@@ -78,10 +79,14 @@ public Properties getHttpHeaders() {
         return httpHeaders;
     }
 
-    public String getOutput() {
+    public Set getOutput() {
         return output;
     }
 
+    public void addOutput(String output) {
+        this.output.add(output);
+    }
+
     public JsonObject getVariables() {
         return variables;
     }
@@ -110,7 +115,7 @@ public void setHttpHeaders(Properties httpHeaders) {
         this.httpHeaders = httpHeaders;
     }
 
-    public void setOutput(String output) {
+    public void setOutput(Set output) {
         this.output = output;
     }
 
diff --git a/server/tck/src/main/resources/tests/basicScalar/output.json b/server/tck/src/main/resources/tests/basicScalar/output.json
index 14534844..1a64790d 100644
--- a/server/tck/src/main/resources/tests/basicScalar/output.json
+++ b/server/tck/src/main/resources/tests/basicScalar/output.json
@@ -47,7 +47,6 @@
             "anotherTimeObject": "11:46:34.263",
             "formattedTimeObject": "11:46:34",
             "dateTimeObject": "2019-10-23T11:46:34.263",
-            "dateTimeObject": "2019-10-23T11:46:34.263",
             "anotherDateTimeObject": "2019-10-23T11:46:34.263",
             "formattedDateTimeObject": "10 23 2019 at 11:46:34",
             "id": "123456789"
diff --git a/server/tck/src/main/resources/tests/basicScalar/output2.json b/server/tck/src/main/resources/tests/basicScalar/output2.json
new file mode 100644
index 00000000..d6801bdf
--- /dev/null
+++ b/server/tck/src/main/resources/tests/basicScalar/output2.json
@@ -0,0 +1,55 @@
+{
+    "data": {
+        "testScalarsInPojo": {
+            "shortPrimitive": 123,
+            "shortObject": 123,
+            "formattedShortObject": "R123",
+            "intPrimitive": 123456789,
+            "intObject": 123456789,
+            "formattedIntObject": "123,456,789",
+            "longPrimitive": 123456789,
+            "longObject": 123456789,
+            "formattedLongObject": "123.456.789",
+            "formattedLongPrimitive": "123.456.789",
+            "floatPrimitive": 123456.79,
+            "floatObject": 123456.79,
+            "formattedFloatObject": "123456.8",
+            "doublePrimitive": 123456.789,
+            "doubleObject": 123456.789,
+            "formattedDoubleObject": "123456.8",
+            "bytePrimitive": 123,
+            "byteObject": 123,
+            "formattedByteObject": "R123",
+            "bigIntegerObject": 123456789,
+            "formattedBigIntegerObject": "$123456789",
+            "bigDecimalObject": 123456.789,
+            "formattedBigDecimalObject": "123,456.79",
+            "booleanObject": false,
+            "booleanPrimitive": false,
+            "charObject": "c",
+            "charPrimitive": "c",
+            "stringObject": "123456789",
+            "charArray": [
+                "1",
+                "2",
+                "3",
+                "4",
+                "5",
+                "6",
+                "7",
+                "8",
+                "9"
+            ],
+            "dateObject": "2019-10-23",
+            "anotherDateObject": "2019-10-23",
+            "formattedDateObject": "10 23 2019",
+            "timeObject": "11:46:34",
+            "anotherTimeObject": "11:46:34",
+            "formattedTimeObject": "11:46:34",
+            "dateTimeObject": "2019-10-23T11:46:34",
+            "anotherDateTimeObject": "2019-10-23T11:46:34",
+            "formattedDateTimeObject": "10 23 2019 at 11:46:34",
+            "id": "123456789"
+        }
+    }
+}
\ No newline at end of file

From 8c25b2d518aba00160c3067530070eb088b7ce86 Mon Sep 17 00:00:00 2001
From: Tim Middleton 
Date: Mon, 21 Sep 2020 10:38:16 +0800
Subject: [PATCH 079/248] Fixup NPE - Signed-off-by: Tim Middleton (Software
 Engineer) 

---
 .../graphql/tck/dynamic/ExecutionDynamicTest.java          | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
index dc758c66..d402ae02 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
@@ -162,9 +162,13 @@ private void runTest(TestData testData, HttpMethod httpMethod){
                         JSONAssert.assertEquals(testData.getFailMessage(), output, this.currentOutput, testData.beStrict());
                         success = true;
                         break;
-                    } catch (AssertionError | JSONException ex) {
+                    } catch (AssertionError ex) {
                         // don't raise assertion failure as this is checked below
                         listExceptions.add(ex);
+                    } catch (JSONException je) {
+                        // indicates some sort of JSON formatting exception
+                        clearGlobals();
+                        Assert.fail(je.getMessage());
                     }
                 }
                 if (!success) {
@@ -172,6 +176,7 @@ private void runTest(TestData testData, HttpMethod httpMethod){
                     StringBuilder sb = new StringBuilder();
                     listExceptions.forEach(ex -> sb.append(ex.getMessage()).append('\n'));
                     Assert.fail(sb.toString());
+                    throw new AssertionError(sb.toString());
                 }
             } else {
                 Assert.assertEquals(httpResponse.status, testData.getExpectedHttpStatusCode(),httpResponse.getContent());

From e3316c82af9f7460d3b82c6ec2f13d60397d7738 Mon Sep 17 00:00:00 2001
From: Tim Middleton 
Date: Mon, 21 Sep 2020 11:36:11 +0800
Subject: [PATCH 080/248] Fixup log files not being written: Signed-off-by: Tim
 Middleton (Software Engineer) 

---
 .../microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java  | 2 --
 1 file changed, 2 deletions(-)

diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
index d402ae02..53519643 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
@@ -172,11 +172,9 @@ private void runTest(TestData testData, HttpMethod httpMethod){
                     }
                 }
                 if (!success) {
-                    clearGlobals();
                     StringBuilder sb = new StringBuilder();
                     listExceptions.forEach(ex -> sb.append(ex.getMessage()).append('\n'));
                     Assert.fail(sb.toString());
-                    throw new AssertionError(sb.toString());
                 }
             } else {
                 Assert.assertEquals(httpResponse.status, testData.getExpectedHttpStatusCode(),httpResponse.getContent());

From 56354fb59cc261ece5d3c0c78bd360fee4d76994 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 28 Sep 2020 06:50:27 +0000
Subject: [PATCH 081/248] Bump asciidoctorj-diagram from 2.0.2 to 2.0.4

Bumps [asciidoctorj-diagram](https://github.com/asciidoctor/asciidoctorj-diagram) from 2.0.2 to 2.0.4.
- [Release notes](https://github.com/asciidoctor/asciidoctorj-diagram/releases)
- [Commits](https://github.com/asciidoctor/asciidoctorj-diagram/compare/v2.0.2...v2.0.4)

Signed-off-by: dependabot[bot] 
---
 client/spec/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/client/spec/pom.xml b/client/spec/pom.xml
index 114fb429..b6ffa027 100644
--- a/client/spec/pom.xml
+++ b/client/spec/pom.xml
@@ -57,7 +57,7 @@
                     
                         org.asciidoctor
                         asciidoctorj-diagram
-                        2.0.2
+                        2.0.4
                     
                 
                 

From f71fc68d1a47be8d3ac1e99c3d4e61dd8c33d2b8 Mon Sep 17 00:00:00 2001
From: Tim Middleton 
Date: Wed, 30 Sep 2020 15:53:52 +0800
Subject: [PATCH 082/248] port fixes for #316 - Signed-off-by: Tim Middleton
 (Software Engineer) 

---
 .../tck/dynamic/ExecutionDynamicTest.java     | 122 +++++++++++-------
 .../execution/GraphQLTestDataProvider.java    |  12 +-
 .../tck/dynamic/execution/PrintUtil.java      |   7 +-
 .../tck/dynamic/execution/TestData.java       |  15 ++-
 .../tests/basicScalarMutation/input2.graphql  |  51 ++++++++
 .../input2.graphql                            |   3 +
 .../invalidDataTypeValue/output2.json         |  14 ++
 .../output2.json                              |  19 +++
 .../output2.json                              |  19 +++
 .../invalidLocalDateTimeValue/output2.json    |  19 +++
 .../invalidLocalDateValue/output2.json        |  19 +++
 .../output2.json                              |  19 +++
 .../invalidLocalTimeValue/output2.json        |  19 +++
 13 files changed, 282 insertions(+), 56 deletions(-)
 create mode 100644 server/tck/src/main/resources/tests/basicScalarMutation/input2.graphql
 create mode 100644 server/tck/src/main/resources/tests/basicScalarNumberTransformation/input2.graphql
 create mode 100644 server/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/output2.json
 create mode 100644 server/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/output2.json
 create mode 100644 server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/output2.json
 create mode 100644 server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/output2.json
 create mode 100644 server/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/output2.json
 create mode 100644 server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/output2.json
 create mode 100644 server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/output2.json

diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
index 53519643..98a35ab7 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/ExecutionDynamicTest.java
@@ -37,6 +37,7 @@
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Set;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import javax.json.Json;
@@ -130,59 +131,74 @@ private void runTest(TestData testData, HttpMethod httpMethod){
                 }
             }
 
-            // Prepare if needed
-            if(isValidInput(testData.getPrepare())){
-                executeHttpRequest(httpMethod.POST,testData.getPrepare(),testData.getVariables(),httpHeaders);
-            }
+            // loop through each of the input content and pass if at least one passes
+            boolean success = false;
+            ArrayList listExceptions = new ArrayList<>();
+            for (String input : testData.getInput()) {
+                try {
+                    // Prepare if needed
+                    if(isValidInput(testData.getPrepare())){
+                        executeHttpRequest(HttpMethod.POST, testData.getPrepare(),testData.getVariables(),httpHeaders);
+                    }
 
-            // We can only do Queries over GET
-            if(testData.isMutation()){
-                httpMethod = HttpMethod.POST;
+                    assertTest(input, testData, httpHeaders, httpMethod);
+                    success = true;
+                    break;
+                } catch (AssertionError ae) {
+                    // don't raise assertion failure as this is checked below
+                    listExceptions.add(ae);
+                }
             }
-            
-            // Run the actual test and get the response
-            HttpResponse httpResponse = executeHttpRequest(httpMethod,testData.getInput(),testData.getVariables(),httpHeaders);
+            if (!success){
+                Assert.fail(getErrorMessages(listExceptions));
+            }
+        }else{
+            clearGlobals();
+            LOG.warning("Could not find any tests to run...");
+        }
+    }
+
+    private void assertTest(String input, TestData testData, Map httpHeaders, HttpMethod httpMethod){
+        // We can only do Queries over GET
+        if(testData.isMutation()){
+            httpMethod = HttpMethod.POST;
+        }
+
+        // Run the actual test and get the response
+        HttpResponse httpResponse = executeHttpRequest(httpMethod, input,testData.getVariables(),httpHeaders);
+        if(httpResponse.isSuccessful()){
             this.currentOutput = httpResponse.getContent();
-            if(httpResponse.isSuccessful()){
 
-                // Validate the output structure
-                validateResponseStructure();
+            // Validate the output structure
+            validateResponseStructure();
 
-                // Cleanup if needed
-                if(isValidInput(testData.getCleanup())){
-                    executeHttpRequest(httpMethod.POST,testData.getCleanup(),testData.getVariables(),httpHeaders);
-                }
+            // Cleanup if needed
+            if(isValidInput(testData.getCleanup())){
+                executeHttpRequest(HttpMethod.POST, testData.getCleanup(),testData.getVariables(),httpHeaders);
+            }
 
-                boolean success = false;
-                ArrayList listExceptions = new ArrayList<>();
-
-                // Compare to expected output and pass if at least one of the output files match
-                for (String output : testData.getOutput()) {
-                    try {
-                        JSONAssert.assertEquals(testData.getFailMessage(), output, this.currentOutput, testData.beStrict());
-                        success = true;
-                        break;
-                    } catch (AssertionError ex) {
-                        // don't raise assertion failure as this is checked below
-                        listExceptions.add(ex);
-                    } catch (JSONException je) {
-                        // indicates some sort of JSON formatting exception
-                        clearGlobals();
-                        Assert.fail(je.getMessage());
-                    }
-                }
-                if (!success) {
-                    StringBuilder sb = new StringBuilder();
-                    listExceptions.forEach(ex -> sb.append(ex.getMessage()).append('\n'));
-                    Assert.fail(sb.toString());
+            boolean success = false;
+            ArrayList listExceptions = new ArrayList<>();
+
+            // Compare to expected output and pass if at least one of the output files match
+            for (String output : testData.getOutput()) {
+                try {
+                    JSONAssert.assertEquals(testData.getFailMessage(), output, this.currentOutput, testData.beStrict());
+                    success = true;
+                    break;
+                } catch (AssertionError ex) {
+                    // don't raise assertion failure as this is checked below
+                    listExceptions.add(ex);
+                } catch (JSONException je) {
+                    // indicates some sort of JSON formatting exception
+                    Assert.fail(je.getMessage());
                 }
-            } else {
-                Assert.assertEquals(httpResponse.status, testData.getExpectedHttpStatusCode(),httpResponse.getContent());
             }
-            
-        }else{
-            clearGlobals();
-            LOG.warning("Could not find any tests to run...");
+            if (!success) {
+                Assert.fail(getErrorMessages(listExceptions));
+            }
+        } else {
+            Assert.assertEquals(httpResponse.status, testData.getExpectedHttpStatusCode(),httpResponse.getContent());
         }
     }
 
@@ -247,6 +263,22 @@ private boolean isValidInput(String input){
         return input!=null && !input.isEmpty();
     }
 
+    private boolean isValidInput(Set setInput){
+        for (String input : setInput) {
+            if (!isValidInput(input)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private String getErrorMessages(ArrayList listExceptions){
+        StringBuilder sb = new StringBuilder();
+        listExceptions.forEach(ex -> sb.append(ex.getMessage()).append('\n'));
+        return sb.toString();
+    }
+
+
     private HttpResponse executeHttpRequest(HttpMethod httpMethod, 
             String graphQL, 
             JsonObject variables, 
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java
index f0bf70ab..7992e202 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java
@@ -145,14 +145,14 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
                         // If no content matches, then the test will fail.
                         String content = getFileContent(file);
                         testData.addOutput(content);
+                    } else if (filename.matches("input.*\\.graphql")){
+                        // Special case to cater for multiple input*.graphql files where the
+                        // test will pass on the first file input content which is successful.
+                        // If no content matches, then the test will fail.
+                        String content = getFileContent(file);
+                        testData.addInput(content);
                     } else {
                         switch (filename) {
-                            case "input.graphql":
-                                {
-                                    String content = getFileContent(file);
-                                    testData.setInput(content);
-                                    break;
-                                }
                             case "httpHeader.properties":
                                 {
                                     Properties properties = new Properties();
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/PrintUtil.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/PrintUtil.java
index 27e080af..51ca8d8d 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/PrintUtil.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/PrintUtil.java
@@ -66,7 +66,12 @@ private static String toString(String httpMethod, TestData testData, String outp
                 sw.write("errorMessage = ");
             }
             sw.write("\n\n");
-            sw.write("given input = " + testData.getInput());
+            if (testData.getInput().size() == 1) {
+                sw.write("given input = " + testData.getInput().iterator().next());
+            } else {
+                sw.write("given multiple inputs = \n");
+                testData.getInput().stream().forEach(i -> sw.write(i + "\n"));
+            }
             sw.write("\n\n");
             sw.write("variables input = " + prettyJson(testData.getVariables()));
             sw.write("\n\n");
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java
index f1cf4fba..3c3b7e90 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/TestData.java
@@ -17,6 +17,7 @@
  */
 package org.eclipse.microprofile.graphql.tck.dynamic.execution;
 
+import java.util.HashSet;
 import java.util.Objects;
 import java.util.Properties;
 import java.util.Set;
@@ -28,7 +29,7 @@
  */
 public class TestData {
     private String name;
-    private String input;
+    private Set input;
     private Properties httpHeaders;
     private Set output;
     private JsonObject variables;
@@ -42,10 +43,12 @@ public TestData(){
     
     public TestData(String name){
         this.name = name;
+        this.output = new HashSet<>();
+        this.input = new HashSet<>();
     }
 
     public TestData(String name, 
-                    String input, 
+                    Set input,
                     Properties httpHeaders, 
                     Set output,
                     JsonObject variables, 
@@ -71,7 +74,7 @@ public String getName() {
         return name;
     }
 
-    public String getInput() {
+    public Set getInput() {
         return input;
     }
 
@@ -107,10 +110,14 @@ public void setName(String name) {
         this.name = name;
     }
 
-    public void setInput(String input) {
+    public void setInput(Set input) {
         this.input = input;
     }
 
+    public void addInput(String input) {
+        this.input.add(input);
+    }
+
     public void setHttpHeaders(Properties httpHeaders) {
         this.httpHeaders = httpHeaders;
     }
diff --git a/server/tck/src/main/resources/tests/basicScalarMutation/input2.graphql b/server/tck/src/main/resources/tests/basicScalarMutation/input2.graphql
new file mode 100644
index 00000000..eac16686
--- /dev/null
+++ b/server/tck/src/main/resources/tests/basicScalarMutation/input2.graphql
@@ -0,0 +1,51 @@
+mutation scalarHolderMutation {
+  scalarHolder (arg0:{
+    intPrimitive:1
+    intObject:2
+    shortPrimitive:3
+    shortObject:4
+    bytePrimitive:5
+    byteObject:6
+    booleanPrimitive:true
+    booleanObject:false
+    intPrimitiveId:7
+    integerObjectId:8
+    floatPrimitive:9
+    floatObject:10
+    charPrimitive:"h"
+    charObject:"e"
+    charArray:["h","e","l","l","o"]
+    longPrimitive:11
+    longObject:12
+    longPrimitiveId:13
+    longObjectId:14
+    formattedLongPrimitive:"15"
+    formattedLongObject:"16"
+    doublePrimitive:17
+    doubleObject:18
+  }) {
+    intPrimitive
+    intObject
+    shortPrimitive
+    shortObject
+    bytePrimitive
+    byteObject
+    booleanPrimitive
+    booleanObject
+    intPrimitiveId
+    integerObjectId
+    floatPrimitive
+    floatObject
+    charPrimitive
+    charObject
+    charArray
+    longPrimitive
+    longObject
+    longPrimitiveId
+    longObjectId
+    formattedLongPrimitive
+    formattedLongObject
+    doublePrimitive
+    doubleObject
+  }
+}
\ No newline at end of file
diff --git a/server/tck/src/main/resources/tests/basicScalarNumberTransformation/input2.graphql b/server/tck/src/main/resources/tests/basicScalarNumberTransformation/input2.graphql
new file mode 100644
index 00000000..29991894
--- /dev/null
+++ b/server/tck/src/main/resources/tests/basicScalarNumberTransformation/input2.graphql
@@ -0,0 +1,3 @@
+mutation testTransformedNumber{
+    transformedNumber(arg0:345)
+}
\ No newline at end of file
diff --git a/server/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/output2.json b/server/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/output2.json
new file mode 100644
index 00000000..e8dbd5f1
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/invalidDataTypeValue/output2.json
@@ -0,0 +1,14 @@
+{
+  "data": null,
+  "errors": [
+    {
+       "message": "Validation error of type WrongType: argument 'powerLevel' with value 'StringValue{value='Unlimited'}' is not a valid 'Int' - Expected AST type 'IntValue' but was 'StringValue'. @ 'updateItemPowerLevel'",
+      "locations": [
+        {
+          "line": 2,
+          "column": 37
+        }
+      ]
+    }
+  ]
+} 
\ No newline at end of file
diff --git a/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/output2.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/output2.json
new file mode 100644
index 00000000..fd8651bb
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateFormattedValue/output2.json
@@ -0,0 +1,19 @@
+{
+    "data": {
+        "checkInWithCorrectDateFormat": null
+    },
+    "errors": [
+        {
+            "path": [
+                "checkInWithCorrectDateFormat"
+            ],
+            "locations": [
+                {
+                    "column": 3,
+                    "line": 2
+                }
+            ],
+            "message": "Exception while fetching data (/checkInWithCorrectDateFormat) : Text 'Today' could not be parsed at index 0"
+        }
+    ]
+} 
\ No newline at end of file
diff --git a/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/output2.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/output2.json
new file mode 100644
index 00000000..ec0efd45
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeFormattedValue/output2.json
@@ -0,0 +1,19 @@
+{
+    "data": {
+        "battleWithCorrectDateFormat": null
+    },
+    "errors": [
+        {
+            "path": [
+                "battleWithCorrectDateFormat"
+            ],
+            "locations": [
+                {
+                    "line": 2,
+                    "column": 3
+                }
+            ],
+            "message": "Exception while fetching data (/battleWithCorrectDateFormat) : Text 'Today' could not be parsed at index 0"
+        }
+    ]
+} 
\ No newline at end of file
diff --git a/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/output2.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/output2.json
new file mode 100644
index 00000000..02058e73
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateTimeValue/output2.json
@@ -0,0 +1,19 @@
+{
+    "data": {
+        "battle": null
+    },
+    "errors": [
+        {
+            "path": [
+                "battle"
+            ],
+            "locations": [
+                {
+                    "line": 2,
+                    "column": 3
+                }
+            ],
+            "message": "Exception while fetching data (/battle) : Text 'Today' could not be parsed at index 0"
+        }
+    ]
+} 
\ No newline at end of file
diff --git a/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/output2.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/output2.json
new file mode 100644
index 00000000..47c7161f
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/invalidLocalDateValue/output2.json
@@ -0,0 +1,19 @@
+{
+    "data": {
+        "checkIn": null
+    },
+    "errors": [
+        {
+            "path": [
+                "checkIn"
+            ],
+            "locations": [
+                {
+                    "line": 2,
+                    "column": 3
+                }
+            ],
+            "message": "Exception while fetching data (/checkIn) : Text 'Today' could not be parsed at index 0"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/output2.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/output2.json
new file mode 100644
index 00000000..830c264a
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeFormattedValue/output2.json
@@ -0,0 +1,19 @@
+{
+    "data": {
+        "startPatrollingWithCorrectDateFormat": null
+    },
+    "errors": [
+        {
+            "path": [
+                "startPatrollingWithCorrectDateFormat"
+            ],
+            "locations": [
+                {
+                    "line": 2,
+                    "column": 3
+                }
+            ],
+            "message": "Exception while fetching data (/startPatrollingWithCorrectDateFormat) : Text 'Today' could not be parsed at index 0"
+        }
+    ]
+} 
\ No newline at end of file
diff --git a/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/output2.json b/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/output2.json
new file mode 100644
index 00000000..cc0d08ef
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/invalidLocalTimeValue/output2.json
@@ -0,0 +1,19 @@
+{
+    "data": {
+        "startPatrolling": null
+    },
+    "errors": [
+        {
+            "path": [
+                "startPatrolling"
+            ],
+            "locations": [
+                {
+                    "line": 2,
+                    "column": 3
+                }
+            ],
+            "message": "Exception while fetching data (/startPatrolling) : Text 'Today' could not be parsed at index 0"
+        }
+    ]
+}
\ No newline at end of file

From 7bebcb637cb10e9adc7db7201245df3190732606 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 1 Oct 2020 06:24:58 +0000
Subject: [PATCH 083/248] Bump actions/setup-java from v1.4.2 to v1.4.3

Bumps [actions/setup-java](https://github.com/actions/setup-java) from v1.4.2 to v1.4.3.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v1.4.2...d202f5dbf7256730fb690ec59f6381650114feb2)

Signed-off-by: dependabot[bot] 
---
 .github/workflows/build.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 8b6a4d0a..d7f330a7 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -15,7 +15,7 @@ jobs:
       - uses: actions/checkout@v2
         name: checkout
 
-      - uses: actions/setup-java@v1.4.2
+      - uses: actions/setup-java@v1.4.3
         name: set up jdk ${{matrix.java}}
         with:
           java-version: ${{matrix.java}}

From 80d0539f8b1c1c090329405d1cfddad34c4d5f0b Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 5 Oct 2020 06:51:15 +0000
Subject: [PATCH 084/248] Bump asciidoctorj-diagram from 2.0.4 to 2.0.5

Bumps [asciidoctorj-diagram](https://github.com/asciidoctor/asciidoctorj-diagram) from 2.0.4 to 2.0.5.
- [Release notes](https://github.com/asciidoctor/asciidoctorj-diagram/releases)
- [Commits](https://github.com/asciidoctor/asciidoctorj-diagram/compare/v2.0.4...v2.0.5)

Signed-off-by: dependabot[bot] 
---
 client/spec/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/client/spec/pom.xml b/client/spec/pom.xml
index b6ffa027..15f0bef0 100644
--- a/client/spec/pom.xml
+++ b/client/spec/pom.xml
@@ -57,7 +57,7 @@
                     
                         org.asciidoctor
                         asciidoctorj-diagram
-                        2.0.4
+                        2.0.5
                     
                 
                 

From 8191e1cd3e7fb3a0a2fbe3e86200fbb94f23d832 Mon Sep 17 00:00:00 2001
From: Tim Middleton 
Date: Tue, 13 Oct 2020 16:20:19 +0800
Subject: [PATCH 085/248] Merge fix #327 to master -  Signed-off-by: Tim
 Middleton (Software Engineer) 

---
 .../execution/GraphQLTestDataProvider.java      |  2 +-
 .../createNewNullNamedTeam/output2.json         | 17 +++++++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)
 create mode 100644 server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/output2.json

diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java
index 7992e202..fed03862 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java
@@ -95,7 +95,7 @@ private static List toListOfTestData(Set testFolders){
             if(!testFolder.getFileName().toString().startsWith("META-INF")){// Ignore META-INF
                 try {
                     TestData testData = toTestData(testFolder);
-                    if(!testData.shouldIgnore()){
+                    if(!testData.shouldIgnore() && testData.getInput().size() > 0){
                         testDataList.add(testData);
                     }
                 } catch (IOException ioe) {
diff --git a/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/output2.json b/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/output2.json
new file mode 100644
index 00000000..de8415dc
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/createNewNullNamedTeam/output2.json
@@ -0,0 +1,17 @@
+{           
+    "errors": [
+        {
+            "message": "The field at path '/team/name' was declared as a non null type, but the code involved in retrieving data has wrongly returned a null value.  The graphql specification requires that the parent field be set to null, or if that is non nullable that it bubble up null to its parent and so on. The non-nullable type is 'String' within parent type 'Team'",
+            "path": [
+                "team",
+                "name"
+            ],
+            "extensions": { 
+                "classification": "NullValueInNonNullableField"
+            }
+        }
+    ],
+    "data": {
+        "team": null
+    }
+}

From 6d0e1cac2caa58d98c9b94ae2c51da63b17da001 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 16 Oct 2020 06:25:34 +0000
Subject: [PATCH 086/248] Bump bnd-maven-plugin from 5.1.2 to 5.2.0

Bumps [bnd-maven-plugin](https://github.com/bndtools/bnd) from 5.1.2 to 5.2.0.
- [Release notes](https://github.com/bndtools/bnd/releases)
- [Changelog](https://github.com/bndtools/bnd/blob/master/docs/ADDING_RELEASE_DOCS.md)
- [Commits](https://github.com/bndtools/bnd/commits)

Signed-off-by: dependabot[bot] 
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 63be528c..3a58f263 100644
--- a/pom.xml
+++ b/pom.xml
@@ -208,7 +208,7 @@
                 
                     biz.aQute.bnd
                     bnd-maven-plugin
-                    5.1.2
+                    5.2.0
                 
                 
                     org.asciidoctor

From d2e00787ed11ea7543b5e312ca0bf3e3276a8ad5 Mon Sep 17 00:00:00 2001
From: Tim Middleton 
Date: Mon, 19 Oct 2020 07:44:00 +0800
Subject: [PATCH 087/248] Additional output for tck test master -
 Signed-off-by: Tim Middleton (Software Engineer) 

---
 .../output2.json                              | 50 +++++++++++++++++++
 1 file changed, 50 insertions(+)
 create mode 100644 server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/output2.json

diff --git a/server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/output2.json b/server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/output2.json
new file mode 100644
index 00000000..9c865eff
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/output2.json
@@ -0,0 +1,50 @@
+{
+    "data": {
+        "createNewHero": {
+            "name": "Captain America",
+            "teamAffiliations": [
+                {
+                    "members": [
+                        {
+                            "name": "Iron Man",
+                            "currentLocation": "Wachovia"
+                        },
+                        {
+                            "name": "Spider Man",
+                            "currentLocation": "Brooklyn"
+                        },
+                        {
+                            "name": "Wolverine",
+                            "currentLocation": "New Orleans"
+                        },
+                        {
+                            "name": "Captain America",
+                            "currentLocation": null
+                        }
+                    ]
+                }
+            ],
+            "primaryLocation": "New York, NY",
+            "superPowers": [
+                "Super strength",
+                "Vibranium Shield"
+            ],
+            "realName": "Steven Rogers"
+        }
+    },
+    "errors": [
+        {
+            "path": [
+                "createNewHero"
+            ],
+            "locations": [
+                {
+                    "column": 17,
+                    "line": 14
+                }
+            ],
+            "message": "Cannot find location for Captain America"
+        }
+    ]
+}
+

From 05c575c25c4898ad6a6a2c09e54cf007becf4b43 Mon Sep 17 00:00:00 2001
From: Tim Middleton 
Date: Tue, 20 Oct 2020 10:07:29 +0800
Subject: [PATCH 088/248] Tck fixes: master - Signed-off-by: Tim Middleton
 (Software Engineer) 

---
 .../output2.json                              | 21 +++++----------
 .../output2.json                              | 27 +++++++++++++++++++
 .../output2.json                              | 27 +++++++++++++++++++
 3 files changed, 61 insertions(+), 14 deletions(-)
 create mode 100644 server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/output2.json
 create mode 100644 server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/output2.json

diff --git a/server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/output2.json b/server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/output2.json
index 9c865eff..2ca6b86b 100644
--- a/server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/output2.json
+++ b/server/tck/src/main/resources/tests/errorHandling/partialResultsAfterNewHeroNoLocation/output2.json
@@ -1,23 +1,23 @@
-{
+{   
     "data": {
         "createNewHero": {
             "name": "Captain America",
             "teamAffiliations": [
-                {
+                {   
                     "members": [
-                        {
+                        {   
                             "name": "Iron Man",
                             "currentLocation": "Wachovia"
                         },
-                        {
+                        {   
                             "name": "Spider Man",
                             "currentLocation": "Brooklyn"
                         },
-                        {
+                        {   
                             "name": "Wolverine",
                             "currentLocation": "New Orleans"
                         },
-                        {
+                        {   
                             "name": "Captain America",
                             "currentLocation": null
                         }
@@ -33,18 +33,11 @@
         }
     },
     "errors": [
-        {
+        {   
             "path": [
                 "createNewHero"
             ],
-            "locations": [
-                {
-                    "column": 17,
-                    "line": 14
-                }
-            ],
             "message": "Cannot find location for Captain America"
         }
     ]
 }
-
diff --git a/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/output2.json b/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/output2.json
new file mode 100644
index 00000000..106baedd
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLException/output2.json
@@ -0,0 +1,27 @@
+{
+    "data": {
+        "allHeroesWithError": [
+            {
+                "name": "Iron Man",
+                "primaryLocation": "Los Angeles, CA"
+            },
+            {
+                "name": "Wolverine",
+                "primaryLocation": "Unknown"
+            },
+            null,
+            {
+                "name": "Spider Man",
+                "primaryLocation": "New York, NY"
+            }
+        ]
+    },
+    "errors": [
+        {
+            "path": [
+                "allHeroesWithError"
+            ],
+            "message": "Failed to find one or more heroes"
+        }
+    ]
+}
diff --git a/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/output2.json b/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/output2.json
new file mode 100644
index 00000000..45925793
--- /dev/null
+++ b/server/tck/src/main/resources/tests/errorHandling/partialResultsInGraphQLExceptionSubclass/output2.json
@@ -0,0 +1,27 @@
+{
+    "data": {
+        "allHeroesWithSpecificError": [
+            {
+                "name": "Iron Man",
+                "primaryLocation": "Los Angeles, CA"
+            },
+            {
+                "name": "Wolverine",
+                "primaryLocation": "Unknown"
+            },
+            {
+                "name": "Starlord",
+                "primaryLocation": "Outer Space"
+            }
+        ]
+    },
+    "errors": [
+        {
+            "path": [
+                "allHeroesWithSpecificError"
+            ],
+            "message": "Failed to find one or more heroes"
+        }
+    ]
+}
+

From d0c29207a61f6926e34647e579ab791ebac7340a Mon Sep 17 00:00:00 2001
From: Tim Middleton 
Date: Tue, 3 Nov 2020 19:31:46 +0800
Subject: [PATCH 089/248] Update spec to 1.0.3 - Signed-off-by: Tim Middleton
 (Software Engineer) 

---
 README.asciidoc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/README.asciidoc b/README.asciidoc
index 4f8af6e3..32a173ec 100644
--- a/README.asciidoc
+++ b/README.asciidoc
@@ -22,7 +22,7 @@ image:https://badges.gitter.im/eclipse/microprofile-graphql.svg[link="https://gi
 
 = Microprofile GraphQL Specification
 
-Read the https://download.eclipse.org/microprofile/microprofile-graphql-1.0.2/microprofile-graphql.html[MicroProfile GraphQL 1.0.2] Specification
+Read the https://download.eclipse.org/microprofile/microprofile-graphql-1.0.3/microprofile-graphql.html[MicroProfile GraphQL 1.0.3] Specification
 
 == Structure
 
@@ -41,7 +41,7 @@ Implementations can decide to implement only the Server, or only the Client, or
 
   org.eclipse.microprofile.graphql
   microprofile-graphql-api
-  1.0.2
+  1.0.3
 
 ----
 

From c2070b5500f9a694adbde32714b40b7ba4826efb Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 25 Nov 2020 05:47:46 +0000
Subject: [PATCH 090/248] Bump graphql-java from 15.0 to 16.1

Bumps [graphql-java](https://github.com/graphql-java/graphql-java) from 15.0 to 16.1.
- [Release notes](https://github.com/graphql-java/graphql-java/releases)
- [Commits](https://github.com/graphql-java/graphql-java/compare/v15.0...v16.1)

Signed-off-by: dependabot[bot] 
---
 client/tck/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/client/tck/pom.xml b/client/tck/pom.xml
index 293e51d6..e5db8dd8 100644
--- a/client/tck/pom.xml
+++ b/client/tck/pom.xml
@@ -30,7 +30,7 @@
     
         
         5.7.0
-        15.0
+        16.1
     
 
     

From 7318f8be78c78707affc5b62f07a7cfde35f91fe Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 8 Dec 2020 06:18:42 +0000
Subject: [PATCH 091/248] Bump org.osgi.annotation.versioning from 1.1.0 to
 1.1.1

Bumps org.osgi.annotation.versioning from 1.1.0 to 1.1.1.

Signed-off-by: dependabot[bot] 
---
 server/api/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/api/pom.xml b/server/api/pom.xml
index c287a3a1..f6274f07 100644
--- a/server/api/pom.xml
+++ b/server/api/pom.xml
@@ -31,7 +31,7 @@
         
             org.osgi
             org.osgi.annotation.versioning
-            1.1.0
+            1.1.1
             provided
         
         

From 73d2568be809bd68e3649c117a93b1333d642c02 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Phillip=20Kr=C3=BCger?= 
Date: Thu, 7 Jan 2021 08:00:02 +0200
Subject: [PATCH 092/248] Add helidon to implementations

---
 README.asciidoc | 1 +
 1 file changed, 1 insertion(+)

diff --git a/README.asciidoc b/README.asciidoc
index 32a173ec..9125b086 100644
--- a/README.asciidoc
+++ b/README.asciidoc
@@ -88,6 +88,7 @@ Where the data comes from (NoSQL, Relational DB, another service, etc.) is not t
 * Open Liberty 20.0.0.6 - https://openliberty.io/blog/2020/06/05/graphql-open-liberty-20006.html
 * Quarkus 1.5 - https://quarkus.io/blog/quarkus-1-5-final-released/
 * Wildfly - https://www.wildfly.org/news/2020/08/13/Introducing-the-WildFly-GraphQL-feature-pack/
+* Helidon 2.2.0 - https://medium.com/helidon/microprofile-graphql-support-now-available-in-helidon-mp-dbc7bc0b4af
 
 == Acknowledgements
 

From 8a7bd11bda05033fa97375deab4fbbabb730d15d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 18 Jan 2021 07:20:58 +0000
Subject: [PATCH 093/248] Bump asciidoctorj-pdf from 1.5.3 to 1.5.4

Bumps [asciidoctorj-pdf](https://github.com/asciidoctor/asciidoctorj) from 1.5.3 to 1.5.4.
- [Release notes](https://github.com/asciidoctor/asciidoctorj/releases)
- [Changelog](https://github.com/asciidoctor/asciidoctorj/blob/master/CHANGELOG.adoc)
- [Commits](https://github.com/asciidoctor/asciidoctorj/compare/v1.5.3...v1.5.4)

Signed-off-by: dependabot[bot] 
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 3a58f263..6abc0d23 100644
--- a/pom.xml
+++ b/pom.xml
@@ -44,7 +44,7 @@
 
         
         2.1.0
-        1.5.3
+        1.5.4
         MMMM dd, yyyy
         ${maven.build.timestamp}
         Draft

From bc22aa4c16840b0b298c605d08515c91f9b94796 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 19 Jan 2021 06:09:30 +0000
Subject: [PATCH 094/248] Bump asciidoctorj-diagram from 2.0.5 to 2.1.0

Bumps [asciidoctorj-diagram](https://github.com/asciidoctor/asciidoctorj-diagram) from 2.0.5 to 2.1.0.
- [Release notes](https://github.com/asciidoctor/asciidoctorj-diagram/releases)
- [Commits](https://github.com/asciidoctor/asciidoctorj-diagram/commits)

Signed-off-by: dependabot[bot] 
---
 client/spec/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/client/spec/pom.xml b/client/spec/pom.xml
index 15f0bef0..bd9d0fc4 100644
--- a/client/spec/pom.xml
+++ b/client/spec/pom.xml
@@ -57,7 +57,7 @@
                     
                         org.asciidoctor
                         asciidoctorj-diagram
-                        2.0.5
+                        2.1.0
                     
                 
                 

From 72a392b316974c2c7e23e275af5fd10038580883 Mon Sep 17 00:00:00 2001
From: Tim Middleton 
Date: Mon, 25 Jan 2021 08:08:39 +0800
Subject: [PATCH 095/248] Port #212 to master - Signed-off-by: Tim Middleton
 (Software Engineer) 

---
 .../main/java/org/eclipse/microprofile/graphql/NonNull.java | 4 ++--
 .../graphql/tck/apps/basic/api/ScalarTestApi.java           | 6 ++++++
 server/tck/src/main/resources/tests/basicScalarTests.csv    | 1 +
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/server/api/src/main/java/org/eclipse/microprofile/graphql/NonNull.java b/server/api/src/main/java/org/eclipse/microprofile/graphql/NonNull.java
index 111a4146..fce3f158 100644
--- a/server/api/src/main/java/org/eclipse/microprofile/graphql/NonNull.java
+++ b/server/api/src/main/java/org/eclipse/microprofile/graphql/NonNull.java
@@ -64,7 +64,7 @@
  * a DefaultValue annotation.
  */
 @Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.TYPE_USE, ElementType.METHOD, ElementType.FIELD})
+@Target({ElementType.TYPE_USE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
 @Documented
 public @interface NonNull {
-}
\ No newline at end of file
+}
diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java
index 2201b604..6eb64cad 100644
--- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java
+++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/apps/basic/api/ScalarTestApi.java
@@ -29,6 +29,7 @@
 import org.eclipse.microprofile.graphql.Id;
 import org.eclipse.microprofile.graphql.Mutation;
 import org.eclipse.microprofile.graphql.Name;
+import org.eclipse.microprofile.graphql.NonNull;
 import org.eclipse.microprofile.graphql.NumberFormat;
 import org.eclipse.microprofile.graphql.Query;
 
@@ -281,6 +282,11 @@ public String settlement(){
         return "Just testing a name that starts with set but is not a setter";
     }
 
+    @Query
+    public String testNonNullParameter(@Name("param") @NonNull String param) {
+        return param;
+    }
+
     @Query
     @Description("Testing transformed date as a response")
     @DateFormat(value = "dd MMM yyyy", locale = "en-GB")
diff --git a/server/tck/src/main/resources/tests/basicScalarTests.csv b/server/tck/src/main/resources/tests/basicScalarTests.csv
index eff5bad3..3de14394 100644
--- a/server/tck/src/main/resources/tests/basicScalarTests.csv
+++ b/server/tck/src/main/resources/tests/basicScalarTests.csv
@@ -69,3 +69,4 @@
 68| type BasicMessage       |   message: String                                                                                                         |   Expecting a BasicMessage from @Type
 69| enum CountDown          |   THREE                                                                                                                   |   Expecting a CountDown from @Enum
 70| interface Basic         |   message: String                                                                                                         |   Expecting a String argument called "message" in @Interface("MyInterface") BasicInterface
+71| type Query              |   testNonNullParameter(param: String!)                                                                                    |   Expecting a non null String parameter

From 2f4f1521eaf350f4f807b906afcfdea403fe07db Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 5 Feb 2021 05:56:47 +0000
Subject: [PATCH 096/248] Bump junit-jupiter from 5.7.0 to 5.7.1

Bumps [junit-jupiter](https://github.com/junit-team/junit5) from 5.7.0 to 5.7.1.
- [Release notes](https://github.com/junit-team/junit5/releases)
- [Commits](https://github.com/junit-team/junit5/compare/r5.7.0...r5.7.1)

Signed-off-by: dependabot[bot] 
---
 client/tck/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/client/tck/pom.xml b/client/tck/pom.xml
index e5db8dd8..c80f215d 100644
--- a/client/tck/pom.xml
+++ b/client/tck/pom.xml
@@ -29,7 +29,7 @@
 
     
         
-        5.7.0
+        5.7.1
         16.1
     
 

From 97653c7496942ba1c7ea217c3cf2ed4e9f16e009 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 5 Feb 2021 20:13:32 +0000
Subject: [PATCH 097/248] Bump graphql-java from 16.1 to 16.2

Bumps [graphql-java](https://github.com/graphql-java/graphql-java) from 16.1 to 16.2.
- [Release notes](https://github.com/graphql-java/graphql-java/releases)
- [Commits](https://github.com/graphql-java/graphql-java/compare/v16.1...v16.2)

Signed-off-by: dependabot[bot] 
---
 client/tck/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/client/tck/pom.xml b/client/tck/pom.xml
index c80f215d..ac4cedef 100644
--- a/client/tck/pom.xml
+++ b/client/tck/pom.xml
@@ -30,7 +30,7 @@
     
         
         5.7.1
-        16.1
+        16.2
     
 
     

From 189a52faf312c14170f70cc6029843d1db6d5da3 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 23 Feb 2021 05:53:16 +0000
Subject: [PATCH 098/248] Bump bnd-maven-plugin from 5.2.0 to 5.3.0

Bumps [bnd-maven-plugin](https://github.com/bndtools/bnd) from 5.2.0 to 5.3.0.
- [Release notes](https://github.com/bndtools/bnd/releases)
- [Changelog](https://github.com/bndtools/bnd/blob/master/docs/ADDING_RELEASE_DOCS.md)
- [Commits](https://github.com/bndtools/bnd/commits)

Signed-off-by: dependabot[bot] 
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 6abc0d23..71f24072 100644
--- a/pom.xml
+++ b/pom.xml
@@ -208,7 +208,7 @@
                 
                     biz.aQute.bnd
                     bnd-maven-plugin
-                    5.2.0
+                    5.3.0
                 
                 
                     org.asciidoctor

From 6ce755dbe9da115af5935669a3e4801048479e8a Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 1 Mar 2021 07:28:49 +0000
Subject: [PATCH 099/248] Bump testng from 7.3.0 to 7.4.0

Bumps [testng](https://github.com/cbeust/testng) from 7.3.0 to 7.4.0.
- [Release notes](https://github.com/cbeust/testng/releases)
- [Changelog](https://github.com/cbeust/testng/blob/master/CHANGES.txt)
- [Commits](https://github.com/cbeust/testng/compare/7.3.0...7.4.0)

Signed-off-by: dependabot[bot] 
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 6abc0d23..1e386ceb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -39,7 +39,7 @@
         1.0.2
         
         
-        7.3.0
+        7.4.0
         1.6.0.Final
 
         

From 03f5bc55f8a610b49c86da1c838f10544aa144a3 Mon Sep 17 00:00:00 2001
From: Phillip Kruger 
Date: Thu, 4 Mar 2021 16:27:45 +0200
Subject: [PATCH 100/248] Fix default value non ordered alternative (master)
 Signed-off-by:Phillip Kruger 

---
 server/tck/src/main/resources/tests/schemaTests.csv | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/tck/src/main/resources/tests/schemaTests.csv b/server/tck/src/main/resources/tests/schemaTests.csv
index c6d0b181..99f2b942 100644
--- a/server/tck/src/main/resources/tests/schemaTests.csv
+++ b/server/tck/src/main/resources/tests/schemaTests.csv
@@ -105,4 +105,4 @@
 58|type Query          |   "Super hero name, not real name"                        |   Expecting a description for the name parameter on the exportToFile query
 
 # testJsonDefault
-59|type Mutation       |   id : 1000 'AND' name : "Cape" 'AND' powerLevel : 3 'AND' height : 1.2 'AND' weight : 0.3 'AND' supernatural : false | Expecting a default value for item for provisionHero
+59|type Mutation       |   provisionHero(hero: String, item: ItemInput = { id: 1000, name: "Cape", powerLevel: 3, height: 1.2, weight: 0.3, supernatural: false, dateCreated: "19 February 1900 at 12:00 in Africa/Johannesburg", dateLastUsed: "29 Jan 2020 at 09:45 in zone +0200"} 'OR' provisionHero(hero: String, item: ItemInput = {dateCreated : "19 February 1900 at 12:00 in Africa/Johannesburg", dateLastUsed : "29 Jan 2020 at 09:45 in zone +0200", height : 1.2, id : 1000, name : "Cape", powerLevel : 3, supernatural : false, weight : 0.3}) | Expecting a default value for item for provisionHero
\ No newline at end of file

From 71df8f13637781f3700ca15ba75149721a3bb476 Mon Sep 17 00:00:00 2001
From: Andy McCright 
Date: Thu, 4 Mar 2021 10:25:55 -0600
Subject: [PATCH 101/248] Update .gitignore to include addl target dirs

Signed-off-by: Andy McCright 
---
 .gitignore | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/.gitignore b/.gitignore
index bf586c9b..e45783cc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,6 +7,7 @@
 .idea
 .DS_Store
 **/*.iml
+/api/target/
 /client/target/
 /client/api/target/
 /client/spec/target/
@@ -19,3 +20,5 @@
 /server/api/target/
 /server/spec/target/
 /server/tck/target/
+/spec/target/
+/tck/target/
\ No newline at end of file

From 09592ad10b22b2a174b5bbc5de7b7c0902206d6a Mon Sep 17 00:00:00 2001
From: Phillip Kruger 
Date: Sat, 6 Mar 2021 15:34:58 +0200
Subject: [PATCH 102/248] Added Eclipse license Signed-off-by:Phillip Kruger
 

---
 .../01-compatible-certification-request.md    |  27 +++
 .github/workflows/build.yml                   |   6 +-
 client/api/pom.xml                            |  87 ++++++++
 .../main/javadoc/licenses/Draft/license.html  |  27 +++
 .../main/javadoc/licenses/Final/license.html  |  72 +++++++
 client/spec/pom.xml                           |  33 +++
 client/spec/src/main/asciidoc/client.asciidoc |   5 +-
 client/spec/src/main/asciidoc/index.asciidoc  |   8 +-
 .../src/main/asciidoc/license-efsl.asciidoc   |  73 +++++++
 .../main/asciidoc/typesafe_client.asciidoc    |  33 +++
 client/tck/pom.xml                            |  36 ++++
 client/tck/src/main/licenses/Draft/LICENSE    | 201 ++++++++++++++++++
 client/tck/src/main/licenses/Final/LICENSE    |  83 ++++++++
 full/spec/pom.xml                             |   7 +
 full/spec/src/main/asciidoc/index.asciidoc    |   6 +-
 .../src/main/asciidoc/license-efsl.asciidoc   |  73 +++++++
 pom.xml                                       |  54 ++++-
 server/api/pom.xml                            |  59 +++++
 .../main/javadoc/licenses/Draft/license.html  |  27 +++
 .../main/javadoc/licenses/Final/license.html  |  72 +++++++
 server/spec/pom.xml                           |  34 ++-
 server/spec/src/main/asciidoc/index.asciidoc  |   6 +-
 .../src/main/asciidoc/license-efsl.asciidoc   |  73 +++++++
 server/tck/pom.xml                            |  36 ++++
 server/tck/src/main/licenses/Draft/LICENSE    | 201 ++++++++++++++++++
 server/tck/src/main/licenses/Final/LICENSE    |  83 ++++++++
 .../src/main/resources/tests/schemaTests.csv  |  10 +-
 27 files changed, 1415 insertions(+), 17 deletions(-)
 create mode 100644 .github/ISSUE_TEMPLATE/01-compatible-certification-request.md
 create mode 100644 client/api/src/main/javadoc/licenses/Draft/license.html
 create mode 100644 client/api/src/main/javadoc/licenses/Final/license.html
 create mode 100644 client/spec/src/main/asciidoc/license-efsl.asciidoc
 create mode 100644 client/spec/src/main/asciidoc/typesafe_client.asciidoc
 create mode 100644 client/tck/src/main/licenses/Draft/LICENSE
 create mode 100644 client/tck/src/main/licenses/Final/LICENSE
 create mode 100644 full/spec/src/main/asciidoc/license-efsl.asciidoc
 create mode 100644 server/api/src/main/javadoc/licenses/Draft/license.html
 create mode 100644 server/api/src/main/javadoc/licenses/Final/license.html
 create mode 100644 server/spec/src/main/asciidoc/license-efsl.asciidoc
 create mode 100644 server/tck/src/main/licenses/Draft/LICENSE
 create mode 100644 server/tck/src/main/licenses/Final/LICENSE

diff --git a/.github/ISSUE_TEMPLATE/01-compatible-certification-request.md b/.github/ISSUE_TEMPLATE/01-compatible-certification-request.md
new file mode 100644
index 00000000..00c5387c
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/01-compatible-certification-request.md
@@ -0,0 +1,27 @@
+---
+[Implementation Name]: Compatible Certification Request
+about: Start a request for a compatible certification 
+title: 'MicroProfile GraphQL [Version] Compatible Certification Request'
+labels: 'Certification :trophy:'
+assignees: ''
+
+---
+
+- [ ] Organization Name ("Organization") and, if applicable, URL:
+ // Add here +- [ ] Product Name, Version and download URL (if applicable):
+ // Add here +- [ ] Specification Name, Version and download URL:
+ // Add here +- [ ] (Optional) TCK Version, digital SHA-256 fingerprint and download URL:
+ // Add here +- [ ] Public URL of TCK Results Summary:
+ // Add here +- [ ] Any Additional Specification Certification Requirements:
+ // Add here +- [ ] Java runtime used to run the implementation:
+ // Add here +- [ ] Summary of the information for the certification environment, operating system, cloud, ...:
+ // Add here +- [ ] By checking this box I acknowledge that the Organization I represent accepts the terms of the [EFTL](https://www.eclipse.org/legal/tck.php). +- [ ] By checking this box I attest that all TCK requirements have been met, including any compatibility rules. diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d7f330a7..ca4b6f38 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -8,17 +8,17 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - java: [8, 11, 14] + java: [8, 11] name: build with jdk ${{matrix.java}} steps: - uses: actions/checkout@v2 name: checkout - - uses: actions/setup-java@v1.4.3 + - uses: actions/setup-java@v1 name: set up jdk ${{matrix.java}} with: java-version: ${{matrix.java}} - name: build with maven - run: mvn -B verify javadoc:javadoc --file pom.xml + run: mvn -B verify javadoc:javadoc --file pom.xml \ No newline at end of file diff --git a/client/api/pom.xml b/client/api/pom.xml index dee2e291..80a3dc52 100644 --- a/client/api/pom.xml +++ b/client/api/pom.xml @@ -36,4 +36,91 @@ provided
+ + + + + maven-resources-plugin + 3.2.0 + + + copy-resources + validate + + copy-resources + + + ${basedir}/target/apidocs/doc-files/ + true + + + src/main/javadoc/licenses/${revremark}/ + true + + + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + false + true + true + none + ${project.name} + ${project.name} +
${project.name} v${project.version}]]>
+ + + Use is subject to license terms. + ]]> + + + + implSpec + a + Implementation Specification: + + +
+ + + attach-javadocs + + jar + + + +
+ + + biz.aQute.bnd + bnd-maven-plugin + + + + bnd-process + + + + + + org.apache.maven.plugins + maven-jar-plugin + + org.eclipse.microprofile.graphql.client + MicroProfile GraphQL Client bundle + + ${project.build.outputDirectory}/META-INF/MANIFEST.MF + + + +
+
\ No newline at end of file diff --git a/client/api/src/main/javadoc/licenses/Draft/license.html b/client/api/src/main/javadoc/licenses/Draft/license.html new file mode 100644 index 00000000..994b5f85 --- /dev/null +++ b/client/api/src/main/javadoc/licenses/Draft/license.html @@ -0,0 +1,27 @@ + + +Apache License - Version 2 + + +

Apache License - Version 2

+

+Copyright (c) ${inceptionYear}-${currentYear} Contributors to the Eclipse Foundation +

+

+Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at +

+

+ + http://www.apache.org/licenses/LICENSE-2.0 +

+

+Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +

+ + \ No newline at end of file diff --git a/client/api/src/main/javadoc/licenses/Final/license.html b/client/api/src/main/javadoc/licenses/Final/license.html new file mode 100644 index 00000000..be52b4f2 --- /dev/null +++ b/client/api/src/main/javadoc/licenses/Final/license.html @@ -0,0 +1,72 @@ + + +Eclipse Foundation Specification License - v1.0 + + +

Eclipse Foundation Specification License - v1.0

+

By using and/or copying this document, or the Eclipse Foundation + document from which this statement is linked, you (the licensee) agree + that you have read, understood, and will comply with the following + terms and conditions:

+ +

Permission to copy, and distribute the contents of this document, or + the Eclipse Foundation document from which this statement is linked, in + any medium for any purpose and without fee or royalty is hereby + granted, provided that you include the following on ALL copies of the + document, or portions thereof, that you use:

+ +
    +
  • link or URL to the original Eclipse Foundation document.
  • +
  • All existing copyright notices, or if one does not exist, a notice + (hypertext is preferred, but a textual representation is permitted) + of the form: "Copyright © [$date-of-document] + “Eclipse Foundation, Inc. <<url to this license>> + " +
  • +
+ +

Inclusion of the full text of this NOTICE must be provided. We + request that authorship attribution be provided in any software, + documents, or other items or products that you create pursuant to the + implementation of the contents of this document, or any portion + thereof.

+ +

No right to create modifications or derivatives of Eclipse Foundation + documents is granted pursuant to this license, except anyone may + prepare and distribute derivative works and portions of this document + in software that implements the specification, in supporting materials + accompanying such software, and in documentation of such software, + PROVIDED that all such works include the notice below. HOWEVER, the + publication of derivative works of this document for use as a technical + specification is expressly prohibited.

+ +

The notice is:

+ +

"Copyright © [$date-of-document] Eclipse Foundation. This software or + document includes material copied from or derived from [title and URI + of the Eclipse Foundation specification document]."

+ +

Disclaimers

+ +

THIS DOCUMENT IS PROVIDED "AS IS," AND THE COPYRIGHT + HOLDERS AND THE ECLIPSE FOUNDATION MAKE NO REPRESENTATIONS OR + WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, + WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, + NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE + SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS + WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR + OTHER RIGHTS.

+ +

THE COPYRIGHT HOLDERS AND THE ECLIPSE FOUNDATION WILL NOT BE LIABLE + FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT + OF ANY USE OF THE DOCUMENT OR THE PERFORMANCE OR IMPLEMENTATION OF THE + CONTENTS THEREOF.

+ +

The name and trademarks of the copyright holders or the Eclipse + Foundation may NOT be used in advertising or publicity pertaining to + this document or its contents without specific, written prior + permission. Title to copyright in this document will at all times + remain with copyright holders.

+ + + diff --git a/client/spec/pom.xml b/client/spec/pom.xml index bd9d0fc4..3f636654 100644 --- a/client/spec/pom.xml +++ b/client/spec/pom.xml @@ -30,6 +30,11 @@ MicroProfile GraphQL Client :: Specification Client-side code-first GraphQL APIs for MicroProfile :: Specification + + ${project.build.directory}/generated-docs/${project.build.finalName}.pdf + ${project.build.directory}/generated-docs/${project.build.finalName}.html + + @@ -76,6 +81,7 @@ process-asciidoc + ${spec.pdf} pdf @@ -86,6 +92,7 @@ process-asciidoc + ${spec.html} html5 @@ -145,6 +152,32 @@ + + org.codehaus.mojo + build-helper-maven-plugin + + + attach-artifacts + package + + attach-artifact + + + + + ${spec.pdf} + pdf + + + ${spec.html} + html + + + + + + + \ No newline at end of file diff --git a/client/spec/src/main/asciidoc/client.asciidoc b/client/spec/src/main/asciidoc/client.asciidoc index 80ded768..d54a2a6f 100644 --- a/client/spec/src/main/asciidoc/client.asciidoc +++ b/client/spec/src/main/asciidoc/client.asciidoc @@ -17,6 +17,7 @@ // limitations under the License. // -= MicroProfile GraphQL TypeSafe Client += MicroProfile GraphQL Client -Here add the client spec. +include::dynamic_client.asciidoc[] +include::typesafe_client.asciidoc[] diff --git a/client/spec/src/main/asciidoc/index.asciidoc b/client/spec/src/main/asciidoc/index.asciidoc index a1135443..3e2ac55b 100644 --- a/client/spec/src/main/asciidoc/index.asciidoc +++ b/client/spec/src/main/asciidoc/index.asciidoc @@ -23,16 +23,18 @@ :version-label!: :sectanchors: :doctype: book -:license: Apache License v2.0 +:license: Eclipse Foundation Specification License v1.0 :source-highlighter: coderay +:sectnums: :toc: left :toclevels: 4 :sectnumlevels: 4 ifdef::backend-pdf[] :pagenums: +:numbered: endif::[] -include::license-alv2.asciidoc[] +include::license-efsl.asciidoc[] -include::dynamic_client.asciidoc[] +include::client.asciidoc[] diff --git a/client/spec/src/main/asciidoc/license-efsl.asciidoc b/client/spec/src/main/asciidoc/license-efsl.asciidoc new file mode 100644 index 00000000..85993af3 --- /dev/null +++ b/client/spec/src/main/asciidoc/license-efsl.asciidoc @@ -0,0 +1,73 @@ +[subs="normal"] +.... +Specification: {doctitle} +Version: {revnumber} +Status: {revremark} +Release: {revdate} +.... + +== Copyright + +Copyright (c) {inceptionYear}, {currentYear} Eclipse Foundation. + +=== Eclipse Foundation Specification License + +By using and/or copying this document, or the Eclipse Foundation +document from which this statement is linked, you (the licensee) agree +that you have read, understood, and will comply with the following +terms and conditions: + +Permission to copy, and distribute the contents of this document, or +the Eclipse Foundation document from which this statement is linked, in +any medium for any purpose and without fee or royalty is hereby +granted, provided that you include the following on ALL copies of the +document, or portions thereof, that you use: + +* link or URL to the original Eclipse Foundation document. +* All existing copyright notices, or if one does not exist, a notice + (hypertext is preferred, but a textual representation is permitted) + of the form: "Copyright (c) [$date-of-document] + Eclipse Foundation, Inc. \<>" + +Inclusion of the full text of this NOTICE must be provided. We +request that authorship attribution be provided in any software, +documents, or other items or products that you create pursuant to the +implementation of the contents of this document, or any portion +thereof. + +No right to create modifications or derivatives of Eclipse Foundation +documents is granted pursuant to this license, except anyone may +prepare and distribute derivative works and portions of this document +in software that implements the specification, in supporting materials +accompanying such software, and in documentation of such software, +PROVIDED that all such works include the notice below. HOWEVER, the +publication of derivative works of this document for use as a technical +specification is expressly prohibited. + +The notice is: + +"Copyright (c) [$date-of-document] Eclipse Foundation. This software or +document includes material copied from or derived from [title and URI +of the Eclipse Foundation specification document]." + +==== Disclaimers + +THIS DOCUMENT IS PROVIDED "AS IS," AND THE COPYRIGHT +HOLDERS AND THE ECLIPSE FOUNDATION MAKE NO REPRESENTATIONS OR +WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, +NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE +SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS +WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR +OTHER RIGHTS. + +THE COPYRIGHT HOLDERS AND THE ECLIPSE FOUNDATION WILL NOT BE LIABLE +FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT +OF ANY USE OF THE DOCUMENT OR THE PERFORMANCE OR IMPLEMENTATION OF THE +CONTENTS THEREOF. + +The name and trademarks of the copyright holders or the Eclipse +Foundation may NOT be used in advertising or publicity pertaining to +this document or its contents without specific, written prior +permission. Title to copyright in this document will at all times +remain with copyright holders. diff --git a/client/spec/src/main/asciidoc/typesafe_client.asciidoc b/client/spec/src/main/asciidoc/typesafe_client.asciidoc new file mode 100644 index 00000000..c8bc35ad --- /dev/null +++ b/client/spec/src/main/asciidoc/typesafe_client.asciidoc @@ -0,0 +1,33 @@ +// +// Copyright (c) 2020 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + += MicroProfile GraphQL Typesafe Client + +== Rationale + +TODO + +== Goals + +TODO + +== Non goals + +TODO + diff --git a/client/tck/pom.xml b/client/tck/pom.xml index ac4cedef..a8f68b59 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -70,6 +70,42 @@
+ + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${maven.compiler.source} + ${maven.compiler.target} + + + + + org.apache.maven.plugins + maven-resources-plugin + 3.2.0 + + + copy-licenses + validate + + copy-resources + + + ${basedir}/target/classes/META-INF/ + true + + + src/main/licenses/${revremark}/ + true + + + + + + + diff --git a/client/tck/src/main/licenses/Draft/LICENSE b/client/tck/src/main/licenses/Draft/LICENSE new file mode 100644 index 00000000..5c304d1a --- /dev/null +++ b/client/tck/src/main/licenses/Draft/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/client/tck/src/main/licenses/Final/LICENSE b/client/tck/src/main/licenses/Final/LICENSE new file mode 100644 index 00000000..c858c0ad --- /dev/null +++ b/client/tck/src/main/licenses/Final/LICENSE @@ -0,0 +1,83 @@ +Eclipse Foundation Technology Compatibility Kit License - v 1.0 + +Copyright (c) 2018, Eclipse Foundation, Inc. and its licensors. + +Redistribution and use in binary form is permitted provided that the +following conditions are met: + +1. Use of the Technology Compatibility Kit accompanying this license + (the "TCK") and its documentation is permitted solely for the + purpose of testing compatibility of an implementation (the + "Product") of a specification (the "Specification") made available + by the Eclipse Foundation, Inc. ("Eclipse"). + +2. Only those modifications expressly permitted by the TCK and its + documentation are permitted. Except in these limited circumstances, + no modifications to the TCK are permitted under this license. + +3. A Product will be deemed to be "compatible" with the Specification + if it fully and completely meets and satisfies all requirements of + the TCK. + +4. Before any claim of compatibility (or any similar claim suggesting + compatibility) is made based on the TCK, the testing party must: + + a. use the TCK to demonstrate that the Product fully and + completely meets and satisfies all requirements of the TCK; + + b. make TCK test results showing full and complete satisfaction of + all requirements of the TCK publicly available on the testing + party's website and send a link to such test results to Eclipse + at [tck@eclipse.org](mailto:tck@eclipse.org); and + + c. comply with any requirements stated in the Specification with + regard to subsetting, supersetting, modifying or extending the + Specification in any Product claimed to be compatible with the + Specification. + +5. The test results must be continuously available and the link must + be live for at least as long as the Product is available in the + marketplace. + +6. The TCK may not be used as a basis for any statements of partial + compatibility. The TCK may only be used as a basis for true, + factual statements of full compatibility of Products that fully + meet and satisfy all requirements of the TCK. + +7. A determination that a Product is compatible with the TCK does not, + in itself, give rise to the right to use any name, mark, logo + associated with the TCK, Eclipse, or Eclipse's contributors or + licensors. + +8. Upon the request of Eclipse, a tester will retract any statements + of compatibility (or any similar claim suggesting compatibility) + which Eclipse reasonably determines to be false or misleading or in + violation of the terms of this license. + +9. Redistribution of the TCK must be under this Eclipse Foundation + Technology Compatibility Kit License and must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + +10. Neither the name, trademarks or logos of Eclipse, nor the names, + trademarks or logos of its contributors or licensors may be used to + endorse or promote products tested with this software without + specific prior written permission. + +11. The source code for the TCK accompanying this license is available + from Eclipse. + +TO THE EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED ON +AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER +EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR +CONDITIONS OF TITLE, NON- INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR +A PARTICULAR PURPOSE. TO THE EXTENT PERMITTED BY APPLICABLE LAW, +NEITHER THE COPYRIGHT OWNER OR ANY CONTRIBUTORS SHALL HAVE ANY +LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE +EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. diff --git a/full/spec/pom.xml b/full/spec/pom.xml index 7c29b00f..8503f4c4 100644 --- a/full/spec/pom.xml +++ b/full/spec/pom.xml @@ -29,6 +29,11 @@ MicroProfile GraphQL Full :: Specification Code-first GraphQL APIs for MicroProfile :: Specification + + ${project.build.directory}/generated-docs/${project.build.finalName}.pdf + ${project.build.directory}/generated-docs/${project.build.finalName}.html + + clean package @@ -45,6 +50,7 @@ process-asciidoc + ${spec.pdf} pdf @@ -55,6 +61,7 @@ process-asciidoc + ${spec.html} html5 diff --git a/full/spec/src/main/asciidoc/index.asciidoc b/full/spec/src/main/asciidoc/index.asciidoc index 89937092..f39a61a9 100644 --- a/full/spec/src/main/asciidoc/index.asciidoc +++ b/full/spec/src/main/asciidoc/index.asciidoc @@ -23,18 +23,20 @@ :version-label!: :sectanchors: :doctype: book -:license: Apache License v2.0 +:license: Eclipse Foundation Specification License v1.0 :source-highlighter: coderay +:sectnums: :toc: left :toclevels: 4 :sectnumlevels: 4 ifdef::backend-pdf[] :pagenums: +:numbered: :serverdir: ../../../../../server/spec/src/main/asciidoc :clientdir: ../../../../../client/spec/src/main/asciidoc endif::[] -include::license-alv2.asciidoc[] +include::license-efsl.asciidoc[] include::{serverdir}/server.asciidoc[] include::{clientdir}/client.asciidoc[] \ No newline at end of file diff --git a/full/spec/src/main/asciidoc/license-efsl.asciidoc b/full/spec/src/main/asciidoc/license-efsl.asciidoc new file mode 100644 index 00000000..85993af3 --- /dev/null +++ b/full/spec/src/main/asciidoc/license-efsl.asciidoc @@ -0,0 +1,73 @@ +[subs="normal"] +.... +Specification: {doctitle} +Version: {revnumber} +Status: {revremark} +Release: {revdate} +.... + +== Copyright + +Copyright (c) {inceptionYear}, {currentYear} Eclipse Foundation. + +=== Eclipse Foundation Specification License + +By using and/or copying this document, or the Eclipse Foundation +document from which this statement is linked, you (the licensee) agree +that you have read, understood, and will comply with the following +terms and conditions: + +Permission to copy, and distribute the contents of this document, or +the Eclipse Foundation document from which this statement is linked, in +any medium for any purpose and without fee or royalty is hereby +granted, provided that you include the following on ALL copies of the +document, or portions thereof, that you use: + +* link or URL to the original Eclipse Foundation document. +* All existing copyright notices, or if one does not exist, a notice + (hypertext is preferred, but a textual representation is permitted) + of the form: "Copyright (c) [$date-of-document] + Eclipse Foundation, Inc. \<>" + +Inclusion of the full text of this NOTICE must be provided. We +request that authorship attribution be provided in any software, +documents, or other items or products that you create pursuant to the +implementation of the contents of this document, or any portion +thereof. + +No right to create modifications or derivatives of Eclipse Foundation +documents is granted pursuant to this license, except anyone may +prepare and distribute derivative works and portions of this document +in software that implements the specification, in supporting materials +accompanying such software, and in documentation of such software, +PROVIDED that all such works include the notice below. HOWEVER, the +publication of derivative works of this document for use as a technical +specification is expressly prohibited. + +The notice is: + +"Copyright (c) [$date-of-document] Eclipse Foundation. This software or +document includes material copied from or derived from [title and URI +of the Eclipse Foundation specification document]." + +==== Disclaimers + +THIS DOCUMENT IS PROVIDED "AS IS," AND THE COPYRIGHT +HOLDERS AND THE ECLIPSE FOUNDATION MAKE NO REPRESENTATIONS OR +WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, +NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE +SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS +WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR +OTHER RIGHTS. + +THE COPYRIGHT HOLDERS AND THE ECLIPSE FOUNDATION WILL NOT BE LIABLE +FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT +OF ANY USE OF THE DOCUMENT OR THE PERFORMANCE OR IMPLEMENTATION OF THE +CONTENTS THEREOF. + +The name and trademarks of the copyright holders or the Eclipse +Foundation may NOT be used in advertising or publicity pertaining to +this document or its contents without specific, written prior +permission. Title to copyright in this document will at all times +remain with copyright holders. diff --git a/pom.xml b/pom.xml index 5f43e278..8e484ef0 100644 --- a/pom.xml +++ b/pom.xml @@ -41,6 +41,7 @@ 7.4.0 1.6.0.Final + 3.8.1 2.1.0 @@ -48,7 +49,9 @@ MMMM dd, yyyy ${maven.build.timestamp} Draft - Apache License v 2.0 + 2019 + + Eclipse Foundation Specification License v1.0 @@ -221,7 +224,12 @@ coderay true - ${license} + ${license} + ${project.version} + ${revremark} + ${revisiondate} + ${currentYear} + ${inceptionYear} @@ -240,6 +248,12 @@ + + org.codehaus.mojo + build-helper-maven-plugin + 3.0.0 + + @@ -248,6 +262,9 @@ org.apache.maven.plugins maven-javadoc-plugin + + 8 + attach-javadocs @@ -365,7 +382,10 @@ - bnd.bnd + .travis.yml.* + **/bnd.bnd + **/target/ + *.log .checkstyle .factorypath @@ -373,6 +393,11 @@ src/test/resources/*/*.json *.drawio .vscode/* + nb**.xml + **/bin/ + **/*.iml + **/*.idea + **/*.ipr **/*.json **/*.graphql **/*.properties @@ -382,10 +407,32 @@ **/.project **/.github/** **/resources/generated/** + **/license.html + **/license-efsl.adoc + **/license-efsl.asciidoc + **/LICENSE* + + org.codehaus.mojo + build-helper-maven-plugin + + + timestamp-property + + timestamp-property + + validate + + currentYear + yyyy + + + + + @@ -431,6 +478,7 @@ org.apache.maven.plugins maven-gpg-plugin + 1.6 sign-artifacts diff --git a/server/api/pom.xml b/server/api/pom.xml index f6274f07..c5b94eb0 100644 --- a/server/api/pom.xml +++ b/server/api/pom.xml @@ -43,7 +43,66 @@ + + maven-resources-plugin + 3.2.0 + + + copy-resources + validate + + copy-resources + + + ${basedir}/target/apidocs/doc-files/ + true + + + src/main/javadoc/licenses/${revremark}/ + true + + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + false + true + true + none + ${project.name} + ${project.name} +
${project.name} v${project.version}]]>
+ + + Use is subject to license terms. + ]]> + + + + implSpec + a + Implementation Specification: + + +
+ + + attach-javadocs + + jar + + + +
+ biz.aQute.bnd bnd-maven-plugin diff --git a/server/api/src/main/javadoc/licenses/Draft/license.html b/server/api/src/main/javadoc/licenses/Draft/license.html new file mode 100644 index 00000000..994b5f85 --- /dev/null +++ b/server/api/src/main/javadoc/licenses/Draft/license.html @@ -0,0 +1,27 @@ + + +Apache License - Version 2 + + +

Apache License - Version 2

+

+Copyright (c) ${inceptionYear}-${currentYear} Contributors to the Eclipse Foundation +

+

+Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at +

+

+ + http://www.apache.org/licenses/LICENSE-2.0 +

+

+Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +

+ + \ No newline at end of file diff --git a/server/api/src/main/javadoc/licenses/Final/license.html b/server/api/src/main/javadoc/licenses/Final/license.html new file mode 100644 index 00000000..be52b4f2 --- /dev/null +++ b/server/api/src/main/javadoc/licenses/Final/license.html @@ -0,0 +1,72 @@ + + +Eclipse Foundation Specification License - v1.0 + + +

Eclipse Foundation Specification License - v1.0

+

By using and/or copying this document, or the Eclipse Foundation + document from which this statement is linked, you (the licensee) agree + that you have read, understood, and will comply with the following + terms and conditions:

+ +

Permission to copy, and distribute the contents of this document, or + the Eclipse Foundation document from which this statement is linked, in + any medium for any purpose and without fee or royalty is hereby + granted, provided that you include the following on ALL copies of the + document, or portions thereof, that you use:

+ +
    +
  • link or URL to the original Eclipse Foundation document.
  • +
  • All existing copyright notices, or if one does not exist, a notice + (hypertext is preferred, but a textual representation is permitted) + of the form: "Copyright © [$date-of-document] + “Eclipse Foundation, Inc. <<url to this license>> + " +
  • +
+ +

Inclusion of the full text of this NOTICE must be provided. We + request that authorship attribution be provided in any software, + documents, or other items or products that you create pursuant to the + implementation of the contents of this document, or any portion + thereof.

+ +

No right to create modifications or derivatives of Eclipse Foundation + documents is granted pursuant to this license, except anyone may + prepare and distribute derivative works and portions of this document + in software that implements the specification, in supporting materials + accompanying such software, and in documentation of such software, + PROVIDED that all such works include the notice below. HOWEVER, the + publication of derivative works of this document for use as a technical + specification is expressly prohibited.

+ +

The notice is:

+ +

"Copyright © [$date-of-document] Eclipse Foundation. This software or + document includes material copied from or derived from [title and URI + of the Eclipse Foundation specification document]."

+ +

Disclaimers

+ +

THIS DOCUMENT IS PROVIDED "AS IS," AND THE COPYRIGHT + HOLDERS AND THE ECLIPSE FOUNDATION MAKE NO REPRESENTATIONS OR + WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, + WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, + NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE + SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS + WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR + OTHER RIGHTS.

+ +

THE COPYRIGHT HOLDERS AND THE ECLIPSE FOUNDATION WILL NOT BE LIABLE + FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT + OF ANY USE OF THE DOCUMENT OR THE PERFORMANCE OR IMPLEMENTATION OF THE + CONTENTS THEREOF.

+ +

The name and trademarks of the copyright holders or the Eclipse + Foundation may NOT be used in advertising or publicity pertaining to + this document or its contents without specific, written prior + permission. Title to copyright in this document will at all times + remain with copyright holders.

+ + + diff --git a/server/spec/pom.xml b/server/spec/pom.xml index 51073280..cb06aac7 100644 --- a/server/spec/pom.xml +++ b/server/spec/pom.xml @@ -29,6 +29,11 @@ MicroProfile GraphQL Server :: Specification Server-side code-first GraphQL APIs for MicroProfile :: Specification + + ${project.build.directory}/generated-docs/${project.build.finalName}.pdf + ${project.build.directory}/generated-docs/${project.build.finalName}.html + + clean package @@ -45,6 +50,7 @@ process-asciidoc + ${spec.pdf} pdf
@@ -55,13 +61,39 @@ process-asciidoc + ${spec.html} html5
- + + org.codehaus.mojo + build-helper-maven-plugin + + + attach-artifacts + package + + attach-artifact + + + + + ${spec.pdf} + pdf + + + ${spec.html} + html + + + + + + + \ No newline at end of file diff --git a/server/spec/src/main/asciidoc/index.asciidoc b/server/spec/src/main/asciidoc/index.asciidoc index 2ef908a5..77ccc340 100644 --- a/server/spec/src/main/asciidoc/index.asciidoc +++ b/server/spec/src/main/asciidoc/index.asciidoc @@ -23,15 +23,17 @@ :version-label!: :sectanchors: :doctype: book -:license: Apache License v2.0 +:license: Eclipse Foundation Specification License v1.0 :source-highlighter: coderay +:sectnums: :toc: left :toclevels: 4 :sectnumlevels: 4 ifdef::backend-pdf[] :pagenums: +:numbered: endif::[] -include::license-alv2.asciidoc[] +include::license-efsl.asciidoc[] include::server.asciidoc[] diff --git a/server/spec/src/main/asciidoc/license-efsl.asciidoc b/server/spec/src/main/asciidoc/license-efsl.asciidoc new file mode 100644 index 00000000..85993af3 --- /dev/null +++ b/server/spec/src/main/asciidoc/license-efsl.asciidoc @@ -0,0 +1,73 @@ +[subs="normal"] +.... +Specification: {doctitle} +Version: {revnumber} +Status: {revremark} +Release: {revdate} +.... + +== Copyright + +Copyright (c) {inceptionYear}, {currentYear} Eclipse Foundation. + +=== Eclipse Foundation Specification License + +By using and/or copying this document, or the Eclipse Foundation +document from which this statement is linked, you (the licensee) agree +that you have read, understood, and will comply with the following +terms and conditions: + +Permission to copy, and distribute the contents of this document, or +the Eclipse Foundation document from which this statement is linked, in +any medium for any purpose and without fee or royalty is hereby +granted, provided that you include the following on ALL copies of the +document, or portions thereof, that you use: + +* link or URL to the original Eclipse Foundation document. +* All existing copyright notices, or if one does not exist, a notice + (hypertext is preferred, but a textual representation is permitted) + of the form: "Copyright (c) [$date-of-document] + Eclipse Foundation, Inc. \<>" + +Inclusion of the full text of this NOTICE must be provided. We +request that authorship attribution be provided in any software, +documents, or other items or products that you create pursuant to the +implementation of the contents of this document, or any portion +thereof. + +No right to create modifications or derivatives of Eclipse Foundation +documents is granted pursuant to this license, except anyone may +prepare and distribute derivative works and portions of this document +in software that implements the specification, in supporting materials +accompanying such software, and in documentation of such software, +PROVIDED that all such works include the notice below. HOWEVER, the +publication of derivative works of this document for use as a technical +specification is expressly prohibited. + +The notice is: + +"Copyright (c) [$date-of-document] Eclipse Foundation. This software or +document includes material copied from or derived from [title and URI +of the Eclipse Foundation specification document]." + +==== Disclaimers + +THIS DOCUMENT IS PROVIDED "AS IS," AND THE COPYRIGHT +HOLDERS AND THE ECLIPSE FOUNDATION MAKE NO REPRESENTATIONS OR +WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, +NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS OF THE DOCUMENT ARE +SUITABLE FOR ANY PURPOSE; NOR THAT THE IMPLEMENTATION OF SUCH CONTENTS +WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR +OTHER RIGHTS. + +THE COPYRIGHT HOLDERS AND THE ECLIPSE FOUNDATION WILL NOT BE LIABLE +FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT +OF ANY USE OF THE DOCUMENT OR THE PERFORMANCE OR IMPLEMENTATION OF THE +CONTENTS THEREOF. + +The name and trademarks of the copyright holders or the Eclipse +Foundation may NOT be used in advertising or publicity pertaining to +this document or its contents without specific, written prior +permission. Title to copyright in this document will at all times +remain with copyright holders. diff --git a/server/tck/pom.xml b/server/tck/pom.xml index bd99dfc1..2886e0d2 100644 --- a/server/tck/pom.xml +++ b/server/tck/pom.xml @@ -115,6 +115,42 @@ + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${maven.compiler.source} + ${maven.compiler.target} + + + + + org.apache.maven.plugins + maven-resources-plugin + 3.2.0 + + + copy-licenses + validate + + copy-resources + + + ${basedir}/target/classes/META-INF/ + true + + + src/main/licenses/${revremark}/ + true + + + + + + + diff --git a/server/tck/src/main/licenses/Draft/LICENSE b/server/tck/src/main/licenses/Draft/LICENSE new file mode 100644 index 00000000..5c304d1a --- /dev/null +++ b/server/tck/src/main/licenses/Draft/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/server/tck/src/main/licenses/Final/LICENSE b/server/tck/src/main/licenses/Final/LICENSE new file mode 100644 index 00000000..c858c0ad --- /dev/null +++ b/server/tck/src/main/licenses/Final/LICENSE @@ -0,0 +1,83 @@ +Eclipse Foundation Technology Compatibility Kit License - v 1.0 + +Copyright (c) 2018, Eclipse Foundation, Inc. and its licensors. + +Redistribution and use in binary form is permitted provided that the +following conditions are met: + +1. Use of the Technology Compatibility Kit accompanying this license + (the "TCK") and its documentation is permitted solely for the + purpose of testing compatibility of an implementation (the + "Product") of a specification (the "Specification") made available + by the Eclipse Foundation, Inc. ("Eclipse"). + +2. Only those modifications expressly permitted by the TCK and its + documentation are permitted. Except in these limited circumstances, + no modifications to the TCK are permitted under this license. + +3. A Product will be deemed to be "compatible" with the Specification + if it fully and completely meets and satisfies all requirements of + the TCK. + +4. Before any claim of compatibility (or any similar claim suggesting + compatibility) is made based on the TCK, the testing party must: + + a. use the TCK to demonstrate that the Product fully and + completely meets and satisfies all requirements of the TCK; + + b. make TCK test results showing full and complete satisfaction of + all requirements of the TCK publicly available on the testing + party's website and send a link to such test results to Eclipse + at [tck@eclipse.org](mailto:tck@eclipse.org); and + + c. comply with any requirements stated in the Specification with + regard to subsetting, supersetting, modifying or extending the + Specification in any Product claimed to be compatible with the + Specification. + +5. The test results must be continuously available and the link must + be live for at least as long as the Product is available in the + marketplace. + +6. The TCK may not be used as a basis for any statements of partial + compatibility. The TCK may only be used as a basis for true, + factual statements of full compatibility of Products that fully + meet and satisfy all requirements of the TCK. + +7. A determination that a Product is compatible with the TCK does not, + in itself, give rise to the right to use any name, mark, logo + associated with the TCK, Eclipse, or Eclipse's contributors or + licensors. + +8. Upon the request of Eclipse, a tester will retract any statements + of compatibility (or any similar claim suggesting compatibility) + which Eclipse reasonably determines to be false or misleading or in + violation of the terms of this license. + +9. Redistribution of the TCK must be under this Eclipse Foundation + Technology Compatibility Kit License and must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + +10. Neither the name, trademarks or logos of Eclipse, nor the names, + trademarks or logos of its contributors or licensors may be used to + endorse or promote products tested with this software without + specific prior written permission. + +11. The source code for the TCK accompanying this license is available + from Eclipse. + +TO THE EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED ON +AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER +EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR +CONDITIONS OF TITLE, NON- INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR +A PARTICULAR PURPOSE. TO THE EXTENT PERMITTED BY APPLICABLE LAW, +NEITHER THE COPYRIGHT OWNER OR ANY CONTRIBUTORS SHALL HAVE ANY +LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE +EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. diff --git a/server/tck/src/main/resources/tests/schemaTests.csv b/server/tck/src/main/resources/tests/schemaTests.csv index 99f2b942..b58b74f9 100644 --- a/server/tck/src/main/resources/tests/schemaTests.csv +++ b/server/tck/src/main/resources/tests/schemaTests.csv @@ -105,4 +105,12 @@ 58|type Query | "Super hero name, not real name" | Expecting a description for the name parameter on the exportToFile query # testJsonDefault -59|type Mutation | provisionHero(hero: String, item: ItemInput = { id: 1000, name: "Cape", powerLevel: 3, height: 1.2, weight: 0.3, supernatural: false, dateCreated: "19 February 1900 at 12:00 in Africa/Johannesburg", dateLastUsed: "29 Jan 2020 at 09:45 in zone +0200"} 'OR' provisionHero(hero: String, item: ItemInput = {dateCreated : "19 February 1900 at 12:00 in Africa/Johannesburg", dateLastUsed : "29 Jan 2020 at 09:45 in zone +0200", height : 1.2, id : 1000, name : "Cape", powerLevel : 3, supernatural : false, weight : 0.3}) | Expecting a default value for item for provisionHero \ No newline at end of file +59|type Mutation | provisionHero(hero: String, item: ItemInput = { | Expecting a default value for item for provisionHero +60|type Mutation | id : 1000 | Expecting an id in the default value for item for provisionHero +61|type Mutation | name : "Cape" | Expecting a name in the default value for item for provisionHero +62|type Mutation | powerLevel : 3 | Expecting a powerLevel in the default value for item for provisionHero +63|type Mutation | height : 1.2 | Expecting a height in the default value for item for provisionHero +64|type Mutation | weight : 0.3 | Expecting a weight in the default value for item for provisionHero +65|type Mutation | supernatural : false | Expecting a supernatural in the default value for item for provisionHero +66|type Mutation | dateCreated : "19 February 1900 at 12:00 in Africa/Johannesburg" | Expecting a dateCreated in the default value for item for provisionHero +67|type Mutation | dateLastUsed : "29 Jan 2020 at 09:45 in zone +0200" | Expecting a dateLastUsed in the default value for item for provisionHero From e3189fe17b0d67444c549bddd507f4eb5ead6d54 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Mar 2021 05:50:00 +0000 Subject: [PATCH 103/248] Bump build-helper-maven-plugin from 3.0.0 to 3.2.0 Bumps [build-helper-maven-plugin](https://github.com/mojohaus/build-helper-maven-plugin) from 3.0.0 to 3.2.0. - [Release notes](https://github.com/mojohaus/build-helper-maven-plugin/releases) - [Commits](https://github.com/mojohaus/build-helper-maven-plugin/compare/build-helper-maven-plugin-3.0.0...build-helper-maven-plugin-3.2.0) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8e484ef0..a8387f9e 100644 --- a/pom.xml +++ b/pom.xml @@ -251,7 +251,7 @@ org.codehaus.mojo build-helper-maven-plugin - 3.0.0 + 3.2.0 From 2a96918c6f33aa6c0a6d6303557b015f1c4b390c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Apr 2021 06:38:56 +0000 Subject: [PATCH 104/248] Bump asciidoctorj-diagram from 2.1.0 to 2.1.2 Bumps [asciidoctorj-diagram](https://github.com/asciidoctor/asciidoctorj-diagram) from 2.1.0 to 2.1.2. - [Release notes](https://github.com/asciidoctor/asciidoctorj-diagram/releases) - [Commits](https://github.com/asciidoctor/asciidoctorj-diagram/compare/v2.1.0...v2.1.2) Signed-off-by: dependabot[bot] --- client/spec/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/spec/pom.xml b/client/spec/pom.xml index 3f636654..c6b29c99 100644 --- a/client/spec/pom.xml +++ b/client/spec/pom.xml @@ -62,7 +62,7 @@ org.asciidoctor asciidoctorj-diagram - 2.1.0 + 2.1.2 From f35994055d2117080a74ae53a8be747b844aa685 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 May 2021 06:49:05 +0000 Subject: [PATCH 105/248] Bump maven-gpg-plugin from 1.6 to 3.0.1 Bumps [maven-gpg-plugin](https://github.com/apache/maven-gpg-plugin) from 1.6 to 3.0.1. - [Release notes](https://github.com/apache/maven-gpg-plugin/releases) - [Commits](https://github.com/apache/maven-gpg-plugin/compare/maven-gpg-plugin-1.6...maven-gpg-plugin-3.0.1) Signed-off-by: dependabot[bot] --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index a8387f9e..e75290f5 100644 --- a/pom.xml +++ b/pom.xml @@ -206,7 +206,7 @@ org.apache.maven.plugins maven-gpg-plugin - 1.6 + 3.0.1 biz.aQute.bnd @@ -478,7 +478,7 @@ org.apache.maven.plugins maven-gpg-plugin - 1.6 + 3.0.1 sign-artifacts From d3cd9b9a2d1e9511cd09d0fc4e3bd528c334a6b9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 May 2021 05:11:29 +0000 Subject: [PATCH 106/248] Bump actions/checkout from 2 to 2.3.4 Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 2.3.4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v2...v2.3.4) Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ca4b6f38..f86bbbe0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ jobs: name: build with jdk ${{matrix.java}} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v2.3.4 name: checkout - uses: actions/setup-java@v1 From 6cda14048682b0671c89aaf269007574d7e4d601 Mon Sep 17 00:00:00 2001 From: Andy McCright Date: Wed, 12 May 2021 14:11:04 -0500 Subject: [PATCH 107/248] Update setup-java to v2 --- .github/workflows/build.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f86bbbe0..15ebdfde 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,10 +15,11 @@ jobs: - uses: actions/checkout@v2.3.4 name: checkout - - uses: actions/setup-java@v1 + - uses: actions/setup-java@v2 name: set up jdk ${{matrix.java}} with: + distribution: 'adopt' java-version: ${{matrix.java}} - name: build with maven - run: mvn -B verify javadoc:javadoc --file pom.xml \ No newline at end of file + run: mvn -B verify javadoc:javadoc --file pom.xml From 2252cacd6318b4dd047b232641557f5a1a1c2873 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 May 2021 06:20:31 +0000 Subject: [PATCH 108/248] Bump junit-jupiter from 5.7.1 to 5.7.2 Bumps [junit-jupiter](https://github.com/junit-team/junit5) from 5.7.1 to 5.7.2. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.7.1...r5.7.2) Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index a8f68b59..7f82f0a9 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -29,7 +29,7 @@ - 5.7.1 + 5.7.2 16.2 From d016e104d5f21cfbb09cfa5ff51b6cab3034975b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 May 2021 06:20:37 +0000 Subject: [PATCH 109/248] Bump asciidoctorj-pdf from 1.5.4 to 1.6.0 Bumps [asciidoctorj-pdf](https://github.com/asciidoctor/asciidoctorj-pdf) from 1.5.4 to 1.6.0. - [Release notes](https://github.com/asciidoctor/asciidoctorj-pdf/releases) - [Commits](https://github.com/asciidoctor/asciidoctorj-pdf/compare/v1.5.4...v1.6.0) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e75290f5..2d1154b6 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ 2.1.0 - 1.5.4 + 1.6.0 MMMM dd, yyyy ${maven.build.timestamp} Draft From 32ff2be00c89f9a66a44121bdf55e628696717ae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 May 2021 06:12:16 +0000 Subject: [PATCH 110/248] Bump maven-javadoc-plugin from 3.2.0 to 3.3.0 Bumps [maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.2.0 to 3.3.0. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.2.0...maven-javadoc-plugin-3.3.0) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2d1154b6..ffec5511 100644 --- a/pom.xml +++ b/pom.xml @@ -201,7 +201,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.3.0 org.apache.maven.plugins From 7f740f4306cdfebae82255016073f73f148b54d1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 May 2021 05:15:10 +0000 Subject: [PATCH 111/248] Bump commons-io from 2.8.0 to 2.9.0 Bumps commons-io from 2.8.0 to 2.9.0. Signed-off-by: dependabot[bot] --- server/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/tck/pom.xml b/server/tck/pom.xml index 2886e0d2..cc17e2f7 100644 --- a/server/tck/pom.xml +++ b/server/tck/pom.xml @@ -28,7 +28,7 @@ Server-side code-first GraphQL APIs for MicroProfile :: TCK - 2.8.0 + 2.9.0 1.5.0 From 7bfe1e8324f448964258328e4a4393c876d9393a Mon Sep 17 00:00:00 2001 From: Phillip Kruger Date: Fri, 4 Jun 2021 10:44:13 +0200 Subject: [PATCH 112/248] Bump the version to 2.0-SNAPSHOT Signed-off-by: Phillip Kruger --- client/api/pom.xml | 3 +-- client/pom.xml | 2 +- client/spec/pom.xml | 2 +- client/tck/pom.xml | 2 +- full/api/pom.xml | 2 +- full/pom.xml | 2 +- full/spec/pom.xml | 2 +- full/tck/pom.xml | 2 +- pom.xml | 32 +++----------------------------- server/api/pom.xml | 2 +- server/pom.xml | 2 +- server/spec/pom.xml | 2 +- server/tck/pom.xml | 2 +- 13 files changed, 15 insertions(+), 42 deletions(-) diff --git a/client/api/pom.xml b/client/api/pom.xml index 80a3dc52..a2f93465 100644 --- a/client/api/pom.xml +++ b/client/api/pom.xml @@ -19,7 +19,7 @@ org.eclipse.microprofile.graphql microprofile-graphql-client - 1.1-SNAPSHOT + 2.0-SNAPSHOT ../ @@ -32,7 +32,6 @@ jakarta.json jakarta.json-api - 1.1.6 provided diff --git a/client/pom.xml b/client/pom.xml index cd6e6800..36831c95 100644 --- a/client/pom.xml +++ b/client/pom.xml @@ -19,7 +19,7 @@ org.eclipse.microprofile.graphql microprofile-graphql-parent - 1.1-SNAPSHOT + 2.0-SNAPSHOT ../ diff --git a/client/spec/pom.xml b/client/spec/pom.xml index c6b29c99..66eaa75c 100644 --- a/client/spec/pom.xml +++ b/client/spec/pom.xml @@ -20,7 +20,7 @@ org.eclipse.microprofile.graphql microprofile-graphql-client - 1.1-SNAPSHOT + 2.0-SNAPSHOT ../ diff --git a/client/tck/pom.xml b/client/tck/pom.xml index 7f82f0a9..88b2f00b 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -19,7 +19,7 @@ org.eclipse.microprofile.graphql microprofile-graphql-client - 1.1-SNAPSHOT + 2.0-SNAPSHOT ../ diff --git a/full/api/pom.xml b/full/api/pom.xml index 984d61c2..766bac5f 100644 --- a/full/api/pom.xml +++ b/full/api/pom.xml @@ -19,7 +19,7 @@ org.eclipse.microprofile.graphql microprofile-graphql-full - 1.1-SNAPSHOT + 2.0-SNAPSHOT ../ diff --git a/full/pom.xml b/full/pom.xml index 9ea0beae..f6dcf32b 100644 --- a/full/pom.xml +++ b/full/pom.xml @@ -19,7 +19,7 @@ org.eclipse.microprofile.graphql microprofile-graphql-parent - 1.1-SNAPSHOT + 2.0-SNAPSHOT ../ diff --git a/full/spec/pom.xml b/full/spec/pom.xml index 8503f4c4..60990ead 100644 --- a/full/spec/pom.xml +++ b/full/spec/pom.xml @@ -19,7 +19,7 @@ org.eclipse.microprofile.graphql microprofile-graphql-full - 1.1-SNAPSHOT + 2.0-SNAPSHOT ../ diff --git a/full/tck/pom.xml b/full/tck/pom.xml index 8f248570..355e518d 100644 --- a/full/tck/pom.xml +++ b/full/tck/pom.xml @@ -19,7 +19,7 @@ org.eclipse.microprofile.graphql microprofile-graphql-full - 1.1-SNAPSHOT + 2.0-SNAPSHOT ../ diff --git a/pom.xml b/pom.xml index ffec5511..2ab771b6 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ org.eclipse.microprofile.graphql microprofile-graphql-parent - 1.1-SNAPSHOT + 2.0-SNAPSHOT MicroProfile GraphQL @@ -112,40 +112,14 @@ - - - - - jakarta.enterprise - jakarta.enterprise.cdi-api - ${cdi-api.version} - provided - - - jakarta.el - jakarta.el-api - - - - - jakarta.json.bind - jakarta.json.bind-api - ${jsonb-api.version} - provided - - jakarta.json - jakarta.json-api - ${jsonp-api.version} - provided - - + org.testng diff --git a/server/api/pom.xml b/server/api/pom.xml index c5b94eb0..0a946842 100644 --- a/server/api/pom.xml +++ b/server/api/pom.xml @@ -19,7 +19,7 @@ org.eclipse.microprofile.graphql microprofile-graphql-server - 1.1-SNAPSHOT + 2.0-SNAPSHOT ../ diff --git a/server/pom.xml b/server/pom.xml index 81f887a7..3ba3b0c5 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -19,7 +19,7 @@ org.eclipse.microprofile.graphql microprofile-graphql-parent - 1.1-SNAPSHOT + 2.0-SNAPSHOT ../ diff --git a/server/spec/pom.xml b/server/spec/pom.xml index cb06aac7..7a4cc3c5 100644 --- a/server/spec/pom.xml +++ b/server/spec/pom.xml @@ -19,7 +19,7 @@ org.eclipse.microprofile.graphql microprofile-graphql-server - 1.1-SNAPSHOT + 2.0-SNAPSHOT ../ diff --git a/server/tck/pom.xml b/server/tck/pom.xml index cc17e2f7..a61e7d41 100644 --- a/server/tck/pom.xml +++ b/server/tck/pom.xml @@ -19,7 +19,7 @@ org.eclipse.microprofile.graphql microprofile-graphql-server - 1.1-SNAPSHOT + 2.0-SNAPSHOT ../ From 6a3ba65ca10c26ce07d4b6503c3bbff41cbcab18 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Jun 2021 06:08:49 +0000 Subject: [PATCH 113/248] Bump microprofile from 4.0 to 4.0.1 Bumps [microprofile](https://github.com/eclipse/microprofile) from 4.0 to 4.0.1. - [Release notes](https://github.com/eclipse/microprofile/releases) - [Commits](https://github.com/eclipse/microprofile/compare/4.0...4.0.1) --- updated-dependencies: - dependency-name: org.eclipse.microprofile:microprofile dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2ab771b6..a7739f63 100644 --- a/pom.xml +++ b/pom.xml @@ -33,7 +33,7 @@ 1.8 - 4.0 + 4.0.1 2.0.2 1.1.6 1.0.2 From 3c8f177abd0418bf604f248900843da4d0497362 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Jun 2021 06:35:48 +0000 Subject: [PATCH 114/248] Bump commons-io from 2.9.0 to 2.10.0 Bumps commons-io from 2.9.0 to 2.10.0. --- updated-dependencies: - dependency-name: commons-io:commons-io dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- server/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/tck/pom.xml b/server/tck/pom.xml index a61e7d41..a854258e 100644 --- a/server/tck/pom.xml +++ b/server/tck/pom.xml @@ -28,7 +28,7 @@ Server-side code-first GraphQL APIs for MicroProfile :: TCK - 2.9.0 + 2.10.0 1.5.0 From fae096ddc0ba7860dc0df66b30ef93234d3ab9c1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Jul 2021 23:02:28 +0000 Subject: [PATCH 115/248] Bump commons-io from 2.10.0 to 2.11.0 Bumps commons-io from 2.10.0 to 2.11.0. --- updated-dependencies: - dependency-name: commons-io:commons-io dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- server/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/tck/pom.xml b/server/tck/pom.xml index a854258e..069378a4 100644 --- a/server/tck/pom.xml +++ b/server/tck/pom.xml @@ -28,7 +28,7 @@ Server-side code-first GraphQL APIs for MicroProfile :: TCK - 2.10.0 + 2.11.0 1.5.0 From 51a60a2d6f3874ba5f0f2904f16b3cc54c8e1ad1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=BCdiger=20zu=20Dohna?= Date: Fri, 16 Jul 2021 05:34:44 +0200 Subject: [PATCH 116/248] fix link to spec --- README.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.asciidoc b/README.asciidoc index 9125b086..9dc35570 100644 --- a/README.asciidoc +++ b/README.asciidoc @@ -22,7 +22,7 @@ image:https://badges.gitter.im/eclipse/microprofile-graphql.svg[link="https://gi = Microprofile GraphQL Specification -Read the https://download.eclipse.org/microprofile/microprofile-graphql-1.0.3/microprofile-graphql.html[MicroProfile GraphQL 1.0.3] Specification +Read the https://download.eclipse.org/microprofile/microprofile-graphql-1.1.0/microprofile-graphql-spec-1.1.0.html[MicroProfile GraphQL 1.1.0] Specification == Structure From 3da1fa9e95bd9408eb7624ec1a5b459e9b341bc2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Jul 2021 23:02:46 +0000 Subject: [PATCH 117/248] Bump asciidoctor-maven-plugin from 2.1.0 to 2.2.0 Bumps [asciidoctor-maven-plugin](https://github.com/asciidoctor/asciidoctor-maven-plugin) from 2.1.0 to 2.2.0. - [Release notes](https://github.com/asciidoctor/asciidoctor-maven-plugin/releases) - [Changelog](https://github.com/asciidoctor/asciidoctor-maven-plugin/blob/main/CHANGELOG.adoc) - [Commits](https://github.com/asciidoctor/asciidoctor-maven-plugin/compare/asciidoctor-maven-plugin-2.1.0...asciidoctor-maven-plugin-2.2.0) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctor-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a7739f63..9d953f77 100644 --- a/pom.xml +++ b/pom.xml @@ -44,7 +44,7 @@ 3.8.1 - 2.1.0 + 2.2.0 1.6.0 MMMM dd, yyyy ${maven.build.timestamp} From af2c07b85dbd5351cc7a634f28f0dbc62a5a9404 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 20 Jul 2021 23:02:09 +0000 Subject: [PATCH 118/248] Bump microprofile from 4.0.1 to 4.1 Bumps [microprofile](https://github.com/eclipse/microprofile) from 4.0.1 to 4.1. - [Release notes](https://github.com/eclipse/microprofile/releases) - [Commits](https://github.com/eclipse/microprofile/compare/4.0.1...4.1) --- updated-dependencies: - dependency-name: org.eclipse.microprofile:microprofile dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9d953f77..a3aa96bb 100644 --- a/pom.xml +++ b/pom.xml @@ -33,7 +33,7 @@ 1.8 - 4.0.1 + 4.1 2.0.2 1.1.6 1.0.2 From a621dc93fb5ca8794a03cf70521fa41307f49445 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Jul 2021 23:03:11 +0000 Subject: [PATCH 119/248] Bump asciidoctor-maven-plugin from 2.2.0 to 2.2.1 Bumps [asciidoctor-maven-plugin](https://github.com/asciidoctor/asciidoctor-maven-plugin) from 2.2.0 to 2.2.1. - [Release notes](https://github.com/asciidoctor/asciidoctor-maven-plugin/releases) - [Changelog](https://github.com/asciidoctor/asciidoctor-maven-plugin/blob/main/CHANGELOG.adoc) - [Commits](https://github.com/asciidoctor/asciidoctor-maven-plugin/compare/asciidoctor-maven-plugin-2.2.0...2.2.1) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctor-maven-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a3aa96bb..e20e00ff 100644 --- a/pom.xml +++ b/pom.xml @@ -44,7 +44,7 @@ 3.8.1 - 2.2.0 + 2.2.1 1.6.0 MMMM dd, yyyy ${maven.build.timestamp} From 20740b951cce219a5ba228c2624430ea63af97cd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Aug 2021 23:02:08 +0000 Subject: [PATCH 120/248] Bump asciidoctorj-diagram from 2.1.2 to 2.2.0 Bumps [asciidoctorj-diagram](https://github.com/asciidoctor/asciidoctorj-diagram) from 2.1.2 to 2.2.0. - [Release notes](https://github.com/asciidoctor/asciidoctorj-diagram/releases) - [Commits](https://github.com/asciidoctor/asciidoctorj-diagram/compare/v2.1.2...v2.2.0) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-diagram dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- client/spec/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/spec/pom.xml b/client/spec/pom.xml index 66eaa75c..c15810d1 100644 --- a/client/spec/pom.xml +++ b/client/spec/pom.xml @@ -62,7 +62,7 @@ org.asciidoctor asciidoctorj-diagram - 2.1.2 + 2.2.0 From cfb717f12c02a553d92a0c517843d035dd496189 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Aug 2021 23:02:10 +0000 Subject: [PATCH 121/248] Bump graphql-java from 16.2 to 17.2 Bumps [graphql-java](https://github.com/graphql-java/graphql-java) from 16.2 to 17.2. - [Release notes](https://github.com/graphql-java/graphql-java/releases) - [Commits](https://github.com/graphql-java/graphql-java/compare/v16.2...v17.2) --- updated-dependencies: - dependency-name: com.graphql-java:graphql-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index 88b2f00b..e6f9052e 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -30,7 +30,7 @@ 5.7.2 - 16.2 + 17.2 From 5b04edc877565488dc48769504906f278993a138 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Sep 2021 23:02:35 +0000 Subject: [PATCH 122/248] Bump asciidoctorj-diagram from 2.2.0 to 2.2.1 Bumps [asciidoctorj-diagram](https://github.com/asciidoctor/asciidoctorj-diagram) from 2.2.0 to 2.2.1. - [Release notes](https://github.com/asciidoctor/asciidoctorj-diagram/releases) - [Commits](https://github.com/asciidoctor/asciidoctorj-diagram/compare/v2.2.0...v2.2.1) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-diagram dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- client/spec/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/spec/pom.xml b/client/spec/pom.xml index c15810d1..294143fe 100644 --- a/client/spec/pom.xml +++ b/client/spec/pom.xml @@ -62,7 +62,7 @@ org.asciidoctor asciidoctorj-diagram - 2.2.0 + 2.2.1 From 3297de656720a9d7a3038f3f465a498b54edfc02 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Sep 2021 23:02:18 +0000 Subject: [PATCH 123/248] Bump maven-javadoc-plugin from 3.3.0 to 3.3.1 Bumps [maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.3.0 to 3.3.1. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.3.0...maven-javadoc-plugin-3.3.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e20e00ff..afbc1e94 100644 --- a/pom.xml +++ b/pom.xml @@ -175,7 +175,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.3.0 + 3.3.1 org.apache.maven.plugins From b2f21d3b0bb31ef98202f2ecbf04d778c1eb1626 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Sep 2021 23:03:19 +0000 Subject: [PATCH 124/248] Bump junit-jupiter from 5.7.2 to 5.8.0 Bumps [junit-jupiter](https://github.com/junit-team/junit5) from 5.7.2 to 5.8.0. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.7.2...r5.8.0) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index e6f9052e..85170cd6 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -29,7 +29,7 @@ - 5.7.2 + 5.8.0 17.2 From d832a34e700e7dea64b6002c71603618a19860be Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Sep 2021 23:01:59 +0000 Subject: [PATCH 125/248] Bump graphql-java from 17.2 to 17.3 Bumps [graphql-java](https://github.com/graphql-java/graphql-java) from 17.2 to 17.3. - [Release notes](https://github.com/graphql-java/graphql-java/releases) - [Commits](https://github.com/graphql-java/graphql-java/compare/v17.2...v17.3) --- updated-dependencies: - dependency-name: com.graphql-java:graphql-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index 85170cd6..d4871116 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -30,7 +30,7 @@ 5.8.0 - 17.2 + 17.3 From 4dce7acc968d3d3f83d36bdb9bade2190924a532 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Sep 2021 23:02:09 +0000 Subject: [PATCH 126/248] Bump junit-jupiter from 5.8.0 to 5.8.1 Bumps [junit-jupiter](https://github.com/junit-team/junit5) from 5.8.0 to 5.8.1. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.8.0...r5.8.1) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index d4871116..cf5baae7 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -29,7 +29,7 @@ - 5.8.0 + 5.8.1 17.3 From af1a4c1495545c83cea3183ea3a719f57d0f7464 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Oct 2021 23:02:13 +0000 Subject: [PATCH 127/248] Bump bnd-maven-plugin from 5.3.0 to 6.0.0 Bumps [bnd-maven-plugin](https://github.com/bndtools/bnd) from 5.3.0 to 6.0.0. - [Release notes](https://github.com/bndtools/bnd/releases) - [Changelog](https://github.com/bndtools/bnd/blob/master/docs/ADDING_RELEASE_DOCS.md) - [Commits](https://github.com/bndtools/bnd/commits/6.0.0) --- updated-dependencies: - dependency-name: biz.aQute.bnd:bnd-maven-plugin dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index afbc1e94..1879512c 100644 --- a/pom.xml +++ b/pom.xml @@ -185,7 +185,7 @@ biz.aQute.bnd bnd-maven-plugin - 5.3.0 + 6.0.0 org.asciidoctor From 3a9dec39ac6ca0e6febcf419d55e97f5ab7a5904 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Oct 2021 23:02:40 +0000 Subject: [PATCH 128/248] Bump org.osgi.annotation.versioning from 1.1.1 to 1.1.2 Bumps [org.osgi.annotation.versioning](https://github.com/osgi/osgi) from 1.1.1 to 1.1.2. - [Release notes](https://github.com/osgi/osgi/releases) - [Commits](https://github.com/osgi/osgi/commits) --- updated-dependencies: - dependency-name: org.osgi:org.osgi.annotation.versioning dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- server/api/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/api/pom.xml b/server/api/pom.xml index 0a946842..9f94ea3a 100644 --- a/server/api/pom.xml +++ b/server/api/pom.xml @@ -31,7 +31,7 @@ org.osgi org.osgi.annotation.versioning - 1.1.1 + 1.1.2 provided From 01508118dd70002168e7d620dfc1704a7a16d223 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 15 Oct 2021 23:02:32 +0000 Subject: [PATCH 129/248] Bump actions/checkout from 2.3.4 to 2.3.5 Bumps [actions/checkout](https://github.com/actions/checkout) from 2.3.4 to 2.3.5. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v2.3.4...v2.3.5) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 15ebdfde..91dc11cf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ jobs: name: build with jdk ${{matrix.java}} steps: - - uses: actions/checkout@v2.3.4 + - uses: actions/checkout@v2.3.5 name: checkout - uses: actions/setup-java@v2 From 212bc701ae8b33f4b9590d16294cef0bfd3534f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Marti=C5=A1ka?= Date: Tue, 2 Nov 2021 10:09:22 +0100 Subject: [PATCH 130/248] Support for fragments in the client --- .../graphql/client/core/Argument.java | 1 - .../graphql/client/core/Document.java | 4 +- .../graphql/client/core/Enum.java | 1 - .../graphql/client/core/Field.java | 8 +- .../graphql/client/core/FieldOrFragment.java | 25 ++++++ .../graphql/client/core/Fragment.java | 80 +++++++++++++++++++ .../client/core/FragmentOrOperation.java | 25 ++++++ .../client/core/FragmentReference.java | 52 ++++++++++++ .../graphql/client/core/InlineFragment.java | 47 +++++++++++ .../graphql/client/core/InputObject.java | 2 +- .../graphql/client/core/Operation.java | 30 +++---- .../graphql/client/core/Variable.java | 4 +- .../graphql/client/core/VariableType.java | 4 +- .../client/tck/core/FragmentsTest.java | 48 +++++++++++ .../client/tck/core/InlineFragmentsTest.java | 48 +++++++++++ .../src/main/resources/core/fragments.graphql | 10 +++ .../resources/core/inlinefragments.graphql | 10 +++ 17 files changed, 371 insertions(+), 28 deletions(-) create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/FieldOrFragment.java create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Fragment.java create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/FragmentOrOperation.java create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/FragmentReference.java create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InlineFragment.java create mode 100644 client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/FragmentsTest.java create mode 100644 client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/InlineFragmentsTest.java create mode 100644 client/tck/src/main/resources/core/fragments.graphql create mode 100644 client/tck/src/main/resources/core/inlinefragments.graphql diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Argument.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Argument.java index 5528193c..89893a78 100644 --- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Argument.java +++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Argument.java @@ -15,7 +15,6 @@ */ package org.eclipse.microprofile.graphql.client.core; - import java.util.List; import static java.util.Arrays.asList; diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Document.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Document.java index afef5854..7e08cbb0 100644 --- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Document.java +++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Document.java @@ -25,7 +25,7 @@ public interface Document extends Buildable { /* Static factory methods */ - static Document document(Operation... operations) { + static Document document(FragmentOrOperation... operations) { Document document = getNewInstanceOf(Document.class); document.setOperations(asList(operations)); @@ -38,5 +38,5 @@ static Document document(Operation... operations) { */ List getOperations(); - void setOperations(List operations); + void setOperations(List operations); } diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Enum.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Enum.java index 6026e3a6..6a5eff54 100644 --- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Enum.java +++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Enum.java @@ -29,7 +29,6 @@ static Enum gqlEnum(String value) { return gqlEnum; } - /* Getter/Setter */ diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Field.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Field.java index 102a7173..f98f1318 100644 --- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Field.java +++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Field.java @@ -21,7 +21,7 @@ import static java.util.Collections.emptyList; import static org.eclipse.microprofile.graphql.client.core.utils.ServiceUtils.getNewInstanceOf; -public interface Field extends Buildable { +public interface Field extends FieldOrFragment { /* Static factory methods */ @@ -41,7 +41,7 @@ static Field field(String name) { } // (name, subfields) - static Field field(String name, Field... fields) { + static Field field(String name, FieldOrFragment... fields) { Field field = getNewInstanceOf(Field.class); field.setName(name); @@ -84,7 +84,7 @@ static Field field(String name, List args, Field... fields) { void setArguments(List arguments); - List getFields(); + List getFields(); - void setFields(List fields); + void setFields(List fields); } diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/FieldOrFragment.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/FieldOrFragment.java new file mode 100644 index 00000000..6136b4d9 --- /dev/null +++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/FieldOrFragment.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2020 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.eclipse.microprofile.graphql.client.core; + +/** + * Represents one of these nodes in a GraphQL document: + * - regular field (name), for example "color" + * - reference to a named fragment, for example "...comparisonFields" + * - an inline fragment, for example ("... on Person { name } ") + */ +public interface FieldOrFragment extends Buildable { +} diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Fragment.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Fragment.java new file mode 100644 index 00000000..65007467 --- /dev/null +++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Fragment.java @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2020 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.eclipse.microprofile.graphql.client.core; + +import java.util.List; + +import static org.eclipse.microprofile.graphql.client.core.utils.ServiceUtils.getNewInstanceOf; +import static java.util.Arrays.asList; + +/** + * Represents a named fragment definition in a GraphQL document. Such definition consists of a name, + * target type, and a set of fields. + */ +public interface Fragment extends FragmentOrOperation { + /* + * Static factory methods + */ + static List fragments(Fragment... fragments) { + return asList(fragments); + } + + static FragmentBuilder fragment(String name) { + return new FragmentBuilder(name); + } + + /* + * Getter/Setter + */ + String getName(); + + void setName(String name); + + String getTargetType(); + + void setTargetType(String name); + + List getFields(); + + void setFields(List fields); + + class FragmentBuilder { + + private String name; + + private String targetType; + + private List fields; + + FragmentBuilder(String name) { + this.name = name; + } + + public Fragment on(String targetType, FieldOrFragment... fields) { + this.targetType = targetType; + this.fields = asList(fields); + return build(); + } + + Fragment build() { + Fragment fragment = getNewInstanceOf(Fragment.class); + fragment.setName(name); + fragment.setTargetType(targetType); + fragment.setFields(fields); + return fragment; + } + } +} diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/FragmentOrOperation.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/FragmentOrOperation.java new file mode 100644 index 00000000..c067307c --- /dev/null +++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/FragmentOrOperation.java @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2020 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.eclipse.microprofile.graphql.client.core; + +/** + * Represents a node in a GraphQL document that can contain either an operation (query/mutation/subscription), + * or a definition of a named fragment. On the top level, a GraphQL document basically consists of a list + * of these nodes. + */ +public interface FragmentOrOperation extends Buildable { +} diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/FragmentReference.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/FragmentReference.java new file mode 100644 index 00000000..87afb761 --- /dev/null +++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/FragmentReference.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2020 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.eclipse.microprofile.graphql.client.core; + + +import static org.eclipse.microprofile.graphql.client.core.utils.ServiceUtils.getNewInstanceOf; + +/** + * Represents a reference to a named fragment. + */ +public interface FragmentReference extends FieldOrFragment { + + /** + * Create a fragment reference by specifying the name of the target fragment. + * In the resulting document, this will appear as `...FRAGMENTNAME` + */ + static FragmentReference fragmentRef(String name) { + FragmentReference ref = getNewInstanceOf(FragmentReference.class); + ref.setName(name); + return ref; + } + + /** + * Create a fragment reference by providing a built instance of a named fragment. + * This will actually only use the name of the fragment - in the resulting document, + * this will appear as `...FRAGMENTNAME` + */ + static FragmentReference fragmentRef(Fragment fragment) { + FragmentReference ref = getNewInstanceOf(FragmentReference.class); + ref.setName(fragment.getName()); + return ref; + } + + String getName(); + + void setName(String name); + +} diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InlineFragment.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InlineFragment.java new file mode 100644 index 00000000..0c8745e1 --- /dev/null +++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InlineFragment.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2020 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.eclipse.microprofile.graphql.client.core; + +import java.util.List; + +import static org.eclipse.microprofile.graphql.client.core.utils.ServiceUtils.getNewInstanceOf; +import static java.util.Arrays.asList; + +/** + * Represents an inline fragment in a GraphQL document. This can be used + * anywhere where a field is expected (thus it implements `FieldOrFragment`). + */ +public interface InlineFragment extends FieldOrFragment { + + static InlineFragment on(String type, FieldOrFragment... fields) { + InlineFragment fragment = getNewInstanceOf(InlineFragment.class); + + fragment.setType(type); + fragment.setFields(asList(fields)); + + return fragment; + } + + String getType(); + + void setType(String name); + + List getFields(); + + void setFields(List fields); + +} diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObject.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObject.java index f7b072f2..eeb266e7 100644 --- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObject.java +++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/InputObject.java @@ -17,8 +17,8 @@ import java.util.List; -import static java.util.Arrays.asList; import static org.eclipse.microprofile.graphql.client.core.utils.ServiceUtils.getNewInstanceOf; +import static java.util.Arrays.asList; public interface InputObject extends Buildable { /* diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Operation.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Operation.java index c47aa6bc..ec923958 100644 --- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Operation.java +++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Operation.java @@ -17,12 +17,12 @@ import java.util.List; -import static java.util.Arrays.asList; -import static java.util.Collections.emptyList; import static org.eclipse.microprofile.graphql.client.core.OperationType.QUERY; import static org.eclipse.microprofile.graphql.client.core.utils.ServiceUtils.getNewInstanceOf; +import static java.util.Arrays.asList; +import static java.util.Collections.emptyList; -public interface Operation extends Buildable { +public interface Operation extends FragmentOrOperation { /* Helpers */ @@ -31,7 +31,7 @@ static List operations(Operation... operations) { } // (fields) - static Operation operation(Field... fields) { + static Operation operation(FieldOrFragment... fields) { Operation operation = getNewInstanceOf(Operation.class); operation.setType(QUERY); @@ -43,7 +43,7 @@ static Operation operation(Field... fields) { } // (vars, fields) - static Operation operation(List vars, Field... fields) { + static Operation operation(List vars, FieldOrFragment... fields) { Operation operation = getNewInstanceOf(Operation.class); operation.setType(QUERY); @@ -55,7 +55,7 @@ static Operation operation(List vars, Field... fields) { } // (type, fields) - static Operation operation(OperationType type, Field... fields) { + static Operation operation(OperationType type, FieldOrFragment... fields) { Operation operation = getNewInstanceOf(Operation.class); operation.setType(type); @@ -67,7 +67,7 @@ static Operation operation(OperationType type, Field... fields) { } // (type, vars, fields) - static Operation operation(OperationType type, List vars, Field... fields) { + static Operation operation(OperationType type, List vars, FieldOrFragment... fields) { Operation operation = getNewInstanceOf(Operation.class); operation.setType(type); @@ -79,7 +79,7 @@ static Operation operation(OperationType type, List vars, Field... fie } // (name, fields) - static Operation operation(String name, Field... fields) { + static Operation operation(String name, FieldOrFragment... fields) { Operation operation = getNewInstanceOf(Operation.class); operation.setType(QUERY); @@ -91,7 +91,7 @@ static Operation operation(String name, Field... fields) { } // (type, name, fields) - static Operation operation(OperationType type, String name, Field... fields) { + static Operation operation(OperationType type, String name, FieldOrFragment... fields) { Operation operation = getNewInstanceOf(Operation.class); operation.setType(type); @@ -103,7 +103,7 @@ static Operation operation(OperationType type, String name, Field... fields) { } // (name, vars, fields) - static Operation operation(String name, List vars, Field... fields) { + static Operation operation(String name, List vars, FieldOrFragment... fields) { Operation operation = getNewInstanceOf(Operation.class); operation.setType(QUERY); @@ -115,7 +115,7 @@ static Operation operation(String name, List vars, Field... fields) { } // (type, name, vars, fields) - static Operation operation(OperationType type, String name, List vars, Field... fields) { + static Operation operation(OperationType type, String name, List vars, FieldOrFragment... fields) { Operation operation = getNewInstanceOf(Operation.class); operation.setType(type); @@ -127,8 +127,8 @@ static Operation operation(OperationType type, String name, List vars, } /* - Getter/Setter - */ + * Getter/Setter + */ OperationType getType(); void setType(OperationType type); @@ -141,7 +141,7 @@ static Operation operation(OperationType type, String name, List vars, void setVariables(List vars); - List getFields(); + List getFields(); - void setFields(List fields); + void setFields(List fields); } diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Variable.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Variable.java index df96e719..20862f36 100644 --- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Variable.java +++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/Variable.java @@ -18,13 +18,13 @@ import java.util.List; import java.util.Optional; -import static java.util.Arrays.asList; import static org.eclipse.microprofile.graphql.client.core.VariableType.varType; import static org.eclipse.microprofile.graphql.client.core.utils.ServiceUtils.getNewInstanceOf; +import static java.util.Arrays.asList; public interface Variable extends Buildable { /* - Helpers + * Helpers */ static List vars(Variable... vars) { return asList(vars); diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/VariableType.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/VariableType.java index 711c035b..a79be170 100644 --- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/VariableType.java +++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/core/VariableType.java @@ -20,8 +20,8 @@ public interface VariableType extends Buildable { /* - Static factory methods - */ + * Static factory methods + */ // (objectTypeName) static VariableType varType(String objectTypeName) { VariableType varType = getNewInstanceOf(VariableType.class); diff --git a/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/FragmentsTest.java b/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/FragmentsTest.java new file mode 100644 index 00000000..1fd730fd --- /dev/null +++ b/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/FragmentsTest.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2020 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.eclipse.microprofile.graphql.client.tck.core; + +import org.eclipse.microprofile.graphql.client.core.Document; +import org.eclipse.microprofile.graphql.client.tck.helper.AssertGraphQL; +import org.eclipse.microprofile.graphql.client.tck.helper.Utils; +import org.junit.jupiter.api.Test; + +import static org.eclipse.microprofile.graphql.client.core.Document.document; +import static org.eclipse.microprofile.graphql.client.core.Field.field; +import static org.eclipse.microprofile.graphql.client.core.Fragment.fragment; +import static org.eclipse.microprofile.graphql.client.core.FragmentReference.fragmentRef; +import static org.eclipse.microprofile.graphql.client.core.Operation.operation; +import static org.eclipse.microprofile.graphql.client.core.OperationType.QUERY; + +public class FragmentsTest { + + @Test + public void fragmentTest() { + String expectedRequest = Utils.getResourceFileContent("core/fragments.graphql"); + + Document document = document( + operation(QUERY, + field("people", + fragmentRef("sensitiveFields"))), + fragment("sensitiveFields").on("Person", + field("age"), + field("religion"))); + + String generatedRequest = document.build(); + AssertGraphQL.assertEquivalentGraphQLRequest(expectedRequest, generatedRequest); + } +} diff --git a/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/InlineFragmentsTest.java b/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/InlineFragmentsTest.java new file mode 100644 index 00000000..a6517115 --- /dev/null +++ b/client/tck/src/main/java/org/eclipse/microprofile/graphql/client/tck/core/InlineFragmentsTest.java @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2020 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.eclipse.microprofile.graphql.client.tck.core; + +import org.eclipse.microprofile.graphql.client.core.Document; +import org.eclipse.microprofile.graphql.client.tck.helper.AssertGraphQL; +import org.eclipse.microprofile.graphql.client.tck.helper.Utils; +import org.junit.jupiter.api.Test; + +import static org.eclipse.microprofile.graphql.client.core.Document.document; +import static org.eclipse.microprofile.graphql.client.core.Field.field; +import static org.eclipse.microprofile.graphql.client.core.InlineFragment.on; +import static org.eclipse.microprofile.graphql.client.core.Operation.operation; +import static org.eclipse.microprofile.graphql.client.core.OperationType.QUERY; + +public class InlineFragmentsTest { + + @Test + public void inlineFragmentTest() { + String expectedRequest = Utils.getResourceFileContent("core/inlinefragments.graphql"); + + Document document = document( + operation(QUERY, + field("regularField"), + on("Type1", + field("type1Field1"), + field("type1Field2")), + on("Type2", + field("type2Field")))); + + String generatedRequest = document.build(); + AssertGraphQL.assertEquivalentGraphQLRequest(expectedRequest, generatedRequest); + } +} diff --git a/client/tck/src/main/resources/core/fragments.graphql b/client/tck/src/main/resources/core/fragments.graphql new file mode 100644 index 00000000..072f3dfc --- /dev/null +++ b/client/tck/src/main/resources/core/fragments.graphql @@ -0,0 +1,10 @@ +query { + people { + ...sensitiveFields + } +} + +fragment sensitiveFields on Person { + age + religion +} diff --git a/client/tck/src/main/resources/core/inlinefragments.graphql b/client/tck/src/main/resources/core/inlinefragments.graphql new file mode 100644 index 00000000..d9d8ace9 --- /dev/null +++ b/client/tck/src/main/resources/core/inlinefragments.graphql @@ -0,0 +1,10 @@ +query { + regularField + ... on Type1 { + type1Field1 + type1Field2 + } + ... on Type2 { + type2Field + } +} From c0db693913543d8f587756838031fe3d5b62d22a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Nov 2021 23:03:37 +0000 Subject: [PATCH 131/248] Bump actions/checkout from 2.3.5 to 2.4.0 Bumps [actions/checkout](https://github.com/actions/checkout) from 2.3.5 to 2.4.0. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v2.3.5...v2.4.0) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 91dc11cf..4f96b4e0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ jobs: name: build with jdk ${{matrix.java}} steps: - - uses: actions/checkout@v2.3.5 + - uses: actions/checkout@v2.4.0 name: checkout - uses: actions/setup-java@v2 From 2f06942ec4e8905b45760bb17311c8c1e5b399d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Marti=C5=A1ka?= Date: Tue, 2 Nov 2021 08:38:02 +0100 Subject: [PATCH 132/248] Updates to the Response interface, rename Error to GraphQLError --- .../microprofile/graphql/client/Error.java | 29 ----------- .../graphql/client/GraphQLError.java | 51 +++++++++++++++++++ .../microprofile/graphql/client/Response.java | 30 ++++++++++- 3 files changed, 80 insertions(+), 30 deletions(-) delete mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/Error.java create mode 100644 client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLError.java diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Error.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Error.java deleted file mode 100644 index c899c3a9..00000000 --- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Error.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2020 Contributors to the Eclipse Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.eclipse.microprofile.graphql.client; - -import java.util.List; -import java.util.Map; - -public interface Error { - - String getMessage(); - List> getLocations(); - - Object[] getPath(); - Map getExtensions(); -} diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLError.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLError.java new file mode 100644 index 00000000..99ad267d --- /dev/null +++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/GraphQLError.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2020 Contributors to the Eclipse Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.eclipse.microprofile.graphql.client; + +import java.util.List; +import java.util.Map; + +public interface GraphQLError { + + /** + * Textual description of the error, supplied by the service. + */ + String getMessage(); + + /** + * List of locations in the request that correspond to this error. Each location is a map that + * should contain the `line` and `column` items. + */ + List> getLocations(); + + /** + * The path to the response field where the error arose. This is represented as an array, where each item is either + * a string (when it represents a field), or an integer (when it represents an index). + */ + Object[] getPath(); + + /** + * Contents of the `extensions` field. This is used by GraphQL services to pass extra information about the error. + */ + Map getExtensions(); + + /** + * Any other fields beyond message, locations, path and extensions. These are discouraged by the spec, + * but if a GraphQL service adds them, they will appear in this map. + */ + Map getOtherFields(); +} diff --git a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Response.java b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Response.java index 1e7513ba..14dd906a 100644 --- a/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Response.java +++ b/client/api/src/main/java/org/eclipse/microprofile/graphql/client/Response.java @@ -18,18 +18,46 @@ import javax.json.JsonObject; import java.util.List; +import java.util.Map; public interface Response { + /** + * The 'data' object contained in the response. + * Can be JsonValue.NULL if the response contains an empty field, or `null` if the response + * does not contain this field at all. + */ JsonObject getData(); - List getErrors(); + /** + * List of errors contained in this response. + */ + List getErrors(); + /** + * Transform the contents of the `rootField` from this response into a list of objects + * of the requested type. + */ List getList(Class dataType, String rootField); + /** + * Transform the contents of the `rootField` from this response into an object + * of the requested type. + */ T getObject(Class dataType, String rootField); + /** + * If this response contains any data, this returns `true`; `false` otherwise. + */ boolean hasData(); + /** + * If this response contains at least one error, this returns `true`; `false` otherwise. + */ boolean hasError(); + + /** + * Get transport-specific metadata that came from the server with this response. + */ + Map> getTransportMeta(); } From 0dbdfa22fb2e59421d9ad55e3b17fa28640809de Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Nov 2021 23:03:26 +0000 Subject: [PATCH 133/248] Bump bnd-maven-plugin from 6.0.0 to 6.1.0 Bumps [bnd-maven-plugin](https://github.com/bndtools/bnd) from 6.0.0 to 6.1.0. - [Release notes](https://github.com/bndtools/bnd/releases) - [Changelog](https://github.com/bndtools/bnd/blob/master/docs/ADDING_RELEASE_DOCS.md) - [Commits](https://github.com/bndtools/bnd/compare/6.0.0...6.1.0) --- updated-dependencies: - dependency-name: biz.aQute.bnd:bnd-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1879512c..c586c26a 100644 --- a/pom.xml +++ b/pom.xml @@ -185,7 +185,7 @@ biz.aQute.bnd bnd-maven-plugin - 6.0.0 + 6.1.0 org.asciidoctor From 248ff4ea2c133863eadf127c93f20e9a283c838a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Nov 2021 23:03:35 +0000 Subject: [PATCH 134/248] Bump junit-jupiter from 5.8.1 to 5.8.2 Bumps [junit-jupiter](https://github.com/junit-team/junit5) from 5.8.1 to 5.8.2. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.8.1...r5.8.2) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index cf5baae7..3295cd47 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -29,7 +29,7 @@ - 5.8.1 + 5.8.2 17.3 From c9e31b3c654401f096b61196d399cf450da00c27 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Jan 2022 23:03:52 +0000 Subject: [PATCH 135/248] Bump asciidoctorj-pdf from 1.6.0 to 1.6.2 Bumps [asciidoctorj-pdf](https://github.com/asciidoctor/asciidoctorj-pdf) from 1.6.0 to 1.6.2. - [Release notes](https://github.com/asciidoctor/asciidoctorj-pdf/releases) - [Commits](https://github.com/asciidoctor/asciidoctorj-pdf/compare/v1.6.0...v1.6.2) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-pdf dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c586c26a..a5073f78 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ 2.2.1 - 1.6.0 + 1.6.2 MMMM dd, yyyy ${maven.build.timestamp} Draft From 185d739e5b2eacafb5688905eeeffe1e490671c4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 6 Jan 2022 23:03:07 +0000 Subject: [PATCH 136/248] Bump testng from 7.4.0 to 7.5 Bumps [testng](https://github.com/cbeust/testng) from 7.4.0 to 7.5. - [Release notes](https://github.com/cbeust/testng/releases) - [Changelog](https://github.com/cbeust/testng/blob/master/CHANGES.txt) - [Commits](https://github.com/cbeust/testng/compare/7.4.0...7.5) --- updated-dependencies: - dependency-name: org.testng:testng dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c586c26a..cc3be9e2 100644 --- a/pom.xml +++ b/pom.xml @@ -39,7 +39,7 @@ 1.0.2 - 7.4.0 + 7.5 1.6.0.Final 3.8.1 From b984afea836293fb994c3d073d09ae8e139c9936 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Jan 2022 23:03:05 +0000 Subject: [PATCH 137/248] Bump build-helper-maven-plugin from 3.2.0 to 3.3.0 Bumps [build-helper-maven-plugin](https://github.com/mojohaus/build-helper-maven-plugin) from 3.2.0 to 3.3.0. - [Release notes](https://github.com/mojohaus/build-helper-maven-plugin/releases) - [Commits](https://github.com/mojohaus/build-helper-maven-plugin/compare/build-helper-maven-plugin-3.2.0...build-helper-maven-plugin-3.3.0) --- updated-dependencies: - dependency-name: org.codehaus.mojo:build-helper-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cc3be9e2..fadf8321 100644 --- a/pom.xml +++ b/pom.xml @@ -225,7 +225,7 @@ org.codehaus.mojo build-helper-maven-plugin - 3.2.0 + 3.3.0 From 6f1ac5b0daa8bd47d27e91a1102c033b6788dcd9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Jan 2022 23:03:36 +0000 Subject: [PATCH 138/248] Bump maven-compiler-plugin from 3.8.1 to 3.9.0 Bumps [maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) from 3.8.1 to 3.9.0. - [Release notes](https://github.com/apache/maven-compiler-plugin/releases) - [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.8.1...maven-compiler-plugin-3.9.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-compiler-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cc3be9e2..68cc925e 100644 --- a/pom.xml +++ b/pom.xml @@ -41,7 +41,7 @@ 7.5 1.6.0.Final - 3.8.1 + 3.9.0 2.2.1 From 4d1835625d3e6fdcb40f938c5c001b7ed8e087f5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Jan 2022 23:03:44 +0000 Subject: [PATCH 139/248] Bump maven-jar-plugin from 3.2.0 to 3.2.2 Bumps [maven-jar-plugin](https://github.com/apache/maven-jar-plugin) from 3.2.0 to 3.2.2. - [Release notes](https://github.com/apache/maven-jar-plugin/releases) - [Commits](https://github.com/apache/maven-jar-plugin/compare/maven-jar-plugin-3.2.0...maven-jar-plugin-3.2.2) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-jar-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cc3be9e2..407655e1 100644 --- a/pom.xml +++ b/pom.xml @@ -165,7 +165,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.2.0 + 3.2.2 org.apache.maven.plugins From 60fb3251089bc7ee8ecff1c7222b52abd36fef6e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Jan 2022 23:04:22 +0000 Subject: [PATCH 140/248] Bump asciidoctor-maven-plugin from 2.2.1 to 2.2.2 Bumps [asciidoctor-maven-plugin](https://github.com/asciidoctor/asciidoctor-maven-plugin) from 2.2.1 to 2.2.2. - [Release notes](https://github.com/asciidoctor/asciidoctor-maven-plugin/releases) - [Changelog](https://github.com/asciidoctor/asciidoctor-maven-plugin/blob/main/CHANGELOG.adoc) - [Commits](https://github.com/asciidoctor/asciidoctor-maven-plugin/compare/asciidoctor-maven-plugin-2.2.1...asciidoctor-maven-plugin-2.2.2) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctor-maven-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3793a930..b6c29d96 100644 --- a/pom.xml +++ b/pom.xml @@ -44,7 +44,7 @@ 3.9.0 - 2.2.1 + 2.2.2 1.6.2 MMMM dd, yyyy ${maven.build.timestamp} From fb7c103fe109f14f98664c13370e737266cb4c3d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Feb 2022 23:09:17 +0000 Subject: [PATCH 141/248] Bump maven-javadoc-plugin from 3.3.1 to 3.3.2 Bumps [maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.3.1 to 3.3.2. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.3.1...maven-javadoc-plugin-3.3.2) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b6c29d96..416994f3 100644 --- a/pom.xml +++ b/pom.xml @@ -175,7 +175,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.3.1 + 3.3.2 org.apache.maven.plugins From c67aafd9df18858dc2f37afb258a6e2da450269d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Feb 2022 23:03:57 +0000 Subject: [PATCH 142/248] Bump nexus-staging-maven-plugin from 1.6.8 to 1.6.10 Bumps nexus-staging-maven-plugin from 1.6.8 to 1.6.10. --- updated-dependencies: - dependency-name: org.sonatype.plugins:nexus-staging-maven-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b6c29d96..dee9e818 100644 --- a/pom.xml +++ b/pom.xml @@ -417,7 +417,7 @@ org.sonatype.plugins nexus-staging-maven-plugin - 1.6.8 + 1.6.10 true https://oss.sonatype.org/ From 082e620df9e0d1d68dd417eda0e8371e45e9d20a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Feb 2022 23:04:02 +0000 Subject: [PATCH 143/248] Bump maven-compiler-plugin from 3.9.0 to 3.10.0 Bumps [maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) from 3.9.0 to 3.10.0. - [Release notes](https://github.com/apache/maven-compiler-plugin/releases) - [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.9.0...maven-compiler-plugin-3.10.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-compiler-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b6c29d96..4382dd29 100644 --- a/pom.xml +++ b/pom.xml @@ -41,7 +41,7 @@ 7.5 1.6.0.Final - 3.9.0 + 3.10.0 2.2.2 From 1f8e015138dd03f74a579ab81f5cfab0915f4827 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 15 Feb 2022 23:02:59 +0000 Subject: [PATCH 144/248] Bump nexus-staging-maven-plugin from 1.6.10 to 1.6.11 Bumps nexus-staging-maven-plugin from 1.6.10 to 1.6.11. --- updated-dependencies: - dependency-name: org.sonatype.plugins:nexus-staging-maven-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9239f223..f6060dc5 100644 --- a/pom.xml +++ b/pom.xml @@ -417,7 +417,7 @@ org.sonatype.plugins nexus-staging-maven-plugin - 1.6.10 + 1.6.11 true https://oss.sonatype.org/ From 168cc06dc6d9f15c195b979d98b134776cda57a5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Feb 2022 23:03:04 +0000 Subject: [PATCH 145/248] Bump nexus-staging-maven-plugin from 1.6.11 to 1.6.12 Bumps nexus-staging-maven-plugin from 1.6.11 to 1.6.12. --- updated-dependencies: - dependency-name: org.sonatype.plugins:nexus-staging-maven-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f6060dc5..14f055c7 100644 --- a/pom.xml +++ b/pom.xml @@ -417,7 +417,7 @@ org.sonatype.plugins nexus-staging-maven-plugin - 1.6.11 + 1.6.12 true https://oss.sonatype.org/ From 356895abc64b901e07c3fc183dd34b4a58fc62df Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Feb 2022 23:04:24 +0000 Subject: [PATCH 146/248] Bump bnd-maven-plugin from 6.1.0 to 6.2.0 Bumps [bnd-maven-plugin](https://github.com/bndtools/bnd) from 6.1.0 to 6.2.0. - [Release notes](https://github.com/bndtools/bnd/releases) - [Changelog](https://github.com/bndtools/bnd/blob/master/docs/ADDING_RELEASE_DOCS.md) - [Commits](https://github.com/bndtools/bnd/compare/6.1.0...6.2.0) --- updated-dependencies: - dependency-name: biz.aQute.bnd:bnd-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 14f055c7..07c1a923 100644 --- a/pom.xml +++ b/pom.xml @@ -185,7 +185,7 @@ biz.aQute.bnd bnd-maven-plugin - 6.1.0 + 6.2.0 org.asciidoctor From bb5eb30166ae29b8096d4e5eb658413ba1fbed4b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Mar 2022 23:03:31 +0000 Subject: [PATCH 147/248] Bump actions/checkout from 2.4.0 to 3 Bumps [actions/checkout](https://github.com/actions/checkout) from 2.4.0 to 3. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v2.4.0...v3) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4f96b4e0..af53760a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ jobs: name: build with jdk ${{matrix.java}} steps: - - uses: actions/checkout@v2.4.0 + - uses: actions/checkout@v3 name: checkout - uses: actions/setup-java@v2 From 41221ec24dc32c5af3aef2c6d835ecade38804c7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Mar 2022 23:05:17 +0000 Subject: [PATCH 148/248] Bump maven-compiler-plugin from 3.10.0 to 3.10.1 Bumps [maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) from 3.10.0 to 3.10.1. - [Release notes](https://github.com/apache/maven-compiler-plugin/releases) - [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.10.0...maven-compiler-plugin-3.10.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-compiler-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 07c1a923..ed80ccbe 100644 --- a/pom.xml +++ b/pom.xml @@ -41,7 +41,7 @@ 7.5 1.6.0.Final - 3.10.0 + 3.10.1 2.2.2 From f3d931843575cf1ade0e7f8349b47932df23ada3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 15 Mar 2022 23:03:12 +0000 Subject: [PATCH 149/248] Bump graphql-java from 17.3 to 18.0 Bumps [graphql-java](https://github.com/graphql-java/graphql-java) from 17.3 to 18.0. - [Release notes](https://github.com/graphql-java/graphql-java/releases) - [Commits](https://github.com/graphql-java/graphql-java/compare/v17.3...v18.0) --- updated-dependencies: - dependency-name: com.graphql-java:graphql-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index 3295cd47..50596335 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -30,7 +30,7 @@ 5.8.2 - 17.3 + 18.0 From 5b11bfa31386c0b38826e69a1bb961972cd0064b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Apr 2022 23:03:00 +0000 Subject: [PATCH 150/248] Bump nexus-staging-maven-plugin from 1.6.12 to 1.6.13 Bumps nexus-staging-maven-plugin from 1.6.12 to 1.6.13. --- updated-dependencies: - dependency-name: org.sonatype.plugins:nexus-staging-maven-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ed80ccbe..dc65792f 100644 --- a/pom.xml +++ b/pom.xml @@ -417,7 +417,7 @@ org.sonatype.plugins nexus-staging-maven-plugin - 1.6.12 + 1.6.13 true https://oss.sonatype.org/ From 31bad96aab523353648a86bee781c06892d27e4e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 May 2022 23:02:33 +0000 Subject: [PATCH 151/248] Bump graphql-java from 18.0 to 18.1 Bumps [graphql-java](https://github.com/graphql-java/graphql-java) from 18.0 to 18.1. - [Release notes](https://github.com/graphql-java/graphql-java/releases) - [Commits](https://github.com/graphql-java/graphql-java/compare/v18.0...v18.1) --- updated-dependencies: - dependency-name: com.graphql-java:graphql-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index 50596335..eeaa61b7 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -30,7 +30,7 @@ 5.8.2 - 18.0 + 18.1 From 6ecb7e4ec1b9ae821624c0fc365569b1a50eb40b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 May 2022 23:02:29 +0000 Subject: [PATCH 152/248] Bump asciidoctorj-pdf from 1.6.2 to 2.0.3 Bumps [asciidoctorj-pdf](https://github.com/asciidoctor/asciidoctorj-pdf) from 1.6.2 to 2.0.3. - [Release notes](https://github.com/asciidoctor/asciidoctorj-pdf/releases) - [Commits](https://github.com/asciidoctor/asciidoctorj-pdf/compare/v1.6.2...v2.0.3) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-pdf dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index dc65792f..63be4591 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ 2.2.2 - 1.6.2 + 2.0.3 MMMM dd, yyyy ${maven.build.timestamp} Draft From 341c51176ab4dda14f52d5cd2bd264d39b73b097 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 May 2022 23:02:47 +0000 Subject: [PATCH 153/248] Bump asciidoctorj-diagram from 2.2.1 to 2.2.3 Bumps [asciidoctorj-diagram](https://github.com/asciidoctor/asciidoctorj-diagram) from 2.2.1 to 2.2.3. - [Release notes](https://github.com/asciidoctor/asciidoctorj-diagram/releases) - [Commits](https://github.com/asciidoctor/asciidoctorj-diagram/commits) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-diagram dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- client/spec/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/spec/pom.xml b/client/spec/pom.xml index 294143fe..aedd497e 100644 --- a/client/spec/pom.xml +++ b/client/spec/pom.xml @@ -62,7 +62,7 @@ org.asciidoctor asciidoctorj-diagram - 2.2.1 + 2.2.3 From 7b94e29be3b468b90fbea22a02e2a7feded642f8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 31 May 2022 23:02:16 +0000 Subject: [PATCH 154/248] Bump asciidoctorj-pdf from 2.0.3 to 2.0.6 Bumps [asciidoctorj-pdf](https://github.com/asciidoctor/asciidoctorj-pdf) from 2.0.3 to 2.0.6. - [Release notes](https://github.com/asciidoctor/asciidoctorj-pdf/releases) - [Commits](https://github.com/asciidoctor/asciidoctorj-pdf/compare/v2.0.3...v2.0.6) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-pdf dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 63be4591..34cf3f0b 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ 2.2.2 - 2.0.3 + 2.0.6 MMMM dd, yyyy ${maven.build.timestamp} Draft From bec6c401898ef0f7f80e701b0741b3936bd1f574 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Jun 2022 23:09:19 +0000 Subject: [PATCH 155/248] Bump bnd-maven-plugin from 6.2.0 to 6.3.0 Bumps [bnd-maven-plugin](https://github.com/bndtools/bnd) from 6.2.0 to 6.3.0. - [Release notes](https://github.com/bndtools/bnd/releases) - [Changelog](https://github.com/bndtools/bnd/blob/master/docs/ADDING_RELEASE_DOCS.md) - [Commits](https://github.com/bndtools/bnd/compare/6.2.0...6.3.0) --- updated-dependencies: - dependency-name: biz.aQute.bnd:bnd-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 34cf3f0b..0aac5382 100644 --- a/pom.xml +++ b/pom.xml @@ -185,7 +185,7 @@ biz.aQute.bnd bnd-maven-plugin - 6.2.0 + 6.3.0 org.asciidoctor From 203e9e0b5eb438232e5f75bfb5ec907bbd65183f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Jun 2022 23:03:39 +0000 Subject: [PATCH 156/248] Bump bnd-maven-plugin from 6.3.0 to 6.3.1 Bumps [bnd-maven-plugin](https://github.com/bndtools/bnd) from 6.3.0 to 6.3.1. - [Release notes](https://github.com/bndtools/bnd/releases) - [Changelog](https://github.com/bndtools/bnd/blob/master/docs/ADDING_RELEASE_DOCS.md) - [Commits](https://github.com/bndtools/bnd/compare/6.3.0...6.3.1) --- updated-dependencies: - dependency-name: biz.aQute.bnd:bnd-maven-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0aac5382..d3bd59d6 100644 --- a/pom.xml +++ b/pom.xml @@ -185,7 +185,7 @@ biz.aQute.bnd bnd-maven-plugin - 6.3.0 + 6.3.1 org.asciidoctor From 5aa54cd68feb8bb60c3350f604cc6f924860e5ee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jun 2022 23:05:59 +0000 Subject: [PATCH 157/248] Bump apache-rat-plugin from 0.13 to 0.14 Bumps apache-rat-plugin from 0.13 to 0.14. --- updated-dependencies: - dependency-name: org.apache.rat:apache-rat-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d3bd59d6..dcb14326 100644 --- a/pom.xml +++ b/pom.xml @@ -345,7 +345,7 @@ org.apache.rat apache-rat-plugin - 0.13 + 0.14 rat-check From 8059645aff28537b1e7f790d49db24f367e4ab2e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Jun 2022 23:36:06 +0000 Subject: [PATCH 158/248] Bump asciidoctorj-pdf from 2.0.6 to 2.0.8 Bumps [asciidoctorj-pdf](https://github.com/asciidoctor/asciidoctorj-pdf) from 2.0.6 to 2.0.8. - [Release notes](https://github.com/asciidoctor/asciidoctorj-pdf/releases) - [Commits](https://github.com/asciidoctor/asciidoctorj-pdf/compare/v2.0.6...v2.0.8) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-pdf dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index dcb14326..20c1514f 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ 2.2.2 - 2.0.6 + 2.0.8 MMMM dd, yyyy ${maven.build.timestamp} Draft From 94a881f8d54285632c8171715ae9a66fd596297e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Jun 2022 23:04:01 +0000 Subject: [PATCH 159/248] Bump asciidoctorj-pdf from 2.0.8 to 2.1.2 Bumps [asciidoctorj-pdf](https://github.com/asciidoctor/asciidoctorj-pdf) from 2.0.8 to 2.1.2. - [Release notes](https://github.com/asciidoctor/asciidoctorj-pdf/releases) - [Commits](https://github.com/asciidoctor/asciidoctorj-pdf/compare/v2.0.8...v2.1.2) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-pdf dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 20c1514f..ec023eeb 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ 2.2.2 - 2.0.8 + 2.1.2 MMMM dd, yyyy ${maven.build.timestamp} Draft From 63cf0c0771f2c917370881ef8fd1b45d7de99fb1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jun 2022 23:04:39 +0000 Subject: [PATCH 160/248] Bump graphql-java from 18.1 to 18.2 Bumps [graphql-java](https://github.com/graphql-java/graphql-java) from 18.1 to 18.2. - [Release notes](https://github.com/graphql-java/graphql-java/releases) - [Commits](https://github.com/graphql-java/graphql-java/compare/v18.1...v18.2) --- updated-dependencies: - dependency-name: com.graphql-java:graphql-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index eeaa61b7..3a21cc64 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -30,7 +30,7 @@ 5.8.2 - 18.1 + 18.2 From 57ad084cc2fef34e468f7918e812c44a276101be Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jun 2022 23:04:42 +0000 Subject: [PATCH 161/248] Bump asciidoctorj-pdf from 2.1.2 to 2.1.4 Bumps [asciidoctorj-pdf](https://github.com/asciidoctor/asciidoctorj-pdf) from 2.1.2 to 2.1.4. - [Release notes](https://github.com/asciidoctor/asciidoctorj-pdf/releases) - [Commits](https://github.com/asciidoctor/asciidoctorj-pdf/compare/v2.1.2...v2.1.4) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-pdf dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ec023eeb..82f71add 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ 2.2.2 - 2.1.2 + 2.1.4 MMMM dd, yyyy ${maven.build.timestamp} Draft From 0d3c75ea1e91a2bd8238895ea7acbdedb02a59ed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Jul 2022 23:02:53 +0000 Subject: [PATCH 162/248] Bump jsonassert from 1.5.0 to 1.5.1 Bumps [jsonassert](https://github.com/skyscreamer/JSONassert) from 1.5.0 to 1.5.1. - [Release notes](https://github.com/skyscreamer/JSONassert/releases) - [Changelog](https://github.com/skyscreamer/JSONassert/blob/master/CHANGELOG.md) - [Commits](https://github.com/skyscreamer/JSONassert/compare/jsonassert-1.5.0...jsonassert-1.5.1) --- updated-dependencies: - dependency-name: org.skyscreamer:jsonassert dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- server/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/tck/pom.xml b/server/tck/pom.xml index 069378a4..cdea73bd 100644 --- a/server/tck/pom.xml +++ b/server/tck/pom.xml @@ -29,7 +29,7 @@ 2.11.0 - 1.5.0 + 1.5.1 From cabd45406d08b83215db2b15d741411ce8116c27 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Jul 2022 23:04:01 +0000 Subject: [PATCH 163/248] Bump maven-resources-plugin from 3.2.0 to 3.3.0 Bumps [maven-resources-plugin](https://github.com/apache/maven-resources-plugin) from 3.2.0 to 3.3.0. - [Release notes](https://github.com/apache/maven-resources-plugin/releases) - [Commits](https://github.com/apache/maven-resources-plugin/compare/maven-resources-plugin-3.2.0...maven-resources-plugin-3.3.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-resources-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- client/api/pom.xml | 2 +- client/tck/pom.xml | 2 +- server/api/pom.xml | 2 +- server/tck/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client/api/pom.xml b/client/api/pom.xml index a2f93465..a9924eb7 100644 --- a/client/api/pom.xml +++ b/client/api/pom.xml @@ -40,7 +40,7 @@ maven-resources-plugin - 3.2.0 + 3.3.0 copy-resources diff --git a/client/tck/pom.xml b/client/tck/pom.xml index 3a21cc64..76a3e691 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -84,7 +84,7 @@ org.apache.maven.plugins maven-resources-plugin - 3.2.0 + 3.3.0 copy-licenses diff --git a/server/api/pom.xml b/server/api/pom.xml index 9f94ea3a..22135e70 100644 --- a/server/api/pom.xml +++ b/server/api/pom.xml @@ -45,7 +45,7 @@ maven-resources-plugin - 3.2.0 + 3.3.0 copy-resources diff --git a/server/tck/pom.xml b/server/tck/pom.xml index cdea73bd..60d816a4 100644 --- a/server/tck/pom.xml +++ b/server/tck/pom.xml @@ -129,7 +129,7 @@ org.apache.maven.plugins maven-resources-plugin - 3.2.0 + 3.3.0 copy-licenses From b2e982cea91093a669ce9c25f373e3e71927c70e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 23:03:20 +0000 Subject: [PATCH 164/248] Bump maven-javadoc-plugin from 3.3.2 to 3.4.1 Bumps [maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.3.2 to 3.4.1. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.3.2...maven-javadoc-plugin-3.4.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 82f71add..7cd8e5cc 100644 --- a/pom.xml +++ b/pom.xml @@ -175,7 +175,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.3.2 + 3.4.1 org.apache.maven.plugins From 7e88448795d169719f72cb2f8b966d9e109cf165 Mon Sep 17 00:00:00 2001 From: Ruediger zu Dohna Date: Fri, 9 Sep 2022 16:50:24 +0200 Subject: [PATCH 165/248] fix #465: add site.yaml --- site.yaml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 site.yaml diff --git a/site.yaml b/site.yaml new file mode 100644 index 00000000..4a4eb385 --- /dev/null +++ b/site.yaml @@ -0,0 +1,29 @@ +####################################################################### +## Copyright (c) 2016-2017 Contributors to the Eclipse Foundation +## +## See the NOTICE file(s) distributed with this work for additional +## information regarding copyright ownership. +## +## Licensed under the Apache License, Version 2.0 (the "License"); +## you may not use this file except in compliance with the License. +## You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +####################################################################### +%YAML 1.2 +--- +documentation: +- title: Eclipse MicroProfile GraphQL Server + file: server/spec/src/main/asciidoc/index.asciidoc + +- title: Eclipse MicroProfile GraphQL Client + file: client/spec/src/main/asciidoc/index.asciidoc + +- title: License + file: full/spec/src/main/asciidoc/license-alv2.asciidoc From 8053ad22e02a58535d21fe129c0cd67f01ecd766 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 20 Sep 2022 23:04:58 +0000 Subject: [PATCH 166/248] Bump junit-jupiter from 5.8.2 to 5.9.1 Bumps [junit-jupiter](https://github.com/junit-team/junit5) from 5.8.2 to 5.9.1. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.8.2...r5.9.1) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index 3a21cc64..8d2c711d 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -29,7 +29,7 @@ - 5.8.2 + 5.9.1 18.2 From 7f95d0ba0e2eb3685371146b7843304a445ed788 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Sep 2022 23:03:08 +0000 Subject: [PATCH 167/248] Bump actions/setup-java from 2 to 3.5.1 Bumps [actions/setup-java](https://github.com/actions/setup-java) from 2 to 3.5.1. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v2...v3.5.1) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index af53760a..220bb004 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v3 name: checkout - - uses: actions/setup-java@v2 + - uses: actions/setup-java@v3.5.1 name: set up jdk ${{matrix.java}} with: distribution: 'adopt' From 25575c303d35be306f2f55cd241bdb0173f3b15d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Oct 2022 23:03:38 +0000 Subject: [PATCH 168/248] Bump asciidoctorj-pdf from 2.1.4 to 2.3.3 Bumps [asciidoctorj-pdf](https://github.com/asciidoctor/asciidoctorj-pdf) from 2.1.4 to 2.3.3. - [Release notes](https://github.com/asciidoctor/asciidoctorj-pdf/releases) - [Commits](https://github.com/asciidoctor/asciidoctorj-pdf/compare/v2.1.4...v2.3.3) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-pdf dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 82f71add..1d315785 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ 2.2.2 - 2.1.4 + 2.3.3 MMMM dd, yyyy ${maven.build.timestamp} Draft From 65cbdb6561f077acdeef8e78b36e476739728d4d Mon Sep 17 00:00:00 2001 From: Ruediger zu Dohna Date: Sun, 23 Oct 2022 08:36:26 +0200 Subject: [PATCH 169/248] build.yml: use temurin and maven cache --- .github/workflows/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 220bb004..db3a31d5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,8 +18,9 @@ jobs: - uses: actions/setup-java@v3.5.1 name: set up jdk ${{matrix.java}} with: - distribution: 'adopt' + distribution: 'temurin' java-version: ${{matrix.java}} + cache: 'maven' - name: build with maven run: mvn -B verify javadoc:javadoc --file pom.xml From 233d07b4ad27fc348041cff4d891b98b770f249f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Oct 2022 23:03:33 +0000 Subject: [PATCH 170/248] Bump actions/setup-java from 3.5.1 to 3.6.0 Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3.5.1 to 3.6.0. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v3.5.1...v3.6.0) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 220bb004..58759ff7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v3 name: checkout - - uses: actions/setup-java@v3.5.1 + - uses: actions/setup-java@v3.6.0 name: set up jdk ${{matrix.java}} with: distribution: 'adopt' From 4aa57b1550107c5d9ea97f2df08abba141a921c1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Oct 2022 23:04:34 +0000 Subject: [PATCH 171/248] Bump apache-rat-plugin from 0.14 to 0.15 Bumps apache-rat-plugin from 0.14 to 0.15. --- updated-dependencies: - dependency-name: org.apache.rat:apache-rat-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8a9e6171..3fc1da78 100644 --- a/pom.xml +++ b/pom.xml @@ -345,7 +345,7 @@ org.apache.rat apache-rat-plugin - 0.14 + 0.15 rat-check From 82fdde367dc7d6b9a42e755f42cd4a1774845479 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Oct 2022 23:04:42 +0000 Subject: [PATCH 172/248] Bump maven-jar-plugin from 3.2.2 to 3.3.0 Bumps [maven-jar-plugin](https://github.com/apache/maven-jar-plugin) from 3.2.2 to 3.3.0. - [Release notes](https://github.com/apache/maven-jar-plugin/releases) - [Commits](https://github.com/apache/maven-jar-plugin/compare/maven-jar-plugin-3.2.2...maven-jar-plugin-3.3.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-jar-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8a9e6171..2eec7146 100644 --- a/pom.xml +++ b/pom.xml @@ -165,7 +165,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.2.2 + 3.3.0 org.apache.maven.plugins From d18357edd652591f0659e1c410a4b415b210aff9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Oct 2022 23:04:46 +0000 Subject: [PATCH 173/248] Bump graphql-java from 18.2 to 19.2 Bumps [graphql-java](https://github.com/graphql-java/graphql-java) from 18.2 to 19.2. - [Release notes](https://github.com/graphql-java/graphql-java/releases) - [Commits](https://github.com/graphql-java/graphql-java/compare/v18.2...v19.2) --- updated-dependencies: - dependency-name: com.graphql-java:graphql-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index a2316cb6..33b300fe 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -30,7 +30,7 @@ 5.9.1 - 18.2 + 19.2 From afe8221597ccaf20fd3a909d8d78a016ba3ac5eb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Oct 2022 23:03:33 +0000 Subject: [PATCH 174/248] Bump actions/setup-java from 3.5.1 to 3.6.0 Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3.5.1 to 3.6.0. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v3.5.1...v3.6.0) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index db3a31d5..0d77a7b8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v3 name: checkout - - uses: actions/setup-java@v3.5.1 + - uses: actions/setup-java@v3.6.0 name: set up jdk ${{matrix.java}} with: distribution: 'temurin' From 488eeec404ebd516da8f829dc9cf1c291f6ec4b7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Oct 2022 23:04:34 +0000 Subject: [PATCH 175/248] Bump apache-rat-plugin from 0.14 to 0.15 Bumps apache-rat-plugin from 0.14 to 0.15. --- updated-dependencies: - dependency-name: org.apache.rat:apache-rat-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 8a9e6171..3fc1da78 100644 --- a/pom.xml +++ b/pom.xml @@ -345,7 +345,7 @@ org.apache.rat apache-rat-plugin - 0.14 + 0.15 rat-check From df651ac4e2ccfdde7e4e4edc87e81f656e96edd2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Oct 2022 23:04:42 +0000 Subject: [PATCH 176/248] Bump maven-jar-plugin from 3.2.2 to 3.3.0 Bumps [maven-jar-plugin](https://github.com/apache/maven-jar-plugin) from 3.2.2 to 3.3.0. - [Release notes](https://github.com/apache/maven-jar-plugin/releases) - [Commits](https://github.com/apache/maven-jar-plugin/compare/maven-jar-plugin-3.2.2...maven-jar-plugin-3.3.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-jar-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3fc1da78..caa03028 100644 --- a/pom.xml +++ b/pom.xml @@ -165,7 +165,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.2.2 + 3.3.0 org.apache.maven.plugins From 859a524e435c2181de0431611fb0e2025629e983 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Oct 2022 23:04:46 +0000 Subject: [PATCH 177/248] Bump graphql-java from 18.2 to 19.2 Bumps [graphql-java](https://github.com/graphql-java/graphql-java) from 18.2 to 19.2. - [Release notes](https://github.com/graphql-java/graphql-java/releases) - [Commits](https://github.com/graphql-java/graphql-java/compare/v18.2...v19.2) --- updated-dependencies: - dependency-name: com.graphql-java:graphql-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index a2316cb6..33b300fe 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -30,7 +30,7 @@ 5.9.1 - 18.2 + 19.2 From 0a4e2b73b84f3fc2e59e4b81f8a2c6c562cdfe31 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 30 Nov 2022 23:00:45 +0000 Subject: [PATCH 178/248] Bump bnd-maven-plugin from 6.3.1 to 6.4.0 Bumps [bnd-maven-plugin](https://github.com/bndtools/bnd) from 6.3.1 to 6.4.0. - [Release notes](https://github.com/bndtools/bnd/releases) - [Changelog](https://github.com/bndtools/bnd/blob/master/docs/ADDING_RELEASE_DOCS.md) - [Commits](https://github.com/bndtools/bnd/compare/6.3.1...6.4.0) --- updated-dependencies: - dependency-name: biz.aQute.bnd:bnd-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index caa03028..b2ea9414 100644 --- a/pom.xml +++ b/pom.xml @@ -185,7 +185,7 @@ biz.aQute.bnd bnd-maven-plugin - 6.3.1 + 6.4.0 org.asciidoctor From 1929e0db1e4d958a7c2412b75f09d33978d98fde Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Dec 2022 23:01:23 +0000 Subject: [PATCH 179/248] Bump actions/setup-java from 3.6.0 to 3.7.0 Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3.6.0 to 3.7.0. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v3.6.0...v3.7.0) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0d77a7b8..80693dac 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v3 name: checkout - - uses: actions/setup-java@v3.6.0 + - uses: actions/setup-java@v3.7.0 name: set up jdk ${{matrix.java}} with: distribution: 'temurin' From ba05de0eb54368cc409d6707bafea3c2e0d2cc80 Mon Sep 17 00:00:00 2001 From: Andy McCright Date: Fri, 2 Dec 2022 16:00:12 -0600 Subject: [PATCH 180/248] [483] Update checkstyle to 3.2.0 --- pom.xml | 13 ++++++------- .../execution/GraphQLTestDataProvider.java | 15 +++++---------- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/pom.xml b/pom.xml index caa03028..16b2f743 100644 --- a/pom.xml +++ b/pom.xml @@ -160,7 +160,7 @@ org.apache.maven.plugins maven-checkstyle-plugin - 3.0.0 + 3.2.0 org.apache.maven.plugins @@ -270,14 +270,17 @@ true - + + + + - + @@ -299,10 +302,6 @@ - - - - diff --git a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java index fed03862..36235dde 100644 --- a/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java +++ b/server/tck/src/main/java/org/eclipse/microprofile/graphql/tck/dynamic/execution/GraphQLTestDataProvider.java @@ -153,34 +153,29 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) testData.addInput(content); } else { switch (filename) { - case "httpHeader.properties": - { + case "httpHeader.properties": { Properties properties = new Properties(); properties.load(Files.newInputStream(file)); testData.setHttpHeaders(properties); break; } - case "variables.json": - { + case "variables.json": { String content = getFileContent(file); testData.setVariables(toJsonObject(content)); break; } - case "test.properties": - { + case "test.properties": { Properties properties = new Properties(); properties.load(Files.newInputStream(file)); testData.setProperties(properties); break; } - case "cleanup.graphql": - { + case "cleanup.graphql": { String content = getFileContent(file); testData.setCleanup(content); break; } - case "prepare.graphql": - { + case "prepare.graphql": { String content = getFileContent(file); testData.setPrepare(content); break; From 01fcb290a4ea242310bfd45568452d62a4996f03 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 Dec 2022 23:01:03 +0000 Subject: [PATCH 181/248] Bump graphql-java from 19.2 to 19.3 Bumps [graphql-java](https://github.com/graphql-java/graphql-java) from 19.2 to 19.3. - [Release notes](https://github.com/graphql-java/graphql-java/releases) - [Commits](https://github.com/graphql-java/graphql-java/compare/v19.2...v19.3) --- updated-dependencies: - dependency-name: com.graphql-java:graphql-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index 33b300fe..367b3445 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -30,7 +30,7 @@ 5.9.1 - 19.2 + 19.3 From 2f41c5184b4136bc86302e932b8c166517b6b11c Mon Sep 17 00:00:00 2001 From: Andy McCright Date: Tue, 6 Dec 2022 12:28:59 -0600 Subject: [PATCH 182/248] Update setup-java version to 3.8.0 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 80693dac..86c03f5b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v3 name: checkout - - uses: actions/setup-java@v3.7.0 + - uses: actions/setup-java@v3.8.0 name: set up jdk ${{matrix.java}} with: distribution: 'temurin' From 1c55d989defdd134d345be4ff6046a36a9231a87 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Dec 2022 23:01:01 +0000 Subject: [PATCH 183/248] Bump graphql-java from 19.3 to 20.0 Bumps [graphql-java](https://github.com/graphql-java/graphql-java) from 19.3 to 20.0. - [Release notes](https://github.com/graphql-java/graphql-java/releases) - [Commits](https://github.com/graphql-java/graphql-java/compare/v19.3...v20.0) --- updated-dependencies: - dependency-name: com.graphql-java:graphql-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index 367b3445..08175883 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -30,7 +30,7 @@ 5.9.1 - 19.3 + 20.0 From f0844f26b066971703bd76d8d2043059e3ec8d08 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 Dec 2022 23:00:52 +0000 Subject: [PATCH 184/248] Bump asciidoctorj-pdf from 2.3.3 to 2.3.4 Bumps [asciidoctorj-pdf](https://github.com/asciidoctor/asciidoctorj-pdf) from 2.3.3 to 2.3.4. - [Release notes](https://github.com/asciidoctor/asciidoctorj-pdf/releases) - [Commits](https://github.com/asciidoctor/asciidoctorj-pdf/compare/v2.3.3...v2.3.4) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-pdf dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f3016800..7f74d199 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ 2.2.2 - 2.3.3 + 2.3.4 MMMM dd, yyyy ${maven.build.timestamp} Draft From 234d390909cc6c600c90d2a8ea1a3ba82c4bbda9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Dec 2022 23:00:38 +0000 Subject: [PATCH 185/248] Bump actions/setup-java from 3.8.0 to 3.9.0 Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3.8.0 to 3.9.0. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v3.8.0...v3.9.0) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 86c03f5b..40e683c5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v3 name: checkout - - uses: actions/setup-java@v3.8.0 + - uses: actions/setup-java@v3.9.0 name: set up jdk ${{matrix.java}} with: distribution: 'temurin' From 41f24346ec8c6635de4feaf7b66cc189f3535a73 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Jan 2023 23:01:08 +0000 Subject: [PATCH 186/248] Bump junit-jupiter from 5.9.1 to 5.9.2 Bumps [junit-jupiter](https://github.com/junit-team/junit5) from 5.9.1 to 5.9.2. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.9.1...r5.9.2) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index 08175883..0eeb5a0e 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -29,7 +29,7 @@ - 5.9.1 + 5.9.2 20.0 From bcb9bf00728e1b1d1c7d57820428dc647a786be6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Jan 2023 23:00:59 +0000 Subject: [PATCH 187/248] Bump maven-checkstyle-plugin from 3.2.0 to 3.2.1 Bumps [maven-checkstyle-plugin](https://github.com/apache/maven-checkstyle-plugin) from 3.2.0 to 3.2.1. - [Release notes](https://github.com/apache/maven-checkstyle-plugin/releases) - [Commits](https://github.com/apache/maven-checkstyle-plugin/compare/maven-checkstyle-plugin-3.2.0...maven-checkstyle-plugin-3.2.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-checkstyle-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7f74d199..602020c3 100644 --- a/pom.xml +++ b/pom.xml @@ -160,7 +160,7 @@ org.apache.maven.plugins maven-checkstyle-plugin - 3.2.0 + 3.2.1 org.apache.maven.plugins From e47e72d5c126046ced92c36e4fce2516f24c5812 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Feb 2023 23:00:52 +0000 Subject: [PATCH 188/248] Bump asciidoctorj-diagram from 2.2.3 to 2.2.4 Bumps [asciidoctorj-diagram](https://github.com/asciidoctor/asciidoctorj-diagram) from 2.2.3 to 2.2.4. - [Release notes](https://github.com/asciidoctor/asciidoctorj-diagram/releases) - [Commits](https://github.com/asciidoctor/asciidoctorj-diagram/compare/v2.2.3...v2.2.4) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-diagram dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- client/spec/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/spec/pom.xml b/client/spec/pom.xml index aedd497e..96941c05 100644 --- a/client/spec/pom.xml +++ b/client/spec/pom.xml @@ -62,7 +62,7 @@ org.asciidoctor asciidoctorj-diagram - 2.2.3 + 2.2.4 From 7865fec367cdb118350cd855412620b1a25a9164 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Feb 2023 23:00:46 +0000 Subject: [PATCH 189/248] Bump actions/setup-java from 3.9.0 to 3.10.0 Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3.9.0 to 3.10.0. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v3.9.0...v3.10.0) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 40e683c5..8fdf06c0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v3 name: checkout - - uses: actions/setup-java@v3.9.0 + - uses: actions/setup-java@v3.10.0 name: set up jdk ${{matrix.java}} with: distribution: 'temurin' From 880da769b4b8409e0419fcffe778201c29a179c1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Feb 2023 23:56:45 +0000 Subject: [PATCH 190/248] Bump maven-javadoc-plugin from 3.4.1 to 3.5.0 Bumps [maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.4.1 to 3.5.0. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.4.1...maven-javadoc-plugin-3.5.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 602020c3..a5f18e26 100644 --- a/pom.xml +++ b/pom.xml @@ -175,7 +175,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.4.1 + 3.5.0 org.apache.maven.plugins From 0819f5d37d2263f69e239e0ea1756ff2ed4074e8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Feb 2023 23:57:04 +0000 Subject: [PATCH 191/248] Bump maven-compiler-plugin from 3.10.1 to 3.11.0 Bumps [maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) from 3.10.1 to 3.11.0. - [Release notes](https://github.com/apache/maven-compiler-plugin/releases) - [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.10.1...maven-compiler-plugin-3.11.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-compiler-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a5f18e26..050dfe80 100644 --- a/pom.xml +++ b/pom.xml @@ -41,7 +41,7 @@ 7.5 1.6.0.Final - 3.10.1 + 3.11.0 2.2.2 From 8f05f53b992bb5605fdf03d729531011bd963260 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Mar 2023 23:56:41 +0000 Subject: [PATCH 192/248] Bump asciidoctor-maven-plugin from 2.2.2 to 2.2.3 Bumps [asciidoctor-maven-plugin](https://github.com/asciidoctor/asciidoctor-maven-plugin) from 2.2.2 to 2.2.3. - [Release notes](https://github.com/asciidoctor/asciidoctor-maven-plugin/releases) - [Changelog](https://github.com/asciidoctor/asciidoctor-maven-plugin/blob/asciidoctor-maven-plugin-2.2.3/CHANGELOG.adoc) - [Commits](https://github.com/asciidoctor/asciidoctor-maven-plugin/compare/asciidoctor-maven-plugin-2.2.2...asciidoctor-maven-plugin-2.2.3) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctor-maven-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 050dfe80..31944bcd 100644 --- a/pom.xml +++ b/pom.xml @@ -44,7 +44,7 @@ 3.11.0 - 2.2.2 + 2.2.3 2.3.4 MMMM dd, yyyy ${maven.build.timestamp} From d32f1290abb447fb5acf2d969e550993ecb39937 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Mar 2023 23:56:49 +0000 Subject: [PATCH 193/248] Bump maven-release-plugin from 2.5.3 to 3.0.0 Bumps [maven-release-plugin](https://github.com/apache/maven-release) from 2.5.3 to 3.0.0. - [Release notes](https://github.com/apache/maven-release/releases) - [Commits](https://github.com/apache/maven-release/compare/maven-release-2.5.3...maven-release-3.0.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-release-plugin dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 050dfe80..445d8881 100644 --- a/pom.xml +++ b/pom.xml @@ -144,7 +144,7 @@ org.apache.maven.plugins maven-release-plugin - 2.5.3 + 3.0.0 true true From bb4f9aaf3b0aaf05682044cafdf450f2389907da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Mar 2023 23:56:43 +0000 Subject: [PATCH 194/248] Bump graphql-java from 20.0 to 20.1 Bumps [graphql-java](https://github.com/graphql-java/graphql-java) from 20.0 to 20.1. - [Release notes](https://github.com/graphql-java/graphql-java/releases) - [Commits](https://github.com/graphql-java/graphql-java/compare/v20.0...v20.1) --- updated-dependencies: - dependency-name: com.graphql-java:graphql-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index 0eeb5a0e..f05d16dd 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -30,7 +30,7 @@ 5.9.2 - 20.0 + 20.1 From c38d9f98103a646adeb1b5cc923eaa0a651421e6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Mar 2023 23:56:39 +0000 Subject: [PATCH 195/248] Bump maven-resources-plugin from 3.3.0 to 3.3.1 Bumps [maven-resources-plugin](https://github.com/apache/maven-resources-plugin) from 3.3.0 to 3.3.1. - [Release notes](https://github.com/apache/maven-resources-plugin/releases) - [Commits](https://github.com/apache/maven-resources-plugin/compare/maven-resources-plugin-3.3.0...maven-resources-plugin-3.3.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-resources-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- client/api/pom.xml | 2 +- client/tck/pom.xml | 2 +- server/api/pom.xml | 2 +- server/tck/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client/api/pom.xml b/client/api/pom.xml index a9924eb7..bacf1d0a 100644 --- a/client/api/pom.xml +++ b/client/api/pom.xml @@ -40,7 +40,7 @@ maven-resources-plugin - 3.3.0 + 3.3.1 copy-resources diff --git a/client/tck/pom.xml b/client/tck/pom.xml index 0eeb5a0e..8ff6f8a1 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -84,7 +84,7 @@ org.apache.maven.plugins maven-resources-plugin - 3.3.0 + 3.3.1 copy-licenses diff --git a/server/api/pom.xml b/server/api/pom.xml index 22135e70..89d02258 100644 --- a/server/api/pom.xml +++ b/server/api/pom.xml @@ -45,7 +45,7 @@ maven-resources-plugin - 3.3.0 + 3.3.1 copy-resources diff --git a/server/tck/pom.xml b/server/tck/pom.xml index 60d816a4..9230625c 100644 --- a/server/tck/pom.xml +++ b/server/tck/pom.xml @@ -129,7 +129,7 @@ org.apache.maven.plugins maven-resources-plugin - 3.3.0 + 3.3.1 copy-licenses From c4db383196b0ba50e0be2fa356d1d92b7cda196f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Mar 2023 23:56:38 +0000 Subject: [PATCH 196/248] Bump actions/setup-java from 3.10.0 to 3.11.0 Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3.10.0 to 3.11.0. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v3.10.0...v3.11.0) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8fdf06c0..a2d5946a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v3 name: checkout - - uses: actions/setup-java@v3.10.0 + - uses: actions/setup-java@v3.11.0 name: set up jdk ${{matrix.java}} with: distribution: 'temurin' From 900d288de42be5716b5afb440c7abf58568760c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 Mar 2023 23:56:41 +0000 Subject: [PATCH 197/248] Bump graphql-java from 20.1 to 20.2 Bumps [graphql-java](https://github.com/graphql-java/graphql-java) from 20.1 to 20.2. - [Release notes](https://github.com/graphql-java/graphql-java/releases) - [Commits](https://github.com/graphql-java/graphql-java/compare/v20.1...v20.2) --- updated-dependencies: - dependency-name: com.graphql-java:graphql-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index cbf83537..b1acc5e9 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -30,7 +30,7 @@ 5.9.2 - 20.1 + 20.2 From 9cdbf6be5bb620602f5d9abd84c4ec331d2bb663 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Apr 2023 23:56:40 +0000 Subject: [PATCH 198/248] Bump asciidoctorj-diagram from 2.2.4 to 2.2.7 Bumps [asciidoctorj-diagram](https://github.com/asciidoctor/asciidoctorj-diagram) from 2.2.4 to 2.2.7. - [Release notes](https://github.com/asciidoctor/asciidoctorj-diagram/releases) - [Commits](https://github.com/asciidoctor/asciidoctorj-diagram/commits) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-diagram dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- client/spec/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/spec/pom.xml b/client/spec/pom.xml index 96941c05..a8e239bf 100644 --- a/client/spec/pom.xml +++ b/client/spec/pom.xml @@ -62,7 +62,7 @@ org.asciidoctor asciidoctorj-diagram - 2.2.4 + 2.2.7 From e2dc25f936b341593650533b4aa628f0133baf5e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Apr 2023 23:57:24 +0000 Subject: [PATCH 199/248] Bump asciidoctorj-pdf from 2.3.4 to 2.3.6 Bumps [asciidoctorj-pdf](https://github.com/asciidoctor/asciidoctorj-pdf) from 2.3.4 to 2.3.6. - [Release notes](https://github.com/asciidoctor/asciidoctorj-pdf/releases) - [Changelog](https://github.com/asciidoctor/asciidoctorj-pdf/blob/main/CHANGELOG.adoc) - [Commits](https://github.com/asciidoctor/asciidoctorj-pdf/compare/v2.3.4...v2.3.6) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-pdf dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a0b65102..1bacb8a9 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ 2.2.3 - 2.3.4 + 2.3.6 MMMM dd, yyyy ${maven.build.timestamp} Draft From da5c736052b15665457ce1e6c8cbf7a4cef023e7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Apr 2023 23:56:34 +0000 Subject: [PATCH 200/248] Bump asciidoctorj-pdf from 2.3.6 to 2.3.7 Bumps [asciidoctorj-pdf](https://github.com/asciidoctor/asciidoctorj-pdf) from 2.3.6 to 2.3.7. - [Release notes](https://github.com/asciidoctor/asciidoctorj-pdf/releases) - [Changelog](https://github.com/asciidoctor/asciidoctorj-pdf/blob/main/CHANGELOG.adoc) - [Commits](https://github.com/asciidoctor/asciidoctorj-pdf/commits) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-pdf dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1bacb8a9..5c2dbc1a 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ 2.2.3 - 2.3.6 + 2.3.7 MMMM dd, yyyy ${maven.build.timestamp} Draft From 8b3a8b40632464df5e7766d20eda2975b85d5122 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Apr 2023 23:56:44 +0000 Subject: [PATCH 201/248] Bump junit-jupiter from 5.9.2 to 5.9.3 Bumps [junit-jupiter](https://github.com/junit-team/junit5) from 5.9.2 to 5.9.3. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.9.2...r5.9.3) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index b1acc5e9..7d2c55e1 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -29,7 +29,7 @@ - 5.9.2 + 5.9.3 20.2 From 3b11d1b002393ad51e9b6c58aa0c03ef37e1901a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 May 2023 23:56:43 +0000 Subject: [PATCH 202/248] Bump asciidoctorj-diagram from 2.2.7 to 2.2.8 Bumps [asciidoctorj-diagram](https://github.com/asciidoctor/asciidoctorj-diagram) from 2.2.7 to 2.2.8. - [Release notes](https://github.com/asciidoctor/asciidoctorj-diagram/releases) - [Commits](https://github.com/asciidoctor/asciidoctorj-diagram/commits/v2.2.8) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-diagram dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- client/spec/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/spec/pom.xml b/client/spec/pom.xml index a8e239bf..dcb9df5f 100644 --- a/client/spec/pom.xml +++ b/client/spec/pom.xml @@ -62,7 +62,7 @@ org.asciidoctor asciidoctorj-diagram - 2.2.7 + 2.2.8 From 6606d6faa837c7c929c9448f614b6ed1537f2ef8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 May 2023 23:56:49 +0000 Subject: [PATCH 203/248] Bump maven-gpg-plugin from 3.0.1 to 3.1.0 Bumps [maven-gpg-plugin](https://github.com/apache/maven-gpg-plugin) from 3.0.1 to 3.1.0. - [Commits](https://github.com/apache/maven-gpg-plugin/compare/maven-gpg-plugin-3.0.1...maven-gpg-plugin-3.1.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-gpg-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 5c2dbc1a..d7bf4f5e 100644 --- a/pom.xml +++ b/pom.xml @@ -180,7 +180,7 @@ org.apache.maven.plugins maven-gpg-plugin - 3.0.1 + 3.1.0 biz.aQute.bnd @@ -451,7 +451,7 @@ org.apache.maven.plugins maven-gpg-plugin - 3.0.1 + 3.1.0 sign-artifacts From 3415410854f1ea85e39b04739eef29a722588188 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 May 2023 23:56:42 +0000 Subject: [PATCH 204/248] Bump build-helper-maven-plugin from 3.3.0 to 3.4.0 Bumps [build-helper-maven-plugin](https://github.com/mojohaus/build-helper-maven-plugin) from 3.3.0 to 3.4.0. - [Release notes](https://github.com/mojohaus/build-helper-maven-plugin/releases) - [Commits](https://github.com/mojohaus/build-helper-maven-plugin/compare/build-helper-maven-plugin-3.3.0...3.4.0) --- updated-dependencies: - dependency-name: org.codehaus.mojo:build-helper-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d7bf4f5e..dffa6217 100644 --- a/pom.xml +++ b/pom.xml @@ -225,7 +225,7 @@ org.codehaus.mojo build-helper-maven-plugin - 3.3.0 + 3.4.0 From 715894af2b98b61dcd3c3fe95366bd864cf1415b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 May 2023 23:57:01 +0000 Subject: [PATCH 205/248] Bump arquillian-bom from 1.6.0.Final to 1.7.0.Final Bumps [arquillian-bom](https://github.com/arquillian/arquillian-core) from 1.6.0.Final to 1.7.0.Final. - [Release notes](https://github.com/arquillian/arquillian-core/releases) - [Commits](https://github.com/arquillian/arquillian-core/compare/1.6.0.Final...1.7.0.Final) --- updated-dependencies: - dependency-name: org.jboss.arquillian:arquillian-bom dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index dffa6217..5ab0ee0e 100644 --- a/pom.xml +++ b/pom.xml @@ -40,7 +40,7 @@ 7.5 - 1.6.0.Final + 1.7.0.Final 3.11.0 From 95be72a9ab9caddea75dddf80abe5f462efe685a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 May 2023 23:56:43 +0000 Subject: [PATCH 206/248] Bump commons-io from 2.11.0 to 2.12.0 Bumps commons-io from 2.11.0 to 2.12.0. --- updated-dependencies: - dependency-name: commons-io:commons-io dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- server/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/tck/pom.xml b/server/tck/pom.xml index 9230625c..78dfa1f9 100644 --- a/server/tck/pom.xml +++ b/server/tck/pom.xml @@ -28,7 +28,7 @@ Server-side code-first GraphQL APIs for MicroProfile :: TCK - 2.11.0 + 2.12.0 1.5.1 From 4ba7e9cf74ef10c11861e7e3f6c6a9522b88a78f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 May 2023 23:56:42 +0000 Subject: [PATCH 207/248] Bump maven-source-plugin from 3.2.1 to 3.3.0 Bumps [maven-source-plugin](https://github.com/apache/maven-source-plugin) from 3.2.1 to 3.3.0. - [Commits](https://github.com/apache/maven-source-plugin/compare/maven-source-plugin-3.2.1...maven-source-plugin-3.3.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-source-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5ab0ee0e..146eb15a 100644 --- a/pom.xml +++ b/pom.xml @@ -170,7 +170,7 @@ org.apache.maven.plugins maven-source-plugin - 3.2.1 + 3.3.0 org.apache.maven.plugins From 0a49b9d5258d24c7e7617220716c0ac47a93f2f3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 May 2023 23:56:49 +0000 Subject: [PATCH 208/248] Bump maven-checkstyle-plugin from 3.2.1 to 3.3.0 Bumps [maven-checkstyle-plugin](https://github.com/apache/maven-checkstyle-plugin) from 3.2.1 to 3.3.0. - [Commits](https://github.com/apache/maven-checkstyle-plugin/compare/maven-checkstyle-plugin-3.2.1...maven-checkstyle-plugin-3.3.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-checkstyle-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5ab0ee0e..04d90858 100644 --- a/pom.xml +++ b/pom.xml @@ -160,7 +160,7 @@ org.apache.maven.plugins maven-checkstyle-plugin - 3.2.1 + 3.3.0 org.apache.maven.plugins From 954a1ec002cc9f91ab305b998e7fe3f3173fe325 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 May 2023 23:56:48 +0000 Subject: [PATCH 209/248] Bump graphql-java from 20.2 to 20.3 Bumps [graphql-java](https://github.com/graphql-java/graphql-java) from 20.2 to 20.3. - [Release notes](https://github.com/graphql-java/graphql-java/releases) - [Commits](https://github.com/graphql-java/graphql-java/compare/v20.2...v20.3) --- updated-dependencies: - dependency-name: com.graphql-java:graphql-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index 7d2c55e1..caf5a931 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -30,7 +30,7 @@ 5.9.3 - 20.2 + 20.3 From d3f63a9e179b6d404dc55fbf06f8ccc1cbc4e3fc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 May 2023 23:56:52 +0000 Subject: [PATCH 210/248] Bump asciidoctor-maven-plugin from 2.2.3 to 2.2.4 Bumps [asciidoctor-maven-plugin](https://github.com/asciidoctor/asciidoctor-maven-plugin) from 2.2.3 to 2.2.4. - [Release notes](https://github.com/asciidoctor/asciidoctor-maven-plugin/releases) - [Changelog](https://github.com/asciidoctor/asciidoctor-maven-plugin/blob/asciidoctor-maven-plugin-2.2.4/CHANGELOG.adoc) - [Commits](https://github.com/asciidoctor/asciidoctor-maven-plugin/compare/asciidoctor-maven-plugin-2.2.3...asciidoctor-maven-plugin-2.2.4) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctor-maven-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f300be84..0cf2c51a 100644 --- a/pom.xml +++ b/pom.xml @@ -44,7 +44,7 @@ 3.11.0 - 2.2.3 + 2.2.4 2.3.7 MMMM dd, yyyy ${maven.build.timestamp} From aaa24eeebd839afd781666c43a6c52e7ee5a6330 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jun 2023 23:57:00 +0000 Subject: [PATCH 211/248] Bump maven-release-plugin from 3.0.0 to 3.0.1 Bumps [maven-release-plugin](https://github.com/apache/maven-release) from 3.0.0 to 3.0.1. - [Release notes](https://github.com/apache/maven-release/releases) - [Commits](https://github.com/apache/maven-release/compare/maven-release-3.0.0...maven-release-3.0.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-release-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0cf2c51a..2568960e 100644 --- a/pom.xml +++ b/pom.xml @@ -144,7 +144,7 @@ org.apache.maven.plugins maven-release-plugin - 3.0.0 + 3.0.1 true true From d14e1cdd17a3263bc9fb86372660fbeb1dc46577 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Jun 2023 23:57:24 +0000 Subject: [PATCH 212/248] Bump commons-io from 2.12.0 to 2.13.0 Bumps commons-io from 2.12.0 to 2.13.0. --- updated-dependencies: - dependency-name: commons-io:commons-io dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- server/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/tck/pom.xml b/server/tck/pom.xml index 78dfa1f9..1c66d040 100644 --- a/server/tck/pom.xml +++ b/server/tck/pom.xml @@ -28,7 +28,7 @@ Server-side code-first GraphQL APIs for MicroProfile :: TCK - 2.12.0 + 2.13.0 1.5.1 From 53abf5d08edbba29b3442309017d54ee172d126c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 Jun 2023 23:56:45 +0000 Subject: [PATCH 213/248] Bump graphql-java from 20.3 to 20.4 Bumps [graphql-java](https://github.com/graphql-java/graphql-java) from 20.3 to 20.4. - [Release notes](https://github.com/graphql-java/graphql-java/releases) - [Commits](https://github.com/graphql-java/graphql-java/compare/v20.3...v20.4) --- updated-dependencies: - dependency-name: com.graphql-java:graphql-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index caf5a931..e1068c66 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -30,7 +30,7 @@ 5.9.3 - 20.3 + 20.4 From e320e0325b63d29a22694eecbe2b72aadf3d5373 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Jun 2023 23:56:51 +0000 Subject: [PATCH 214/248] Bump asciidoctorj-diagram from 2.2.8 to 2.2.9 Bumps [asciidoctorj-diagram](https://github.com/asciidoctor/asciidoctorj-diagram) from 2.2.8 to 2.2.9. - [Release notes](https://github.com/asciidoctor/asciidoctorj-diagram/releases) - [Commits](https://github.com/asciidoctor/asciidoctorj-diagram/compare/v2.2.8...v2.2.9) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-diagram dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- client/spec/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/spec/pom.xml b/client/spec/pom.xml index dcb9df5f..b793e7a5 100644 --- a/client/spec/pom.xml +++ b/client/spec/pom.xml @@ -62,7 +62,7 @@ org.asciidoctor asciidoctorj-diagram - 2.2.8 + 2.2.9 From dbcc7a94a8f5f4d8a2bb71233186726573986aa3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jul 2023 23:41:20 +0000 Subject: [PATCH 215/248] Bump asciidoctorj-pdf from 2.3.7 to 2.3.9 Bumps [asciidoctorj-pdf](https://github.com/asciidoctor/asciidoctorj-pdf) from 2.3.7 to 2.3.9. - [Release notes](https://github.com/asciidoctor/asciidoctorj-pdf/releases) - [Changelog](https://github.com/asciidoctor/asciidoctorj-pdf/blob/main/CHANGELOG.adoc) - [Commits](https://github.com/asciidoctor/asciidoctorj-pdf/commits/v2.3.9) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-pdf dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2568960e..5fce73e2 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ 2.2.4 - 2.3.7 + 2.3.9 MMMM dd, yyyy ${maven.build.timestamp} Draft From d9b202fb93470825a5f2c173f0091e837820d04b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 23:33:31 +0000 Subject: [PATCH 216/248] Bump org.junit.jupiter:junit-jupiter from 5.9.3 to 5.10.0 Bumps [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit5) from 5.9.3 to 5.10.0. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.9.3...r5.10.0) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index e1068c66..994f4fea 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -29,7 +29,7 @@ - 5.9.3 + 5.10.0 20.4 From 6a428d4d5837377710d5bb454e982807e6bd08e8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 23:42:59 +0000 Subject: [PATCH 217/248] Bump actions/setup-java from 3.11.0 to 3.12.0 Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3.11.0 to 3.12.0. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v3.11.0...v3.12.0) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a2d5946a..d5a7a772 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v3 name: checkout - - uses: actions/setup-java@v3.11.0 + - uses: actions/setup-java@v3.12.0 name: set up jdk ${{matrix.java}} with: distribution: 'temurin' From c92791cdfcc04256c3c8466930a814eb9f535521 Mon Sep 17 00:00:00 2001 From: Ruediger zu Dohna Date: Fri, 28 Jul 2023 10:38:59 +0200 Subject: [PATCH 218/248] update link to spec 2.0 --- README.asciidoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.asciidoc b/README.asciidoc index 9dc35570..104715c4 100644 --- a/README.asciidoc +++ b/README.asciidoc @@ -22,7 +22,7 @@ image:https://badges.gitter.im/eclipse/microprofile-graphql.svg[link="https://gi = Microprofile GraphQL Specification -Read the https://download.eclipse.org/microprofile/microprofile-graphql-1.1.0/microprofile-graphql-spec-1.1.0.html[MicroProfile GraphQL 1.1.0] Specification +Read the https://download.eclipse.org/microprofile/microprofile-graphql-2.0/microprofile-graphql-spec-2.0.html[MicroProfile GraphQL 2.0] Specification == Structure From 09d50082be87acaddaf3f59bb8eff6f6ce96aad8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 23:34:41 +0000 Subject: [PATCH 219/248] Bump org.asciidoctor:asciidoctorj-diagram from 2.2.9 to 2.2.10 Bumps [org.asciidoctor:asciidoctorj-diagram](https://github.com/asciidoctor/asciidoctorj-diagram) from 2.2.9 to 2.2.10. - [Release notes](https://github.com/asciidoctor/asciidoctorj-diagram/releases) - [Commits](https://github.com/asciidoctor/asciidoctorj-diagram/compare/v2.2.9...v2.2.10) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-diagram dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- client/spec/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/spec/pom.xml b/client/spec/pom.xml index b793e7a5..4534b9ba 100644 --- a/client/spec/pom.xml +++ b/client/spec/pom.xml @@ -62,7 +62,7 @@ org.asciidoctor asciidoctorj-diagram - 2.2.9 + 2.2.10 From 967442dd0f1ded32d159bd5f74ff60f05bc883c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 10 Aug 2023 23:25:32 +0000 Subject: [PATCH 220/248] Bump jakarta.json:jakarta.json-api from 1.1.6 to 2.1.2 Bumps [jakarta.json:jakarta.json-api](https://github.com/eclipse-ee4j/jsonp) from 1.1.6 to 2.1.2. - [Release notes](https://github.com/eclipse-ee4j/jsonp/releases) - [Commits](https://github.com/eclipse-ee4j/jsonp/commits) --- updated-dependencies: - dependency-name: jakarta.json:jakarta.json-api dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- client/spec/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/spec/pom.xml b/client/spec/pom.xml index 4534b9ba..1cab85af 100644 --- a/client/spec/pom.xml +++ b/client/spec/pom.xml @@ -47,7 +47,7 @@ jakarta.json jakarta.json-api - 1.1.6 + 2.1.2 provided From 2e8604fb93a3d23bd78d688cbede97c83ffec2e9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 10 Aug 2023 23:25:40 +0000 Subject: [PATCH 221/248] Bump org.asciidoctor:asciidoctorj-diagram from 2.2.10 to 2.2.11 Bumps [org.asciidoctor:asciidoctorj-diagram](https://github.com/asciidoctor/asciidoctorj-diagram) from 2.2.10 to 2.2.11. - [Release notes](https://github.com/asciidoctor/asciidoctorj-diagram/releases) - [Commits](https://github.com/asciidoctor/asciidoctorj-diagram/compare/v2.2.10...v2.2.11) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-diagram dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- client/spec/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/spec/pom.xml b/client/spec/pom.xml index 4534b9ba..b264cd7d 100644 --- a/client/spec/pom.xml +++ b/client/spec/pom.xml @@ -62,7 +62,7 @@ org.asciidoctor asciidoctorj-diagram - 2.2.10 + 2.2.11 From 4020348133c126774a6c6d7acf2a62bc20db4296 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 11 Aug 2023 01:40:11 +0000 Subject: [PATCH 222/248] Bump org.testng:testng from 7.5 to 7.5.1 Bumps [org.testng:testng](https://github.com/cbeust/testng) from 7.5 to 7.5.1. - [Release notes](https://github.com/cbeust/testng/releases) - [Changelog](https://github.com/testng-team/testng/blob/master/CHANGES.txt) - [Commits](https://github.com/cbeust/testng/compare/7.5...7.5.1) --- updated-dependencies: - dependency-name: org.testng:testng dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5fce73e2..0e9bbbbc 100644 --- a/pom.xml +++ b/pom.xml @@ -39,7 +39,7 @@ 1.0.2 - 7.5 + 7.5.1 1.7.0.Final 3.11.0 From 78cc064e58900c8041c6f073668ebab13fbac15b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 15 Aug 2023 23:34:57 +0000 Subject: [PATCH 223/248] Bump org.jboss.arquillian:arquillian-bom from 1.7.0.Final to 1.7.1.Final Bumps [org.jboss.arquillian:arquillian-bom](https://github.com/arquillian/arquillian-core) from 1.7.0.Final to 1.7.1.Final. - [Release notes](https://github.com/arquillian/arquillian-core/releases) - [Commits](https://github.com/arquillian/arquillian-core/compare/1.7.0.Final...1.7.1.Final) --- updated-dependencies: - dependency-name: org.jboss.arquillian:arquillian-bom dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0e9bbbbc..aad1ee60 100644 --- a/pom.xml +++ b/pom.xml @@ -40,7 +40,7 @@ 7.5.1 - 1.7.0.Final + 1.7.1.Final 3.11.0 From 4d69b761233531a368085dffde851fb0d5f918d0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 23:28:13 +0000 Subject: [PATCH 224/248] Bump actions/checkout from 3 to 4 Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d5a7a772..ec1f1c76 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ jobs: name: build with jdk ${{matrix.java}} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 name: checkout - uses: actions/setup-java@v3.12.0 From 3bc4a114235fbe613674bbc73cdcb7c9857dbc56 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 15 Sep 2023 23:13:25 +0000 Subject: [PATCH 225/248] Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.5.0 to 3.6.0 Bumps [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.5.0 to 3.6.0. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.5.0...maven-javadoc-plugin-3.6.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index aad1ee60..452f62d1 100644 --- a/pom.xml +++ b/pom.xml @@ -175,7 +175,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.5.0 + 3.6.0 org.apache.maven.plugins From 0c98cf0fa0c49a29ffdaf1fcc0a1b7ee31fe3a52 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Sep 2023 00:04:00 +0000 Subject: [PATCH 226/248] Bump org.asciidoctor:asciidoctorj-diagram from 2.2.11 to 2.2.13 Bumps [org.asciidoctor:asciidoctorj-diagram](https://github.com/asciidoctor/asciidoctorj-diagram) from 2.2.11 to 2.2.13. - [Release notes](https://github.com/asciidoctor/asciidoctorj-diagram/releases) - [Commits](https://github.com/asciidoctor/asciidoctorj-diagram/compare/v2.2.11...v2.2.13) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-diagram dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- client/spec/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/spec/pom.xml b/client/spec/pom.xml index 13c5f014..d650ab01 100644 --- a/client/spec/pom.xml +++ b/client/spec/pom.xml @@ -62,7 +62,7 @@ org.asciidoctor asciidoctorj-diagram - 2.2.11 + 2.2.13 From fea3dbc76bec39029c10fb51625df53addaa701a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Sep 2023 23:48:22 +0000 Subject: [PATCH 227/248] Bump actions/setup-java from 3.12.0 to 3.13.0 Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3.12.0 to 3.13.0. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v3.12.0...v3.13.0) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ec1f1c76..927f3e54 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v4 name: checkout - - uses: actions/setup-java@v3.12.0 + - uses: actions/setup-java@v3.13.0 name: set up jdk ${{matrix.java}} with: distribution: 'temurin' From 3a887c9b8114b2f93f6b56abb5f2ffe987ef325d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Sep 2023 00:05:24 +0000 Subject: [PATCH 228/248] Bump commons-io:commons-io from 2.13.0 to 2.14.0 Bumps commons-io:commons-io from 2.13.0 to 2.14.0. --- updated-dependencies: - dependency-name: commons-io:commons-io dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- server/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/tck/pom.xml b/server/tck/pom.xml index 1c66d040..794bf29f 100644 --- a/server/tck/pom.xml +++ b/server/tck/pom.xml @@ -28,7 +28,7 @@ Server-side code-first GraphQL APIs for MicroProfile :: TCK - 2.13.0 + 2.14.0 1.5.1 From 3b1fe9644f9932ff0c93f151add403edb4cdf079 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 21 Oct 2023 00:04:08 +0000 Subject: [PATCH 229/248] Bump jakarta.json:jakarta.json-api from 2.1.2 to 2.1.3 Bumps [jakarta.json:jakarta.json-api](https://github.com/eclipse-ee4j/jsonp) from 2.1.2 to 2.1.3. - [Release notes](https://github.com/eclipse-ee4j/jsonp/releases) - [Commits](https://github.com/eclipse-ee4j/jsonp/commits) --- updated-dependencies: - dependency-name: jakarta.json:jakarta.json-api dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- client/spec/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/spec/pom.xml b/client/spec/pom.xml index d650ab01..2226bf31 100644 --- a/client/spec/pom.xml +++ b/client/spec/pom.xml @@ -47,7 +47,7 @@ jakarta.json jakarta.json-api - 2.1.2 + 2.1.3 provided From 007c2b81da5c2640772ea92589bd300e01507c9e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 24 Oct 2023 23:42:43 +0000 Subject: [PATCH 230/248] Bump org.apache.maven.plugins:maven-checkstyle-plugin Bumps [org.apache.maven.plugins:maven-checkstyle-plugin](https://github.com/apache/maven-checkstyle-plugin) from 3.3.0 to 3.3.1. - [Commits](https://github.com/apache/maven-checkstyle-plugin/compare/maven-checkstyle-plugin-3.3.0...maven-checkstyle-plugin-3.3.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-checkstyle-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 452f62d1..5b5ef42c 100644 --- a/pom.xml +++ b/pom.xml @@ -160,7 +160,7 @@ org.apache.maven.plugins maven-checkstyle-plugin - 3.3.0 + 3.3.1 org.apache.maven.plugins From 3950e5c27f5089b663c422dbd8f6726272138c42 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Oct 2023 00:07:59 +0000 Subject: [PATCH 231/248] Bump commons-io:commons-io from 2.14.0 to 2.15.0 Bumps commons-io:commons-io from 2.14.0 to 2.15.0. --- updated-dependencies: - dependency-name: commons-io:commons-io dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- server/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/tck/pom.xml b/server/tck/pom.xml index 794bf29f..911e27d9 100644 --- a/server/tck/pom.xml +++ b/server/tck/pom.xml @@ -28,7 +28,7 @@ Server-side code-first GraphQL APIs for MicroProfile :: TCK - 2.14.0 + 2.15.0 1.5.1 From d9f18e4e45bac92052e9c3cee356f7e3c54b9560 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Nov 2023 23:34:24 +0000 Subject: [PATCH 232/248] Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.6.0 to 3.6.2 Bumps [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.6.0 to 3.6.2. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.6.0...maven-javadoc-plugin-3.6.2) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5b5ef42c..ba9cf36c 100644 --- a/pom.xml +++ b/pom.xml @@ -175,7 +175,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.6.0 + 3.6.2 org.apache.maven.plugins From 61c7ea250bbc94ae8ac8ebd6a258d495542f8494 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Nov 2023 23:34:32 +0000 Subject: [PATCH 233/248] Bump org.junit.jupiter:junit-jupiter from 5.10.0 to 5.10.1 Bumps [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit5) from 5.10.0 to 5.10.1. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.10.0...r5.10.1) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- client/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/tck/pom.xml b/client/tck/pom.xml index 994f4fea..d78ed8ca 100644 --- a/client/tck/pom.xml +++ b/client/tck/pom.xml @@ -29,7 +29,7 @@ - 5.10.0 + 5.10.1 20.4 From aac0a086447e92eca2ed9839b63efadfd408034a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 10 Nov 2023 00:06:33 +0000 Subject: [PATCH 234/248] Bump org.jboss.arquillian:arquillian-bom from 1.7.1.Final to 1.7.2.Final Bumps [org.jboss.arquillian:arquillian-bom](https://github.com/arquillian/arquillian-core) from 1.7.1.Final to 1.7.2.Final. - [Release notes](https://github.com/arquillian/arquillian-core/releases) - [Commits](https://github.com/arquillian/arquillian-core/compare/1.7.1.Final...1.7.2.Final) --- updated-dependencies: - dependency-name: org.jboss.arquillian:arquillian-bom dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ba9cf36c..866e55f5 100644 --- a/pom.xml +++ b/pom.xml @@ -40,7 +40,7 @@ 7.5.1 - 1.7.1.Final + 1.7.2.Final 3.11.0 From c2801fd79fe9d46164493d6d99b3c5ad1c5638b8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Nov 2023 23:41:51 +0000 Subject: [PATCH 235/248] Bump org.jboss.arquillian:arquillian-bom from 1.7.2.Final to 1.8.0.Final Bumps [org.jboss.arquillian:arquillian-bom](https://github.com/arquillian/arquillian-core) from 1.7.2.Final to 1.8.0.Final. - [Release notes](https://github.com/arquillian/arquillian-core/releases) - [Commits](https://github.com/arquillian/arquillian-core/compare/1.7.2.Final...1.8.0.Final) --- updated-dependencies: - dependency-name: org.jboss.arquillian:arquillian-bom dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 866e55f5..fbd0c0c1 100644 --- a/pom.xml +++ b/pom.xml @@ -40,7 +40,7 @@ 7.5.1 - 1.7.2.Final + 1.8.0.Final 3.11.0 From 691771f7dda40a702565b11fafc80277ad8f29d4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Nov 2023 23:47:48 +0000 Subject: [PATCH 236/248] Bump org.codehaus.mojo:build-helper-maven-plugin from 3.4.0 to 3.5.0 Bumps [org.codehaus.mojo:build-helper-maven-plugin](https://github.com/mojohaus/build-helper-maven-plugin) from 3.4.0 to 3.5.0. - [Release notes](https://github.com/mojohaus/build-helper-maven-plugin/releases) - [Commits](https://github.com/mojohaus/build-helper-maven-plugin/compare/3.4.0...3.5.0) --- updated-dependencies: - dependency-name: org.codehaus.mojo:build-helper-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fbd0c0c1..9194100e 100644 --- a/pom.xml +++ b/pom.xml @@ -225,7 +225,7 @@ org.codehaus.mojo build-helper-maven-plugin - 3.4.0 + 3.5.0 From e63e2468425a582cb1d914acaecf21bb4606e8f7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Nov 2023 23:19:33 +0000 Subject: [PATCH 237/248] Bump commons-io:commons-io from 2.15.0 to 2.15.1 Bumps commons-io:commons-io from 2.15.0 to 2.15.1. --- updated-dependencies: - dependency-name: commons-io:commons-io dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- server/tck/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/tck/pom.xml b/server/tck/pom.xml index 911e27d9..a0b9e7f0 100644 --- a/server/tck/pom.xml +++ b/server/tck/pom.xml @@ -28,7 +28,7 @@ Server-side code-first GraphQL APIs for MicroProfile :: TCK - 2.15.0 + 2.15.1 1.5.1 From b5a694129e2503123f2eb534d785214cc00bd4f7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Nov 2023 23:43:24 +0000 Subject: [PATCH 238/248] Bump actions/setup-java from 3.13.0 to 4.0.0 Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3.13.0 to 4.0.0. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v3.13.0...v4.0.0) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 927f3e54..93ae535a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v4 name: checkout - - uses: actions/setup-java@v3.13.0 + - uses: actions/setup-java@v4.0.0 name: set up jdk ${{matrix.java}} with: distribution: 'temurin' From 00b03a8247f452a42c542f1c7c77e7ea31132f50 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Dec 2023 23:24:56 +0000 Subject: [PATCH 239/248] Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.6.2 to 3.6.3 Bumps [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.6.2 to 3.6.3. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.6.2...maven-javadoc-plugin-3.6.3) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9194100e..56303014 100644 --- a/pom.xml +++ b/pom.xml @@ -175,7 +175,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.6.2 + 3.6.3 org.apache.maven.plugins From bb982fd6d7bf1a4a300952aa550d8f8ef670b460 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 23:12:47 +0000 Subject: [PATCH 240/248] Bump org.apache.maven.plugins:maven-compiler-plugin Bumps [org.apache.maven.plugins:maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) from 3.11.0 to 3.12.0. - [Release notes](https://github.com/apache/maven-compiler-plugin/releases) - [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.11.0...maven-compiler-plugin-3.12.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-compiler-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 56303014..2cc4e518 100644 --- a/pom.xml +++ b/pom.xml @@ -41,7 +41,7 @@ 7.5.1 1.8.0.Final - 3.11.0 + 3.12.0 2.2.4 From 9b82e848630fb06915ca149189ae5b625b90e0be Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Dec 2023 23:13:18 +0000 Subject: [PATCH 241/248] Bump org.asciidoctor:asciidoctorj-pdf from 2.3.9 to 2.3.10 Bumps [org.asciidoctor:asciidoctorj-pdf](https://github.com/asciidoctor/asciidoctorj-pdf) from 2.3.9 to 2.3.10. - [Release notes](https://github.com/asciidoctor/asciidoctorj-pdf/releases) - [Changelog](https://github.com/asciidoctor/asciidoctorj-pdf/blob/main/CHANGELOG.adoc) - [Commits](https://github.com/asciidoctor/asciidoctorj-pdf/compare/v2.3.9...v2.3.10) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-pdf dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2cc4e518..175c9554 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ 2.2.4 - 2.3.9 + 2.3.10 MMMM dd, yyyy ${maven.build.timestamp} Draft From e46f34ba61f3095927be829252e4c48a93343288 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Dec 2023 23:21:02 +0000 Subject: [PATCH 242/248] Bump org.asciidoctor:asciidoctorj-diagram from 2.2.13 to 2.2.14 Bumps [org.asciidoctor:asciidoctorj-diagram](https://github.com/asciidoctor/asciidoctorj-diagram) from 2.2.13 to 2.2.14. - [Release notes](https://github.com/asciidoctor/asciidoctorj-diagram/releases) - [Commits](https://github.com/asciidoctor/asciidoctorj-diagram/compare/v2.2.13...v2.2.14) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-diagram dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- client/spec/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/spec/pom.xml b/client/spec/pom.xml index 2226bf31..d263dc5e 100644 --- a/client/spec/pom.xml +++ b/client/spec/pom.xml @@ -62,7 +62,7 @@ org.asciidoctor asciidoctorj-diagram - 2.2.13 + 2.2.14 From 535a237ea51aeea3914dd6bf5a1d01f0f852e087 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Dec 2023 23:21:06 +0000 Subject: [PATCH 243/248] Bump org.apache.maven.plugins:maven-compiler-plugin Bumps [org.apache.maven.plugins:maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) from 3.12.0 to 3.12.1. - [Release notes](https://github.com/apache/maven-compiler-plugin/releases) - [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.12.0...maven-compiler-plugin-3.12.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-compiler-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 175c9554..464bd9f5 100644 --- a/pom.xml +++ b/pom.xml @@ -41,7 +41,7 @@ 7.5.1 1.8.0.Final - 3.12.0 + 3.12.1 2.2.4 From a0dfcf99ec1719a086492c9e330ab20f08e4197a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 23:18:07 +0000 Subject: [PATCH 244/248] Bump org.apache.rat:apache-rat-plugin from 0.15 to 0.16 Bumps org.apache.rat:apache-rat-plugin from 0.15 to 0.16. --- updated-dependencies: - dependency-name: org.apache.rat:apache-rat-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 464bd9f5..644c8df0 100644 --- a/pom.xml +++ b/pom.xml @@ -344,7 +344,7 @@ org.apache.rat apache-rat-plugin - 0.15 + 0.16 rat-check From aa5e8ebe1f562815c8d814803f87e1d52eb48982 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Jan 2024 23:35:35 +0000 Subject: [PATCH 245/248] Bump org.asciidoctor:asciidoctor-maven-plugin from 2.2.4 to 2.2.5 Bumps [org.asciidoctor:asciidoctor-maven-plugin](https://github.com/asciidoctor/asciidoctor-maven-plugin) from 2.2.4 to 2.2.5. - [Release notes](https://github.com/asciidoctor/asciidoctor-maven-plugin/releases) - [Changelog](https://github.com/asciidoctor/asciidoctor-maven-plugin/blob/asciidoctor-maven-plugin-2.2.5/CHANGELOG.adoc) - [Commits](https://github.com/asciidoctor/asciidoctor-maven-plugin/compare/asciidoctor-maven-plugin-2.2.4...asciidoctor-maven-plugin-2.2.5) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctor-maven-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 644c8df0..f0e20f46 100644 --- a/pom.xml +++ b/pom.xml @@ -44,7 +44,7 @@ 3.12.1 - 2.2.4 + 2.2.5 2.3.10 MMMM dd, yyyy ${maven.build.timestamp} From 485e6232a1edd94030937b92ba9aa6e750f0687e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 9 Feb 2024 23:34:12 +0000 Subject: [PATCH 246/248] Bump org.asciidoctor:asciidoctorj-pdf from 2.3.10 to 2.3.12 Bumps [org.asciidoctor:asciidoctorj-pdf](https://github.com/asciidoctor/asciidoctorj-pdf) from 2.3.10 to 2.3.12. - [Release notes](https://github.com/asciidoctor/asciidoctorj-pdf/releases) - [Changelog](https://github.com/asciidoctor/asciidoctorj-pdf/blob/main/CHANGELOG.adoc) - [Commits](https://github.com/asciidoctor/asciidoctorj-pdf/compare/v2.3.10...v2.3.12) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctorj-pdf dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f0e20f46..da07491e 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ 2.2.5 - 2.3.10 + 2.3.12 MMMM dd, yyyy ${maven.build.timestamp} Draft From 9bcd745114bd801fd10c6a3fc4e2c701b31381bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Feb 2024 23:14:38 +0000 Subject: [PATCH 247/248] Bump org.asciidoctor:asciidoctor-maven-plugin from 2.2.5 to 2.2.6 Bumps [org.asciidoctor:asciidoctor-maven-plugin](https://github.com/asciidoctor/asciidoctor-maven-plugin) from 2.2.5 to 2.2.6. - [Release notes](https://github.com/asciidoctor/asciidoctor-maven-plugin/releases) - [Changelog](https://github.com/asciidoctor/asciidoctor-maven-plugin/blob/asciidoctor-maven-plugin-2.2.6/CHANGELOG.adoc) - [Commits](https://github.com/asciidoctor/asciidoctor-maven-plugin/compare/asciidoctor-maven-plugin-2.2.5...asciidoctor-maven-plugin-2.2.6) --- updated-dependencies: - dependency-name: org.asciidoctor:asciidoctor-maven-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index da07491e..be1f3a04 100644 --- a/pom.xml +++ b/pom.xml @@ -44,7 +44,7 @@ 3.12.1 - 2.2.5 + 2.2.6 2.3.12 MMMM dd, yyyy ${maven.build.timestamp} From f137ab4ffb73647d0646bb73bedc937b5fc962bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 23:37:48 +0000 Subject: [PATCH 248/248] Bump actions/setup-java from 4.0.0 to 4.7.1 Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4.0.0 to 4.7.1. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v4.0.0...v4.7.1) --- updated-dependencies: - dependency-name: actions/setup-java dependency-version: 4.7.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 93ae535a..80ba782c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v4 name: checkout - - uses: actions/setup-java@v4.0.0 + - uses: actions/setup-java@v4.7.1 name: set up jdk ${{matrix.java}} with: distribution: 'temurin'