├── .github ├── dependabot.yml ├── project.yml ├── render-documentation.sh └── workflows │ ├── build.yml │ ├── prepare-release.yml │ ├── publish-gradle.yml │ ├── release.yml │ ├── review-release.yml │ ├── update-milestone.yml │ └── website.yml ├── .gitignore ├── .mvn └── wrapper │ └── maven-wrapper.properties ├── CODEOWNERS ├── LICENSE ├── README.adoc ├── TODOs.adoc ├── client ├── api │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── io │ │ │ └── smallrye │ │ │ └── graphql │ │ │ └── client │ │ │ ├── GraphQLClient.java │ │ │ ├── GraphQLClientException.java │ │ │ ├── GraphQLError.java │ │ │ ├── InvalidResponseException.java │ │ │ ├── Request.java │ │ │ ├── Response.java │ │ │ ├── UnexpectedCloseException.java │ │ │ ├── core │ │ │ ├── Argument.java │ │ │ ├── Buildable.java │ │ │ ├── Directive.java │ │ │ ├── DirectiveArgument.java │ │ │ ├── Document.java │ │ │ ├── Enum.java │ │ │ ├── Field.java │ │ │ ├── FieldOrFragment.java │ │ │ ├── Fragment.java │ │ │ ├── FragmentOrOperation.java │ │ │ ├── FragmentReference.java │ │ │ ├── InlineFragment.java │ │ │ ├── InputObject.java │ │ │ ├── InputObjectField.java │ │ │ ├── Operation.java │ │ │ ├── OperationType.java │ │ │ ├── ScalarType.java │ │ │ ├── Variable.java │ │ │ ├── VariableType.java │ │ │ ├── exceptions │ │ │ │ └── BuildException.java │ │ │ ├── factory │ │ │ │ ├── ArgumentFactory.java │ │ │ │ ├── DirectiveArgumentFactory.java │ │ │ │ ├── DirectiveFactory.java │ │ │ │ ├── DocumentFactory.java │ │ │ │ ├── EnumFactory.java │ │ │ │ ├── FieldFactory.java │ │ │ │ ├── FragmentFactory.java │ │ │ │ ├── FragmentReferenceFactory.java │ │ │ │ ├── InlineFragmentFactory.java │ │ │ │ ├── InputObjectFactory.java │ │ │ │ ├── InputObjectFieldFactory.java │ │ │ │ ├── OperationFactory.java │ │ │ │ ├── VariableFactory.java │ │ │ │ └── VariableTypeFactory.java │ │ │ └── utils │ │ │ │ ├── ServiceUtils.java │ │ │ │ └── validation │ │ │ │ └── NameValidation.java │ │ │ ├── dynamic │ │ │ └── api │ │ │ │ ├── DynamicGraphQLClient.java │ │ │ │ └── DynamicGraphQLClientBuilder.java │ │ │ ├── typesafe │ │ │ └── api │ │ │ │ ├── AuthorizationHeader.java │ │ │ │ ├── ErrorOr.java │ │ │ │ ├── GraphQLClientApi.java │ │ │ │ ├── Header.java │ │ │ │ ├── Headers.java │ │ │ │ ├── Multiple.java │ │ │ │ ├── NestedParameter.java │ │ │ │ ├── TypesafeGraphQLClientBuilder.java │ │ │ │ └── TypesafeResponse.java │ │ │ └── websocket │ │ │ └── WebsocketSubprotocol.java │ │ └── test │ │ └── java │ │ └── test │ │ └── ErrorOrTest.java ├── generator-test │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── io │ │ │ │ └── smallrye │ │ │ │ └── graphql │ │ │ │ └── client │ │ │ │ └── generator │ │ │ │ └── test │ │ │ │ └── SuperHeroes.java │ │ └── resources │ │ │ └── schema.graphql │ │ └── test │ │ └── java │ │ └── test │ │ └── GeneratorIT.java ├── generator │ ├── README.adoc │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── io │ │ │ │ └── smallrye │ │ │ │ └── graphql │ │ │ │ └── client │ │ │ │ └── generator │ │ │ │ ├── AnnotationProcessor.java │ │ │ │ ├── Generator.java │ │ │ │ ├── GraphQLGeneratorException.java │ │ │ │ ├── GraphQLQueries.java │ │ │ │ ├── GraphQLQuery.java │ │ │ │ └── GraphQLSchema.java │ │ └── late-resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── javax.annotation.processing.Processor │ │ └── test │ │ ├── java │ │ └── test │ │ │ └── GeneratorBehavior.java │ │ └── resources │ │ └── schema.graphql ├── implementation-vertx │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── io │ │ │ │ └── smallrye │ │ │ │ └── graphql │ │ │ │ └── client │ │ │ │ └── vertx │ │ │ │ ├── VertxClientOptionsHelper.java │ │ │ │ ├── VertxManager.java │ │ │ │ ├── dynamic │ │ │ │ ├── VertxDynamicGraphQLClient.java │ │ │ │ └── VertxDynamicGraphQLClientBuilder.java │ │ │ │ ├── ssl │ │ │ │ └── SSLTools.java │ │ │ │ ├── typesafe │ │ │ │ ├── VertxTypesafeGraphQLClientBuilder.java │ │ │ │ └── VertxTypesafeGraphQLClientProxy.java │ │ │ │ └── websocket │ │ │ │ ├── BuiltinWebsocketSubprotocolHandlers.java │ │ │ │ ├── WebSocketSubprotocolHandler.java │ │ │ │ ├── graphqltransportws │ │ │ │ ├── GraphQLTransportWSSubprotocolHandler.java │ │ │ │ └── MessageType.java │ │ │ │ ├── graphqlws │ │ │ │ ├── GraphQLWSSubprotocolHandler.java │ │ │ │ └── MessageType.java │ │ │ │ └── opid │ │ │ │ ├── IncrementingNumberOperationIDGenerator.java │ │ │ │ └── OperationIDGenerator.java │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ ├── io.smallrye.graphql.client.dynamic.api.DynamicGraphQLClientBuilder │ │ │ └── io.smallrye.graphql.client.typesafe.api.TypesafeGraphQLClientBuilder │ │ └── test │ │ ├── java │ │ ├── io │ │ │ └── smallrye │ │ │ │ └── graphql │ │ │ │ └── client │ │ │ │ └── vertx │ │ │ │ └── test │ │ │ │ ├── DynamicClientExceptionTest.java │ │ │ │ ├── DynamicTckSuite.java │ │ │ │ ├── SubscriptionInitializationTimeoutTest.java │ │ │ │ ├── VertxDynamicGraphQLClientBuilderTest.java │ │ │ │ ├── headers │ │ │ │ └── DynamicClientHeadersTest.java │ │ │ │ └── ssl │ │ │ │ ├── DynamicClientSSLTest.java │ │ │ │ ├── SSLTestingTools.java │ │ │ │ └── TypesafeClientSSLTest.java │ │ └── test │ │ │ └── tck │ │ │ ├── TypesafeTckClientModelSuite.java │ │ │ ├── TypesafeTckSuite.java │ │ │ └── VertxTypesafeGraphQLClientFixture.java │ │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ └── tck.graphql.typesafe.TypesafeGraphQLClientFixture │ │ └── ssl │ │ ├── client.cert │ │ ├── client.pkcs12.keystore │ │ ├── client.pkcs12.truststore │ │ ├── client.pkcs12.wrong.keystore │ │ ├── generate.sh │ │ ├── server.cert │ │ ├── server.pkcs12.keystore │ │ ├── server.pkcs12.truststore │ │ └── server.pkcs12.wrong.keystore ├── implementation │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── io │ │ │ │ └── smallrye │ │ │ │ └── graphql │ │ │ │ └── client │ │ │ │ └── impl │ │ │ │ ├── DefaultErrorMessageProvider.java │ │ │ │ ├── ErrorMessageProvider.java │ │ │ │ ├── GraphQLClientConfiguration.java │ │ │ │ ├── GraphQLClientsConfiguration.java │ │ │ │ ├── GraphQLErrorImpl.java │ │ │ │ ├── JsonProviderHolder.java │ │ │ │ ├── RequestImpl.java │ │ │ │ ├── ResponseImpl.java │ │ │ │ ├── ResponseReader.java │ │ │ │ ├── SmallRyeGraphQLClientLogging.java │ │ │ │ ├── SmallRyeGraphQLClientMessages.java │ │ │ │ ├── TypesafeClientConfigurationReader.java │ │ │ │ ├── core │ │ │ │ ├── AbstractArgument.java │ │ │ │ ├── AbstractDirective.java │ │ │ │ ├── AbstractDirectiveArgument.java │ │ │ │ ├── AbstractDocument.java │ │ │ │ ├── AbstractEnum.java │ │ │ │ ├── AbstractField.java │ │ │ │ ├── AbstractFragment.java │ │ │ │ ├── AbstractFragmentReference.java │ │ │ │ ├── AbstractInlineFragment.java │ │ │ │ ├── AbstractInputObject.java │ │ │ │ ├── AbstractInputObjectField.java │ │ │ │ ├── AbstractOperation.java │ │ │ │ ├── AbstractVariable.java │ │ │ │ ├── AbstractVariableType.java │ │ │ │ ├── ArgumentImpl.java │ │ │ │ ├── DirectiveArgumentImpl.java │ │ │ │ ├── DirectiveImpl.java │ │ │ │ ├── DocumentImpl.java │ │ │ │ ├── EnumImpl.java │ │ │ │ ├── FieldImpl.java │ │ │ │ ├── FragmentImpl.java │ │ │ │ ├── FragmentReferenceImpl.java │ │ │ │ ├── InlineFragmentImpl.java │ │ │ │ ├── InputObjectFieldImpl.java │ │ │ │ ├── InputObjectImpl.java │ │ │ │ ├── OperationImpl.java │ │ │ │ ├── VariableImpl.java │ │ │ │ ├── VariableTypeImpl.java │ │ │ │ ├── factory │ │ │ │ │ ├── ArgumentFactoryImpl.java │ │ │ │ │ ├── DirectiveArgumentFactoryImpl.java │ │ │ │ │ ├── DirectiveFactoryImpl.java │ │ │ │ │ ├── DocumentFactoryImpl.java │ │ │ │ │ ├── EnumFactoryImpl.java │ │ │ │ │ ├── FieldFactoryImpl.java │ │ │ │ │ ├── FragmentFactoryImpl.java │ │ │ │ │ ├── FragmentReferenceFactoryImpl.java │ │ │ │ │ ├── InlineFragmentFactoryImpl.java │ │ │ │ │ ├── InputObjectFactoryImpl.java │ │ │ │ │ ├── InputObjectFieldFactoryImpl.java │ │ │ │ │ ├── OperationFactoryImpl.java │ │ │ │ │ ├── VariableFactoryImpl.java │ │ │ │ │ └── VariableTypeFactoryImpl.java │ │ │ │ └── utils │ │ │ │ │ └── ValueFormatter.java │ │ │ │ ├── discovery │ │ │ │ ├── ServiceURLSupplier.java │ │ │ │ ├── StaticURLSupplier.java │ │ │ │ └── StorkServiceURLSupplier.java │ │ │ │ ├── dynamic │ │ │ │ └── cdi │ │ │ │ │ └── NamedDynamicClients.java │ │ │ │ └── typesafe │ │ │ │ ├── CollectionUtils.java │ │ │ │ ├── HeaderBuilder.java │ │ │ │ ├── QueryBuilder.java │ │ │ │ ├── ResultBuilder.java │ │ │ │ ├── cdi │ │ │ │ ├── AbstractBean.java │ │ │ │ ├── TypesafeGraphQLClientBean.java │ │ │ │ └── TypesafeGraphQLClientExtension.java │ │ │ │ ├── json │ │ │ │ ├── GraphQLClientValueHelper.java │ │ │ │ ├── IndexedLocationBuilder.java │ │ │ │ ├── JsonArrayReader.java │ │ │ │ ├── JsonBooleanReader.java │ │ │ │ ├── JsonMapReader.java │ │ │ │ ├── JsonNullReader.java │ │ │ │ ├── JsonNumberReader.java │ │ │ │ ├── JsonObjectReader.java │ │ │ │ ├── JsonReader.java │ │ │ │ ├── JsonStringReader.java │ │ │ │ ├── JsonUtils.java │ │ │ │ ├── Location.java │ │ │ │ ├── MapLocationBuilder.java │ │ │ │ └── Reader.java │ │ │ │ └── reflection │ │ │ │ ├── ConstructionInfo.java │ │ │ │ ├── FieldInfo.java │ │ │ │ ├── MethodInvocation.java │ │ │ │ ├── MethodResolver.java │ │ │ │ ├── NamedElement.java │ │ │ │ ├── ParameterInfo.java │ │ │ │ ├── TypeInfo.java │ │ │ │ └── package-info.java │ │ └── resources │ │ │ └── META-INF │ │ │ ├── beans.xml │ │ │ └── services │ │ │ ├── io.smallrye.graphql.client.core.factory.ArgumentFactory │ │ │ ├── io.smallrye.graphql.client.core.factory.DirectiveArgumentFactory │ │ │ ├── io.smallrye.graphql.client.core.factory.DirectiveFactory │ │ │ ├── io.smallrye.graphql.client.core.factory.DocumentFactory │ │ │ ├── io.smallrye.graphql.client.core.factory.EnumFactory │ │ │ ├── io.smallrye.graphql.client.core.factory.FieldFactory │ │ │ ├── io.smallrye.graphql.client.core.factory.FragmentFactory │ │ │ ├── io.smallrye.graphql.client.core.factory.FragmentReferenceFactory │ │ │ ├── io.smallrye.graphql.client.core.factory.InlineFragmentFactory │ │ │ ├── io.smallrye.graphql.client.core.factory.InputObjectFactory │ │ │ ├── io.smallrye.graphql.client.core.factory.InputObjectFieldFactory │ │ │ ├── io.smallrye.graphql.client.core.factory.OperationFactory │ │ │ ├── io.smallrye.graphql.client.core.factory.VariableFactory │ │ │ ├── io.smallrye.graphql.client.core.factory.VariableTypeFactory │ │ │ ├── io.smallrye.graphql.client.impl.ErrorMessageProvider │ │ │ ├── jakarta.enterprise.inject.spi.Extension │ │ │ └── javax.enterprise.inject.spi.Extension │ │ └── test │ │ └── java │ │ └── io │ │ └── smallrye │ │ └── graphql │ │ └── client │ │ ├── RequestImplTest.java │ │ ├── ResponseReaderTest.java │ │ └── impl │ │ └── core │ │ └── utils │ │ └── ValueFormatterTest.java ├── model-builder │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── io │ │ │ └── smallrye │ │ │ └── graphql │ │ │ └── client │ │ │ └── model │ │ │ ├── Annotations.java │ │ │ ├── Classes.java │ │ │ ├── ClientModelBuilder.java │ │ │ ├── QueryBuilder.java │ │ │ ├── Scalars.java │ │ │ ├── ScanningContext.java │ │ │ └── helper │ │ │ ├── DirectiveHelper.java │ │ │ ├── DirectiveInstance.java │ │ │ ├── FieldModel.java │ │ │ ├── NamedElement.java │ │ │ ├── OperationModel.java │ │ │ ├── ParameterModel.java │ │ │ └── TypeModel.java │ │ └── test │ │ ├── java │ │ └── io │ │ │ └── smallrye │ │ │ └── graphql │ │ │ └── client │ │ │ └── model │ │ │ └── ClientModelBuilderTest.java │ │ └── kotlin │ │ └── ClientModelBuilderKotlinTest.kt ├── model │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── io │ │ └── smallrye │ │ └── graphql │ │ └── client │ │ └── model │ │ ├── ClientModel.java │ │ ├── ClientModels.java │ │ └── MethodKey.java ├── pom.xml └── tck │ ├── pom.xml │ └── src │ └── main │ ├── java │ └── tck │ │ └── graphql │ │ ├── dynamic │ │ ├── core │ │ │ ├── ArgumentsTest.java │ │ │ ├── ArraysTest.java │ │ │ ├── DirectiveArgumentsTest.java │ │ │ ├── DirectivesTest.java │ │ │ ├── DynamicTCK.java │ │ │ ├── EnumsTest.java │ │ │ ├── FieldsTest.java │ │ │ ├── FragmentReferencesTest.java │ │ │ ├── FragmentsTest.java │ │ │ ├── InlineFragmentsTest.java │ │ │ ├── InputObjectFieldsTest.java │ │ │ ├── IterableTest.java │ │ │ ├── NestedObjectsTest.java │ │ │ ├── OperationsTest.java │ │ │ ├── ScalarsTest.java │ │ │ ├── VariableTypesTest.java │ │ │ └── VariablesTest.java │ │ └── helper │ │ │ ├── AssertGraphQL.java │ │ │ └── Utils.java │ │ └── typesafe │ │ ├── Animal.java │ │ ├── AnimalApi.java │ │ ├── AnnotationBehavior.java │ │ ├── ArrayBehavior.java │ │ ├── AuthorizationHeaderBehavior.java │ │ ├── CloseableBehavior.java │ │ ├── ConfigBehavior.java │ │ ├── CustomAssertions.java │ │ ├── EnumBehavior.java │ │ ├── ErrorBehavior.java │ │ ├── HeaderBehavior.java │ │ ├── InterfaceBehavior.java │ │ ├── MutationBehavior.java │ │ ├── NestedBehavior.java │ │ ├── NestedParameterBehavior.java │ │ ├── NillableBehavior.java │ │ ├── OptionalBehavior.java │ │ ├── Outside.java │ │ ├── ParametersBehavior.java │ │ ├── RecursionBehavior.java │ │ ├── ScalarBehavior.java │ │ ├── SomeInput.java │ │ ├── TypesafeGraphQLClientFixture.java │ │ ├── TypesafeResponseBehavior.java │ │ ├── TypesafeTCK.java │ │ └── UnionBehavior.java │ └── resources │ └── core │ ├── arrays.graphql │ ├── dates.graphql │ ├── directivesField.graphql │ ├── directivesFieldWithArguments.graphql │ ├── directivesFieldWithArgumentsAndSubFields.graphql │ ├── directivesFieldWithSubFields.graphql │ ├── directivesFragment.graphql │ ├── directivesInlineFragment.graphql │ ├── directivesInlineFragmentsNoTypeCondition.graphql │ ├── directivesOperationNoName.graphql │ ├── directivesOperationNoNameNoVars.graphql │ ├── directivesOperationNoVars.graphql │ ├── directivesOperationWithEverything.graphql │ ├── directivesVariableWIthScalarTypeDefaultValue.graphql │ ├── directivesVariableWithObjectTypeName.graphql │ ├── directivesVariableWithObjectTypeNameDefaultValue.graphql │ ├── directivesVariableWithScalarType.graphql │ ├── directivesVariableWithVariableType.graphql │ ├── directivesVariableWithVariableTypeDefaultValue.graphql │ ├── enums.graphql │ ├── fields.graphql │ ├── fragments.graphql │ ├── inlinefragments.graphql │ ├── inlinefragmentsNoTypeCondition.graphql │ ├── iterable.graphql │ ├── nestedObjects.graphql │ ├── scalars.graphql │ ├── variablesArrays.graphql │ ├── variablesDefaultValue.graphql │ ├── variablesFlat.graphql │ └── variablesInInputObject.graphql ├── common ├── pom.xml ├── schema-builder │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── io │ │ │ └── smallrye │ │ │ └── graphql │ │ │ └── schema │ │ │ ├── Annotations.java │ │ │ ├── Classes.java │ │ │ ├── ScanningContext.java │ │ │ ├── SchemaBuilder.java │ │ │ ├── SchemaBuilderException.java │ │ │ ├── creator │ │ │ ├── ArgumentCreator.java │ │ │ ├── DirectiveTypeCreator.java │ │ │ ├── FieldCreator.java │ │ │ ├── ModelCreator.java │ │ │ ├── OperationCreator.java │ │ │ ├── ReferenceCreator.java │ │ │ ├── WrapperCreator.java │ │ │ └── type │ │ │ │ ├── AbstractCreator.java │ │ │ │ ├── Creator.java │ │ │ │ ├── CustomScalarCreator.java │ │ │ │ ├── EnumCreator.java │ │ │ │ ├── InputTypeCreator.java │ │ │ │ ├── InterfaceCreator.java │ │ │ │ ├── TypeCreator.java │ │ │ │ └── UnionCreator.java │ │ │ └── helper │ │ │ ├── AdaptToHelper.java │ │ │ ├── AdaptWithHelper.java │ │ │ ├── BeanValidationDirectivesHelper.java │ │ │ ├── DefaultValueHelper.java │ │ │ ├── DeprecatedDirectivesHelper.java │ │ │ ├── DescriptionHelper.java │ │ │ ├── Direction.java │ │ │ ├── Directives.java │ │ │ ├── FormatHelper.java │ │ │ ├── IgnoreHelper.java │ │ │ ├── MethodHelper.java │ │ │ ├── NamespaceHelper.java │ │ │ ├── NonNullHelper.java │ │ │ ├── RolesAllowedDirectivesHelper.java │ │ │ ├── SourceOperationHelper.java │ │ │ ├── TypeAutoNameStrategy.java │ │ │ └── TypeNameHelper.java │ │ └── test │ │ ├── java │ │ └── io │ │ │ └── smallrye │ │ │ └── graphql │ │ │ ├── index │ │ │ ├── NamespaceTest.java │ │ │ ├── SchemaBuilderTest.java │ │ │ ├── app │ │ │ │ ├── Book.java │ │ │ │ ├── BookGraphQLApi.java │ │ │ │ ├── ClassWithOptionalField.java │ │ │ │ ├── CurrencyAdapter.java │ │ │ │ ├── Email.java │ │ │ │ ├── Mapped.java │ │ │ │ ├── MappingResource.java │ │ │ │ ├── Movie.java │ │ │ │ ├── MovieTriviaController.java │ │ │ │ ├── OptionalTestingApi.java │ │ │ │ ├── Person.java │ │ │ │ ├── Phone.java │ │ │ │ ├── SomeDirective.java │ │ │ │ ├── TwitterHandle.java │ │ │ │ ├── Website.java │ │ │ │ └── namespace │ │ │ │ │ ├── ApiWithName.java │ │ │ │ │ ├── ApiWithNameAndNamespace.java │ │ │ │ │ └── ApiWithNamespace.java │ │ │ ├── beanvalidation │ │ │ │ └── ConstraintsInSchemaTest.java │ │ │ ├── duplicates │ │ │ │ ├── source │ │ │ │ │ ├── SomeClass.java │ │ │ │ │ ├── batch │ │ │ │ │ │ └── ApiWithBatchSourceFieldNameDuplicates.java │ │ │ │ │ └── sourcefield │ │ │ │ │ │ └── ApiWithSourceFieldNameDuplicates.java │ │ │ │ └── typename │ │ │ │ │ ├── ApiWithTypeNameDuplicates.java │ │ │ │ │ ├── a │ │ │ │ │ └── Animal.java │ │ │ │ │ └── b │ │ │ │ │ └── Animal.java │ │ │ ├── generic │ │ │ │ ├── Attribute.java │ │ │ │ ├── Character.java │ │ │ │ ├── CharacterResource.java │ │ │ │ ├── Greet.java │ │ │ │ ├── Hero.java │ │ │ │ ├── HeroResource.java │ │ │ │ ├── ResponseAttribute.java │ │ │ │ ├── ResponseComposite.java │ │ │ │ ├── Some.java │ │ │ │ └── parametrized │ │ │ │ │ └── ParametrizedTypesResources.java │ │ │ └── inherit │ │ │ │ ├── ContainerInterface.java │ │ │ │ ├── ContainerType.java │ │ │ │ ├── FieldInterface.java │ │ │ │ ├── FieldType.java │ │ │ │ └── InheritAPI.java │ │ │ └── schema │ │ │ ├── AnnotationsTest.java │ │ │ ├── AsyncApi.java │ │ │ ├── ClassesTest.java │ │ │ ├── IndexCreator.java │ │ │ ├── creator │ │ │ ├── FieldCreatorTest.java │ │ │ ├── FieldNameTest.java │ │ │ ├── OperationCreatorTest.java │ │ │ ├── PojoWithConstructor.java │ │ │ ├── ReferenceCreatorTest.java │ │ │ ├── SimplePojo.java │ │ │ ├── TestApi.java │ │ │ └── fieldnameapp │ │ │ │ ├── Controller.java │ │ │ │ └── SomeObjectAnnotatedGetters.java │ │ │ └── helper │ │ │ ├── FormatHelperTest.java │ │ │ ├── MethodHelperTest.java │ │ │ ├── NonNullHelperTest.java │ │ │ ├── PojoWithGetter.java │ │ │ ├── class_nonnull │ │ │ └── ClassNonNullTestApi.java │ │ │ └── package_nonnull │ │ │ ├── PackageNonNullTestApi.java │ │ │ └── package-info.java │ │ └── kotlin │ │ └── io │ │ └── smallrye │ │ └── graphql │ │ └── kotlin │ │ └── Foo.kt └── schema-model │ ├── README.adoc │ ├── classdiagram.png │ ├── classdiagram.xml │ ├── pom.xml │ └── src │ └── main │ └── java │ └── io │ └── smallrye │ └── graphql │ └── schema │ └── model │ ├── AdaptTo.java │ ├── AdaptWith.java │ ├── Argument.java │ ├── CustomScalarType.java │ ├── DirectiveArgument.java │ ├── DirectiveInstance.java │ ├── DirectiveType.java │ ├── EnumType.java │ ├── EnumValue.java │ ├── ErrorInfo.java │ ├── Execute.java │ ├── Field.java │ ├── GroupContainer.java │ ├── InputType.java │ ├── Namespace.java │ ├── NamespaceContainer.java │ ├── Operation.java │ ├── OperationType.java │ ├── Reference.java │ ├── ReferenceType.java │ ├── Scalars.java │ ├── Schema.java │ ├── Transformation.java │ ├── Type.java │ ├── UnionType.java │ ├── Wrapper.java │ └── WrapperType.java ├── docs ├── README.adoc ├── client-standalone.md ├── client_configuration.md ├── custom-error-extensions.md ├── custom-json-serializers-deserializers.md ├── custom-scalar.md ├── directives.md ├── dynamic-client-error-handling.md ├── dynamic-client-usage.md ├── extensions.md ├── extra.css ├── federation.md ├── gradle-plugin.md ├── handling-init-payload-from-the-websocket.md ├── images │ └── redhat_reversed.svg ├── index.md ├── inspecting-executable-directives-on-server-side.md ├── kotlin.md ├── maven-plugin.md ├── mutation-void.md ├── namespaces-on-server-side.md ├── pom.xml ├── server_configuration.md ├── snippets │ └── examples │ │ ├── dynamicclient │ │ ├── MyClientUsage.java │ │ └── MyClientUsageString.java │ │ └── typesafeclient │ │ ├── MyClientUsage.java │ │ ├── SuperHero.java │ │ └── SuperHeroesApi.java ├── typesafe-client-accessing-metadata-of-responses.md ├── typesafe-client-custom-scalars.md ├── typesafe-client-directives.md ├── typesafe-client-error-handling.md ├── typesafe-client-headers.md ├── typesafe-client-logging.md ├── typesafe-client-multiple-queries.md ├── typesafe-client-reactive-types.md ├── typesafe-client-unions-and-interfaces.md ├── typesafe-client-usage.md └── using-smallrye-stork.md ├── mkdocs.yml ├── mvnw ├── mvnw.cmd ├── pom.xml ├── release └── pom.xml ├── server ├── api │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── io │ │ └── smallrye │ │ └── graphql │ │ └── api │ │ ├── AdaptToScalar.java │ │ ├── AdaptWith.java │ │ ├── Adapter.java │ │ ├── Context.java │ │ ├── CustomFloatScalar.java │ │ ├── CustomIntScalar.java │ │ ├── CustomScalar.java │ │ ├── CustomStringScalar.java │ │ ├── DataFetcher.java │ │ ├── DefaultNonNull.java │ │ ├── Deprecated.java │ │ ├── Directive.java │ │ ├── DirectiveLocation.java │ │ ├── Entry.java │ │ ├── ErrorCode.java │ │ ├── ErrorExtensionProvider.java │ │ ├── Namespace.java │ │ ├── Nullable.java │ │ ├── OneOf.java │ │ ├── Scalar.java │ │ ├── Subscription.java │ │ ├── ToScalar.java │ │ ├── Union.java │ │ └── federation │ │ ├── Authenticated.java │ │ ├── ComposeDirective.java │ │ ├── Extends.java │ │ ├── External.java │ │ ├── FieldSet.java │ │ ├── Inaccessible.java │ │ ├── InterfaceObject.java │ │ ├── Key.java │ │ ├── Override.java │ │ ├── Provides.java │ │ ├── Requires.java │ │ ├── Resolver.java │ │ ├── Shareable.java │ │ ├── Tag.java │ │ ├── link │ │ ├── Import.java │ │ ├── Link.java │ │ └── Purpose.java │ │ ├── policy │ │ ├── Policy.java │ │ ├── PolicyGroup.java │ │ └── PolicyItem.java │ │ └── requiresscopes │ │ ├── RequiresScopes.java │ │ ├── ScopeGroup.java │ │ └── ScopeItem.java ├── implementation-cdi │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── io │ │ │ │ └── smallrye │ │ │ │ └── graphql │ │ │ │ └── cdi │ │ │ │ ├── CDIManagedInstance.java │ │ │ │ ├── CdiLookupService.java │ │ │ │ ├── config │ │ │ │ ├── LogPayloadOptionConverter.java │ │ │ │ └── MicroProfileConfig.java │ │ │ │ ├── context │ │ │ │ ├── CDISmallRyeContext.java │ │ │ │ └── GraphQLThreadContextProvider.java │ │ │ │ ├── event │ │ │ │ ├── AfterDataFetch.java │ │ │ │ ├── AfterExecute.java │ │ │ │ ├── BeforeDataFetch.java │ │ │ │ ├── BeforeExecute.java │ │ │ │ ├── ErrorDataFetch.java │ │ │ │ ├── ErrorExecute.java │ │ │ │ ├── ErrorInfo.java │ │ │ │ └── EventsService.java │ │ │ │ ├── metrics │ │ │ │ ├── MPMetricsService.java │ │ │ │ ├── MetricMeasurement.java │ │ │ │ └── MicrometerMetricsService.java │ │ │ │ ├── producer │ │ │ │ └── GraphQLProducer.java │ │ │ │ └── tracing │ │ │ │ └── TracingService.java │ │ └── resources │ │ │ └── META-INF │ │ │ ├── beans.xml │ │ │ └── services │ │ │ ├── io.smallrye.graphql.spi.EventingService │ │ │ ├── io.smallrye.graphql.spi.LookupService │ │ │ ├── io.smallrye.graphql.spi.MetricsService │ │ │ ├── io.smallrye.graphql.spi.config.Config │ │ │ ├── org.eclipse.microprofile.config.spi.Converter │ │ │ └── org.eclipse.microprofile.context.spi.ThreadContextProvider │ │ └── test │ │ ├── java │ │ └── io │ │ │ └── smallrye │ │ │ └── graphql │ │ │ ├── cdi │ │ │ └── config │ │ │ │ └── MicroProfileConfigTest.java │ │ │ └── execution │ │ │ ├── CdiExecutionTest.java │ │ │ ├── Indexer.java │ │ │ └── SchemaTest.java │ │ └── resources │ │ ├── META-INF │ │ └── microprofile-config.properties │ │ └── beans.xml ├── implementation-servlet │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── io │ │ └── smallrye │ │ └── graphql │ │ └── entry │ │ └── http │ │ ├── ExecutionServlet.java │ │ ├── GraphQLServerWebSocket.java │ │ ├── HttpServletResponseWriter.java │ │ ├── IndexInitializer.java │ │ ├── SchemaServlet.java │ │ ├── SmallRyeGraphQLServletLogging.java │ │ └── StartupListener.java ├── implementation │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── io │ │ │ │ └── smallrye │ │ │ │ └── graphql │ │ │ │ ├── JsonProviderHolder.java │ │ │ │ ├── SmallRyeGraphQLServerLogging.java │ │ │ │ ├── SmallRyeGraphQLServerMessages.java │ │ │ │ ├── bootstrap │ │ │ │ ├── Bootstrap.java │ │ │ │ ├── DataFetcherFactory.java │ │ │ │ ├── FederationDataFetcher.java │ │ │ │ ├── LinkProcessor.java │ │ │ │ └── TypeFieldWrapper.java │ │ │ │ ├── config │ │ │ │ └── ConfigKey.java │ │ │ │ ├── execution │ │ │ │ ├── Classes.java │ │ │ │ ├── ExecutionException.java │ │ │ │ ├── ExecutionResponse.java │ │ │ │ ├── ExecutionResponseWriter.java │ │ │ │ ├── ExecutionService.java │ │ │ │ ├── JsonObjectResponseWriter.java │ │ │ │ ├── LRUCache.java │ │ │ │ ├── QueryCache.java │ │ │ │ ├── SchemaPrinter.java │ │ │ │ ├── context │ │ │ │ │ ├── DocumentSupplier.java │ │ │ │ │ ├── SmallRyeContext.java │ │ │ │ │ └── SmallRyeContextManager.java │ │ │ │ ├── datafetcher │ │ │ │ │ ├── AbstractAsyncDataFetcher.java │ │ │ │ │ ├── AbstractDataFetcher.java │ │ │ │ │ ├── AbstractStreamingDataFetcher.java │ │ │ │ │ ├── BatchDataFetcher.java │ │ │ │ │ ├── CollectionCreator.java │ │ │ │ │ ├── CompletionStageDataFetcher.java │ │ │ │ │ ├── DataFetcherException.java │ │ │ │ │ ├── DefaultDataFetcher.java │ │ │ │ │ ├── FieldDataFetcher.java │ │ │ │ │ ├── MultiDataFetcher.java │ │ │ │ │ ├── PlugableBatchableDataFetcher.java │ │ │ │ │ ├── PlugableDataFetcher.java │ │ │ │ │ ├── PublisherDataFetcher.java │ │ │ │ │ ├── UniDataFetcher.java │ │ │ │ │ └── helper │ │ │ │ │ │ ├── AbstractHelper.java │ │ │ │ │ │ ├── ArgumentHelper.java │ │ │ │ │ │ ├── BatchLoaderHelper.java │ │ │ │ │ │ ├── DefaultMapAdapter.java │ │ │ │ │ │ ├── ErrorResultHelper.java │ │ │ │ │ │ ├── FieldHelper.java │ │ │ │ │ │ ├── OperationInvoker.java │ │ │ │ │ │ └── ReflectionInvoker.java │ │ │ │ ├── error │ │ │ │ │ ├── ErrorCodeExtensionProvider.java │ │ │ │ │ ├── ErrorExtensionProviders.java │ │ │ │ │ ├── ErrorInfoMap.java │ │ │ │ │ ├── ExceptionHandler.java │ │ │ │ │ ├── ExceptionNameErrorExtensionProvider.java │ │ │ │ │ ├── ExecutionErrorsService.java │ │ │ │ │ ├── GraphQLExceptionWhileDataFetching.java │ │ │ │ │ └── UnparseableDocumentException.java │ │ │ │ ├── event │ │ │ │ │ ├── EventEmitter.java │ │ │ │ │ ├── InvokeInfo.java │ │ │ │ │ └── Priorities.java │ │ │ │ ├── metrics │ │ │ │ │ └── MetricsEmitter.java │ │ │ │ └── resolver │ │ │ │ │ ├── ConcreteImplementationNotFoundException.java │ │ │ │ │ ├── InterfaceOutputRegistry.java │ │ │ │ │ ├── InterfaceResolver.java │ │ │ │ │ ├── UnionOutputRegistry.java │ │ │ │ │ └── UnionResolver.java │ │ │ │ ├── json │ │ │ │ ├── GraphQLNamingStrategy.java │ │ │ │ ├── InputFieldsInfo.java │ │ │ │ ├── JsonBCreator.java │ │ │ │ └── JsonInputRegistry.java │ │ │ │ ├── scalar │ │ │ │ ├── AbstractScalar.java │ │ │ │ ├── GraphQLScalarTypes.java │ │ │ │ ├── custom │ │ │ │ │ ├── FloatCoercing.java │ │ │ │ │ ├── IntCoercing.java │ │ │ │ │ └── StringCoercing.java │ │ │ │ ├── federation │ │ │ │ │ ├── FieldSetCoercing.java │ │ │ │ │ ├── FieldSetScalar.java │ │ │ │ │ ├── ImportCoercing.java │ │ │ │ │ ├── ImportScalar.java │ │ │ │ │ ├── PolicyCoercing.java │ │ │ │ │ ├── PolicyScalar.java │ │ │ │ │ ├── ScopeCoercing.java │ │ │ │ │ └── ScopeScalar.java │ │ │ │ ├── number │ │ │ │ │ ├── AbstractNumberScalar.java │ │ │ │ │ ├── BigDecimalScalar.java │ │ │ │ │ ├── BigIntegerScalar.java │ │ │ │ │ ├── Converter.java │ │ │ │ │ ├── FloatScalar.java │ │ │ │ │ ├── IntegerScalar.java │ │ │ │ │ └── NumberCoercing.java │ │ │ │ ├── others │ │ │ │ │ └── VoidScalar.java │ │ │ │ └── time │ │ │ │ │ ├── AbstractDateScalar.java │ │ │ │ │ ├── DateCoercing.java │ │ │ │ │ ├── DateScalar.java │ │ │ │ │ ├── DateTimeScalar.java │ │ │ │ │ ├── DurationScalar.java │ │ │ │ │ ├── PeriodScalar.java │ │ │ │ │ └── TimeScalar.java │ │ │ │ ├── spi │ │ │ │ ├── ClassloadingService.java │ │ │ │ ├── DataFetcherService.java │ │ │ │ ├── EventingService.java │ │ │ │ ├── LookupService.java │ │ │ │ ├── ManagedInstance.java │ │ │ │ ├── MetricsService.java │ │ │ │ └── config │ │ │ │ │ ├── Config.java │ │ │ │ │ └── LogPayloadOption.java │ │ │ │ ├── transformation │ │ │ │ ├── AbstractDataFetcherException.java │ │ │ │ ├── CalendarTransformer.java │ │ │ │ ├── CharTransformer.java │ │ │ │ ├── DateTransformer.java │ │ │ │ ├── DurationTransformer.java │ │ │ │ ├── FormattedNumberTransformer.java │ │ │ │ ├── LegacyDateTransformer.java │ │ │ │ ├── NumberTransformer.java │ │ │ │ ├── PeriodTransformer.java │ │ │ │ ├── TransformException.java │ │ │ │ ├── Transformer.java │ │ │ │ ├── UriTransformer.java │ │ │ │ ├── UrlTransformer.java │ │ │ │ └── UuidTransformer.java │ │ │ │ ├── validation │ │ │ │ ├── BeanValidationError.java │ │ │ │ └── BeanValidationUtil.java │ │ │ │ └── websocket │ │ │ │ ├── AbstractGraphQLWebsocketHandler.java │ │ │ │ ├── GraphQLWebSocketSession.java │ │ │ │ ├── GraphQLWebsocketHandler.java │ │ │ │ ├── graphqltransportws │ │ │ │ ├── GraphQLTransportWSSubprotocolHandler.java │ │ │ │ └── MessageType.java │ │ │ │ └── graphqlws │ │ │ │ ├── GraphQLWSSubprotocolHandler.java │ │ │ │ └── MessageType.java │ │ └── resources │ │ │ └── META-INF │ │ │ ├── beans.xml │ │ │ └── services │ │ │ └── io.smallrye.graphql.api.ErrorExtensionProvider │ │ └── test │ │ ├── java │ │ └── io │ │ │ └── smallrye │ │ │ └── graphql │ │ │ ├── execution │ │ │ ├── CompletableFutureTest.java │ │ │ ├── ContextTest.java │ │ │ ├── ExecutionGenericsTest.java │ │ │ ├── ExecutionTest.java │ │ │ ├── ExecutionTestBase.java │ │ │ ├── ExecutionUnionsTest.java │ │ │ ├── ExperimentalNamespaceTest.java │ │ │ ├── FederatedNamespaceTest.java │ │ │ ├── FederatedTracingTest.java │ │ │ ├── GroupingTest.java │ │ │ ├── Indexer.java │ │ │ ├── JsonbCreatorTest.java │ │ │ ├── LRUCacheTest.java │ │ │ ├── MappingTest.java │ │ │ ├── MutinyTest.java │ │ │ ├── ResolverTest.java │ │ │ ├── TestConfig.java │ │ │ ├── TestErrorExtensionProvider.java │ │ │ ├── context │ │ │ │ └── SmallRyeContextTest.java │ │ │ ├── datafetcher │ │ │ │ ├── CollectionHelperTest.java │ │ │ │ └── MockDataFetchEnvironment.java │ │ │ ├── error │ │ │ │ ├── ErrorExtensionProvidersTest.java │ │ │ │ └── ExecutionErrorsServiceTest.java │ │ │ └── event │ │ │ │ ├── EventEmitterTest.java │ │ │ │ ├── FirstEventingService.java │ │ │ │ ├── LastEventingService.java │ │ │ │ └── TestEventingService.java │ │ │ ├── schema │ │ │ ├── ArgumentDirective.java │ │ │ ├── DirectivesTestApi.java │ │ │ ├── EnumDirective.java │ │ │ ├── EnumTestApi.java │ │ │ ├── FederationTestApi.java │ │ │ ├── FieldDirective.java │ │ │ ├── InputDirective.java │ │ │ ├── InputTestApi.java │ │ │ ├── IntArrayTestDirective.java │ │ │ ├── OneOfSchema.java │ │ │ ├── OperationDirective.java │ │ │ ├── SchemaFederationEnabledTest.java │ │ │ ├── SchemaLinkTest.java │ │ │ ├── SchemaTest.java │ │ │ ├── SchemaTestBase.java │ │ │ ├── TestInterfaceDirective.java │ │ │ ├── TestInterfaceDirectiveImpl.java │ │ │ ├── TestInterfaceWitFederation.java │ │ │ ├── TestTypeWithDirectives.java │ │ │ ├── TestTypeWithFederation.java │ │ │ ├── UnionDirective.java │ │ │ ├── UnionTestApi.java │ │ │ ├── directiveswithenumvalues │ │ │ │ ├── MyEnum.java │ │ │ │ ├── MyEnumValueDirective.java │ │ │ │ ├── MyObject.java │ │ │ │ └── SomeApi.java │ │ │ ├── link │ │ │ │ ├── Book.java │ │ │ │ ├── CustomDirective.java │ │ │ │ ├── Link1Api.java │ │ │ │ ├── Link2Api.java │ │ │ │ ├── Link3Api.java │ │ │ │ ├── Link4Api.java │ │ │ │ ├── Link5Api.java │ │ │ │ ├── Link6Api.java │ │ │ │ ├── Link7Api.java │ │ │ │ └── Link8Api.java │ │ │ ├── rolesallowedschemas │ │ │ │ ├── Customer.java │ │ │ │ ├── RolesSchema1.java │ │ │ │ ├── RolesSchema2.java │ │ │ │ └── RolesSchema3.java │ │ │ └── schemadirectives │ │ │ │ ├── NonRepeatableSchemaDirective.java │ │ │ │ ├── RepeatableSchemaDirective.java │ │ │ │ ├── Schema1.java │ │ │ │ ├── Schema2.java │ │ │ │ ├── Schema3.java │ │ │ │ └── Schema4.java │ │ │ ├── test │ │ │ ├── ClassWithOneGenericsParam.java │ │ │ ├── ContextInfo.java │ │ │ ├── InterfaceWithOneGenericsParam.java │ │ │ ├── MemberOfManyUnions.java │ │ │ ├── ObjectWithColor.java │ │ │ ├── ObjectWithName.java │ │ │ ├── TestEndpoint.java │ │ │ ├── TestListObject.java │ │ │ ├── TestObject.java │ │ │ ├── TestSource.java │ │ │ ├── TestSourceConfiguration.java │ │ │ ├── TestSourceWithConfiguration.java │ │ │ ├── TestUnion.java │ │ │ ├── UnionInterfaceOne.java │ │ │ ├── UnionInterfaceTwo.java │ │ │ ├── UnionMember.java │ │ │ ├── UnionOfInterfaces.java │ │ │ ├── async │ │ │ │ ├── Book.java │ │ │ │ └── FutureBookGraphQLApi.java │ │ │ ├── grouping │ │ │ │ ├── Book.java │ │ │ │ └── BookGraphQLApi.java │ │ │ ├── jsonbCreator │ │ │ │ ├── CreatorApi.java │ │ │ │ ├── CreatorWithFieldDefault.java │ │ │ │ ├── CreatorWithMultipleParameters.java │ │ │ │ ├── CreatorWithParameterDefault.java │ │ │ │ ├── CreatorWithTransformation.java │ │ │ │ ├── WithJsonbCreator.java │ │ │ │ └── WithStaticFactory.java │ │ │ ├── mutiny │ │ │ │ ├── Book.java │ │ │ │ ├── CustomException.java │ │ │ │ └── MutinyBookGraphQLApi.java │ │ │ ├── namespace │ │ │ │ ├── ExperimentalNamespaceApi.java │ │ │ │ ├── ExperimentalNamespaceWithErrorApi.java │ │ │ │ ├── NamedNamespaceModel.java │ │ │ │ ├── NamedNamespaceTestApi.java │ │ │ │ ├── NamedNamespaceWIthGroupingKeyModel.java │ │ │ │ ├── NamedNamespaceWithGroupingKeyTestApi.java │ │ │ │ ├── SourceNamespaceModel.java │ │ │ │ ├── SourceNamespaceTestApi.java │ │ │ │ ├── UnamedModel.java │ │ │ │ └── UnnamedTestApi.java │ │ │ └── resolver │ │ │ │ ├── ExtendedApi.java │ │ │ │ └── ExtendedType.java │ │ │ └── transformation │ │ │ ├── CharTransformerTest.java │ │ │ └── DateTransformerTest.java │ │ └── resources │ │ ├── META-INF │ │ └── services │ │ │ ├── io.smallrye.graphql.api.ErrorExtensionProvider │ │ │ ├── io.smallrye.graphql.spi.EventingService │ │ │ └── io.smallrye.graphql.spi.config.Config │ │ └── schemaTest.graphql ├── integration-tests │ ├── pom.xml │ └── src │ │ ├── main │ │ └── java │ │ │ └── io │ │ │ └── smallrye │ │ │ └── graphql │ │ │ └── tests │ │ │ ├── SmallRyeGraphQLArchiveProcessor.java │ │ │ └── SmallRyeGraphQLExtension.java │ │ └── test │ │ ├── java │ │ └── io │ │ │ └── smallrye │ │ │ └── graphql │ │ │ └── tests │ │ │ ├── GraphQLAssured.java │ │ │ ├── adapting │ │ │ └── AdaptTest.java │ │ │ ├── calendar │ │ │ ├── CalendarTest.java │ │ │ └── SomeApi.java │ │ │ ├── client │ │ │ ├── dynamic │ │ │ │ ├── Dummy.java │ │ │ │ ├── DummyEnum.java │ │ │ │ ├── DummyObject.java │ │ │ │ ├── DynamicClientApi.java │ │ │ │ ├── DynamicClientInjectionTest.java │ │ │ │ ├── DynamicClientSingleOperationsOverHttpTest.java │ │ │ │ ├── DynamicClientSingleOperationsOverWebsocketTest.java │ │ │ │ ├── DynamicClientSingleOperationsTestBase.java │ │ │ │ ├── NestedRecordsTest.java │ │ │ │ ├── RecordAsInputToDynamicClientTest.java │ │ │ │ ├── RecordTest.java │ │ │ │ ├── error │ │ │ │ │ └── DynamicClientErrorTest.java │ │ │ │ ├── extensions │ │ │ │ │ └── DynamicClientExtensionsTest.java │ │ │ │ ├── fragments │ │ │ │ │ ├── Bicycle.java │ │ │ │ │ ├── Car.java │ │ │ │ │ ├── DynamicClientFragmentTest.java │ │ │ │ │ ├── Vehicle.java │ │ │ │ │ └── VehicleApi.java │ │ │ │ └── subscription │ │ │ │ │ ├── AbstractDynamicClientSubscriptionTest.java │ │ │ │ │ ├── DynamicClientGraphQLTransportWSSubscriptionTest.java │ │ │ │ │ ├── DynamicClientGraphQLWSSubscriptionTest.java │ │ │ │ │ └── DynamicClientSubscriptionApi.java │ │ │ ├── parsing │ │ │ │ ├── DynamicClientFormatAnnotationsTest.java │ │ │ │ ├── FormatAnnotationsApi.java │ │ │ │ ├── FormatAnnotationsClientApi.java │ │ │ │ ├── ObjectWithFormattedFields.java │ │ │ │ ├── TypesafeClientFormatAnnotationsTest.java │ │ │ │ ├── TypesafeClientFormatAnnotationsWithClientModelTest.java │ │ │ │ ├── TypesafeClientMapTest.java │ │ │ │ └── TypesafeClientMapWithClientModelTest.java │ │ │ └── typesafe │ │ │ │ ├── ClientPayloadApi.java │ │ │ │ ├── RecordAsInputToTypesafeClientTest.java │ │ │ │ ├── ServerPayloadApi.java │ │ │ │ ├── TypesafeClientInitPayloadOverWebsocketTest.java │ │ │ │ ├── calendar │ │ │ │ ├── ClientSomeApi.java │ │ │ │ ├── SomeApi.java │ │ │ │ ├── TypesafeCalendarTest.java │ │ │ │ └── TypesafeCalendarWithClientModelTest.java │ │ │ │ ├── directives │ │ │ │ ├── ClientApi.java │ │ │ │ ├── FieldDirective.java │ │ │ │ ├── ServerApi.java │ │ │ │ ├── TypesafeStaticDirectivesClientModelTest.java │ │ │ │ ├── VariableDefinitionDirective.java │ │ │ │ └── model │ │ │ │ │ ├── SomeClassClient.java │ │ │ │ │ └── SomeClassServer.java │ │ │ │ ├── ignoreannotation │ │ │ │ ├── IgnoreApi.java │ │ │ │ ├── IgnoreClientApi.java │ │ │ │ ├── TypesafeIgnoreAnnotationTest.java │ │ │ │ ├── TypesafeIgnoreAnnotationWithClientModelTest.java │ │ │ │ ├── clientmodels │ │ │ │ │ └── Person.java │ │ │ │ └── servermodels │ │ │ │ │ └── Person.java │ │ │ │ ├── subscription │ │ │ │ ├── AbstractTypesafeClientSubscriptionTest.java │ │ │ │ ├── Dummy.java │ │ │ │ ├── DummyWithErrorOrOnFailingSourceField.java │ │ │ │ ├── DummyWithSourceField.java │ │ │ │ ├── SubscriptionApi.java │ │ │ │ ├── SubscriptionClientApi.java │ │ │ │ ├── TypesafeClientGraphQLTransportWSSubscriptionTest.java │ │ │ │ ├── TypesafeClientGraphQLTransportWSSubscriptionWithClientModelTest.java │ │ │ │ ├── TypesafeClientGraphQLWSSubscriptionTest.java │ │ │ │ └── TypesafeClientGraphQLWSSubscriptionWithClientModelTest.java │ │ │ │ ├── uni │ │ │ │ ├── TypesafeClientUniTest.java │ │ │ │ ├── UniApi.java │ │ │ │ └── UniClientApi.java │ │ │ │ └── voidmutation │ │ │ │ ├── Rectangle.java │ │ │ │ ├── TypesafeVoidMutationTest.java │ │ │ │ ├── TypesafeVoidMutationWithClientModelTest.java │ │ │ │ ├── client │ │ │ │ └── RectangleClientApi.java │ │ │ │ └── server │ │ │ │ ├── RectangleResources.java │ │ │ │ └── RectangleService.java │ │ │ ├── context │ │ │ ├── AfterExecutionErrorTest.java │ │ │ └── ContextTest.java │ │ │ ├── contextpropagation │ │ │ └── ContextPropagationTest.java │ │ │ ├── customscalars │ │ │ ├── BigDecimalString.java │ │ │ ├── CustomScalarTest.java │ │ │ ├── SomeApi.java │ │ │ └── TwiceTheFloat.java │ │ │ ├── dependentscope │ │ │ └── DependentScopeApiTest.java │ │ │ ├── error │ │ │ └── UnparseableDocumentTestCase.java │ │ │ ├── excludenullfields │ │ │ └── ExcludeNullFieldsInResponseTest.java │ │ │ ├── extensions │ │ │ ├── Shirt.java │ │ │ ├── ShirtResource.java │ │ │ └── UserSupportedExtensionsTest.java │ │ │ ├── http │ │ │ ├── GraphQLOverHttpApi.java │ │ │ ├── GraphQLOverHttpTest.java │ │ │ └── User.java │ │ │ ├── inheritance │ │ │ ├── InheritedGraphQLApiMethodsTest.java │ │ │ └── InterfaceMethodsTest.java │ │ │ ├── json │ │ │ ├── CustomJsonbConfigTestCase.java │ │ │ ├── CustomJsonbService.java │ │ │ ├── DateWrapper.java │ │ │ └── MyApi.java │ │ │ ├── metrics │ │ │ ├── MPMetricsTestCase.java │ │ │ └── MicrometerMetricsTestCase.java │ │ │ ├── mutationvoid │ │ │ ├── Rectangle.java │ │ │ ├── RectangleResources.java │ │ │ ├── RectangleService.java │ │ │ └── VoidMutationTest.java │ │ │ ├── nonnull │ │ │ ├── NonNullErrorResponseTest.java │ │ │ └── SomeApi.java │ │ │ ├── objectid │ │ │ ├── ObjectIdAdapter.java │ │ │ ├── ObjectIdTest.java │ │ │ └── SomeApi.java │ │ │ ├── optional │ │ │ ├── Book.java │ │ │ ├── BookResources.java │ │ │ ├── BookService.java │ │ │ └── OptionalNumberTest.java │ │ │ ├── records │ │ │ └── RecordImplementingInterfaceTest.java │ │ │ ├── stork │ │ │ └── StorkTest.java │ │ │ └── subscription │ │ │ ├── SubscriptionFieldBatchingTest.java │ │ │ └── SubscriptionHasToBeCancelledOnWebSocketCloseTestCase.java │ │ └── resources │ │ └── META-INF │ │ └── services │ │ └── org.jboss.arquillian.core.spi.LoadableExtension ├── pom.xml ├── runner │ ├── README.asciidoc │ ├── graphiql.png │ ├── pom.xml │ └── src │ │ └── main │ │ ├── resources │ │ └── META-INF │ │ │ ├── beans.xml │ │ │ └── microprofile-config.properties │ │ └── webapp │ │ └── WEB-INF │ │ ├── beans.xml │ │ └── jboss-web.xml └── tck │ ├── pom.xml │ ├── src │ └── test │ │ ├── java │ │ └── io │ │ │ └── smallrye │ │ │ └── graphql │ │ │ ├── SmallRyeGraphQLArchiveProcessor.java │ │ │ ├── SmallRyeGraphQLExtension.java │ │ │ ├── TestInterceptor.java │ │ │ └── test │ │ │ └── apps │ │ │ ├── adapt │ │ │ ├── to │ │ │ │ └── api │ │ │ │ │ ├── AdaptToResource.java │ │ │ │ │ ├── Dummy.java │ │ │ │ │ ├── DummyId.java │ │ │ │ │ ├── WithConstructor.java │ │ │ │ │ ├── WithGetInstance.java │ │ │ │ │ ├── WithSetValue.java │ │ │ │ │ └── WithStaticFrom.java │ │ │ └── with │ │ │ │ └── api │ │ │ │ ├── AdapterResource.java │ │ │ │ ├── Address.java │ │ │ │ ├── AddressAdapter.java │ │ │ │ ├── AddressType.java │ │ │ │ ├── ComplexKey.java │ │ │ │ ├── ComplexValue.java │ │ │ │ ├── CustomMapAdapter.java │ │ │ │ ├── Dommie.java │ │ │ │ ├── DommieId.java │ │ │ │ ├── DommieIdAdapter.java │ │ │ │ ├── EmailAddress.java │ │ │ │ ├── EmailAddressAdapter.java │ │ │ │ ├── ISO6391.java │ │ │ │ ├── Id.java │ │ │ │ ├── Language.java │ │ │ │ ├── Tag.java │ │ │ │ ├── Tags.java │ │ │ │ ├── TagsAdapter.java │ │ │ │ ├── WordNumber.java │ │ │ │ └── WordNumberAdapter.java │ │ │ ├── async │ │ │ └── api │ │ │ │ ├── AsyncApi.java │ │ │ │ └── AsyncSource.java │ │ │ ├── batch │ │ │ └── api │ │ │ │ ├── BatchApi.java │ │ │ │ ├── BatchInterface.java │ │ │ │ ├── BatchPojo.java │ │ │ │ └── BusinessException.java │ │ │ ├── collections │ │ │ └── api │ │ │ │ └── CollectionResource.java │ │ │ ├── context │ │ │ └── api │ │ │ │ ├── ContextApi.java │ │ │ │ ├── ContextService.java │ │ │ │ ├── Konteks.java │ │ │ │ └── Pojo.java │ │ │ ├── creators │ │ │ └── api │ │ │ │ ├── CreatorApi.java │ │ │ │ ├── CreatorWithFieldDefault.java │ │ │ │ ├── CreatorWithMultipleParameters.java │ │ │ │ ├── CreatorWithParameterDefault.java │ │ │ │ ├── CreatorWithTransformation.java │ │ │ │ ├── WithJsonbCreator.java │ │ │ │ └── WithStaticFactory.java │ │ │ ├── defaultvalue │ │ │ └── api │ │ │ │ └── DefaultValueParrotAPI.java │ │ │ ├── enumlist │ │ │ └── api │ │ │ │ ├── EnumListApi.java │ │ │ │ ├── ObjectWithEnumList.java │ │ │ │ └── Pet.java │ │ │ ├── error │ │ │ └── api │ │ │ │ └── ErrorApi.java │ │ │ ├── exceptionlist │ │ │ ├── ExceptionListApi.java │ │ │ ├── MyCheckedException.java │ │ │ └── MyUncheckedException.java │ │ │ ├── federation │ │ │ ├── ProductApi.java │ │ │ └── ProductEntity.java │ │ │ ├── fieldexistence │ │ │ └── api │ │ │ │ ├── FieldExistenceApi.java │ │ │ │ └── FieldExistencePojo.java │ │ │ ├── generics │ │ │ ├── api │ │ │ │ ├── ClassFromInterfaceWithOneGenericsListParam.java │ │ │ │ ├── ClassWithGenericArrayAttributeResolvedFromEnclosingClass.java │ │ │ │ ├── ClassWithGenericAttributeResolvedFromEnclosingClass.java │ │ │ │ ├── ClassWithGenericListAttributeResolvedFromEnclosingClass.java │ │ │ │ ├── ClassWithOneGenericsParam.java │ │ │ │ ├── ClassWithOneGenericsParamFromInterface.java │ │ │ │ ├── ClassWithOneGenericsParamToString.java │ │ │ │ ├── ClassWithOneGenericsParamToString2.java │ │ │ │ ├── ClassWithOneGenericsParamWithNameAnnotation.java │ │ │ │ ├── ClassWithTwoGenericsParams.java │ │ │ │ ├── ClassWithoutGenerics.java │ │ │ │ ├── ClassWithoutGenericsWithNameAnnotation.java │ │ │ │ ├── ControllerWithGenerics.java │ │ │ │ ├── InterfaceWithOneGenericsListParam.java │ │ │ │ └── InterfaceWithOneGenericsParam.java │ │ │ └── inheritance │ │ │ │ └── api │ │ │ │ ├── AbstractHasID.java │ │ │ │ ├── AbstractID.java │ │ │ │ ├── Film.java │ │ │ │ ├── FilmResource.java │ │ │ │ ├── FilmService.java │ │ │ │ ├── ID.java │ │ │ │ └── TestID.java │ │ │ ├── grouping │ │ │ └── api │ │ │ │ ├── Book.java │ │ │ │ ├── BookGraphQLApi.java │ │ │ │ ├── Film.java │ │ │ │ └── FilmGraphQLApi.java │ │ │ ├── interfaces │ │ │ └── api │ │ │ │ ├── Eatable.java │ │ │ │ ├── FoodResource.java │ │ │ │ └── MyClass.java │ │ │ ├── jackson │ │ │ └── api │ │ │ │ ├── JacksonApi.java │ │ │ │ └── JacksonObject.java │ │ │ ├── jsonp │ │ │ └── api │ │ │ │ ├── JsonPApi.java │ │ │ │ └── Token.java │ │ │ ├── mutiny │ │ │ └── api │ │ │ │ ├── MutinyApi.java │ │ │ │ ├── MutinyAuthor.java │ │ │ │ └── MutinyBook.java │ │ │ ├── nonnull │ │ │ └── api │ │ │ │ ├── NonNullApi.java │ │ │ │ ├── NonNullClass.java │ │ │ │ └── nonnull_package │ │ │ │ ├── NonNullPackageClass.java │ │ │ │ └── package-info.java │ │ │ ├── optional │ │ │ └── api │ │ │ │ ├── ClassWithOptionalField.java │ │ │ │ ├── Mapped.java │ │ │ │ └── OptionalTestingApi.java │ │ │ ├── profile │ │ │ └── api │ │ │ │ ├── Category.java │ │ │ │ ├── Configuration.java │ │ │ │ ├── ConfigurationEnum.java │ │ │ │ ├── Email.java │ │ │ │ ├── Foo.java │ │ │ │ ├── IEntity.java │ │ │ │ ├── IUser.java │ │ │ │ ├── IdNumber.java │ │ │ │ ├── Profile.java │ │ │ │ ├── ProfileDB.java │ │ │ │ ├── ProfileGraphQLApi.java │ │ │ │ ├── Timestamp.java │ │ │ │ ├── TwitterHandle.java │ │ │ │ └── Website.java │ │ │ ├── scalars │ │ │ └── api │ │ │ │ ├── AdditionalDateScalars.java │ │ │ │ ├── AdditionalDateScalarsApi.java │ │ │ │ ├── AdditionalDurationScalars.java │ │ │ │ ├── AdditionalDurationScalarsApi.java │ │ │ │ ├── AdditionalScalars.java │ │ │ │ └── AdditionalScalarsApi.java │ │ │ ├── subscription │ │ │ └── api │ │ │ │ ├── Stock.java │ │ │ │ ├── StockTickerPublisher.java │ │ │ │ └── StocksApi.java │ │ │ └── variables │ │ │ └── api │ │ │ └── VariablesTestingApi.java │ │ └── resources │ │ ├── META-INF │ │ ├── microprofile-config.properties │ │ └── services │ │ │ └── org.jboss.arquillian.core.spi.LoadableExtension │ │ ├── logging.properties │ │ ├── overrides │ │ ├── basicScalarTests.csv │ │ ├── createNewNullNamedHero │ │ │ └── output2.json │ │ ├── createNewUnnamedHero │ │ │ └── output2.json │ │ ├── invalidDataTypeValue │ │ │ └── output3.json │ │ ├── invalidEnumValue │ │ │ └── output2.json │ │ ├── invalidLocalDateFormattedValue │ │ │ └── output3.json │ │ ├── invalidLocalDateTimeFormattedValue │ │ │ └── output3.json │ │ ├── invalidLocalDateTimeValue │ │ │ └── output3.json │ │ ├── invalidLocalDateValue │ │ │ └── output3.json │ │ ├── invalidLocalTimeFormattedValue │ │ │ └── output3.json │ │ ├── invalidLocalTimeValue │ │ │ └── output3.json │ │ ├── schemaTests.csv │ │ ├── unknownField │ │ │ └── output2.json │ │ ├── unknownMutation │ │ │ └── output2.json │ │ └── unknownQuery │ │ │ └── output2.json │ │ └── tests │ │ ├── adapt │ │ ├── to │ │ │ ├── basic │ │ │ │ ├── input.graphql │ │ │ │ ├── output.json │ │ │ │ └── test.properties │ │ │ ├── input │ │ │ │ ├── input.graphql │ │ │ │ ├── output.json │ │ │ │ └── test.properties │ │ │ └── output │ │ │ │ ├── input.graphql │ │ │ │ ├── output.json │ │ │ │ └── test.properties │ │ └── with │ │ │ ├── input │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ │ ├── mutationoperation │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ │ ├── output │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ │ ├── queryoperation │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ │ └── source │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ ├── adapterTests.csv │ │ ├── additionalDateScalarsTests.csv │ │ ├── additionalDurationScalarsTests.csv │ │ ├── additionalScalarsSchemaTests.csv │ │ ├── async │ │ ├── batch │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ ├── error │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ └── normal │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ ├── asyncTests.csv │ │ ├── batch │ │ ├── error │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ ├── interface │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ └── normal │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ ├── collections │ │ ├── input.graphql │ │ ├── output.json │ │ └── test.properties │ │ ├── context │ │ ├── basic │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ └── fieldselection │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ ├── creator │ │ ├── input.graphql │ │ ├── output.json │ │ └── test.properties │ │ ├── deepList │ │ ├── input.graphql │ │ ├── output.json │ │ └── test.properties │ │ ├── defaultValue │ │ ├── input.graphql │ │ ├── output.json │ │ └── test.properties │ │ ├── enum │ │ ├── input.graphql │ │ ├── output.json │ │ └── test.properties │ │ ├── enumlist │ │ ├── input.graphql │ │ ├── output.json │ │ └── test.properties │ │ ├── errors │ │ ├── annotatedAsyncCustomException │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ ├── annotatedCustomException │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ ├── annotatedReactiveCustomException │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ ├── builtInException │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ ├── customException │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ └── securityException │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ ├── exceptionlist │ │ ├── checkedexception │ │ │ ├── input.graphql │ │ │ └── output.json │ │ └── uncheckedexception │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── federation │ │ ├── input.graphql │ │ ├── output.json │ │ └── test.properties │ │ ├── fieldExistenceTests.csv │ │ ├── fields │ │ ├── input.graphql │ │ ├── output.json │ │ └── test.properties │ │ ├── generics │ │ ├── arrayOfClassWithOneGenericsParamFromInterface │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── arrayOfClassWithOneGenericsParamInControllerString │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── arrayOfClassWithOneGenericsParamInControllerStringMutation │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── arrayOfClassWithTwoGenericsParamsWithNestedOneGenericsParamInControllerString │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── classFromInterfaceWithOneGenericsListParam │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── classWithGenericArrayAttributeResolvedFromEnclosingClass │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── classWithGenericArrayAttributeResolvedFromEnclosingClassMutation │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── classWithGenericAttributeResolvedFromEnclosingClass │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── classWithGenericListAttributeResolvedFromEnclosingClass │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── classWithOneGenericsParamFromInterface │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── classWithOneGenericsParamInControllerClassWithoutGenericsWithNameAnnotation │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── classWithOneGenericsParamInControllerDate │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── classWithOneGenericsParamInControllerInteger │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── classWithOneGenericsParamInControllerIntegerReturnInterface │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── classWithOneGenericsParamInControllerLocalDateMutation │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── classWithOneGenericsParamInControllerString │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── classWithOneGenericsParamInControllerStringMutation │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── classWithOneGenericsParamInControllerStringReturnInterfaceMutation │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── classWithOneGenericsParamToString │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── classWithOneGenericsParamWithNameAnnotation │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── classWithTwoGenericsParamsWithNestedOneGenericsParamInControllerString │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── interfaceWithOneGenericsParamInControllerClassWithoutGenericsWithNameAnnotation │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── interfaceWithOneGenericsParamInControllerDate │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── interfaceWithOneGenericsParamInControllerInteger │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── interfaceWithOneGenericsParamInControllerString │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── listOfClassWithOneGenericsParamFromInterface │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── listOfClassWithOneGenericsParamInControllerString │ │ │ ├── input.graphql │ │ │ └── output.json │ │ └── listOfClassWithTwoGenericsParamsWithNestedOneGenericsParamInControllerString │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── grouping │ │ ├── mutation │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ └── query │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ ├── interfaceTests.csv │ │ ├── jackson │ │ ├── input.graphql │ │ ├── output.json │ │ └── test.properties │ │ ├── jsonp │ │ ├── input.graphql │ │ ├── output.json │ │ └── test.properties │ │ ├── mutiny │ │ ├── input.graphql │ │ ├── output.json │ │ └── test.properties │ │ ├── nonNullTests.csv │ │ ├── optional │ │ ├── classWithEmptyField │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── classWithOptionalField │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── emptyString │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── optionalDateParam │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── optionalInt │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── optionalString │ │ │ ├── input.graphql │ │ │ └── output.json │ │ └── optionalStringParam │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── person │ │ ├── input.graphql │ │ ├── output.json │ │ └── test.properties │ │ ├── personTests.csv │ │ ├── scalars │ │ ├── date │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ ├── double │ │ │ ├── input.graphql │ │ │ └── output.json │ │ ├── duration │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ └── spec │ │ │ ├── input.graphql │ │ │ ├── output.json │ │ │ └── test.properties │ │ ├── subscriptionTests.csv │ │ └── variables │ │ ├── input.graphql │ │ ├── output.json │ │ └── variables.json │ └── testng.xml ├── tools ├── gradle-plugin │ ├── README.adoc │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── plugin │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── io │ │ │ │ └── smallrye │ │ │ │ └── graphql │ │ │ │ └── gradle │ │ │ │ ├── SmallRyeGraphQLPlugin.java │ │ │ │ └── tasks │ │ │ │ ├── FederationDotNames.java │ │ │ │ ├── GenerateSchemaTask.java │ │ │ │ ├── GradleConfig.java │ │ │ │ └── GradleConfigFacade.java │ │ │ └── resources │ │ │ └── META-INF │ │ │ └── services │ │ │ └── io.smallrye.graphql.spi.config.Config │ ├── pom.xml │ ├── settings.gradle │ ├── src │ │ └── test │ │ │ └── java │ │ │ └── io │ │ │ └── smallrye │ │ │ └── graphql │ │ │ └── gradle │ │ │ └── test │ │ │ ├── GradlePluginGenerateSchemaIncludeDirectivesTest.java │ │ │ ├── GradlePluginGenerateSchemaKotlinTest.java │ │ │ └── GradlePluginGenerateSchemaTest.java │ ├── testing-project-kotlin │ │ ├── build.gradle │ │ ├── settings.gradle │ │ └── src │ │ │ └── main │ │ │ └── kotlin │ │ │ └── org │ │ │ └── acme │ │ │ ├── Foo.kt │ │ │ └── TestingApi.kt │ └── testing-project │ │ ├── build.gradle │ │ ├── settings.gradle │ │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── acme │ │ ├── Foo.java │ │ └── TestingApi.java ├── maven-plugin-tests │ ├── pom.xml │ ├── src │ │ └── test │ │ │ └── java │ │ │ └── io │ │ │ └── smallrye │ │ │ └── graphql │ │ │ └── mavenplugin │ │ │ └── test │ │ │ └── GenerateSchemaTest.java │ ├── testing-project-federation │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── org │ │ │ └── acme │ │ │ ├── Foo.java │ │ │ └── TestingApi.java │ ├── testing-project-multi-module │ │ ├── api │ │ │ ├── pom.xml │ │ │ └── src │ │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── acme │ │ │ │ └── TestingApi.java │ │ ├── model │ │ │ ├── pom.xml │ │ │ └── src │ │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── acme │ │ │ │ └── model │ │ │ │ └── Foo.java │ │ └── pom.xml │ └── testing-project │ │ ├── pom.xml │ │ └── src │ │ └── main │ │ └── java │ │ └── org │ │ └── acme │ │ ├── Foo.java │ │ └── TestingApi.java ├── maven-plugin │ ├── README.adoc │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── io │ │ │ └── smallrye │ │ │ └── graphql │ │ │ └── mavenplugin │ │ │ ├── GenerateSchemaMojo.java │ │ │ └── MavenConfigFacade.java │ │ └── resources │ │ └── META-INF │ │ └── services │ │ └── io.smallrye.graphql.spi.config.Config └── pom.xml └── ui ├── graphiql ├── README.asciidoc ├── graphiql.png ├── pom.xml └── src │ └── main │ └── webapp │ ├── favicon.ico │ ├── index.html │ ├── logo.png │ ├── render.js │ └── style.css └── pom.xml /.github/project.yml: -------------------------------------------------------------------------------- 1 | name: SmallRye GraphQL 2 | release: 3 | current-version: 2.13.0 4 | next-version: 2.13.1-SNAPSHOT 5 | -------------------------------------------------------------------------------- /.github/render-documentation.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -euo pipefail 3 | IFS=$'\n\t' 4 | 5 | SR_GRAPHQL_VERSION=$(cat .github/project.yml | yq eval '.release.current-version' -) && mike deploy --push --update-aliases $SR_GRAPHQL_VERSION latest --branch gh-pages 6 | SR_GRAPHQL_VERSION=$(cat .github/project.yml | yq eval '.release.current-version' -) && mike set-default --push latest 7 | -------------------------------------------------------------------------------- /.github/workflows/update-milestone.yml: -------------------------------------------------------------------------------- 1 | name: Update Milestone 2 | 3 | on: 4 | pull_request_target: 5 | types: [closed] 6 | 7 | jobs: 8 | update: 9 | runs-on: ubuntu-latest 10 | name: update-milestone 11 | if: ${{github.event.pull_request.merged == true}} 12 | 13 | steps: 14 | - uses: radcortez/milestone-set-action@main 15 | name: milestone set 16 | with: 17 | github-token: ${{secrets.GITHUB_TOKEN}} 18 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | .github @smallrye/graphql 2 | -------------------------------------------------------------------------------- /client/api/src/main/java/io/smallrye/graphql/client/Request.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client; 2 | 3 | import java.util.Map; 4 | 5 | import jakarta.json.JsonObject; 6 | 7 | public interface Request { 8 | String getDocument(); 9 | 10 | Map getVariables(); 11 | 12 | void setVariables(Map variables); 13 | 14 | Object getVariable(String key); 15 | 16 | Request setVariable(String key, Object value); 17 | 18 | Request resetVariables(); 19 | 20 | String toJson(); 21 | 22 | JsonObject toJsonObject(); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /client/api/src/main/java/io/smallrye/graphql/client/core/Buildable.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.core; 2 | 3 | import io.smallrye.graphql.client.core.exceptions.BuildException; 4 | 5 | public interface Buildable { 6 | String build() throws BuildException; 7 | } 8 | -------------------------------------------------------------------------------- /client/api/src/main/java/io/smallrye/graphql/client/core/FieldOrFragment.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.core; 2 | 3 | /** 4 | * Represents one of these nodes in a GraphQL document: 5 | * - regular field (name), for example "color" 6 | * - reference to a named fragment, for example "...comparisonFields" 7 | * - an inline fragment, for example ("... on Person { name } ") 8 | */ 9 | public interface FieldOrFragment extends Buildable { 10 | } 11 | -------------------------------------------------------------------------------- /client/api/src/main/java/io/smallrye/graphql/client/core/FragmentOrOperation.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.core; 2 | 3 | /** 4 | * Represents a node in a GraphQL document that can contain either an operation (query/mutation/subscription), 5 | * or a definition of a named fragment. On the top level, a GraphQL document basically consists of a list 6 | * of these nodes. 7 | */ 8 | public interface FragmentOrOperation extends Buildable { 9 | } 10 | -------------------------------------------------------------------------------- /client/api/src/main/java/io/smallrye/graphql/client/core/OperationType.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.core; 2 | 3 | public enum OperationType { 4 | QUERY, 5 | MUTATION, 6 | SUBSCRIPTION 7 | } 8 | -------------------------------------------------------------------------------- /client/api/src/main/java/io/smallrye/graphql/client/core/ScalarType.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.core; 2 | 3 | public enum ScalarType { 4 | GQL_INT("Int"), 5 | GQL_FLOAT("Float"), 6 | GQL_STRING("String"), 7 | GQL_BOOL("Boolean"), 8 | GQL_ID("ID"); 9 | 10 | private String type; 11 | 12 | ScalarType(String type) { 13 | this.type = type; 14 | } 15 | 16 | public String toString() { 17 | return type; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /client/api/src/main/java/io/smallrye/graphql/client/core/exceptions/BuildException.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.core.exceptions; 2 | 3 | public class BuildException extends RuntimeException { 4 | public BuildException(String msg) { 5 | super(msg); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /client/api/src/main/java/io/smallrye/graphql/client/core/factory/ArgumentFactory.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.core.factory; 2 | 3 | import java.util.function.Supplier; 4 | 5 | import io.smallrye.graphql.client.core.Argument; 6 | 7 | public interface ArgumentFactory extends Supplier { 8 | } 9 | -------------------------------------------------------------------------------- /client/api/src/main/java/io/smallrye/graphql/client/core/factory/DirectiveArgumentFactory.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.core.factory; 2 | 3 | import java.util.function.Supplier; 4 | 5 | import io.smallrye.graphql.client.core.DirectiveArgument; 6 | 7 | public interface DirectiveArgumentFactory extends Supplier { 8 | } 9 | -------------------------------------------------------------------------------- /client/api/src/main/java/io/smallrye/graphql/client/core/factory/DirectiveFactory.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.core.factory; 2 | 3 | import java.util.function.Supplier; 4 | 5 | import io.smallrye.graphql.client.core.Directive; 6 | 7 | public interface DirectiveFactory extends Supplier { 8 | } 9 | -------------------------------------------------------------------------------- /client/api/src/main/java/io/smallrye/graphql/client/core/factory/DocumentFactory.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.core.factory; 2 | 3 | import java.util.function.Supplier; 4 | 5 | import io.smallrye.graphql.client.core.Document; 6 | 7 | public interface DocumentFactory extends Supplier { 8 | } 9 | -------------------------------------------------------------------------------- /client/api/src/main/java/io/smallrye/graphql/client/core/factory/EnumFactory.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.core.factory; 2 | 3 | import java.util.function.Supplier; 4 | 5 | import io.smallrye.graphql.client.core.Enum; 6 | 7 | public interface EnumFactory extends Supplier { 8 | } 9 | -------------------------------------------------------------------------------- /client/api/src/main/java/io/smallrye/graphql/client/core/factory/FieldFactory.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.core.factory; 2 | 3 | import java.util.function.Supplier; 4 | 5 | import io.smallrye.graphql.client.core.Field; 6 | 7 | public interface FieldFactory extends Supplier { 8 | } 9 | -------------------------------------------------------------------------------- /client/api/src/main/java/io/smallrye/graphql/client/core/factory/FragmentFactory.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.core.factory; 2 | 3 | import java.util.function.Supplier; 4 | 5 | import io.smallrye.graphql.client.core.Fragment; 6 | 7 | public interface FragmentFactory extends Supplier { 8 | } 9 | -------------------------------------------------------------------------------- /client/api/src/main/java/io/smallrye/graphql/client/core/factory/FragmentReferenceFactory.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.core.factory; 2 | 3 | import java.util.function.Supplier; 4 | 5 | import io.smallrye.graphql.client.core.FragmentReference; 6 | 7 | public interface FragmentReferenceFactory extends Supplier { 8 | } 9 | -------------------------------------------------------------------------------- /client/api/src/main/java/io/smallrye/graphql/client/core/factory/InlineFragmentFactory.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.core.factory; 2 | 3 | import java.util.function.Supplier; 4 | 5 | import io.smallrye.graphql.client.core.InlineFragment; 6 | 7 | public interface InlineFragmentFactory extends Supplier { 8 | } 9 | -------------------------------------------------------------------------------- /client/api/src/main/java/io/smallrye/graphql/client/core/factory/InputObjectFactory.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.core.factory; 2 | 3 | import java.util.function.Supplier; 4 | 5 | import io.smallrye.graphql.client.core.InputObject; 6 | 7 | public interface InputObjectFactory extends Supplier { 8 | } 9 | -------------------------------------------------------------------------------- /client/api/src/main/java/io/smallrye/graphql/client/core/factory/InputObjectFieldFactory.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.core.factory; 2 | 3 | import java.util.function.Supplier; 4 | 5 | import io.smallrye.graphql.client.core.InputObjectField; 6 | 7 | public interface InputObjectFieldFactory extends Supplier { 8 | } 9 | -------------------------------------------------------------------------------- /client/api/src/main/java/io/smallrye/graphql/client/core/factory/OperationFactory.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.core.factory; 2 | 3 | import java.util.function.Supplier; 4 | 5 | import io.smallrye.graphql.client.core.Operation; 6 | 7 | public interface OperationFactory extends Supplier { 8 | } 9 | -------------------------------------------------------------------------------- /client/api/src/main/java/io/smallrye/graphql/client/core/factory/VariableFactory.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.core.factory; 2 | 3 | import java.util.function.Supplier; 4 | 5 | import io.smallrye.graphql.client.core.Variable; 6 | 7 | public interface VariableFactory extends Supplier { 8 | } 9 | -------------------------------------------------------------------------------- /client/api/src/main/java/io/smallrye/graphql/client/core/factory/VariableTypeFactory.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.core.factory; 2 | 3 | import java.util.function.Supplier; 4 | 5 | import io.smallrye.graphql.client.core.VariableType; 6 | 7 | public interface VariableTypeFactory extends Supplier { 8 | } 9 | -------------------------------------------------------------------------------- /client/generator-test/src/main/java/io/smallrye/graphql/client/generator/test/SuperHeroes.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.generator.test; 2 | 3 | import io.smallrye.graphql.client.generator.GraphQLQuery; 4 | import io.smallrye.graphql.client.generator.GraphQLSchema; 5 | 6 | @GraphQLSchema("resource:schema.graphql") 7 | @GraphQLQuery("{ teams { name } }") 8 | @GraphQLQuery("query heroesLocatedIn($location: String) { heroesIn(location: $location) { name realName superPowers } }") 9 | public class SuperHeroes { 10 | } 11 | -------------------------------------------------------------------------------- /client/generator/src/main/java/io/smallrye/graphql/client/generator/GraphQLGeneratorException.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.generator; 2 | 3 | public class GraphQLGeneratorException extends RuntimeException { 4 | public GraphQLGeneratorException(String message) { 5 | super(message); 6 | } 7 | 8 | public GraphQLGeneratorException(String message, Throwable cause) { 9 | super(message, cause); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /client/generator/src/main/java/io/smallrye/graphql/client/generator/GraphQLQueries.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.generator; 2 | 3 | public @interface GraphQLQueries { 4 | GraphQLQuery[] value(); 5 | } 6 | -------------------------------------------------------------------------------- /client/generator/src/main/java/io/smallrye/graphql/client/generator/GraphQLQuery.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.generator; 2 | 3 | import java.lang.annotation.Repeatable; 4 | 5 | @Repeatable(GraphQLQueries.class) 6 | public @interface GraphQLQuery { 7 | String value(); 8 | } 9 | -------------------------------------------------------------------------------- /client/generator/src/main/java/io/smallrye/graphql/client/generator/GraphQLSchema.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.generator; 2 | 3 | public @interface GraphQLSchema { 4 | String value(); 5 | } 6 | -------------------------------------------------------------------------------- /client/generator/src/main/late-resources/META-INF/services/javax.annotation.processing.Processor: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.client.generator.AnnotationProcessor 2 | -------------------------------------------------------------------------------- /client/implementation-vertx/src/main/java/io/smallrye/graphql/client/vertx/websocket/opid/IncrementingNumberOperationIDGenerator.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.vertx.websocket.opid; 2 | 3 | import java.util.concurrent.atomic.AtomicLong; 4 | 5 | public class IncrementingNumberOperationIDGenerator implements OperationIDGenerator { 6 | 7 | private final AtomicLong generator = new AtomicLong(1); 8 | 9 | @Override 10 | public String generate() { 11 | return String.valueOf(generator.getAndIncrement()); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /client/implementation-vertx/src/main/java/io/smallrye/graphql/client/vertx/websocket/opid/OperationIDGenerator.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.vertx.websocket.opid; 2 | 3 | public interface OperationIDGenerator { 4 | 5 | String generate(); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /client/implementation-vertx/src/main/resources/META-INF/services/io.smallrye.graphql.client.dynamic.api.DynamicGraphQLClientBuilder: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.client.vertx.dynamic.VertxDynamicGraphQLClientBuilder -------------------------------------------------------------------------------- /client/implementation-vertx/src/main/resources/META-INF/services/io.smallrye.graphql.client.typesafe.api.TypesafeGraphQLClientBuilder: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.client.vertx.typesafe.VertxTypesafeGraphQLClientBuilder 2 | -------------------------------------------------------------------------------- /client/implementation-vertx/src/test/java/io/smallrye/graphql/client/vertx/test/DynamicTckSuite.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.vertx.test; 2 | 3 | import tck.graphql.dynamic.core.DynamicTCK; 4 | 5 | class DynamicTckSuite extends DynamicTCK { 6 | } 7 | -------------------------------------------------------------------------------- /client/implementation-vertx/src/test/resources/META-INF/services/tck.graphql.typesafe.TypesafeGraphQLClientFixture: -------------------------------------------------------------------------------- 1 | test.tck.VertxTypesafeGraphQLClientFixture 2 | -------------------------------------------------------------------------------- /client/implementation-vertx/src/test/resources/ssl/client.cert: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smallrye/smallrye-graphql/f3899bbd9bdacf7b585983bc4906ff856a2b86f6/client/implementation-vertx/src/test/resources/ssl/client.cert -------------------------------------------------------------------------------- /client/implementation-vertx/src/test/resources/ssl/client.pkcs12.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smallrye/smallrye-graphql/f3899bbd9bdacf7b585983bc4906ff856a2b86f6/client/implementation-vertx/src/test/resources/ssl/client.pkcs12.keystore -------------------------------------------------------------------------------- /client/implementation-vertx/src/test/resources/ssl/client.pkcs12.truststore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smallrye/smallrye-graphql/f3899bbd9bdacf7b585983bc4906ff856a2b86f6/client/implementation-vertx/src/test/resources/ssl/client.pkcs12.truststore -------------------------------------------------------------------------------- /client/implementation-vertx/src/test/resources/ssl/client.pkcs12.wrong.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smallrye/smallrye-graphql/f3899bbd9bdacf7b585983bc4906ff856a2b86f6/client/implementation-vertx/src/test/resources/ssl/client.pkcs12.wrong.keystore -------------------------------------------------------------------------------- /client/implementation-vertx/src/test/resources/ssl/server.cert: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smallrye/smallrye-graphql/f3899bbd9bdacf7b585983bc4906ff856a2b86f6/client/implementation-vertx/src/test/resources/ssl/server.cert -------------------------------------------------------------------------------- /client/implementation-vertx/src/test/resources/ssl/server.pkcs12.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smallrye/smallrye-graphql/f3899bbd9bdacf7b585983bc4906ff856a2b86f6/client/implementation-vertx/src/test/resources/ssl/server.pkcs12.keystore -------------------------------------------------------------------------------- /client/implementation-vertx/src/test/resources/ssl/server.pkcs12.truststore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smallrye/smallrye-graphql/f3899bbd9bdacf7b585983bc4906ff856a2b86f6/client/implementation-vertx/src/test/resources/ssl/server.pkcs12.truststore -------------------------------------------------------------------------------- /client/implementation-vertx/src/test/resources/ssl/server.pkcs12.wrong.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smallrye/smallrye-graphql/f3899bbd9bdacf7b585983bc4906ff856a2b86f6/client/implementation-vertx/src/test/resources/ssl/server.pkcs12.wrong.keystore -------------------------------------------------------------------------------- /client/implementation/src/main/java/io/smallrye/graphql/client/impl/DefaultErrorMessageProvider.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.impl; 2 | 3 | public class DefaultErrorMessageProvider implements ErrorMessageProvider { 4 | 5 | @Override 6 | public RuntimeException urlMissingErrorForNamedClient(String name) { 7 | return SmallRyeGraphQLClientMessages.msg.urlNotConfiguredForNamedClient(name); 8 | } 9 | 10 | } 11 | -------------------------------------------------------------------------------- /client/implementation/src/main/java/io/smallrye/graphql/client/impl/JsonProviderHolder.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.impl; 2 | 3 | import jakarta.json.spi.JsonProvider; 4 | 5 | // A central place to get the JsonProvider to avoid calling `JsonProvider.provider()` many times 6 | // due to associated performance costs. 7 | public class JsonProviderHolder { 8 | 9 | public static final JsonProvider JSON_PROVIDER = JsonProvider.provider(); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /client/implementation/src/main/java/io/smallrye/graphql/client/impl/core/DocumentImpl.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.impl.core; 2 | 3 | import io.smallrye.graphql.client.core.FragmentOrOperation; 4 | 5 | public class DocumentImpl extends AbstractDocument { 6 | 7 | @Override 8 | public String build() { 9 | StringBuilder builder = new StringBuilder(); 10 | for (FragmentOrOperation operation : this.getOperations()) { 11 | builder.append(operation.build()); 12 | } 13 | return builder.toString(); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /client/implementation/src/main/java/io/smallrye/graphql/client/impl/core/EnumImpl.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.impl.core; 2 | 3 | public class EnumImpl extends AbstractEnum { 4 | 5 | @Override 6 | public String build() { 7 | validateValue(this.getValue()); 8 | return this.getValue(); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /client/implementation/src/main/java/io/smallrye/graphql/client/impl/core/factory/ArgumentFactoryImpl.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.impl.core.factory; 2 | 3 | import io.smallrye.graphql.client.core.Argument; 4 | import io.smallrye.graphql.client.core.factory.ArgumentFactory; 5 | import io.smallrye.graphql.client.impl.core.ArgumentImpl; 6 | 7 | public class ArgumentFactoryImpl implements ArgumentFactory { 8 | 9 | @Override 10 | public Argument get() { 11 | return new ArgumentImpl(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /client/implementation/src/main/java/io/smallrye/graphql/client/impl/core/factory/DirectiveFactoryImpl.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.impl.core.factory; 2 | 3 | import io.smallrye.graphql.client.core.Directive; 4 | import io.smallrye.graphql.client.core.factory.DirectiveFactory; 5 | import io.smallrye.graphql.client.impl.core.DirectiveImpl; 6 | 7 | public class DirectiveFactoryImpl implements DirectiveFactory { 8 | 9 | @Override 10 | public Directive get() { 11 | return new DirectiveImpl(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /client/implementation/src/main/java/io/smallrye/graphql/client/impl/core/factory/DocumentFactoryImpl.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.impl.core.factory; 2 | 3 | import io.smallrye.graphql.client.core.Document; 4 | import io.smallrye.graphql.client.core.factory.DocumentFactory; 5 | import io.smallrye.graphql.client.impl.core.DocumentImpl; 6 | 7 | public class DocumentFactoryImpl implements DocumentFactory { 8 | 9 | @Override 10 | public Document get() { 11 | return new DocumentImpl(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /client/implementation/src/main/java/io/smallrye/graphql/client/impl/core/factory/EnumFactoryImpl.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.impl.core.factory; 2 | 3 | import io.smallrye.graphql.client.core.Enum; 4 | import io.smallrye.graphql.client.core.factory.EnumFactory; 5 | import io.smallrye.graphql.client.impl.core.EnumImpl; 6 | 7 | public class EnumFactoryImpl implements EnumFactory { 8 | 9 | @Override 10 | public Enum get() { 11 | return new EnumImpl(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /client/implementation/src/main/java/io/smallrye/graphql/client/impl/core/factory/FieldFactoryImpl.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.impl.core.factory; 2 | 3 | import io.smallrye.graphql.client.core.Field; 4 | import io.smallrye.graphql.client.core.factory.FieldFactory; 5 | import io.smallrye.graphql.client.impl.core.FieldImpl; 6 | 7 | public class FieldFactoryImpl implements FieldFactory { 8 | 9 | @Override 10 | public Field get() { 11 | return new FieldImpl(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /client/implementation/src/main/java/io/smallrye/graphql/client/impl/core/factory/FragmentFactoryImpl.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.impl.core.factory; 2 | 3 | import io.smallrye.graphql.client.core.Fragment; 4 | import io.smallrye.graphql.client.core.factory.FragmentFactory; 5 | import io.smallrye.graphql.client.impl.core.FragmentImpl; 6 | 7 | public class FragmentFactoryImpl implements FragmentFactory { 8 | 9 | @Override 10 | public Fragment get() { 11 | return new FragmentImpl(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /client/implementation/src/main/java/io/smallrye/graphql/client/impl/core/factory/InlineFragmentFactoryImpl.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.impl.core.factory; 2 | 3 | import io.smallrye.graphql.client.core.InlineFragment; 4 | import io.smallrye.graphql.client.core.factory.InlineFragmentFactory; 5 | import io.smallrye.graphql.client.impl.core.InlineFragmentImpl; 6 | 7 | public class InlineFragmentFactoryImpl implements InlineFragmentFactory { 8 | 9 | @Override 10 | public InlineFragment get() { 11 | return new InlineFragmentImpl(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /client/implementation/src/main/java/io/smallrye/graphql/client/impl/core/factory/InputObjectFactoryImpl.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.impl.core.factory; 2 | 3 | import io.smallrye.graphql.client.core.InputObject; 4 | import io.smallrye.graphql.client.core.factory.InputObjectFactory; 5 | import io.smallrye.graphql.client.impl.core.InputObjectImpl; 6 | 7 | public class InputObjectFactoryImpl implements InputObjectFactory { 8 | 9 | @Override 10 | public InputObject get() { 11 | return new InputObjectImpl(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /client/implementation/src/main/java/io/smallrye/graphql/client/impl/core/factory/OperationFactoryImpl.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.impl.core.factory; 2 | 3 | import io.smallrye.graphql.client.core.Operation; 4 | import io.smallrye.graphql.client.core.factory.OperationFactory; 5 | import io.smallrye.graphql.client.impl.core.OperationImpl; 6 | 7 | public class OperationFactoryImpl implements OperationFactory { 8 | 9 | @Override 10 | public Operation get() { 11 | return new OperationImpl(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /client/implementation/src/main/java/io/smallrye/graphql/client/impl/core/factory/VariableFactoryImpl.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.impl.core.factory; 2 | 3 | import io.smallrye.graphql.client.core.Variable; 4 | import io.smallrye.graphql.client.core.factory.VariableFactory; 5 | import io.smallrye.graphql.client.impl.core.VariableImpl; 6 | 7 | public class VariableFactoryImpl implements VariableFactory { 8 | 9 | @Override 10 | public Variable get() { 11 | return new VariableImpl(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /client/implementation/src/main/java/io/smallrye/graphql/client/impl/core/factory/VariableTypeFactoryImpl.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.impl.core.factory; 2 | 3 | import io.smallrye.graphql.client.core.VariableType; 4 | import io.smallrye.graphql.client.core.factory.VariableTypeFactory; 5 | import io.smallrye.graphql.client.impl.core.VariableTypeImpl; 6 | 7 | public class VariableTypeFactoryImpl implements VariableTypeFactory { 8 | 9 | @Override 10 | public VariableType get() { 11 | return new VariableTypeImpl(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /client/implementation/src/main/java/io/smallrye/graphql/client/impl/discovery/ServiceURLSupplier.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.impl.discovery; 2 | 3 | import io.smallrye.mutiny.Uni; 4 | 5 | public interface ServiceURLSupplier { 6 | 7 | Uni get(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /client/implementation/src/main/java/io/smallrye/graphql/client/impl/discovery/StaticURLSupplier.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.impl.discovery; 2 | 3 | import io.smallrye.mutiny.Uni; 4 | 5 | public class StaticURLSupplier implements ServiceURLSupplier { 6 | 7 | private final String url; 8 | 9 | public StaticURLSupplier(String url) { 10 | this.url = url; 11 | } 12 | 13 | @Override 14 | public Uni get() { 15 | return Uni.createFrom().item(url); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /client/implementation/src/main/java/io/smallrye/graphql/client/impl/typesafe/reflection/NamedElement.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.client.impl.typesafe.reflection; 2 | 3 | public interface NamedElement { 4 | String getName(); 5 | 6 | String getRawName(); 7 | 8 | default boolean isRenamed() { 9 | return !getName().equals(getRawName()); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /client/implementation/src/main/java/io/smallrye/graphql/client/impl/typesafe/reflection/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Hides the technical details of Java reflection from the GraphQlClient 3 | */ 4 | package io.smallrye.graphql.client.impl.typesafe.reflection; 5 | -------------------------------------------------------------------------------- /client/implementation/src/main/resources/META-INF/beans.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | -------------------------------------------------------------------------------- /client/implementation/src/main/resources/META-INF/services/io.smallrye.graphql.client.core.factory.ArgumentFactory: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.client.impl.core.factory.ArgumentFactoryImpl -------------------------------------------------------------------------------- /client/implementation/src/main/resources/META-INF/services/io.smallrye.graphql.client.core.factory.DirectiveArgumentFactory: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.client.impl.core.factory.DirectiveArgumentFactoryImpl -------------------------------------------------------------------------------- /client/implementation/src/main/resources/META-INF/services/io.smallrye.graphql.client.core.factory.DirectiveFactory: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.client.impl.core.factory.DirectiveFactoryImpl -------------------------------------------------------------------------------- /client/implementation/src/main/resources/META-INF/services/io.smallrye.graphql.client.core.factory.DocumentFactory: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.client.impl.core.factory.DocumentFactoryImpl -------------------------------------------------------------------------------- /client/implementation/src/main/resources/META-INF/services/io.smallrye.graphql.client.core.factory.EnumFactory: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.client.impl.core.factory.EnumFactoryImpl -------------------------------------------------------------------------------- /client/implementation/src/main/resources/META-INF/services/io.smallrye.graphql.client.core.factory.FieldFactory: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.client.impl.core.factory.FieldFactoryImpl -------------------------------------------------------------------------------- /client/implementation/src/main/resources/META-INF/services/io.smallrye.graphql.client.core.factory.FragmentFactory: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.client.impl.core.factory.FragmentFactoryImpl -------------------------------------------------------------------------------- /client/implementation/src/main/resources/META-INF/services/io.smallrye.graphql.client.core.factory.FragmentReferenceFactory: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.client.impl.core.factory.FragmentReferenceFactoryImpl -------------------------------------------------------------------------------- /client/implementation/src/main/resources/META-INF/services/io.smallrye.graphql.client.core.factory.InlineFragmentFactory: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.client.impl.core.factory.InlineFragmentFactoryImpl -------------------------------------------------------------------------------- /client/implementation/src/main/resources/META-INF/services/io.smallrye.graphql.client.core.factory.InputObjectFactory: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.client.impl.core.factory.InputObjectFactoryImpl -------------------------------------------------------------------------------- /client/implementation/src/main/resources/META-INF/services/io.smallrye.graphql.client.core.factory.InputObjectFieldFactory: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.client.impl.core.factory.InputObjectFieldFactoryImpl -------------------------------------------------------------------------------- /client/implementation/src/main/resources/META-INF/services/io.smallrye.graphql.client.core.factory.OperationFactory: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.client.impl.core.factory.OperationFactoryImpl -------------------------------------------------------------------------------- /client/implementation/src/main/resources/META-INF/services/io.smallrye.graphql.client.core.factory.VariableFactory: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.client.impl.core.factory.VariableFactoryImpl -------------------------------------------------------------------------------- /client/implementation/src/main/resources/META-INF/services/io.smallrye.graphql.client.core.factory.VariableTypeFactory: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.client.impl.core.factory.VariableTypeFactoryImpl -------------------------------------------------------------------------------- /client/implementation/src/main/resources/META-INF/services/io.smallrye.graphql.client.impl.ErrorMessageProvider: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.client.impl.DefaultErrorMessageProvider -------------------------------------------------------------------------------- /client/implementation/src/main/resources/META-INF/services/jakarta.enterprise.inject.spi.Extension: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.client.impl.typesafe.cdi.TypesafeGraphQLClientExtension 2 | -------------------------------------------------------------------------------- /client/implementation/src/main/resources/META-INF/services/javax.enterprise.inject.spi.Extension: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.client.impl.typesafe.cdi.TypesafeGraphQLClientExtension 2 | -------------------------------------------------------------------------------- /client/tck/src/main/java/tck/graphql/dynamic/core/DynamicTCK.java: -------------------------------------------------------------------------------- 1 | package tck.graphql.dynamic.core; 2 | 3 | import org.junit.platform.suite.api.IncludeClassNamePatterns; 4 | import org.junit.platform.suite.api.SelectPackages; 5 | import org.junit.platform.suite.api.Suite; 6 | 7 | @Suite 8 | @SelectPackages("tck.graphql.dynamic.core") 9 | @IncludeClassNamePatterns("^(Test.*|.+[.$]Test.*|.*Tests?|.*Behavior)$") 10 | public abstract class DynamicTCK { 11 | } 12 | -------------------------------------------------------------------------------- /client/tck/src/main/java/tck/graphql/typesafe/Outside.java: -------------------------------------------------------------------------------- 1 | package tck.graphql.typesafe; 2 | 3 | class Outside { 4 | static String packagePrivateMethod() { 5 | return "package-private-method-value"; 6 | } 7 | 8 | @SuppressWarnings("unused") 9 | private static String privateMethod() { 10 | return "private-method-value"; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /client/tck/src/main/java/tck/graphql/typesafe/TypesafeTCK.java: -------------------------------------------------------------------------------- 1 | package tck.graphql.typesafe; 2 | 3 | import org.junit.platform.suite.api.IncludeClassNamePatterns; 4 | import org.junit.platform.suite.api.SelectPackages; 5 | import org.junit.platform.suite.api.Suite; 6 | 7 | @Suite 8 | @SelectPackages("tck.graphql.typesafe") 9 | @IncludeClassNamePatterns("^(Test.*|.+[.$]Test.*|.*Tests?|.*Behavior)$") 10 | public abstract class TypesafeTCK { 11 | } 12 | -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/directivesField.graphql: -------------------------------------------------------------------------------- 1 | query SimpleQuery { 2 | customers { 3 | id @myDirective 4 | name 5 | } 6 | } -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/directivesFieldWithArguments.graphql: -------------------------------------------------------------------------------- 1 | query SimpleQuery { 2 | customers { 3 | id(id: 3) @myDirective 4 | name 5 | } 6 | } -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/directivesFieldWithArgumentsAndSubFields.graphql: -------------------------------------------------------------------------------- 1 | query SimpleQuery { 2 | customers(arg: "value") @myDirective @deprecated(reason: "reasons") { 3 | id 4 | name 5 | } 6 | } -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/directivesFieldWithSubFields.graphql: -------------------------------------------------------------------------------- 1 | query SimpleQuery { 2 | customers @myDirective @deprecated(reason: "because") { 3 | id 4 | name 5 | } 6 | } -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/directivesFragment.graphql: -------------------------------------------------------------------------------- 1 | query { 2 | people { 3 | ...sensitiveFields @myDirective @yourDirective 4 | } 5 | } 6 | 7 | fragment sensitiveFields on Person @oursDirective @theirsDirective { 8 | age 9 | religion 10 | } -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/directivesInlineFragment.graphql: -------------------------------------------------------------------------------- 1 | query SimpleQuery { 2 | customers { 3 | name 4 | ... on Customer @myDirective(flag:true) { 5 | orders { 6 | id 7 | } 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/directivesInlineFragmentsNoTypeCondition.graphql: -------------------------------------------------------------------------------- 1 | query inlineFragmentNoType($expandedInfo: Boolean) { 2 | user(handle: "zuck") { 3 | id 4 | name 5 | ... @include(if: $expandedInfo) { 6 | firstName 7 | lastName 8 | birthday 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/directivesOperationNoName.graphql: -------------------------------------------------------------------------------- 1 | query ($var1:Int) @myDirective { 2 | customerById(id:$var1) { 3 | name 4 | } 5 | } -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/directivesOperationNoNameNoVars.graphql: -------------------------------------------------------------------------------- 1 | query @myDirective { 2 | customers { 3 | name 4 | } 5 | } -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/directivesOperationNoVars.graphql: -------------------------------------------------------------------------------- 1 | query SimpleQuery @myDirective(directiveArg:3.1415926535) { 2 | customers { 3 | id 4 | name 5 | } 6 | } -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/directivesOperationWithEverything.graphql: -------------------------------------------------------------------------------- 1 | query SimpleQuery($var1:ID) @deprecated(reason: "old version") @myDirective { 2 | customerById(id:$var1) { 3 | id 4 | name 5 | } 6 | } -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/directivesVariableWIthScalarTypeDefaultValue.graphql: -------------------------------------------------------------------------------- 1 | query SimpleQuery($arg1: Int=3 @myDirective) { 2 | customerById(id:$arg1) { 3 | id 4 | name 5 | } 6 | } -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/directivesVariableWithObjectTypeName.graphql: -------------------------------------------------------------------------------- 1 | query SimpleQuery($arg1: VARCHAR2 @myDirective) { 2 | customerByName(name:$arg1) { 3 | id 4 | name 5 | } 6 | } -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/directivesVariableWithObjectTypeNameDefaultValue.graphql: -------------------------------------------------------------------------------- 1 | query SimpleQuery($arg1: VARCHAR="default" @myDirective) { 2 | customerByName(name:$arg1) { 3 | id 4 | name 5 | } 6 | } -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/directivesVariableWithScalarType.graphql: -------------------------------------------------------------------------------- 1 | query SimpleQuery($arg1: Int @myDirective) { 2 | customerById(id:$arg1) { 3 | name 4 | } 5 | } -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/directivesVariableWithVariableType.graphql: -------------------------------------------------------------------------------- 1 | query SomeQuery($arg1: ID @myDirective1, $arg2: VARCHAR2 @myDirective2(reason:"something") @myDirective3) { 2 | customerByIdAndName(id:$arg1, name:$arg2) { 3 | id 4 | name 5 | } 6 | } -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/directivesVariableWithVariableTypeDefaultValue.graphql: -------------------------------------------------------------------------------- 1 | query AnotherQuery($arg1: ID!=1 @myDirective) { 2 | customerById(id:$arg1) { 3 | id 4 | name 5 | } 6 | } -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/enums.graphql: -------------------------------------------------------------------------------- 1 | query { 2 | exams(result: PASSED) { 3 | score 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/fields.graphql: -------------------------------------------------------------------------------- 1 | query { 2 | noArgNoSubField 3 | noArgWithSubField { 4 | bool 5 | string 6 | double 7 | } 8 | withArgNoSubField(anInt: 42) 9 | withArgWithSubField(aString: "world", aDouble: 78.12, aBool: false) { 10 | bool 11 | string 12 | double 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/fragments.graphql: -------------------------------------------------------------------------------- 1 | query { 2 | people { 3 | ...sensitiveFields 4 | } 5 | } 6 | 7 | fragment sensitiveFields on Person { 8 | age 9 | religion 10 | } 11 | -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/inlinefragments.graphql: -------------------------------------------------------------------------------- 1 | query { 2 | regularField 3 | ... on Type1 { 4 | type1Field1 5 | type1Field2 6 | } 7 | ... on Type2 { 8 | type2Field 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/inlinefragmentsNoTypeCondition.graphql: -------------------------------------------------------------------------------- 1 | query inlineFragmentNoType { 2 | user { 3 | id 4 | name 5 | ... { 6 | firstName 7 | lastName 8 | birthday 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/variablesDefaultValue.graphql: -------------------------------------------------------------------------------- 1 | query ($name: String = "Lee Byron") { 2 | helloYou(name: $name) 3 | } -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/variablesFlat.graphql: -------------------------------------------------------------------------------- 1 | query ($varBool: Boolean!, $varDouble: Float!, $varString: String!) { 2 | withArgWithSubField(aString: $varString, aDouble: $varDouble, aBool: $varBool) { 3 | bool 4 | double 5 | string 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /client/tck/src/main/resources/core/variablesInInputObject.graphql: -------------------------------------------------------------------------------- 1 | query ($varBool: Boolean! $varInt: Int! $varFloat: Float! $varString: String! $varID: ID) { 2 | basicScalarHolder(basicScalarHolder:{ 3 | bool: $varBool 4 | int: $varInt 5 | float: $varFloat 6 | string: $varString 7 | iD: $varID 8 | }) { 9 | bool 10 | int 11 | float 12 | string 13 | iD 14 | } 15 | } -------------------------------------------------------------------------------- /common/schema-builder/src/main/java/io/smallrye/graphql/schema/creator/type/Creator.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema.creator.type; 2 | 3 | import org.jboss.jandex.ClassInfo; 4 | 5 | import io.smallrye.graphql.schema.model.Reference; 6 | 7 | /** 8 | * Something that can create object types on the schema 9 | * 10 | * @author Phillip Kruger (phillip.kruger@redhat.com) 11 | * @param the created type 12 | */ 13 | public interface Creator { 14 | 15 | T create(ClassInfo classInfo, Reference reference); 16 | 17 | String getDirectiveLocation(); 18 | } 19 | -------------------------------------------------------------------------------- /common/schema-builder/src/main/java/io/smallrye/graphql/schema/helper/Direction.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema.helper; 2 | 3 | /** 4 | * Indicating the direction 5 | * 6 | * @author Phillip Kruger (phillip.kruger@redhat.com) 7 | */ 8 | public enum Direction { 9 | IN, 10 | OUT 11 | } 12 | -------------------------------------------------------------------------------- /common/schema-builder/src/main/java/io/smallrye/graphql/schema/helper/TypeAutoNameStrategy.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema.helper; 2 | 3 | /** 4 | * Naming strategy for type 5 | * 6 | * @author Phillip Kruger (phillip.kruger@redhat.com) 7 | */ 8 | public enum TypeAutoNameStrategy { 9 | Default, // Spec compliant 10 | MergeInnerClass, // Inner class prefix parent name 11 | Full // Use fully qualified name 12 | } 13 | -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/index/app/Email.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.index.app; 2 | 3 | public class Email { 4 | private String value; 5 | 6 | public Email() { 7 | } 8 | 9 | public Email(String value) { 10 | this.value = value; 11 | } 12 | 13 | public String getValue() { 14 | return value; 15 | } 16 | 17 | public void setValue(String value) { 18 | this.value = value; 19 | } 20 | 21 | @Override 22 | public String toString() { 23 | return value; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/index/app/Mapped.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.index.app; 2 | 3 | public class Mapped { 4 | private String value; 5 | 6 | public Mapped() { 7 | } 8 | 9 | public Mapped(String value) { 10 | this.value = value; 11 | } 12 | 13 | public String getValue() { 14 | return value; 15 | } 16 | 17 | public void setValue(String value) { 18 | this.value = value; 19 | } 20 | 21 | @Override 22 | public String toString() { 23 | return value; 24 | } 25 | } -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/index/app/namespace/ApiWithName.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.index.app.namespace; 2 | 3 | import org.eclipse.microprofile.graphql.GraphQLApi; 4 | import org.eclipse.microprofile.graphql.Name; 5 | import org.eclipse.microprofile.graphql.Query; 6 | 7 | @GraphQLApi 8 | @Name("name") 9 | public class ApiWithName { 10 | @Query 11 | public String query() { 12 | return "query"; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/index/app/namespace/ApiWithNameAndNamespace.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.index.app.namespace; 2 | 3 | import org.eclipse.microprofile.graphql.GraphQLApi; 4 | import org.eclipse.microprofile.graphql.Name; 5 | import org.eclipse.microprofile.graphql.Query; 6 | 7 | import io.smallrye.graphql.api.Namespace; 8 | 9 | @GraphQLApi 10 | @Name("name") 11 | @Namespace("namespace") 12 | public class ApiWithNameAndNamespace { 13 | @Query 14 | public String query() { 15 | return "query"; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/index/app/namespace/ApiWithNamespace.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.index.app.namespace; 2 | 3 | import org.eclipse.microprofile.graphql.GraphQLApi; 4 | import org.eclipse.microprofile.graphql.Query; 5 | 6 | import io.smallrye.graphql.api.Namespace; 7 | 8 | @GraphQLApi 9 | @Namespace("namespace") 10 | public class ApiWithNamespace { 11 | @Query 12 | public String query() { 13 | return "query"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/index/duplicates/typename/a/Animal.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.index.duplicates.typename.a; 2 | 3 | public class Animal { 4 | 5 | private String name; 6 | 7 | public String getName() { 8 | return name; 9 | } 10 | 11 | public void setName(String name) { 12 | this.name = name; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/index/duplicates/typename/b/Animal.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.index.duplicates.typename.b; 2 | 3 | public class Animal { 4 | 5 | private String name; 6 | 7 | public String getName() { 8 | return name; 9 | } 10 | 11 | public void setName(String name) { 12 | this.name = name; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/index/generic/Attribute.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.index.generic; 2 | 3 | public interface Attribute { 4 | T getValue(); 5 | 6 | void setValue(T value); 7 | } 8 | -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/index/generic/Character.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.index.generic; 2 | 3 | public abstract class Character { 4 | public String name; 5 | public String surname; 6 | } -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/index/generic/CharacterResource.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.index.generic; 2 | 3 | import java.util.List; 4 | 5 | public interface CharacterResource { 6 | List getAll(); 7 | 8 | T add(T character); 9 | 10 | T remove(T character); 11 | 12 | T update(T character); 13 | 14 | T doSomething(); 15 | } -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/index/generic/Greet.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.index.generic; 2 | 3 | public class Greet implements ResponseAttribute { 4 | String value; 5 | 6 | public Greet(String name) { 7 | this.value = value; 8 | } 9 | 10 | @Override 11 | public String getValue() { 12 | return "hello".concat(value); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/index/generic/Hero.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.index.generic; 2 | 3 | import org.eclipse.microprofile.graphql.Input; 4 | 5 | @Input("HeroInput") 6 | public class Hero extends Character { 7 | public String name; 8 | public String surname; 9 | public Double height; 10 | public Integer mass; 11 | public Boolean darkSide; 12 | } -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/index/generic/ResponseAttribute.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.index.generic; 2 | 3 | public interface ResponseAttribute { 4 | public T getValue(); 5 | } 6 | -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/index/generic/ResponseComposite.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.index.generic; 2 | 3 | public class ResponseComposite { 4 | Greet greet; 5 | 6 | public ResponseComposite(Greet greet) { 7 | this.greet = greet; 8 | } 9 | 10 | public Greet getGreet() { 11 | return this.greet; 12 | } 13 | 14 | public void setGreet(Greet greet) { 15 | this.greet = greet; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/index/generic/Some.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.index.generic; 2 | 3 | public class Some implements Attribute { 4 | Long some; 5 | 6 | public Some() { 7 | } 8 | 9 | public Some(Long some) { 10 | this.some = some; 11 | } 12 | 13 | @Override 14 | public Long getValue() { 15 | return some; 16 | } 17 | 18 | @Override 19 | public void setValue(Long value) { 20 | this.some = value; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/index/inherit/ContainerInterface.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.index.inherit; 2 | 3 | public interface ContainerInterface { 4 | FieldInterface getInheritField(); 5 | } 6 | -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/index/inherit/ContainerType.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.index.inherit; 2 | 3 | public class ContainerType implements ContainerInterface { 4 | 5 | public FieldType getInheritField() { 6 | return new FieldType(); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/index/inherit/FieldInterface.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.index.inherit; 2 | 3 | public interface FieldInterface { 4 | String getVal(); 5 | } 6 | -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/index/inherit/FieldType.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.index.inherit; 2 | 3 | public class FieldType implements FieldInterface { 4 | public String getVal() { 5 | return ""; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/index/inherit/InheritAPI.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.index.inherit; 2 | 3 | import org.eclipse.microprofile.graphql.GraphQLApi; 4 | import org.eclipse.microprofile.graphql.Query; 5 | 6 | @GraphQLApi 7 | public class InheritAPI { 8 | @Query 9 | public ContainerInterface getContainer() { 10 | return null; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/schema/creator/PojoWithConstructor.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema.creator; 2 | 3 | import org.eclipse.microprofile.graphql.Name; 4 | 5 | public class PojoWithConstructor { 6 | 7 | String field; 8 | 9 | public PojoWithConstructor( 10 | @Name("Foo") final String field) { 11 | this.field = field; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/schema/creator/TestApi.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema.creator; 2 | 3 | import org.eclipse.microprofile.graphql.Query; 4 | 5 | public class TestApi { 6 | 7 | @Query 8 | String nonPublicQuery() { 9 | return null; 10 | } 11 | 12 | @Query 13 | public String publicQuery() { 14 | return null; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/schema/creator/fieldnameapp/Controller.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema.creator.fieldnameapp; 2 | 3 | import org.eclipse.microprofile.graphql.GraphQLApi; 4 | import org.eclipse.microprofile.graphql.Query; 5 | 6 | @GraphQLApi 7 | public class Controller { 8 | 9 | @Query 10 | public SomeObjectAnnotatedGetters someObjectAnnotatedGetters() { 11 | return new SomeObjectAnnotatedGetters(); 12 | } 13 | } -------------------------------------------------------------------------------- /common/schema-builder/src/test/java/io/smallrye/graphql/schema/helper/package_nonnull/package-info.java: -------------------------------------------------------------------------------- 1 | @DefaultNonNull 2 | package io.smallrye.graphql.schema.helper.package_nonnull; 3 | 4 | import io.smallrye.graphql.api.DefaultNonNull; 5 | -------------------------------------------------------------------------------- /common/schema-model/classdiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smallrye/smallrye-graphql/f3899bbd9bdacf7b585983bc4906ff856a2b86f6/common/schema-model/classdiagram.png -------------------------------------------------------------------------------- /common/schema-model/src/main/java/io/smallrye/graphql/schema/model/DirectiveArgument.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema.model; 2 | 3 | public class DirectiveArgument extends Field { 4 | } 5 | -------------------------------------------------------------------------------- /common/schema-model/src/main/java/io/smallrye/graphql/schema/model/Execute.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema.model; 2 | 3 | /** 4 | * Execution type 5 | * 6 | * @author Phillip Kruger (phillip.kruger@redhat.com) 7 | */ 8 | public enum Execute { 9 | BLOCKING, 10 | NON_BLOCKING, 11 | DEFAULT, 12 | RUN_ON_VIRTUAL_THREAD 13 | } 14 | -------------------------------------------------------------------------------- /common/schema-model/src/main/java/io/smallrye/graphql/schema/model/OperationType.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema.model; 2 | 3 | /** 4 | * To indicate the type of operation 5 | * 6 | * @author Phillip Kruger (phillip.kruger@redhat.com) 7 | */ 8 | public enum OperationType { 9 | QUERY, 10 | MUTATION, 11 | SUBSCRIPTION, 12 | RESOLVER, 13 | } 14 | -------------------------------------------------------------------------------- /common/schema-model/src/main/java/io/smallrye/graphql/schema/model/ReferenceType.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema.model; 2 | 3 | /** 4 | * Type of reference 5 | * 6 | * Because we refer to types before they might exist, we need an indication of the type 7 | * 8 | * @author Phillip Kruger (phillip.kruger@redhat.com) 9 | */ 10 | public enum ReferenceType { 11 | INPUT, 12 | TYPE, 13 | ENUM, 14 | INTERFACE, 15 | UNION, 16 | SCALAR 17 | } 18 | -------------------------------------------------------------------------------- /common/schema-model/src/main/java/io/smallrye/graphql/schema/model/WrapperType.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema.model; 2 | 3 | /** 4 | * Represent an wrapper type in the Schema. 5 | * 6 | * @author Phillip Kruger (phillip.kruger@redhat.com) 7 | */ 8 | public enum WrapperType { 9 | OPTIONAL, 10 | COLLECTION, 11 | MAP, 12 | ARRAY, 13 | UNKNOWN // Could be a plugged in type, or normal generics 14 | } -------------------------------------------------------------------------------- /docs/extra.css: -------------------------------------------------------------------------------- 1 | .md-header__title { 2 | margin-left: 0 !important; 3 | } -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | 3 | SmallRye GraphQL is a library that allows you to easily use GraphQL (both server-side endpoints 4 | and client-side code) in your Java-based projects. It implements 5 | the MicroProfile GraphQL specification. -------------------------------------------------------------------------------- /docs/kotlin.md: -------------------------------------------------------------------------------- 1 | # SmallRye Graphql in Kotlin 2 | 3 | When working with SmallRye GraphQL in Kotlin, it is very important to use the `-Xemit-jvm-type-annotations` flag for the Kotlin compiler. This flag is important to generate the necessary annotations for reflection to work properly. The flag is supported as of Kotlin 1.3.70. -------------------------------------------------------------------------------- /docs/snippets/examples/typesafeclient/MyClientUsage.java: -------------------------------------------------------------------------------- 1 | package examples.typesafeclient; 2 | 3 | import jakarta.inject.Inject; 4 | import java.util.List; 5 | 6 | public class MyClientUsage { 7 | 8 | @Inject 9 | SuperHeroesApi superHeroesApi; 10 | 11 | public void execute() { 12 | List allHeroes = superHeroesApi.allHeroesIn("Outer Space"); 13 | // ... 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /docs/snippets/examples/typesafeclient/SuperHero.java: -------------------------------------------------------------------------------- 1 | package examples.typesafeclient; 2 | 3 | import java.util.List; 4 | 5 | public class SuperHero { 6 | 7 | private String name; 8 | private List superPowers; 9 | 10 | // plus getters and setters 11 | 12 | } 13 | -------------------------------------------------------------------------------- /docs/snippets/examples/typesafeclient/SuperHeroesApi.java: -------------------------------------------------------------------------------- 1 | package examples.typesafeclient; 2 | 3 | import io.smallrye.graphql.client.typesafe.api.GraphQLClientApi; 4 | 5 | import java.util.List; 6 | 7 | @GraphQLClientApi 8 | public interface SuperHeroesApi { 9 | 10 | List allHeroesIn(String location); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /docs/typesafe-client-logging.md: -------------------------------------------------------------------------------- 1 | Logging in typesafe clients 2 | ======= 3 | 4 | The Client implementation logs all GraphQL requests and responses at 5 | level `INFO` with the interface API as the logger name. It also logs the 6 | keys of all headers added at level `DEBUG`; not the values, as they may 7 | be security sensitive. -------------------------------------------------------------------------------- /server/api/src/main/java/io/smallrye/graphql/api/CustomFloatScalar.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.api; 2 | 3 | import java.math.BigDecimal; 4 | 5 | /** 6 | * A base class for all CustomScalars that are based on GraphQL's Float. 7 | */ 8 | public interface CustomFloatScalar { 9 | BigDecimal floatValueForSerialization(); 10 | } 11 | -------------------------------------------------------------------------------- /server/api/src/main/java/io/smallrye/graphql/api/CustomIntScalar.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.api; 2 | 3 | import java.math.BigInteger; 4 | 5 | /** 6 | * A base class for all CustomScalars that are based on GraphQL's Int. 7 | */ 8 | public interface CustomIntScalar { 9 | BigInteger intValueForSerialization(); 10 | } 11 | -------------------------------------------------------------------------------- /server/api/src/main/java/io/smallrye/graphql/api/CustomStringScalar.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.api; 2 | 3 | /** 4 | * A base class for all CustomScalars that are based on GraphQL's String. 5 | */ 6 | public interface CustomStringScalar { 7 | String stringValueForSerialization(); 8 | } 9 | -------------------------------------------------------------------------------- /server/api/src/main/java/io/smallrye/graphql/api/ErrorExtensionProvider.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.api; 2 | 3 | import jakarta.json.JsonValue; 4 | 5 | /** 6 | * To add you own GraphQL error extension fields, you can add your own implementations 7 | * of this class via the {@link java.util.ServiceLoader ServiceLoader} mechanism. 8 | */ 9 | public interface ErrorExtensionProvider { 10 | String getKey(); 11 | 12 | JsonValue mapValueFrom(Throwable exception); 13 | } 14 | -------------------------------------------------------------------------------- /server/api/src/main/java/io/smallrye/graphql/api/federation/FieldSet.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.api.federation; 2 | 3 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 4 | 5 | import java.lang.annotation.Retention; 6 | 7 | import org.eclipse.microprofile.graphql.NonNull; 8 | 9 | /** 10 | * String-serialized scalar represents a set of fields that's passed to a federated directive. 11 | */ 12 | @Retention(RUNTIME) 13 | public @interface FieldSet { 14 | @NonNull 15 | String value(); 16 | } 17 | -------------------------------------------------------------------------------- /server/api/src/main/java/io/smallrye/graphql/api/federation/Resolver.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.api.federation; 2 | 3 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 4 | 5 | import java.lang.annotation.ElementType; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.Target; 8 | 9 | import io.smallrye.common.annotation.Experimental; 10 | 11 | @Target(ElementType.METHOD) 12 | @Retention(RUNTIME) 13 | @Experimental("Resolver method without creating query method") 14 | public @interface Resolver { 15 | } 16 | -------------------------------------------------------------------------------- /server/api/src/main/java/io/smallrye/graphql/api/federation/link/Import.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.api.federation.link; 2 | 3 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 4 | 5 | import java.lang.annotation.Retention; 6 | 7 | import org.eclipse.microprofile.graphql.NonNull; 8 | 9 | /** 10 | * An element, possibly aliased, to import into the document. 11 | */ 12 | @Retention(RUNTIME) 13 | public @interface Import { 14 | @NonNull 15 | String name(); 16 | 17 | String as() default ""; 18 | } 19 | -------------------------------------------------------------------------------- /server/api/src/main/java/io/smallrye/graphql/api/federation/policy/PolicyGroup.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.api.federation.policy; 2 | 3 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 4 | 5 | import java.lang.annotation.Retention; 6 | 7 | import org.eclipse.microprofile.graphql.NonNull; 8 | 9 | /** 10 | * Defines a group of authorization policies, each representing a set used by the {@link Policy} directive. 11 | */ 12 | @Retention(RUNTIME) 13 | public @interface PolicyGroup { 14 | @NonNull 15 | PolicyItem[] value(); 16 | } 17 | -------------------------------------------------------------------------------- /server/api/src/main/java/io/smallrye/graphql/api/federation/policy/PolicyItem.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.api.federation.policy; 2 | 3 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 4 | 5 | import java.lang.annotation.Retention; 6 | 7 | import org.eclipse.microprofile.graphql.NonNull; 8 | 9 | /** 10 | * String-serialized scalar represents an authorization policy. 11 | */ 12 | @Retention(RUNTIME) 13 | public @interface PolicyItem { 14 | @NonNull 15 | String value(); 16 | } 17 | -------------------------------------------------------------------------------- /server/api/src/main/java/io/smallrye/graphql/api/federation/requiresscopes/ScopeGroup.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.api.federation.requiresscopes; 2 | 3 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 4 | 5 | import java.lang.annotation.Retention; 6 | 7 | import org.eclipse.microprofile.graphql.NonNull; 8 | 9 | /** 10 | * Defines a group of JWT scopes, each representing a set used by the {@link RequiresScopes} directive. 11 | */ 12 | @Retention(RUNTIME) 13 | public @interface ScopeGroup { 14 | @NonNull 15 | ScopeItem[] value(); 16 | } 17 | -------------------------------------------------------------------------------- /server/api/src/main/java/io/smallrye/graphql/api/federation/requiresscopes/ScopeItem.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.api.federation.requiresscopes; 2 | 3 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 4 | 5 | import java.lang.annotation.Retention; 6 | 7 | import org.eclipse.microprofile.graphql.NonNull; 8 | 9 | /** 10 | * String-serialized scalar represents a JWT scope. 11 | */ 12 | @Retention(RUNTIME) 13 | public @interface ScopeItem { 14 | @NonNull 15 | String value(); 16 | } 17 | -------------------------------------------------------------------------------- /server/implementation-cdi/src/main/resources/META-INF/beans.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | -------------------------------------------------------------------------------- /server/implementation-cdi/src/main/resources/META-INF/services/io.smallrye.graphql.spi.EventingService: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.cdi.event.EventsService 2 | io.smallrye.graphql.cdi.tracing.TracingService 3 | -------------------------------------------------------------------------------- /server/implementation-cdi/src/main/resources/META-INF/services/io.smallrye.graphql.spi.LookupService: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.cdi.CdiLookupService 2 | -------------------------------------------------------------------------------- /server/implementation-cdi/src/main/resources/META-INF/services/io.smallrye.graphql.spi.MetricsService: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.cdi.metrics.MicrometerMetricsService 2 | io.smallrye.graphql.cdi.metrics.MPMetricsService -------------------------------------------------------------------------------- /server/implementation-cdi/src/main/resources/META-INF/services/io.smallrye.graphql.spi.config.Config: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.cdi.config.MicroProfileConfig 2 | -------------------------------------------------------------------------------- /server/implementation-cdi/src/main/resources/META-INF/services/org.eclipse.microprofile.config.spi.Converter: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.cdi.config.LogPayloadOptionConverter 2 | -------------------------------------------------------------------------------- /server/implementation-cdi/src/main/resources/META-INF/services/org.eclipse.microprofile.context.spi.ThreadContextProvider: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.cdi.context.GraphQLThreadContextProvider -------------------------------------------------------------------------------- /server/implementation-cdi/src/test/resources/beans.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/JsonProviderHolder.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql; 2 | 3 | import jakarta.json.spi.JsonProvider; 4 | 5 | // A central place to get the JsonProvider to avoid calling `JsonProvider.provider()` many times 6 | // due to associated performance costs. 7 | public class JsonProviderHolder { 8 | 9 | public static final JsonProvider JSON_PROVIDER = JsonProvider.provider(); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/execution/datafetcher/PlugableBatchableDataFetcher.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.execution.datafetcher; 2 | 3 | import org.dataloader.BatchLoaderWithContext; 4 | 5 | /** 6 | * Allows DataFetchers to be plugged 7 | * 8 | * @author Phillip Kruger (phillip.kruger@redhat.com) 9 | */ 10 | public interface PlugableBatchableDataFetcher extends PlugableDataFetcher, BatchLoaderWithContext { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/execution/datafetcher/PlugableDataFetcher.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.execution.datafetcher; 2 | 3 | import graphql.schema.DataFetcher; 4 | 5 | /** 6 | * Allows DataFetchers to be plugged 7 | * 8 | * @author Phillip Kruger (phillip.kruger@redhat.com) 9 | */ 10 | public interface PlugableDataFetcher extends DataFetcher { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/execution/error/UnparseableDocumentException.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.execution.error; 2 | 3 | public class UnparseableDocumentException extends RuntimeException { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/execution/event/Priorities.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.execution.event; 2 | 3 | /** 4 | * Constants used in combination with {@code javax.annotation.Priority} to control the invocation order of 5 | * {@code EventingService}s in {@code EventEmitter} 6 | */ 7 | public class Priorities { 8 | public static final int FIRST_IN_LAST_OUT = 0; 9 | public static final int DEFAULT = 1000; 10 | public static final int LAST_IN_FIRST_OUT = 2000; 11 | } 12 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/scalar/federation/FieldSetScalar.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.scalar.federation; 2 | 3 | import io.smallrye.graphql.api.federation.FieldSet; 4 | import io.smallrye.graphql.scalar.AbstractScalar; 5 | 6 | /** 7 | * Scalar for {@link FieldSet}. 8 | */ 9 | public class FieldSetScalar extends AbstractScalar { 10 | 11 | public FieldSetScalar() { 12 | 13 | super("FieldSet", new FieldSetCoercing(), FieldSet.class); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/scalar/federation/ImportScalar.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.scalar.federation; 2 | 3 | import io.smallrye.graphql.api.federation.link.Import; 4 | import io.smallrye.graphql.scalar.AbstractScalar; 5 | 6 | /** 7 | * Scalar for {@link Import}. 8 | */ 9 | public class ImportScalar extends AbstractScalar { 10 | 11 | public ImportScalar() { 12 | super("Import", new ImportCoercing(), Import.class); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/scalar/federation/PolicyScalar.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.scalar.federation; 2 | 3 | import io.smallrye.graphql.api.federation.policy.PolicyItem; 4 | import io.smallrye.graphql.scalar.AbstractScalar; 5 | 6 | /** 7 | * Scalar for {@link PolicyItem}. 8 | */ 9 | public class PolicyScalar extends AbstractScalar { 10 | 11 | public PolicyScalar() { 12 | 13 | super("Policy", new PolicyCoercing(), PolicyItem.class); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/scalar/federation/ScopeScalar.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.scalar.federation; 2 | 3 | import io.smallrye.graphql.api.federation.requiresscopes.ScopeItem; 4 | import io.smallrye.graphql.scalar.AbstractScalar; 5 | 6 | /** 7 | * Scalar for {@link ScopeItem}. 8 | */ 9 | public class ScopeScalar extends AbstractScalar { 10 | 11 | public ScopeScalar() { 12 | 13 | super("Scope", new ScopeCoercing(), ScopeItem.class); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/scalar/others/VoidScalar.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.scalar.others; 2 | 3 | import graphql.schema.Coercing; 4 | import io.smallrye.graphql.scalar.AbstractScalar; 5 | 6 | public class VoidScalar extends AbstractScalar { 7 | public VoidScalar() { 8 | super("Void", new Coercing() { 9 | @Override 10 | public Object serialize(Object input) { 11 | return null; 12 | } 13 | }, Void.class, void.class); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/scalar/time/AbstractDateScalar.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.scalar.time; 2 | 3 | import io.smallrye.graphql.scalar.AbstractScalar; 4 | 5 | /** 6 | * Base Scalar for Dates. 7 | * 8 | * @author Phillip Kruger (phillip.kruger@redhat.com) 9 | */ 10 | public abstract class AbstractDateScalar extends AbstractScalar { 11 | 12 | public AbstractDateScalar(String name, Class... supportedTypes) { 13 | 14 | super(name, new DateCoercing(name, supportedTypes), supportedTypes); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/scalar/time/DateScalar.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.scalar.time; 2 | 3 | import java.sql.Date; 4 | import java.time.LocalDate; 5 | 6 | /** 7 | * Scalar for Date. 8 | * Both time api LocalDate and sql Date is supported 9 | * 10 | * @author Phillip Kruger (phillip.kruger@redhat.com) 11 | */ 12 | public class DateScalar extends AbstractDateScalar { 13 | 14 | public DateScalar() { 15 | super("Date", LocalDate.class, Date.class); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/scalar/time/DurationScalar.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.scalar.time; 2 | 3 | import java.time.Duration; 4 | 5 | public class DurationScalar extends AbstractDateScalar { 6 | 7 | public DurationScalar() { 8 | super("Duration", Duration.class); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/scalar/time/PeriodScalar.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.scalar.time; 2 | 3 | import java.time.Period; 4 | 5 | public class PeriodScalar extends AbstractDateScalar { 6 | 7 | public PeriodScalar() { 8 | super("Period", Period.class); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/scalar/time/TimeScalar.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.scalar.time; 2 | 3 | import java.sql.Time; 4 | import java.time.LocalTime; 5 | import java.time.OffsetTime; 6 | 7 | /** 8 | * Scalar for Time. 9 | * 10 | * @author Phillip Kruger (phillip.kruger@redhat.com) 11 | */ 12 | public class TimeScalar extends AbstractDateScalar { 13 | 14 | public TimeScalar() { 15 | super("Time", LocalTime.class, Time.class, OffsetTime.class); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/spi/ManagedInstance.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.spi; 2 | 3 | public interface ManagedInstance { 4 | 5 | T get(); 6 | 7 | default void destroyIfNecessary() { 8 | // nothing 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/spi/config/LogPayloadOption.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.spi.config; 2 | 3 | public enum LogPayloadOption { 4 | 5 | off, // false can also be used 6 | queryOnly, // true can also be used 7 | queryAndVariables; 8 | 9 | } 10 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/transformation/CharTransformer.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.transformation; 2 | 3 | /** 4 | * Transforms between char and String. 5 | */ 6 | public class CharTransformer implements Transformer { 7 | 8 | @Override 9 | public Character in(final String o) { 10 | return o.charAt(0); 11 | } 12 | 13 | @Override 14 | public String out(final Character o) { 15 | if (o == null) { 16 | return null; 17 | } 18 | return String.valueOf(o); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/transformation/DurationTransformer.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.transformation; 2 | 3 | import java.time.Duration; 4 | 5 | public class DurationTransformer implements Transformer { 6 | @Override 7 | public Object in(final Object o) throws Exception { 8 | return Duration.parse(o.toString()); 9 | } 10 | 11 | @Override 12 | public Object out(final Object o) { 13 | return o.toString(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/transformation/PeriodTransformer.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.transformation; 2 | 3 | import java.time.Period; 4 | 5 | public class PeriodTransformer implements Transformer { 6 | @Override 7 | public Object in(final Object o) throws Exception { 8 | return Period.parse(o.toString()); 9 | } 10 | 11 | @Override 12 | public Object out(final Object o) { 13 | return o.toString(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/transformation/UriTransformer.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.transformation; 2 | 3 | import java.net.URI; 4 | import java.net.URISyntaxException; 5 | 6 | public class UriTransformer implements Transformer { 7 | @Override 8 | public Object in(final Object o) throws URISyntaxException { 9 | return new URI(o.toString()); 10 | } 11 | 12 | @Override 13 | public Object out(final Object o) { 14 | return o.toString(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/transformation/UrlTransformer.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.transformation; 2 | 3 | import java.net.MalformedURLException; 4 | import java.net.URL; 5 | 6 | public class UrlTransformer implements Transformer { 7 | @Override 8 | public Object in(final Object o) throws MalformedURLException { 9 | return new URL(o.toString()); 10 | } 11 | 12 | @Override 13 | public Object out(final Object o) { 14 | return o.toString(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/transformation/UuidTransformer.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.transformation; 2 | 3 | import java.util.UUID; 4 | 5 | public class UuidTransformer implements Transformer { 6 | 7 | @Override 8 | public Object in(final Object o) { 9 | return UUID.fromString(o.toString()); 10 | } 11 | 12 | @Override 13 | public Object out(final Object o) { 14 | return o.toString(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/implementation/src/main/java/io/smallrye/graphql/websocket/GraphQLWebsocketHandler.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.websocket; 2 | 3 | public interface GraphQLWebsocketHandler { 4 | 5 | /** 6 | * Called when a message arrives and needs to be handled. Implementation of this method MUST NOT block the calling thread! 7 | */ 8 | void onMessage(String message); 9 | 10 | void onThrowable(Throwable t); 11 | 12 | void onClose(); 13 | 14 | void onEnd(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /server/implementation/src/main/resources/META-INF/beans.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | -------------------------------------------------------------------------------- /server/implementation/src/main/resources/META-INF/services/io.smallrye.graphql.api.ErrorExtensionProvider: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.execution.error.ErrorCodeExtensionProvider 2 | io.smallrye.graphql.execution.error.ExceptionNameErrorExtensionProvider 3 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/schema/ArgumentDirective.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema; 2 | 3 | import static io.smallrye.graphql.api.DirectiveLocation.ARGUMENT_DEFINITION; 4 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 5 | 6 | import java.lang.annotation.Retention; 7 | 8 | import io.smallrye.graphql.api.Directive; 9 | 10 | @Retention(RUNTIME) 11 | @Directive(on = ARGUMENT_DEFINITION) 12 | public @interface ArgumentDirective { 13 | } 14 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/schema/EnumDirective.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema; 2 | 3 | import static io.smallrye.graphql.api.DirectiveLocation.ENUM; 4 | import static io.smallrye.graphql.api.DirectiveLocation.ENUM_VALUE; 5 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 6 | 7 | import java.lang.annotation.Retention; 8 | 9 | import io.smallrye.graphql.api.Directive; 10 | 11 | @Retention(RUNTIME) 12 | @Directive(on = { ENUM, ENUM_VALUE }) 13 | public @interface EnumDirective { 14 | } 15 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/schema/FederationTestApi.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema; 2 | 3 | import org.eclipse.microprofile.graphql.GraphQLApi; 4 | import org.eclipse.microprofile.graphql.Query; 5 | 6 | @GraphQLApi 7 | public class FederationTestApi { 8 | @Query 9 | public TestTypeWithFederation testTypeWithFederation(String arg) { 10 | return null; 11 | } 12 | 13 | @Query 14 | public TestInterfaceWitFederation testInterfaceWitFederation(String arg) { 15 | return null; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/schema/FieldDirective.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema; 2 | 3 | import static io.smallrye.graphql.api.DirectiveLocation.FIELD_DEFINITION; 4 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 5 | 6 | import java.lang.annotation.Retention; 7 | 8 | import io.smallrye.graphql.api.Directive; 9 | 10 | @Retention(RUNTIME) 11 | @Directive(on = FIELD_DEFINITION) 12 | public @interface FieldDirective { 13 | } 14 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/schema/InputDirective.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema; 2 | 3 | import static io.smallrye.graphql.api.DirectiveLocation.INPUT_FIELD_DEFINITION; 4 | import static io.smallrye.graphql.api.DirectiveLocation.INPUT_OBJECT; 5 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 6 | 7 | import java.lang.annotation.Retention; 8 | 9 | import io.smallrye.graphql.api.Directive; 10 | 11 | @Retention(RUNTIME) 12 | @Directive(on = { INPUT_OBJECT, INPUT_FIELD_DEFINITION }) 13 | public @interface InputDirective { 14 | } 15 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/schema/OperationDirective.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema; 2 | 3 | import static io.smallrye.graphql.api.DirectiveLocation.FIELD_DEFINITION; 4 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 5 | 6 | import java.lang.annotation.Retention; 7 | 8 | import io.smallrye.graphql.api.Directive; 9 | 10 | @Retention(RUNTIME) 11 | @Directive(on = { FIELD_DEFINITION }) 12 | public @interface OperationDirective { 13 | } 14 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/schema/TestInterfaceDirective.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema; 2 | 3 | @IntArrayTestDirective(value = { 1, 2, 3 }) 4 | public interface TestInterfaceDirective { 5 | 6 | String getTestValue(); 7 | } 8 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/schema/TestInterfaceDirectiveImpl.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema; 2 | 3 | @IntArrayTestDirective(value = { 1, 2, 3 }) 4 | public class TestInterfaceDirectiveImpl implements TestInterfaceDirective { 5 | @Override 6 | public String getTestValue() { 7 | return "Test value"; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/schema/TestInterfaceWitFederation.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema; 2 | 3 | import io.smallrye.graphql.api.federation.External; 4 | import io.smallrye.graphql.api.federation.FieldSet; 5 | import io.smallrye.graphql.api.federation.Key; 6 | 7 | @Key(fields = @FieldSet("id")) 8 | 9 | public interface TestInterfaceWitFederation { 10 | @External 11 | String getId(); 12 | } 13 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/schema/TestTypeWithDirectives.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema; 2 | 3 | @IntArrayTestDirective({ 1, 2, 3 }) 4 | public class TestTypeWithDirectives { 5 | @FieldDirective 6 | private String value; 7 | 8 | public String getValue() { 9 | return value; 10 | } 11 | 12 | public void setValue(String value) { 13 | this.value = value; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/schema/directiveswithenumvalues/MyEnum.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema.directiveswithenumvalues; 2 | 3 | import io.smallrye.graphql.schema.EnumDirective; 4 | 5 | @EnumDirective 6 | public enum MyEnum { 7 | SOME, 8 | THING 9 | } 10 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/schema/directiveswithenumvalues/MyObject.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema.directiveswithenumvalues; 2 | 3 | import java.util.Objects; 4 | 5 | import org.eclipse.microprofile.graphql.NonNull; 6 | 7 | public class MyObject { 8 | 9 | @NonNull 10 | @MyEnumValueDirective(MyEnum.SOME) 11 | String name; 12 | 13 | public MyObject(String name) { 14 | this.name = Objects.requireNonNull(name); 15 | } 16 | 17 | public String getName() { 18 | return name; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/schema/directiveswithenumvalues/SomeApi.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema.directiveswithenumvalues; 2 | 3 | import org.eclipse.microprofile.graphql.GraphQLApi; 4 | import org.eclipse.microprofile.graphql.Query; 5 | 6 | @GraphQLApi 7 | public class SomeApi { 8 | @Query 9 | public MyObject getMyObject() { 10 | return new MyObject("Test"); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/schema/link/CustomDirective.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema.link; 2 | 3 | import static io.smallrye.graphql.api.DirectiveLocation.OBJECT; 4 | 5 | import org.eclipse.microprofile.graphql.Name; 6 | 7 | import io.smallrye.graphql.api.Directive; 8 | 9 | @Directive(on = { OBJECT }) 10 | @Name("custom") 11 | public @interface CustomDirective { 12 | } 13 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/schema/rolesallowedschemas/Customer.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema.rolesallowedschemas; 2 | 3 | public class Customer { 4 | private String name; 5 | 6 | public Customer() { 7 | } 8 | 9 | public Customer(String name) { 10 | this.name = name; 11 | } 12 | 13 | public String getName() { 14 | return name; 15 | } 16 | 17 | public void setName(String name) { 18 | this.name = name; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/schema/schemadirectives/NonRepeatableSchemaDirective.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema.schemadirectives; 2 | 3 | import static io.smallrye.graphql.api.DirectiveLocation.SCHEMA; 4 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 5 | 6 | import java.lang.annotation.Retention; 7 | 8 | import io.smallrye.graphql.api.Directive; 9 | 10 | @Directive(on = { SCHEMA }) 11 | @Retention(RUNTIME) 12 | public @interface NonRepeatableSchemaDirective { 13 | } 14 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/schema/schemadirectives/Schema1.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema.schemadirectives; 2 | 3 | import org.eclipse.microprofile.graphql.Description; 4 | import org.eclipse.microprofile.graphql.GraphQLApi; 5 | import org.eclipse.microprofile.graphql.Query; 6 | 7 | @GraphQLApi 8 | @RepeatableSchemaDirective(name = "name1") 9 | @Description("Schema description") 10 | public class Schema1 { 11 | @Query 12 | public String foo() { 13 | return "bar"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/schema/schemadirectives/Schema2.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema.schemadirectives; 2 | 3 | import org.eclipse.microprofile.graphql.GraphQLApi; 4 | import org.eclipse.microprofile.graphql.Query; 5 | 6 | @GraphQLApi 7 | @RepeatableSchemaDirective(name = "name2") 8 | @RepeatableSchemaDirective(name = "name4") 9 | public class Schema2 { 10 | @Query 11 | public String foo() { 12 | return "bar"; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/schema/schemadirectives/Schema3.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema.schemadirectives; 2 | 3 | import org.eclipse.microprofile.graphql.GraphQLApi; 4 | import org.eclipse.microprofile.graphql.Query; 5 | 6 | @GraphQLApi 7 | @RepeatableSchemaDirective(name = "name3") 8 | @NonRepeatableSchemaDirective 9 | public class Schema3 { 10 | @Query 11 | public String foo() { 12 | return "bar"; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/schema/schemadirectives/Schema4.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.schema.schemadirectives; 2 | 3 | import org.eclipse.microprofile.graphql.GraphQLApi; 4 | import org.eclipse.microprofile.graphql.Query; 5 | 6 | @GraphQLApi 7 | @NonRepeatableSchemaDirective 8 | public class Schema4 { 9 | @Query 10 | public String foo() { 11 | return "bar"; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/test/ContextInfo.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test; 2 | 3 | /** 4 | * Pojo that contains info about the context 5 | * 6 | * @author Phillip Kruger (phillip.kruger@redhat.com) 7 | */ 8 | public class ContextInfo { 9 | public String executionId; 10 | public String path; 11 | public String query; 12 | 13 | } 14 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/test/InterfaceWithOneGenericsParam.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test; 2 | 3 | public interface InterfaceWithOneGenericsParam { 4 | 5 | public V getParam1(); 6 | 7 | public String getName(); 8 | } 9 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/test/MemberOfManyUnions.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test; 2 | 3 | public class MemberOfManyUnions implements TestUnion, UnionOfInterfaces { 4 | 5 | private String message; 6 | 7 | public MemberOfManyUnions() { 8 | } 9 | 10 | public MemberOfManyUnions(String message) { 11 | this.message = message; 12 | } 13 | 14 | public String getMessage() { 15 | return message; 16 | } 17 | 18 | public void setMessage(String message) { 19 | this.message = message; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/test/ObjectWithColor.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test; 2 | 3 | public class ObjectWithColor implements UnionInterfaceTwo { 4 | 5 | private String color; 6 | 7 | public ObjectWithColor() { 8 | } 9 | 10 | public ObjectWithColor(String color) { 11 | this.color = color; 12 | } 13 | 14 | @Override 15 | public String getColor() { 16 | return color; 17 | } 18 | 19 | public void setColor(String color) { 20 | this.color = color; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/test/ObjectWithName.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test; 2 | 3 | public class ObjectWithName implements UnionInterfaceOne { 4 | 5 | private String name; 6 | 7 | public ObjectWithName() { 8 | } 9 | 10 | public ObjectWithName(String name) { 11 | this.name = name; 12 | } 13 | 14 | @Override 15 | public String getName() { 16 | return name; 17 | } 18 | 19 | public void setName(String name) { 20 | this.name = name; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/test/TestSourceConfiguration.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test; 2 | 3 | import org.eclipse.microprofile.graphql.Enum; 4 | import org.eclipse.microprofile.graphql.Name; 5 | import org.eclipse.microprofile.graphql.Type; 6 | 7 | @Type("TestSourceConfiguration") 8 | public record TestSourceConfiguration(boolean active, @Name("state") TestSourceState state) { 9 | 10 | @Enum("TestSourceState") 11 | public enum TestSourceState { 12 | PENDING, 13 | IN_PROGRESS, 14 | DONE 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/test/TestSourceWithConfiguration.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test; 2 | 3 | import org.eclipse.microprofile.graphql.NonNull; 4 | import org.eclipse.microprofile.graphql.Type; 5 | 6 | @Type("TestSourceWithConfiguration") 7 | public record TestSourceWithConfiguration(@NonNull TestSourceConfiguration configuration) { 8 | } 9 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/test/TestUnion.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test; 2 | 3 | import io.smallrye.graphql.api.Union; 4 | 5 | @Union 6 | public interface TestUnion { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/test/UnionInterfaceOne.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test; 2 | 3 | import org.eclipse.microprofile.graphql.Interface; 4 | 5 | @Interface 6 | public interface UnionInterfaceOne extends UnionOfInterfaces { 7 | 8 | String getName(); 9 | } 10 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/test/UnionInterfaceTwo.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test; 2 | 3 | import org.eclipse.microprofile.graphql.Interface; 4 | 5 | @Interface 6 | public interface UnionInterfaceTwo extends UnionOfInterfaces { 7 | 8 | String getColor(); 9 | } 10 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/test/UnionMember.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test; 2 | 3 | public class UnionMember implements TestUnion { 4 | 5 | String name; 6 | 7 | public UnionMember(String name) { 8 | this.name = name; 9 | } 10 | 11 | public String getName() { 12 | return name; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/test/UnionOfInterfaces.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test; 2 | 3 | import io.smallrye.graphql.api.Union; 4 | 5 | @Union 6 | public interface UnionOfInterfaces { 7 | } 8 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/test/jsonbCreator/WithJsonbCreator.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.jsonbCreator; 2 | 3 | import jakarta.json.bind.annotation.JsonbCreator; 4 | import jakarta.json.bind.annotation.JsonbProperty; 5 | 6 | public class WithJsonbCreator { 7 | 8 | private final String field; 9 | 10 | @JsonbCreator 11 | public WithJsonbCreator(@JsonbProperty("field") final String field) { 12 | this.field = field; 13 | } 14 | 15 | public String getField() { 16 | return field; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/test/mutiny/CustomException.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.mutiny; 2 | 3 | import io.smallrye.graphql.api.ErrorCode; 4 | 5 | @ErrorCode("custom-error") 6 | public class CustomException extends RuntimeException { 7 | } -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/test/namespace/ExperimentalNamespaceApi.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.namespace; 2 | 3 | import org.eclipse.microprofile.graphql.GraphQLApi; 4 | import org.eclipse.microprofile.graphql.Query; 5 | 6 | import io.smallrye.graphql.api.Namespace; 7 | 8 | @GraphQLApi 9 | @Namespace({ "admin", "users" }) 10 | public class ExperimentalNamespaceApi { 11 | @Query 12 | public String find() { 13 | return "AdminUsersFind"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/test/namespace/NamedNamespaceTestApi.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.namespace; 2 | 3 | import org.eclipse.microprofile.graphql.GraphQLApi; 4 | import org.eclipse.microprofile.graphql.Name; 5 | import org.eclipse.microprofile.graphql.Query; 6 | 7 | @Name("NamedNamespace") 8 | @GraphQLApi 9 | public class NamedNamespaceTestApi { 10 | @Query 11 | public NamedNamespaceModel getById(String id) { 12 | return new NamedNamespaceModel(id, id); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /server/implementation/src/test/java/io/smallrye/graphql/test/namespace/UnnamedTestApi.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.namespace; 2 | 3 | import org.eclipse.microprofile.graphql.GraphQLApi; 4 | import org.eclipse.microprofile.graphql.Query; 5 | 6 | @GraphQLApi 7 | public class UnnamedTestApi { 8 | @Query 9 | public UnamedModel getById(String id) { 10 | return new UnamedModel(id, id); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /server/implementation/src/test/resources/META-INF/services/io.smallrye.graphql.api.ErrorExtensionProvider: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.execution.TestErrorExtensionProvider 2 | -------------------------------------------------------------------------------- /server/implementation/src/test/resources/META-INF/services/io.smallrye.graphql.spi.EventingService: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.execution.event.LastEventingService 2 | io.smallrye.graphql.execution.event.TestEventingService 3 | io.smallrye.graphql.execution.event.FirstEventingService 4 | -------------------------------------------------------------------------------- /server/implementation/src/test/resources/META-INF/services/io.smallrye.graphql.spi.config.Config: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.execution.TestConfig 2 | -------------------------------------------------------------------------------- /server/integration-tests/src/test/java/io/smallrye/graphql/tests/client/dynamic/DummyEnum.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.tests.client.dynamic; 2 | 3 | public enum DummyEnum { 4 | ZERO, 5 | ONE, 6 | TWO, 7 | THREE 8 | } 9 | -------------------------------------------------------------------------------- /server/integration-tests/src/test/java/io/smallrye/graphql/tests/client/dynamic/fragments/Vehicle.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.tests.client.dynamic.fragments; 2 | 3 | public interface Vehicle { 4 | 5 | int getWheelsCount(); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /server/integration-tests/src/test/java/io/smallrye/graphql/tests/client/parsing/FormatAnnotationsClientApi.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.tests.client.parsing; 2 | 3 | import io.smallrye.graphql.client.typesafe.api.GraphQLClientApi; 4 | 5 | @GraphQLClientApi 6 | public interface FormatAnnotationsClientApi { 7 | 8 | ObjectWithFormattedFields something(); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /server/integration-tests/src/test/java/io/smallrye/graphql/tests/client/typesafe/ClientPayloadApi.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.tests.client.typesafe; 2 | 3 | import java.io.Closeable; 4 | 5 | import org.eclipse.microprofile.graphql.Query; 6 | 7 | import io.smallrye.graphql.client.typesafe.api.GraphQLClientApi; 8 | 9 | @GraphQLClientApi 10 | public interface ClientPayloadApi extends Closeable { 11 | @Query 12 | String getPayloadResult(String value); 13 | } 14 | -------------------------------------------------------------------------------- /server/integration-tests/src/test/java/io/smallrye/graphql/tests/client/typesafe/calendar/ClientSomeApi.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.tests.client.typesafe.calendar; 2 | 3 | import java.util.Calendar; 4 | import java.util.GregorianCalendar; 5 | 6 | import org.eclipse.microprofile.graphql.Query; 7 | 8 | public interface ClientSomeApi { 9 | @Query 10 | Calendar someCalendar(Calendar calendar); 11 | 12 | @Query 13 | GregorianCalendar someGregorianCalendar(GregorianCalendar calendar); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /server/integration-tests/src/test/java/io/smallrye/graphql/tests/client/typesafe/ignoreannotation/IgnoreClientApi.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.tests.client.typesafe.ignoreannotation; 2 | 3 | import org.eclipse.microprofile.graphql.Query; 4 | 5 | import io.smallrye.graphql.client.typesafe.api.GraphQLClientApi; 6 | import io.smallrye.graphql.tests.client.typesafe.ignoreannotation.clientmodels.Person; 7 | 8 | @GraphQLClientApi 9 | public interface IgnoreClientApi { 10 | @Query 11 | Person person(); 12 | } 13 | -------------------------------------------------------------------------------- /server/integration-tests/src/test/java/io/smallrye/graphql/tests/client/typesafe/subscription/Dummy.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.tests.client.typesafe.subscription; 2 | 3 | public class Dummy { 4 | 5 | private Integer number; 6 | 7 | public Dummy() { 8 | } 9 | 10 | public Dummy(Integer number) { 11 | this.number = number; 12 | } 13 | 14 | public Integer getNumber() { 15 | return number; 16 | } 17 | 18 | public void setNumber(Integer number) { 19 | this.number = number; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /server/integration-tests/src/test/java/io/smallrye/graphql/tests/client/typesafe/uni/UniApi.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.tests.client.typesafe.uni; 2 | 3 | import org.eclipse.microprofile.graphql.GraphQLApi; 4 | import org.eclipse.microprofile.graphql.Query; 5 | 6 | import io.smallrye.mutiny.Uni; 7 | 8 | @GraphQLApi 9 | public class UniApi { 10 | 11 | @Query 12 | public Uni asyncQuery() { 13 | return Uni.createFrom().item("async"); 14 | } 15 | 16 | @Query 17 | public String syncQuery() { 18 | return "sync"; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /server/integration-tests/src/test/java/io/smallrye/graphql/tests/extensions/Shirt.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.tests.extensions; 2 | 3 | public class Shirt { 4 | private long size; 5 | 6 | public Shirt() { 7 | } 8 | 9 | public long getSize() { 10 | return size; 11 | } 12 | 13 | public void setSize(long size) { 14 | this.size = size; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/integration-tests/src/test/java/io/smallrye/graphql/tests/json/DateWrapper.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.tests.json; 2 | 3 | import java.util.Date; 4 | 5 | public class DateWrapper { 6 | 7 | // For deserializing this will use a custom date format: MM dd yyyy HH:mm Z 8 | // thanks to the logic in `CustomJsonbService`. 9 | private Date date; 10 | 11 | public Date getDate() { 12 | return date; 13 | } 14 | 15 | public void setDate(Date date) { 16 | this.date = date; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /server/integration-tests/src/test/java/io/smallrye/graphql/tests/json/MyApi.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.tests.json; 2 | 3 | import org.eclipse.microprofile.graphql.GraphQLApi; 4 | import org.eclipse.microprofile.graphql.Query; 5 | 6 | @GraphQLApi 7 | public class MyApi { 8 | 9 | @Query 10 | public DateWrapper echo(DateWrapper dateWrapper) { 11 | return dateWrapper; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /server/integration-tests/src/test/java/io/smallrye/graphql/tests/objectid/ObjectIdAdapter.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.tests.objectid; 2 | 3 | import org.bson.types.ObjectId; 4 | 5 | import io.smallrye.graphql.api.Adapter; 6 | 7 | public class ObjectIdAdapter implements Adapter { 8 | @Override 9 | public ObjectId from(String o) { 10 | return new ObjectId(o); 11 | } 12 | 13 | @Override 14 | public String to(ObjectId a) throws Exception { 15 | return a.toHexString(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /server/integration-tests/src/test/java/io/smallrye/graphql/tests/objectid/SomeApi.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.tests.objectid; 2 | 3 | import org.bson.types.ObjectId; 4 | import org.eclipse.microprofile.graphql.GraphQLApi; 5 | import org.eclipse.microprofile.graphql.Query; 6 | 7 | import io.smallrye.graphql.api.AdaptWith; 8 | 9 | @GraphQLApi 10 | public class SomeApi { 11 | @Query 12 | public @AdaptWith(ObjectIdAdapter.class) ObjectId returnObjectId(@AdaptWith(ObjectIdAdapter.class) ObjectId id) { 13 | return id; 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /server/integration-tests/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.tests.SmallRyeGraphQLExtension -------------------------------------------------------------------------------- /server/runner/graphiql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smallrye/smallrye-graphql/f3899bbd9bdacf7b585983bc4906ff856a2b86f6/server/runner/graphiql.png -------------------------------------------------------------------------------- /server/runner/src/main/resources/META-INF/beans.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | -------------------------------------------------------------------------------- /server/runner/src/main/resources/META-INF/microprofile-config.properties: -------------------------------------------------------------------------------- 1 | smallrye.graphql.printDataFetcherException=true 2 | smallrye.graphql.tracing.enabled=true 3 | smallrye.graphql.allowGet=true 4 | smallrye.graphql.logPayload=true 5 | mp.graphql.showErrorMessage=java.security.AccessControlException,io.smallrye.graphql.test.apps.exceptionlist.* 6 | mp.graphql.hideErrorMessage=java.io.IOException,io.smallrye.graphql.test.apps.exceptionlist.* 7 | smallrye.graphql.errorExtensionFields=exception,classification,code,description,validationErrorType,queryPath 8 | -------------------------------------------------------------------------------- /server/runner/src/main/webapp/WEB-INF/beans.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | -------------------------------------------------------------------------------- /server/runner/src/main/webapp/WEB-INF/jboss-web.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | / 8 | true 9 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/adapt/to/api/Dummy.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.adapt.to.api; 2 | 3 | import io.smallrye.graphql.api.AdaptToScalar; 4 | import io.smallrye.graphql.api.Scalar; 5 | 6 | public class Dummy { 7 | 8 | public String name; 9 | @AdaptToScalar(Scalar.String.class) 10 | public DummyId id; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/adapt/with/api/AddressType.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.adapt.with.api; 2 | 3 | /** 4 | * All types of addresses 5 | * 6 | * @author Phillip Kruger (phillip.kruger@redhat.com) 7 | */ 8 | public enum AddressType { 9 | 10 | postal, 11 | physical, 12 | email 13 | 14 | } 15 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/adapt/with/api/Dommie.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.adapt.with.api; 2 | 3 | import io.smallrye.graphql.api.AdaptWith; 4 | 5 | public class Dommie { 6 | 7 | public String name; 8 | @AdaptWith(DommieIdAdapter.class) 9 | public DommieId id; 10 | 11 | } 12 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/adapt/with/api/ISO6391.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.adapt.with.api; 2 | 3 | /** 4 | * ISO 639-1 Language codes 5 | * 6 | * @author Phillip Kruger (phillip.kruger@redhat.com) 7 | */ 8 | public enum ISO6391 { 9 | af, 10 | en, 11 | de, 12 | fr 13 | } 14 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/adapt/with/api/Id.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.adapt.with.api; 2 | 3 | public class Id { 4 | public String value; 5 | } 6 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/adapt/with/api/Tag.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.adapt.with.api; 2 | 3 | public class Tag { 4 | public String value; 5 | 6 | public Tag() { 7 | } 8 | 9 | public Tag(String value) { 10 | this.value = value; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/adapt/with/api/Tags.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.adapt.with.api; 2 | 3 | public class Tags { 4 | public Tag[] taglist; 5 | } 6 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/adapt/with/api/WordNumber.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.adapt.with.api; 2 | 3 | public class WordNumber { 4 | public String number; 5 | 6 | public WordNumber() { 7 | } 8 | 9 | public WordNumber(String number) { 10 | this.number = number; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/async/api/AsyncSource.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.async.api; 2 | 3 | public class AsyncSource { 4 | 5 | String simpleField = "Some String"; 6 | 7 | public String getSimpleField() { 8 | return simpleField; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/batch/api/BatchInterface.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.batch.api; 2 | 3 | public interface BatchInterface { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/batch/api/BatchPojo.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.batch.api; 2 | 3 | public class BatchPojo implements BatchInterface { 4 | 5 | public int id; 6 | 7 | public BatchPojo() { 8 | } 9 | 10 | public BatchPojo(int id) { 11 | this.id = id; 12 | } 13 | 14 | public String getSimpleField() { 15 | return "Some String"; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/context/api/Pojo.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.context.api; 2 | 3 | /** 4 | * Some pojo 5 | * 6 | * @author Phillip Kruger (phillip.kruger@redhat.com) 7 | */ 8 | public class Pojo { 9 | public String name; 10 | 11 | public Pojo() { 12 | 13 | } 14 | 15 | public Pojo(String name) { 16 | this.name = name; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/creators/api/WithJsonbCreator.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.creators.api; 2 | 3 | import jakarta.json.bind.annotation.JsonbCreator; 4 | import jakarta.json.bind.annotation.JsonbProperty; 5 | 6 | public class WithJsonbCreator { 7 | 8 | private final String field; 9 | 10 | @JsonbCreator 11 | public WithJsonbCreator(@JsonbProperty("field") final String field) { 12 | this.field = field; 13 | } 14 | 15 | public String getField() { 16 | return field; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/enumlist/api/EnumListApi.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.enumlist.api; 2 | 3 | import org.eclipse.microprofile.graphql.GraphQLApi; 4 | import org.eclipse.microprofile.graphql.Query; 5 | 6 | @GraphQLApi 7 | public class EnumListApi { 8 | 9 | @Query 10 | public ObjectWithEnumList getObjectWithEnumList() { 11 | return new ObjectWithEnumList(); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/enumlist/api/ObjectWithEnumList.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.enumlist.api; 2 | 3 | import java.util.EnumSet; 4 | import java.util.Set; 5 | 6 | public class ObjectWithEnumList { 7 | public Set nopets = EnumSet.noneOf(Pet.class); 8 | public Set allpets = EnumSet.allOf(Pet.class); 9 | } 10 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/enumlist/api/Pet.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.enumlist.api; 2 | 3 | public enum Pet { 4 | 5 | Cat, 6 | Dog, 7 | Fish 8 | 9 | } 10 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/exceptionlist/MyCheckedException.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.exceptionlist; 2 | 3 | public class MyCheckedException extends Exception { 4 | 5 | public MyCheckedException(String errMsg) { 6 | super(errMsg); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/exceptionlist/MyUncheckedException.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.exceptionlist; 2 | 3 | public class MyUncheckedException extends RuntimeException { 4 | 5 | public MyUncheckedException(String errMsg) { 6 | super(errMsg); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/fieldexistence/api/FieldExistenceApi.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.fieldexistence.api; 2 | 3 | import org.eclipse.microprofile.graphql.GraphQLApi; 4 | import org.eclipse.microprofile.graphql.Query; 5 | 6 | @GraphQLApi 7 | public class FieldExistenceApi { 8 | 9 | @Query 10 | public FieldExistencePojo fieldExistencePojo(FieldExistencePojo fieldExistencePojo) { 11 | return new FieldExistencePojo(); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/generics/api/ClassWithOneGenericsParamToString.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.generics.api; 2 | 3 | public class ClassWithOneGenericsParamToString extends ClassWithOneGenericsParam { 4 | 5 | public ClassWithOneGenericsParamToString() { 6 | 7 | } 8 | 9 | public ClassWithOneGenericsParamToString(String s) { 10 | super(s); 11 | } 12 | 13 | public int getAge() { 14 | return 99; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/generics/api/ClassWithOneGenericsParamToString2.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.generics.api; 2 | 3 | public class ClassWithOneGenericsParamToString2 extends ClassWithOneGenericsParamToString { 4 | 5 | public ClassWithOneGenericsParamToString2() { 6 | super(); 7 | } 8 | 9 | public ClassWithOneGenericsParamToString2(String s) { 10 | super(s); 11 | } 12 | 13 | public String getMe() { 14 | return "me"; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/generics/api/ClassWithoutGenerics.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.generics.api; 2 | 3 | public class ClassWithoutGenerics { 4 | 5 | public String getName() { 6 | return "name"; 7 | } 8 | 9 | public int getAge() { 10 | return 42; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/generics/api/ClassWithoutGenericsWithNameAnnotation.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.generics.api; 2 | 3 | import org.eclipse.microprofile.graphql.Name; 4 | 5 | @Name("ClassWithoutGenericsWithNameAnnotationChanged") 6 | public class ClassWithoutGenericsWithNameAnnotation { 7 | 8 | public String getName() { 9 | return "name"; 10 | } 11 | 12 | public int getAge() { 13 | return 42; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/generics/api/InterfaceWithOneGenericsListParam.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.generics.api; 2 | 3 | import java.util.List; 4 | 5 | public interface InterfaceWithOneGenericsListParam { 6 | 7 | List getInstance(); 8 | 9 | String getName(); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/generics/api/InterfaceWithOneGenericsParam.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.generics.api; 2 | 3 | public interface InterfaceWithOneGenericsParam { 4 | 5 | T getInstance(); 6 | 7 | String getName(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/generics/inheritance/api/AbstractHasID.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.generics.inheritance.api; 2 | 3 | public abstract class AbstractHasID> { 4 | protected I id; 5 | 6 | public I getId() { 7 | return this.id; 8 | } 9 | 10 | public void setId(I id) { 11 | this.id = id; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/generics/inheritance/api/ID.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.generics.inheritance.api; 2 | 3 | public interface ID> { 4 | 5 | // Marker interface. 6 | } 7 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/interfaces/api/Eatable.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.interfaces.api; 2 | 3 | import org.eclipse.microprofile.graphql.Type; 4 | 5 | /** 6 | * Define something that is fit to be consumed as food 7 | * 8 | * @author Phillip Kruger (phillip.kruger@redhat.com) 9 | */ 10 | @Type 11 | public interface Eatable { 12 | 13 | public String getColor(); 14 | 15 | public void setColor(String color); 16 | 17 | public String getName(); 18 | 19 | public void setName(String name); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/interfaces/api/MyClass.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.interfaces.api; 2 | 3 | import java.io.Serializable; 4 | 5 | public class MyClass { 6 | 7 | private Serializable something; 8 | 9 | public String getSomething() { 10 | return something.toString(); 11 | } 12 | 13 | public void setSomething(String something) { 14 | this.something = something; 15 | } 16 | } -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/jackson/api/JacksonApi.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.jackson.api; 2 | 3 | import java.time.LocalDateTime; 4 | import java.time.Month; 5 | 6 | import org.eclipse.microprofile.graphql.GraphQLApi; 7 | import org.eclipse.microprofile.graphql.Query; 8 | 9 | @GraphQLApi 10 | public class JacksonApi { 11 | 12 | @Query 13 | public JacksonObject getJacksonObject() { 14 | return new JacksonObject("Phillip", "foobar", LocalDateTime.of(1978, Month.JULY, 3, 11, 12)); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/jsonp/api/Token.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.jsonp.api; 2 | 3 | import jakarta.json.JsonObject; 4 | 5 | public class Token { 6 | public String name; 7 | public JsonObject value; 8 | } 9 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/nonnull/api/nonnull_package/package-info.java: -------------------------------------------------------------------------------- 1 | @DefaultNonNull 2 | package io.smallrye.graphql.test.apps.nonnull.api.nonnull_package; 3 | 4 | import io.smallrye.graphql.api.DefaultNonNull; 5 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/profile/api/Foo.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.profile.api; 2 | 3 | public class Foo { 4 | public String bar; 5 | 6 | public Foo() { 7 | } 8 | 9 | public Foo(String bar) { 10 | this.bar = bar; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/profile/api/IEntity.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.profile.api; 2 | 3 | import org.eclipse.microprofile.graphql.Description; 4 | 5 | import io.smallrye.graphql.api.Scalar; 6 | import io.smallrye.graphql.api.ToScalar; 7 | 8 | public interface IEntity { 9 | 10 | @Description("Testing map scalar to scalar") 11 | @ToScalar(Scalar.Int.class) 12 | public Long getId(); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/profile/api/IUser.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.profile.api; 2 | 3 | public interface IUser extends IEntity { 4 | 5 | public String getUsername(); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/profile/api/Website.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.profile.api; 2 | 3 | public class Website { 4 | private String value; 5 | 6 | public String getValue() { 7 | return value; 8 | } 9 | 10 | public void setValue(String value) { 11 | this.value = value; 12 | } 13 | 14 | @Override 15 | public String toString() { 16 | return value; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /server/tck/src/test/java/io/smallrye/graphql/test/apps/variables/api/VariablesTestingApi.java: -------------------------------------------------------------------------------- 1 | package io.smallrye.graphql.test.apps.variables.api; 2 | 3 | import org.eclipse.microprofile.graphql.GraphQLApi; 4 | import org.eclipse.microprofile.graphql.Query; 5 | 6 | @GraphQLApi 7 | public class VariablesTestingApi { 8 | 9 | @Query 10 | public String foo(Integer i) { 11 | return "bar_" + i; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.SmallRyeGraphQLExtension -------------------------------------------------------------------------------- /server/tck/src/test/resources/logging.properties: -------------------------------------------------------------------------------- 1 | handlers=java.util.logging.FileHandler,java.util.logging.ConsoleHandler 2 | .level=INFO 3 | 4 | java.util.logging.ConsoleHandler.level=FINE 5 | java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter 6 | 7 | java.util.logging.FileHandler.pattern=target/tck.log 8 | java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter 9 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/overrides/basicScalarTests.csv: -------------------------------------------------------------------------------- 1 | # Basic Scalar Types 2 | 23| type ScalarHolder | charArray: [String!] | Expecting a String Array Scalar (for Java Char[]) Type in type ScalarHolder 3 | 47| type Query | testCharArray: [String!] | Expecting a non null Stirng Array (for Java Char[]) Scalar Type in type Query -------------------------------------------------------------------------------- /server/tck/src/test/resources/overrides/createNewNullNamedHero/output2.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": [ 3 | { 4 | "message": "Validation error (WrongType@[createNewHero]) : argument 'hero.name' with value 'NullValue{}' must not be null", 5 | "locations": [ 6 | { 7 | "line": 2, 8 | "column": 19 9 | } 10 | ] 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/overrides/createNewUnnamedHero/output2.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": [ 3 | { 4 | "message": "Validation error (WrongType@[createNewHero]) : argument 'hero' with value 'ObjectValue{objectFields=[ObjectField{name='realName', value=StringValue{value='John Smith'}}]}' is missing required fields '[name]'", 5 | "locations": [ 6 | { 7 | "line": 2, 8 | "column": 19 9 | } 10 | ] 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/overrides/invalidDataTypeValue/output3.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": [ 3 | { 4 | "message": "Validation error (WrongType@[updateItemPowerLevel]) : argument 'powerLevel' with value 'StringValue{value='Unlimited'}' is not a valid 'Int' - SRGQL000022: Can not parse a number from [StringValue{value='Unlimited'}]", 5 | "locations": [ 6 | { 7 | "line": 2, 8 | "column": 37 9 | } 10 | ] 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/overrides/invalidEnumValue/output2.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": [ 3 | { 4 | "message": "Validation error (WrongType@[createNewHero]) : argument 'hero.tshirtSize' with value 'EnumValue{name='XLTall'}' is not a valid 'ShirtSize' - Literal value not in allowable values for enum 'ShirtSize' - 'EnumValue{name='XLTall'}'", 5 | "locations": [ 6 | { 7 | "line": 3, 8 | "column": 19 9 | } 10 | ] 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/overrides/invalidLocalDateFormattedValue/output3.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": [ 3 | { 4 | "message": "argument 'date' with value 'StringValue{value='Today'}' is not a valid 'Date'", 5 | "locations": [ 6 | { 7 | "line": 2, 8 | "column": 49 9 | } 10 | ] 11 | } 12 | ], 13 | "data": { 14 | "checkInWithCorrectDateFormat": null 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/overrides/invalidLocalDateTimeFormattedValue/output3.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": [ 3 | { 4 | "message": "argument 'dateTime' with value 'StringValue{value='Today'}' is not a valid 'DateTime'", 5 | "locations": [ 6 | { 7 | "line": 2, 8 | "column": 48 9 | } 10 | ] 11 | } 12 | ], 13 | "data": { 14 | "battleWithCorrectDateFormat": null 15 | } 16 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/overrides/invalidLocalDateTimeValue/output3.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": [ 3 | { 4 | "message": "argument 'dateTime' with value 'StringValue{value='Today'}' is not a valid 'DateTime'", 5 | "locations": [ 6 | { 7 | "line": 2, 8 | "column": 27 9 | } 10 | ] 11 | } 12 | ], 13 | "data": { 14 | "battle": null 15 | } 16 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/overrides/invalidLocalDateValue/output3.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": [ 3 | { 4 | "message": "argument 'date' with value 'StringValue{value='Today'}' is not a valid 'Date'", 5 | "locations": [ 6 | { 7 | "line": 2, 8 | "column": 28 9 | } 10 | ] 11 | } 12 | ], 13 | "data": { 14 | "checkIn": null 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/overrides/invalidLocalTimeFormattedValue/output3.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": [ 3 | { 4 | "message": "argument 'time' with value 'StringValue{value='Today'}' is not a valid 'Time'", 5 | "locations": [ 6 | { 7 | "line": 2, 8 | "column": 57 9 | } 10 | ] 11 | } 12 | ], 13 | "data": { 14 | "startPatrollingWithCorrectDateFormat": null 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/overrides/invalidLocalTimeValue/output3.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": [ 3 | { 4 | "message": "argument 'time' with value 'StringValue{value='Today'}' is not a valid 'Time'", 5 | "locations": [ 6 | { 7 | "line": 2, 8 | "column": 36 9 | } 10 | ] 11 | } 12 | ], 13 | "data": { 14 | "startPatrolling": null 15 | } 16 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/overrides/schemaTests.csv: -------------------------------------------------------------------------------- 1 | # testJsonDefault 2 | 60|type Mutation | id : "1000" | Expecting an id in the default value for item for provisionHero -------------------------------------------------------------------------------- /server/tck/src/test/resources/overrides/unknownField/output2.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": [ 3 | { 4 | "message": "Validation error (FieldUndefined@[allHeroes/weaknesses]) : Field 'weaknesses' in type 'SuperHero' is undefined", 5 | "locations": [ 6 | { 7 | "line": 4, 8 | "column": 5 9 | } 10 | ] 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/overrides/unknownMutation/output2.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": [ 3 | { 4 | "message": "Validation error (FieldUndefined@[createNewHeroCat]) : Field 'createNewHeroCat' in type 'Mutation' is undefined", 5 | "locations": [ 6 | { 7 | "line": 2, 8 | "column": 5 9 | } 10 | ] 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/overrides/unknownQuery/output2.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": [ 3 | { 4 | "message": "Validation error (FieldUndefined@[allHeroesWhoLikeIceCream]) : Field 'allHeroesWhoLikeIceCream' in type 'Query' is undefined", 5 | "locations": [ 6 | { 7 | "line": 2, 8 | "column": 3 9 | } 10 | ] 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/adapt/to/basic/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "addProfile": { 4 | "id": 2, 5 | "names": [ 6 | "Charmaine" 7 | ], 8 | "surname": "Kruger", 9 | "email": "charmaine.kruger@google.com", 10 | "website": "http://www.charmaine-kruger.com", 11 | "bookmarks": [ 12 | "http://www.google.com", 13 | "http://www.redhat.com" 14 | ], 15 | "idNumber": "qwe123", 16 | "twitterHandle": "charmainekruger" 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/adapt/to/basic/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/adapt/to/input/input.graphql: -------------------------------------------------------------------------------- 1 | mutation updateAdaptToData { 2 | updateAdaptToData(adaptToData: { 3 | id:1 4 | withConstructor: "bar", 5 | withSetValue: "bar", 6 | withStaticFrom: "bar", 7 | withGetInstance: "bar" 8 | } 9 | ){ 10 | id 11 | withConstructor 12 | withSetValue 13 | withStaticFrom 14 | withGetInstance 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/adapt/to/input/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "updateAdaptToData": { 4 | "id": 1, 5 | "withConstructor": "bar", 6 | "withSetValue": "bar", 7 | "withStaticFrom": "bar", 8 | "withGetInstance": "bar" 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/adapt/to/input/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/adapt/to/output/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | adaptToData{ 3 | id 4 | withConstructor 5 | withSetValue 6 | withStaticFrom 7 | withGetInstance 8 | } 9 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/adapt/to/output/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "adaptToData": { 4 | "id": 1, 5 | "withConstructor": "bar", 6 | "withSetValue": "bar", 7 | "withStaticFrom": "bar", 8 | "withGetInstance": "bar" 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/adapt/to/output/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/adapt/with/input/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/adapt/with/mutationoperation/input.graphql: -------------------------------------------------------------------------------- 1 | mutation MapInputs { 2 | mapMutationBasic(in:[{key:"foo",value:"bar"},{key:"oof",value:"rab"}]){ 3 | key 4 | value 5 | } 6 | mapMutationEnum(in:{key:af,value:{enName:"Afrikaans"}}){ 7 | key 8 | value{ 9 | enName 10 | } 11 | } 12 | mapMutationComplex(in:{key:{id:1,key:"k1",description:"k1 desc"},value:{id:1,values:["v1"]}}){ 13 | key{ 14 | id 15 | key 16 | description 17 | } 18 | value { 19 | id 20 | values 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/adapt/with/mutationoperation/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/adapt/with/output/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/adapt/with/queryoperation/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | mapOperationBasic { 3 | key 4 | value 5 | } 6 | mapOperationComplex(key:{id:2}){ 7 | key{ 8 | id 9 | description 10 | } 11 | value{ 12 | values 13 | } 14 | } 15 | mapOperationEnum (forLang: af){ 16 | key 17 | value { 18 | enName 19 | please 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/adapt/with/queryoperation/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/adapt/with/source/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | adapterData{ 3 | name 4 | mapSourceBasic { 5 | key 6 | value 7 | } 8 | mapSourceComplex { 9 | key{ 10 | description 11 | } 12 | value { 13 | values 14 | } 15 | } 16 | mapSourceEnum(forLang: af){ 17 | key 18 | value { 19 | please 20 | thankyou 21 | } 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/adapt/with/source/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/additionalDurationScalarsTests.csv: -------------------------------------------------------------------------------- 1 | # test additional duration scalars 2 | 1| type AdditionalDurationScalars | duration: Duration | Duration should be mapped to Duration 3 | 2| type AdditionalDurationScalars | period: Period | Period should be mapped to Period 4 | 5 | 6 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/async/batch/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | asyncSources { 3 | simpleField 4 | asyncList 5 | asyncFormattedLocalDate 6 | asyncLocalDate 7 | asyncNonNullString 8 | asyncStrings 9 | asyncListBatch 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/async/batch/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/async/error/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | asyncSource{ 3 | asyncWithGraphQLException 4 | } 5 | exception{ 6 | simpleField 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/async/error/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/async/normal/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | asyncSource { 3 | simpleField 4 | asyncString 5 | asyncNonNullString 6 | asyncLocalDate 7 | asyncFormattedLocalDate 8 | asyncList 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/async/normal/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "asyncSource": { 4 | "simpleField": "Some String", 5 | "asyncString": "asyncString", 6 | "asyncNonNullString": "asyncNonNullString", 7 | "asyncLocalDate": "2006-01-02", 8 | "asyncFormattedLocalDate": "01/02/2006", 9 | "asyncList": [ 10 | 1, 11 | 2, 12 | 3 13 | ] 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/async/normal/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/asyncTests.csv: -------------------------------------------------------------------------------- 1 | # testAsyncTypes 2 | 1| type AsyncSource | asyncString: String | CompletableFuture should map to String 3 | 2| type AsyncSource | asyncLocalDate: Date | CompletableFuture should be mapped to Date 4 | 3| type AsyncSource | asyncFormattedLocalDate: String | Formatted CompletableFuture should be mapped to String 5 | 3| type AsyncSource | asyncNonNullString: String! | NonNull CompletableFuture should be mapped to String! 6 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/batch/error/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | batchPojos{ 3 | business 4 | runtime 5 | businesses 6 | runtimes 7 | } 8 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/batch/error/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/batch/interface/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | batchPojos { 3 | id 4 | interfaceGreeting 5 | interfaceId 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/batch/interface/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/batch/normal/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | profile:profiles{ 3 | id 4 | count 5 | timestamp(random:1){ 6 | dateTime 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/batch/normal/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/collections/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | sortedValues{ 3 | value 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/collections/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "sortedValues": [ 4 | { 5 | "value": 1 6 | }, 7 | { 8 | "value": 2 9 | }, 10 | { 11 | "value": 3 12 | }, 13 | { 14 | "value": 4 15 | }, 16 | { 17 | "value": 5 18 | }, 19 | { 20 | "value": 6 21 | }, 22 | { 23 | "value": 7 24 | }, 25 | { 26 | "value": 8 27 | }, 28 | { 29 | "value": 9 30 | } 31 | ] 32 | } 33 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/collections/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/context/basic/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | context 3 | contextMethodInjected 4 | contextMethodInjectedAnotherIndex 5 | contextFromAnotherService 6 | contextFromSource { 7 | path 8 | } 9 | contextMethodInjectedFromSource{ 10 | operationType 11 | path 12 | asyncOperationType 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/context/basic/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/context/fieldselection/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | konteks{ 3 | fieldName 4 | operationType 5 | path 6 | requestedOperationTypes 7 | selectedFieldIncludingSource 8 | selectedFields 9 | sourceOnKonteks 10 | } 11 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/context/fieldselection/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/creator/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/deepList/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | deepList{ 3 | names 4 | } 5 | deepListFoo{ 6 | bar 7 | } 8 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/deepList/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "deepList": [ 4 | [ 5 | [ 6 | { 7 | "names": [ 8 | "Phillip" 9 | ] 10 | } 11 | ] 12 | ] 13 | ], 14 | "deepListFoo": [ 15 | [ 16 | [ 17 | { 18 | "bar": "bar" 19 | } 20 | ] 21 | ] 22 | ] 23 | } 24 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/deepList/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/defaultValue/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/enum/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | configurationByName(name: testing_thingy) { 3 | name 4 | value 5 | configurationEnum 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/enum/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "configurationByName": { 4 | "name": "name", 5 | "value": "value", 6 | "configurationEnum": "testing_thingy" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/enum/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/enumlist/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | objectWithEnumList{ 3 | allpets 4 | nopets 5 | } 6 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/enumlist/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "objectWithEnumList": { 4 | "allpets": [ 5 | "Cat", 6 | "Dog", 7 | "Fish" 8 | ], 9 | "nopets": [] 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/enumlist/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/errors/annotatedAsyncCustomException/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | annotatedAsyncCustomBusinessException 3 | } 4 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/errors/annotatedAsyncCustomException/test.properties: -------------------------------------------------------------------------------- 1 | ## error extension `code` derived from the `@GraphQlErrorCode` annotation on a custom exception 2 | 3 | ignore=false 4 | priority=100 5 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/errors/annotatedCustomException/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | annotatedCustomBusinessException 3 | } 4 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/errors/annotatedCustomException/test.properties: -------------------------------------------------------------------------------- 1 | ## error extension `code` derived from the `@GraphQlErrorCode` annotation on a custom exception 2 | 3 | ignore=false 4 | priority=100 5 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/errors/annotatedReactiveCustomException/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | annotatedReactiveCustomBusinessException 3 | } 4 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/errors/annotatedReactiveCustomException/test.properties: -------------------------------------------------------------------------------- 1 | ## error extension `code` derived from the `@GraphQlErrorCode` annotation on a custom exception 2 | 3 | ignore=false 4 | priority=100 5 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/errors/builtInException/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | unsupportedOperation 3 | } 4 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/errors/builtInException/test.properties: -------------------------------------------------------------------------------- 1 | ## error extension `code` derived from the class name of a jdk exception 2 | 3 | ignore=false 4 | priority=100 5 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/errors/customException/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | customBusinessException 3 | } 4 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/errors/customException/test.properties: -------------------------------------------------------------------------------- 1 | ## error extension `code` derived from the class name of a custom exception 2 | 3 | ignore=false 4 | priority=100 5 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/errors/securityException/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | securityException 3 | } 4 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/errors/securityException/test.properties: -------------------------------------------------------------------------------- 1 | ## error extension `code` derived from the class name of a custom exception 2 | 3 | ignore=false 4 | priority=100 5 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/exceptionlist/checkedexception/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | checkedException 3 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/exceptionlist/checkedexception/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": [ 3 | { 4 | "message": "Unexpected failure in the system. Jarvis is working to fix it.", 5 | "locations": [ 6 | { 7 | "line": 2, 8 | "column": 5 9 | } 10 | ], 11 | "path": [ 12 | "checkedException" 13 | ] 14 | } 15 | ], 16 | "data": { 17 | "checkedException": null 18 | } 19 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/exceptionlist/uncheckedexception/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | uncheckedException 3 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/exceptionlist/uncheckedexception/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": [ 3 | { 4 | "message": "This error should show", 5 | "locations": [ 6 | { 7 | "line": 2, 8 | "column": 5 9 | } 10 | ], 11 | "path": [ 12 | "uncheckedException" 13 | ], 14 | "extensions": { 15 | "classification": "DataFetchingException" 16 | } 17 | } 18 | ], 19 | "data": { 20 | "uncheckedException": null 21 | } 22 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/federation/input.graphql: -------------------------------------------------------------------------------- 1 | query product { 2 | _entities(representations: [{ 3 | __typename: "Product", 4 | id: "1" 5 | }]) { 6 | ... on Product { 7 | __typename 8 | name 9 | id 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/federation/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "_entities": [ 4 | { 5 | "__typename": "Product", 6 | "name": "Armchair", 7 | "id": "1" 8 | } 9 | ] 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/federation/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/fields/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | fieldExistencePojo { 3 | queryMethod 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/fields/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "fieldExistencePojo": { 4 | "queryMethod": "queryMethod" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/fields/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/arrayOfClassWithOneGenericsParamFromInterface/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | arrayOfClassWithOneGenericsParamFromInterface { 3 | name 4 | instance 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/arrayOfClassWithOneGenericsParamFromInterface/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "arrayOfClassWithOneGenericsParamFromInterface": [ 4 | { 5 | "name": "name", 6 | "instance": 10 7 | } 8 | ] 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/arrayOfClassWithOneGenericsParamInControllerString/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | arrayOfClassWithOneGenericsParamInControllerString { 3 | name 4 | param1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/arrayOfClassWithOneGenericsParamInControllerString/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "arrayOfClassWithOneGenericsParamInControllerString": [ 4 | { 5 | "name": "name", 6 | "param1": "Hello" 7 | } 8 | ] 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/arrayOfClassWithOneGenericsParamInControllerStringMutation/input.graphql: -------------------------------------------------------------------------------- 1 | mutation ArrayOfClassWithOneGenericsParamInControllerString { 2 | arrayOfClassWithOneGenericsParamInControllerString(param1: { 3 | param1: "param1" 4 | }){ 5 | name 6 | param1 7 | } 8 | } 9 | 10 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/arrayOfClassWithOneGenericsParamInControllerStringMutation/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "arrayOfClassWithOneGenericsParamInControllerString": [ 4 | { 5 | "name": "name", 6 | "param1": "param1" 7 | } 8 | ] 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/arrayOfClassWithTwoGenericsParamsWithNestedOneGenericsParamInControllerString/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | arrayOfClassWithTwoGenericsParamsWithNestedOneGenericsParamInControllerString { 3 | name 4 | param1 5 | param2{ 6 | name 7 | param1 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/arrayOfClassWithTwoGenericsParamsWithNestedOneGenericsParamInControllerString/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "arrayOfClassWithTwoGenericsParamsWithNestedOneGenericsParamInControllerString": [ 4 | { 5 | "name": "name", 6 | "param1": "Hello", 7 | "param2": { 8 | "name": "name", 9 | "param1": 4 10 | } 11 | } 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classFromInterfaceWithOneGenericsListParam/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | classFromInterfaceWithOneGenericsListParam { 3 | name 4 | instance { 5 | name 6 | age 7 | } 8 | } 9 | } 10 | 11 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classFromInterfaceWithOneGenericsListParam/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "classFromInterfaceWithOneGenericsListParam": { 4 | "name": "name", 5 | "instance": [ 6 | { 7 | "name": "name", 8 | "age": 42 9 | } 10 | ] 11 | } 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithGenericArrayAttributeResolvedFromEnclosingClass/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | classWithGenericArrayAttributeResolvedFromEnclosingClass { 3 | name 4 | param1{ 5 | name 6 | param1 7 | param2 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithGenericArrayAttributeResolvedFromEnclosingClass/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "classWithGenericArrayAttributeResolvedFromEnclosingClass": { 4 | "name": "name", 5 | "param1": [ 6 | { 7 | "name": "name", 8 | "param1": 8, 9 | "param2": "2020-01-01T00:00:00" 10 | } 11 | ] 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithGenericArrayAttributeResolvedFromEnclosingClassMutation/input.graphql: -------------------------------------------------------------------------------- 1 | mutation ClassWithGenericArrayAttributeResolvedFromEnclosingClass { 2 | classWithGenericArrayAttributeResolvedFromEnclosingClass(param1: { 3 | v: 1 4 | }){ 5 | name 6 | param1 { 7 | name 8 | param1 9 | param2 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithGenericArrayAttributeResolvedFromEnclosingClassMutation/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "classWithGenericArrayAttributeResolvedFromEnclosingClass": { 4 | "name": "name", 5 | "param1": [ 6 | { 7 | "name": "name", 8 | "param1": 1, 9 | "param2": "2020-01-01T00:00:00" 10 | } 11 | ] 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithGenericAttributeResolvedFromEnclosingClass/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | classWithGenericAttributeResolvedFromEnclosingClass { 3 | name 4 | param1 { 5 | name 6 | param1 7 | param2 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithGenericAttributeResolvedFromEnclosingClass/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "classWithGenericAttributeResolvedFromEnclosingClass": { 4 | "name": "name", 5 | "param1": { 6 | "name": "name", 7 | "param1": "Boo", 8 | "param2": 6 9 | } 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithGenericListAttributeResolvedFromEnclosingClass/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | classWithGenericListAttributeResolvedFromEnclosingClass { 3 | name 4 | param1{ 5 | name 6 | param1 7 | param2 8 | } 9 | } 10 | } 11 | 12 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithGenericListAttributeResolvedFromEnclosingClass/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "classWithGenericListAttributeResolvedFromEnclosingClass": { 4 | "name": "name", 5 | "param1": [ 6 | { 7 | "name": "name", 8 | "param1": "2020-01-01T00:00:00", 9 | "param2": 7 10 | } 11 | ] 12 | } 13 | } 14 | } 15 | 16 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamFromInterface/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | classWithOneGenericsParamFromInterface { 3 | name 4 | instance 5 | } 6 | } 7 | 8 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamFromInterface/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "classWithOneGenericsParamFromInterface": { 4 | "name": "name", 5 | "instance": 9 6 | } 7 | } 8 | } 9 | 10 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamInControllerClassWithoutGenericsWithNameAnnotation/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | classWithOneGenericsParamInControllerClassWithoutGenericsWithNameAnnotation{ 3 | name 4 | param1 { 5 | name 6 | age 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamInControllerClassWithoutGenericsWithNameAnnotation/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "classWithOneGenericsParamInControllerClassWithoutGenericsWithNameAnnotation": { 4 | "name": "name", 5 | "param1": { 6 | "name": "name", 7 | "age": 42 8 | } 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamInControllerDate/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | classWithOneGenericsParamInControllerDate{ 3 | name 4 | param1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamInControllerDate/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "classWithOneGenericsParamInControllerDate": { 4 | "name": "name", 5 | "param1": "2020-01-01T00:00:00" 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamInControllerInteger/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | classWithOneGenericsParamInControllerInteger{ 3 | name 4 | param1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamInControllerInteger/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "classWithOneGenericsParamInControllerInteger": { 4 | "name": "name", 5 | "param1": 1 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamInControllerIntegerReturnInterface/input.graphql: -------------------------------------------------------------------------------- 1 | mutation ClassWithOneGenericsParamInControllerIntegerReturnInterface { 2 | classWithOneGenericsParamInControllerIntegerReturnInterface(param1: { 3 | param1: 11 4 | }){ 5 | name 6 | instance 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamInControllerIntegerReturnInterface/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "classWithOneGenericsParamInControllerIntegerReturnInterface": { 4 | "name": "name", 5 | "instance": 11 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamInControllerLocalDateMutation/input.graphql: -------------------------------------------------------------------------------- 1 | mutation ClassWithOneGenericsParamInControllerString { 2 | classWithOneGenericsParamInControllerLocalDate(param1: { 3 | param1: "2021-01-01" 4 | }){ 5 | param1 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamInControllerLocalDateMutation/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "classWithOneGenericsParamInControllerLocalDate": { 4 | "param1": "2021-01-01" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamInControllerString/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | classWithOneGenericsParamInControllerString{ 3 | name 4 | param1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamInControllerString/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "classWithOneGenericsParamInControllerString": { 4 | "name": "name", 5 | "param1": "Hello" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamInControllerStringMutation/input.graphql: -------------------------------------------------------------------------------- 1 | mutation ClassWithOneGenericsParamInControllerString { 2 | classWithOneGenericsParamInControllerString(param1: { 3 | param1: "param1" 4 | }){ 5 | name 6 | param1 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamInControllerStringMutation/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "classWithOneGenericsParamInControllerString": { 4 | "name": "name", 5 | "param1": "param1" 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamInControllerStringReturnInterfaceMutation/input.graphql: -------------------------------------------------------------------------------- 1 | mutation ClassWithOneGenericsParamInControllerStringReturnInterface { 2 | classWithOneGenericsParamInControllerStringReturnInterface(param1: { 3 | param1: "param1" 4 | }){ 5 | name 6 | instance 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamInControllerStringReturnInterfaceMutation/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "classWithOneGenericsParamInControllerStringReturnInterface": { 4 | "name": "name", 5 | "instance": "param1" 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamToString/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | classWithOneGenericsParamToString{ 3 | name 4 | me 5 | age 6 | param1 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamToString/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "classWithOneGenericsParamToString": { 4 | "name": "name", 5 | "me": "me", 6 | "age": 99, 7 | "param1": "Goodbye" 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamWithNameAnnotation/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | classWithOneGenericsParamWithNameAnnotation{ 3 | name 4 | param1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithOneGenericsParamWithNameAnnotation/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "classWithOneGenericsParamWithNameAnnotation": { 4 | "name": "name", 5 | "param1": 2 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithTwoGenericsParamsWithNestedOneGenericsParamInControllerString/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | classWithTwoGenericsParamsWithNestedOneGenericsParamInControllerString { 3 | name 4 | param1 5 | param2 { 6 | name 7 | param1 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/classWithTwoGenericsParamsWithNestedOneGenericsParamInControllerString/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "classWithTwoGenericsParamsWithNestedOneGenericsParamInControllerString": { 4 | "name": "name", 5 | "param1": "param1", 6 | "param2": { 7 | "name": "name", 8 | "param1": 3 9 | } 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/interfaceWithOneGenericsParamInControllerClassWithoutGenericsWithNameAnnotation/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | interfaceWithOneGenericsParamInControllerClassWithoutGenericsWithNameAnnotation{ 3 | name 4 | instance{ 5 | name 6 | age 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/interfaceWithOneGenericsParamInControllerClassWithoutGenericsWithNameAnnotation/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "interfaceWithOneGenericsParamInControllerClassWithoutGenericsWithNameAnnotation": { 4 | "name": "name", 5 | "instance": { 6 | "name": "name", 7 | "age": 42 8 | } 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/interfaceWithOneGenericsParamInControllerDate/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | interfaceWithOneGenericsParamInControllerDate{ 3 | name 4 | instance 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/interfaceWithOneGenericsParamInControllerDate/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "interfaceWithOneGenericsParamInControllerDate": { 4 | "name": "name", 5 | "instance": "2020-01-01T00:00:00" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/interfaceWithOneGenericsParamInControllerInteger/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | interfaceWithOneGenericsParamInControllerInteger{ 3 | name 4 | instance 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/interfaceWithOneGenericsParamInControllerInteger/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "interfaceWithOneGenericsParamInControllerInteger": { 4 | "name": "name", 5 | "instance": 5 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/interfaceWithOneGenericsParamInControllerString/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | interfaceWithOneGenericsParamInControllerString{ 3 | name 4 | instance 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/interfaceWithOneGenericsParamInControllerString/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "interfaceWithOneGenericsParamInControllerString": { 4 | "name": "name", 5 | "instance": "Hello" 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/listOfClassWithOneGenericsParamFromInterface/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | listOfClassWithOneGenericsParamFromInterface { 3 | name 4 | instance 5 | } 6 | } 7 | 8 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/listOfClassWithOneGenericsParamFromInterface/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "listOfClassWithOneGenericsParamFromInterface": [ 4 | { 5 | "name": "name", 6 | "instance": 10 7 | } 8 | ] 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/listOfClassWithOneGenericsParamInControllerString/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | listOfClassWithOneGenericsParamInControllerString { 3 | name 4 | param1 5 | } 6 | } 7 | 8 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/listOfClassWithOneGenericsParamInControllerString/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "listOfClassWithOneGenericsParamInControllerString": [ 4 | { 5 | "name": "name", 6 | "param1": "Hello" 7 | } 8 | ] 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/listOfClassWithTwoGenericsParamsWithNestedOneGenericsParamInControllerString/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | listOfClassWithTwoGenericsParamsWithNestedOneGenericsParamInControllerString { 3 | name 4 | param1 5 | param2{ 6 | name 7 | param1 8 | } 9 | } 10 | } 11 | 12 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/generics/listOfClassWithTwoGenericsParamsWithNestedOneGenericsParamInControllerString/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "listOfClassWithTwoGenericsParamsWithNestedOneGenericsParamInControllerString": [ 4 | { 5 | "name": "name", 6 | "param1": "Hello", 7 | "param2": { 8 | "name": "name", 9 | "param1": 4 10 | } 11 | } 12 | ] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/grouping/mutation/input.graphql: -------------------------------------------------------------------------------- 1 | mutation{ 2 | books{ 3 | addBook(book:{ 4 | isbn: "0-877-73515-8" 5 | published: "1910-01-01" 6 | title: "Art of war" 7 | authors: "Sun Tzu" 8 | } 9 | ){ 10 | isbn 11 | published 12 | title 13 | authors 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/grouping/mutation/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "books": { 4 | "addBook": { 5 | "isbn": "0-877-73515-8", 6 | "published": "1910-01-01", 7 | "title": "Art of war", 8 | "authors": [ 9 | "Sun Tzu" 10 | ] 11 | } 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/grouping/mutation/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/grouping/query/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | films{ 3 | allFilms{ 4 | title 5 | leadActors 6 | published 7 | searchLink 8 | } 9 | } 10 | books{ 11 | book(name:"Lord of the Flies"){ 12 | title 13 | authors 14 | published 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/grouping/query/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/interfaceTests.csv: -------------------------------------------------------------------------------- 1 | # testInterfaceAsType 2 | 1| type Query | apple: Eatable | Eatable should be mapped to a type in Query 3 | 2| type Eatable | color: String | Eatable should be mapped to a type 4 | 5 | # testSerializableField 6 | 2| type MyClass | something: String | Serializable fields should map to the method type -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/jackson/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | jacksonObject{ 3 | name 4 | time 5 | } 6 | } 7 | 8 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/jackson/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "jacksonObject": { 4 | "name": "Phillip", 5 | "time": "1978 07 03 11:12" 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/jackson/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/jsonp/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | jsonpObject 3 | jsonpArray 4 | jsonpField{ 5 | name 6 | value 7 | } 8 | } 9 | 10 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/jsonp/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "jsonpObject": "{\"foo\":\"bar\"}", 4 | "jsonpArray": "[\"foo\",\"bar\"]", 5 | "jsonpField": { 6 | "name": "foobar", 7 | "value": "{\"foo\":\"bar\"}" 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/jsonp/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/mutiny/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | mutinyBook(name:"Lord of the Flies"){ 3 | title 4 | published 5 | buyLink 6 | sourceAuthors { 7 | name 8 | bornName 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/mutiny/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "mutinyBook": { 4 | "title": "Lord of the Flies", 5 | "published": "1954-09-17", 6 | "buyLink": "https://www.amazon.com/s?k=Lord+of+the+Flies&i=stripbooks-intl-ship", 7 | "sourceAuthors": [ 8 | { 9 | "name": "William Golding", 10 | "bornName": "William Gerald Golding" 11 | } 12 | ] 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/mutiny/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/optional/classWithEmptyField/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | classWithEmptyField{ 3 | maybe 4 | maybeOneDay 5 | id 6 | mapped 7 | amount 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/optional/classWithEmptyField/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "classWithEmptyField": { 4 | "maybe": null, 5 | "maybeOneDay": null, 6 | "id": null, 7 | "mapped": null, 8 | "amount": null 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/optional/classWithOptionalField/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | classWithOptionalField{ 3 | maybe 4 | maybeOneDay 5 | id 6 | mapped 7 | amount 8 | } 9 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/optional/classWithOptionalField/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "classWithOptionalField": { 4 | "maybe": "Hello there", 5 | "maybeOneDay": "25 Dec 2020", 6 | "id": 13, 7 | "mapped": "I am a mapped object", 8 | "amount": 1.23 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/optional/emptyString/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | emptyString 3 | } 4 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/optional/emptyString/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "emptyString": null 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/optional/optionalDateParam/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | empty:optionalDateParam 3 | present:optionalDateParam(echo:"01 Jan 2021") 4 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/optional/optionalDateParam/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "empty": null, 4 | "present": "2021-01-01" 5 | } 6 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/optional/optionalInt/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | present:optionalInt 3 | empty:emptyInt 4 | } 5 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/optional/optionalInt/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "present": 7, 4 | "empty": null 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/optional/optionalString/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | optionalString 3 | } 4 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/optional/optionalString/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "optionalString": "Hello there" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/optional/optionalStringParam/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | empty:optionalStringParam 3 | present:optionalStringParam(echo:"boo") 4 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/optional/optionalStringParam/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "empty": null, 4 | "present": "boo" 5 | } 6 | } -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/person/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | profile(profileId:1){ 3 | title 4 | names 5 | surname 6 | #anniversary 7 | #birthDate 8 | #memberSince 9 | #joinDate 10 | profilePictures 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/person/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "profile": { 4 | 5 | "title": "Mr", 6 | "names": [ 7 | "Phillip" 8 | ], 9 | "surname": "Kruger", 10 | "profilePictures": [ 11 | "https://avatars1.githubusercontent.com/u/6836179?s=460&u=8d34b60fb495daf689775b2c12ded76760cdb508&v=4" 12 | ] 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/person/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/scalars/date/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/scalars/double/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "scalarHolder": { 4 | "doublePrimitive": 49.9902794, 5 | "doubleObject": 49.9902794 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/scalars/duration/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | additionalDurationScalars { 3 | duration 4 | durationInput(duration: "PT1H2M3S") 5 | durationDefault 6 | 7 | period 8 | periodInput(period: "P1Y2M3D") 9 | periodDefault 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/scalars/duration/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "additionalDurationScalars": { 4 | "duration": "PT1H2M3S", 5 | "durationInput": "PT1H2M3S", 6 | "durationDefault": "PT1H2M3S", 7 | 8 | "period": "P1Y2M3D", 9 | "periodInput": "P1Y2M3D", 10 | "periodDefault": "P1Y2M3D" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/scalars/duration/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/scalars/spec/input.graphql: -------------------------------------------------------------------------------- 1 | { 2 | additionalScalars { 3 | url 4 | uri 5 | uuid 6 | objectId 7 | urlInput(url:"https://example.com") 8 | uriInput(uri:"https://example.com") 9 | uuidInput(uuid:"037f4ba2-6d74-4686-a4ea-90cbd86007c3") 10 | urlDefault 11 | uriDefault 12 | uuidDefault 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/scalars/spec/test.properties: -------------------------------------------------------------------------------- 1 | ignore=false 2 | priority=100 3 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/subscriptionTests.csv: -------------------------------------------------------------------------------- 1 | # testSubscriptions 2 | 1| type Subscription | arraySubscription: [String] | Java array in subscription should map to [String] in graphql 3 | 2| type Subscription | listSubscription: [String] | Java array in subscription should map to [String] in graphql 4 | 3| type Subscription | stockQuoteMulti(stockCode: String): Stock| Subscription must be able to take arguments -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/variables/input.graphql: -------------------------------------------------------------------------------- 1 | query foo($i: Int) { 2 | foo(i: $i) 3 | } 4 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/variables/output.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "foo": "bar_123" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /server/tck/src/test/resources/tests/variables/variables.json: -------------------------------------------------------------------------------- 1 | {"i": 123} 2 | -------------------------------------------------------------------------------- /server/tck/testng.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tools/gradle-plugin/gradle.properties: -------------------------------------------------------------------------------- 1 | version=2.13.0 2 | -------------------------------------------------------------------------------- /tools/gradle-plugin/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smallrye/smallrye-graphql/f3899bbd9bdacf7b585983bc4906ff856a2b86f6/tools/gradle-plugin/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /tools/gradle-plugin/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /tools/gradle-plugin/plugin/src/main/resources/META-INF/services/io.smallrye.graphql.spi.config.Config: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.gradle.tasks.GradleConfigFacade 2 | -------------------------------------------------------------------------------- /tools/gradle-plugin/settings.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id "com.gradle.enterprise" version "3.9" 3 | } 4 | 5 | gradleEnterprise { 6 | buildScan { 7 | // plugin configuration 8 | //See also: https://docs.gradle.com/enterprise/gradle-plugin/ 9 | termsOfServiceUrl = 'https://gradle.com/terms-of-service'; 10 | termsOfServiceAgree = 'yes' 11 | publishOnFailure() 12 | } 13 | } 14 | 15 | rootProject.name = 'smallrye-graphql-gradle-plugin' 16 | -------------------------------------------------------------------------------- /tools/gradle-plugin/testing-project-kotlin/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'test' -------------------------------------------------------------------------------- /tools/gradle-plugin/testing-project-kotlin/src/main/kotlin/org/acme/Foo.kt: -------------------------------------------------------------------------------- 1 | package org.acme 2 | 3 | class Foo { 4 | var number: Int? = null 5 | } -------------------------------------------------------------------------------- /tools/gradle-plugin/testing-project-kotlin/src/main/kotlin/org/acme/TestingApi.kt: -------------------------------------------------------------------------------- 1 | package org.acme 2 | 3 | @org.eclipse.microprofile.graphql.GraphQLApi 4 | class TestingApi { 5 | 6 | @org.eclipse.microprofile.graphql.Query 7 | fun foo(): Foo? { 8 | return null 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /tools/gradle-plugin/testing-project/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'test' -------------------------------------------------------------------------------- /tools/gradle-plugin/testing-project/src/main/java/org/acme/TestingApi.java: -------------------------------------------------------------------------------- 1 | package org.acme; 2 | 3 | import org.eclipse.microprofile.graphql.GraphQLApi; 4 | import org.eclipse.microprofile.graphql.Query; 5 | 6 | @GraphQLApi 7 | class TestingApi { 8 | @Query 9 | public Foo getFoo() { 10 | return null; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /tools/maven-plugin-tests/testing-project-federation/src/main/java/org/acme/Foo.java: -------------------------------------------------------------------------------- 1 | package org.acme; 2 | 3 | import io.smallrye.graphql.api.federation.FieldSet; 4 | import io.smallrye.graphql.api.federation.Key; 5 | 6 | @Key(fields = @FieldSet("id")) 7 | public class Foo { 8 | 9 | private Integer number; 10 | 11 | public Integer getNumber() { 12 | return number; 13 | } 14 | 15 | public void setNumber(Integer number) { 16 | this.number = number; 17 | } 18 | } -------------------------------------------------------------------------------- /tools/maven-plugin-tests/testing-project-federation/src/main/java/org/acme/TestingApi.java: -------------------------------------------------------------------------------- 1 | package org.acme; 2 | 3 | import org.eclipse.microprofile.graphql.GraphQLApi; 4 | import org.eclipse.microprofile.graphql.Query; 5 | 6 | import java.util.Collections; 7 | import java.util.List; 8 | 9 | @GraphQLApi 10 | class TestingApi { 11 | 12 | @Query 13 | public Foo getFoo() { 14 | return null; 15 | } 16 | 17 | 18 | } -------------------------------------------------------------------------------- /tools/maven-plugin-tests/testing-project-multi-module/api/src/main/java/org/acme/TestingApi.java: -------------------------------------------------------------------------------- 1 | package org.acme; 2 | 3 | import org.acme.model.Foo; 4 | 5 | import org.eclipse.microprofile.graphql.GraphQLApi; 6 | import org.eclipse.microprofile.graphql.Query; 7 | 8 | import java.util.Collections; 9 | import java.util.List; 10 | 11 | @GraphQLApi 12 | class TestingApi { 13 | 14 | @Query 15 | public Foo getFoo() { 16 | return null; 17 | } 18 | 19 | 20 | } -------------------------------------------------------------------------------- /tools/maven-plugin-tests/testing-project-multi-module/model/src/main/java/org/acme/model/Foo.java: -------------------------------------------------------------------------------- 1 | package org.acme.model; 2 | 3 | 4 | public class Foo { 5 | 6 | private Integer number; 7 | 8 | public Integer getNumber() { 9 | return number; 10 | } 11 | 12 | public void setNumber(Integer number) { 13 | this.number = number; 14 | } 15 | } -------------------------------------------------------------------------------- /tools/maven-plugin-tests/testing-project/src/main/java/org/acme/Foo.java: -------------------------------------------------------------------------------- 1 | package org.acme; 2 | 3 | 4 | public class Foo { 5 | 6 | private Integer number; 7 | 8 | public Integer getNumber() { 9 | return number; 10 | } 11 | 12 | public void setNumber(Integer number) { 13 | this.number = number; 14 | } 15 | } -------------------------------------------------------------------------------- /tools/maven-plugin-tests/testing-project/src/main/java/org/acme/TestingApi.java: -------------------------------------------------------------------------------- 1 | package org.acme; 2 | 3 | import org.eclipse.microprofile.graphql.GraphQLApi; 4 | import org.eclipse.microprofile.graphql.Query; 5 | 6 | import java.util.Collections; 7 | import java.util.List; 8 | 9 | @GraphQLApi 10 | class TestingApi { 11 | 12 | @Query 13 | public Foo getFoo() { 14 | return null; 15 | } 16 | 17 | 18 | } -------------------------------------------------------------------------------- /tools/maven-plugin/src/main/resources/META-INF/services/io.smallrye.graphql.spi.config.Config: -------------------------------------------------------------------------------- 1 | io.smallrye.graphql.mavenplugin.MavenConfigFacade 2 | -------------------------------------------------------------------------------- /ui/graphiql/graphiql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smallrye/smallrye-graphql/f3899bbd9bdacf7b585983bc4906ff856a2b86f6/ui/graphiql/graphiql.png -------------------------------------------------------------------------------- /ui/graphiql/src/main/webapp/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smallrye/smallrye-graphql/f3899bbd9bdacf7b585983bc4906ff856a2b86f6/ui/graphiql/src/main/webapp/favicon.ico -------------------------------------------------------------------------------- /ui/graphiql/src/main/webapp/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smallrye/smallrye-graphql/f3899bbd9bdacf7b585983bc4906ff856a2b86f6/ui/graphiql/src/main/webapp/logo.png --------------------------------------------------------------------------------