graphqlSchemaPaths) {
+ this.graphqlSchemaPaths = graphqlSchemaPaths;
+ }
+
+ /**
+ * Marker file that records a successful validation run.
+ *
+ * A cacheable task must declare at least one output, otherwise Gradle silently
+ * disables caching for it. This file contains no meaningful data; it only makes
+ * the validation result incremental and cacheable.
+ *
+ * @return the validation result marker file property
+ */
+ @OutputFile
+ public Provider getValidationResultFile() {
+ return validationResultFile;
+ }
+}
diff --git a/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/gradle/ParentInterfacesConfig.java b/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/ParentInterfacesConfig.java
similarity index 95%
rename from plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/gradle/ParentInterfacesConfig.java
rename to plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/ParentInterfacesConfig.java
index f67ac2ca6..24951f09d 100644
--- a/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/gradle/ParentInterfacesConfig.java
+++ b/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/ParentInterfacesConfig.java
@@ -1,4 +1,4 @@
-package io.github.kobylynskyi.graphql.codegen.gradle;
+package io.github.besi97.graphql.codegen.gradle;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.Optional;
diff --git a/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/gradle/RelayConfig.java b/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/RelayConfig.java
similarity index 78%
rename from plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/gradle/RelayConfig.java
rename to plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/RelayConfig.java
index 95a9974a8..4b06a386e 100644
--- a/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/gradle/RelayConfig.java
+++ b/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/RelayConfig.java
@@ -1,4 +1,4 @@
-package io.github.kobylynskyi.graphql.codegen.gradle;
+package io.github.besi97.graphql.codegen.gradle;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.Optional;
@@ -6,7 +6,7 @@
/**
* Relay-relatedconfigurations
*/
-public class RelayConfig extends com.kobylynskyi.graphql.codegen.model.RelayConfig {
+public class RelayConfig extends io.github.besi97.graphql.codegen.model.RelayConfig {
@Input
@Optional
diff --git a/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/gradle/SchemaFinderConfig.java b/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/SchemaFinderConfig.java
similarity index 80%
rename from plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/gradle/SchemaFinderConfig.java
rename to plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/SchemaFinderConfig.java
index 10c688a4b..a8296d6b8 100644
--- a/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/gradle/SchemaFinderConfig.java
+++ b/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/SchemaFinderConfig.java
@@ -1,9 +1,12 @@
-package io.github.kobylynskyi.graphql.codegen.gradle;
+package io.github.besi97.graphql.codegen.gradle;
-import com.kobylynskyi.graphql.codegen.supplier.SchemaFinder;
+import io.github.besi97.graphql.codegen.supplier.SchemaFinder;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.InputFiles;
+import org.gradle.api.tasks.Internal;
import org.gradle.api.tasks.Optional;
+import org.gradle.api.tasks.PathSensitive;
+import org.gradle.api.tasks.PathSensitivity;
import java.util.Collections;
import java.util.Set;
@@ -36,6 +39,12 @@ public void setRootDir(String rootDir) {
@Input
@Optional
+ public Boolean getRecursive() {
+ return recursive;
+ }
+
+ @Deprecated
+ @Internal
public Boolean isRecursive() {
return recursive;
}
@@ -56,6 +65,7 @@ public void setIncludePattern(String includePattern) {
@InputFiles
@Optional
+ @PathSensitive(PathSensitivity.RELATIVE)
public Set getExcludedFiles() {
return excludedFiles;
}
diff --git a/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/gradle/GraphQLCodegenGradlePlugin.java b/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/gradle/GraphQLCodegenGradlePlugin.java
deleted file mode 100644
index dfc5d63dd..000000000
--- a/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/gradle/GraphQLCodegenGradlePlugin.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package io.github.kobylynskyi.graphql.codegen.gradle;
-
-import org.gradle.api.Plugin;
-import org.gradle.api.Project;
-import org.gradle.api.tasks.TaskContainer;
-
-/**
- * Gradle plugin for GraphQL code generation
- *
- * @author kobylynskyi
- */
-public class GraphQLCodegenGradlePlugin implements Plugin {
-
- @Override
- public void apply(Project project) {
- TaskContainer tasks = project.getTasks();
- tasks.create("graphqlCodegen", GraphQLCodegenGradleTask.class);
- tasks.create("graphqlCodegenValidate", GraphQLCodegenValidateGradleTask.class);
- }
-
-}
diff --git a/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/gradle/GraphQLCodegenValidateGradleTask.java b/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/gradle/GraphQLCodegenValidateGradleTask.java
deleted file mode 100644
index 4c5d2e8b0..000000000
--- a/plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/kobylynskyi/graphql/codegen/gradle/GraphQLCodegenValidateGradleTask.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package io.github.kobylynskyi.graphql.codegen.gradle;
-
-import com.kobylynskyi.graphql.codegen.GraphQLCodegenValidate;
-import org.gradle.api.DefaultTask;
-import org.gradle.api.tasks.Input;
-import org.gradle.api.tasks.TaskAction;
-
-import java.io.IOException;
-import java.util.List;
-
-/**
- * Gradle task for GraphQL code generation
- *
- * @author kobylynskyi
- */
-public class GraphQLCodegenValidateGradleTask extends DefaultTask {
-
- private List graphqlSchemaPaths;
-
- @TaskAction
- public void validate() throws IOException {
- new GraphQLCodegenValidate(graphqlSchemaPaths).validate();
- }
-
- @Input
- public List getGraphqlSchemaPaths() {
- return graphqlSchemaPaths;
- }
-
- public void setGraphqlSchemaPaths(List graphqlSchemaPaths) {
- this.graphqlSchemaPaths = graphqlSchemaPaths;
- }
-}
diff --git a/plugins/maven/README.md b/plugins/maven/README.md
deleted file mode 100644
index 34d315f28..000000000
--- a/plugins/maven/README.md
+++ /dev/null
@@ -1,114 +0,0 @@
-# GraphQL Codegen Maven plugin #
-
-
-[](https://maven-badges.herokuapp.com/maven-central/io.github.kobylynskyi/graphql-codegen-maven-plugin)
-[](https://opensource.org/licenses/MIT)
-
-* [Plugin Setup and Configuration](#plugin-setup-and-configuration)
-* [Plugin Options](#plugin-options)
-* [Examples](#examples)
- * [GraphQL **server** code generation](#graphql-server-code-generation)
- * [GraphQL **client** code generation](#graphql-client-code-generation)
-* [Different configurations for graphql schemas](#different-configurations-for-graphql-schemas)
-
-### Plugin Setup and Configuration
-
-```xml
-
-
- ...
-
- io.github.kobylynskyi
- graphql-codegen-maven-plugin
- 5.10.0
-
-
-
- generate
-
-
-
-
- schema\.graphqls
-
- ${project.build.directory}/generated-sources/graphql
- io.github.kobylynskyi.bikeshop.graphql.model
-
- java.util.Date
- java.math.BigDecimal
-
-
-
- com.fasterxml.jackson.databind.annotation.JsonDeserialize(using = com.example.json.EpochMillisScalarDeserializer.class)
-
-
- TO
-
-
-
-
- ...
-
-
-```
-
-You can run the plugin manually with `mvn generate-sources`. It will be run automatically as part of the Maven lifecycle
-when compiling your code
-
-### Plugin Options
-
-Please refer to [Codegen Options](../../docs/codegen-options.md)
-
-### Examples
-
-#### GraphQL **server** code generation
-
-[example-server](example-server):
-
-* [Plugin configuration in pom.xml](example-server/pom.xml)
-* [GraphQL Resolver classes that implement generated interfaces](example-server/src/main/java/io/github/kobylynskyi/product/graphql/resolvers)
-
-#### GraphQL **client** code generation
-
-[example-client](example-client):
-
-* [Plugin configuration in pom.xml](example-client/pom.xml)
-* [Building GraphQL request and parsing response using Spring RestTemplate](example-client/src/main/java/io/github/kobylynskyi/order/external/product/ProductServiceGraphQLClient.java)
-* [Building GraphQL request and parsing response using RestAssured](example-client/src/test/java/io/github/kobylynskyi/order/service/CreateProductIntegrationTest.java)
-
-### Different configurations for graphql schemas
-
-If you want to have different configuration for different `.graphqls` files (e.g.: different javaPackage, outputDir,
-etc.), then you will need to define separate executions for each set of schemas. E.g.:
-
-```xml
-
-
- graphqlCodegenService1
-
- generate
-
-
- ${project.basedir}/src/main/resources/schema1.graphqls
- ${project.build.directory}/generated-sources/graphql1
-
-
-
- graphqlCodegenService2
-
- generate
-
-
- ${project.basedir}/src/main/resources/schema2.graphqls
- ${project.build.directory}/generated-sources/graphql2
-
-
-
-```
-
-### Inspired by
-
-[swagger-codegen](https://github.com/swagger-api/swagger-codegen)
-
diff --git a/plugins/maven/example-client/pom.xml b/plugins/maven/example-client/pom.xml
deleted file mode 100644
index 90006b698..000000000
--- a/plugins/maven/example-client/pom.xml
+++ /dev/null
@@ -1,205 +0,0 @@
-
- 4.0.0
-
- io.github.kobylynskyi
- graphql-codegen-maven-plugin-example-client
- 5.10.1-SNAPSHOT
- graphql-codegen-maven-plugin-example-client
-
-
-
-
-
- io.github.kobylynskyi
- graphql-codegen-maven-plugin
-
- ${project.version}
-
-
- generate-sources-product-client
-
- generate
-
-
-
- schema-product-service\.graphqls
-
- ${project.build.directory}/generated-sources/client
- io.github.kobylynskyi.product.graphql.model
-
- java.util.Date
-
-
- TO
- false
- true
- false
-
-
-
- generate-sources-server
-
- generate
-
-
-
- schema\.graphqls
-
- ${project.build.directory}/generated-sources/server
- io.github.kobylynskyi.order.graphql.api
- io.github.kobylynskyi.order.graphql.model
-
- java.util.Date
-
- TO
-
-
-
- generate-sources-starwars-client
-
- generate
-
-
-
- schema-starwars-service\.graphqls
-
- ${project.build.directory}/generated-sources/client-starwars
- io.github.kobylynskyi.starwars.graphql
-
-
- @com.fasterxml.jackson.annotation.JsonTypeInfo(use =
- com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME, property = "__typename")
-
-
- @com.fasterxml.jackson.databind.annotation.JsonTypeIdResolver(io.github.kobylynskyi.order.external.starwars.CharacterTypeResolver.class)
-
-
-
- true
- false
- true
- true
- false
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.12.1
-
- UTF-8
- 1.8
- 1.8
- true
-
-
- org.projectlombok
- lombok
- 1.18.26
-
-
- org.mapstruct
- mapstruct-processor
- 1.5.5.Final
-
-
-
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-starter-web
- 2.7.10
-
-
- org.springframework.boot
- spring-boot-starter-data-mongodb
- 2.7.18
-
-
-
- com.graphql-java-kickstart
- graphql-spring-boot-starter
- 11.1.0
-
-
- com.graphql-java-kickstart
- graphiql-spring-boot-starter
- 11.1.0
-
-
- com.graphql-java
- graphql-java-extended-scalars
- 20.2
-
-
-
-
- io.github.kobylynskyi
- graphql-java-codegen
-
- ${project.version}
-
-
- org.apache.httpcomponents
- httpclient
- 4.5.14
-
-
- javax.validation
- validation-api
- 2.0.1.Final
-
-
-
- org.mapstruct
- mapstruct
- 1.5.5.Final
-
-
- org.projectlombok
- lombok
- 1.18.30
-
-
-
- io.rest-assured
- rest-assured
- 5.3.2
-
-
- org.junit.jupiter
- junit-jupiter-api
- 5.10.2
-
-
- org.junit.jupiter
- junit-jupiter-engine
- 5.10.2
-
-
-
-
-
- jcenter
- jcenter
- https://jcenter.bintray.com
-
-
-
-
diff --git a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/external/config/RestClientsConfiguration.java b/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/external/config/RestClientsConfiguration.java
deleted file mode 100644
index e73fe39ec..000000000
--- a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/external/config/RestClientsConfiguration.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package io.github.kobylynskyi.order.external.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
-import org.springframework.web.client.RestTemplate;
-
-@Configuration
-public class RestClientsConfiguration {
-
- @Bean
- public RestTemplate restTemplate() {
- return new RestTemplate(new HttpComponentsClientHttpRequestFactory());
- }
-
-}
diff --git a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/external/product/ExternalProductMapper.java b/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/external/product/ExternalProductMapper.java
deleted file mode 100644
index bf5486ba0..000000000
--- a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/external/product/ExternalProductMapper.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package io.github.kobylynskyi.order.external.product;
-
-import io.github.kobylynskyi.order.model.Product;
-import io.github.kobylynskyi.product.graphql.model.ProductTO;
-import org.mapstruct.Mapper;
-
-@Mapper(componentModel = "spring")
-public interface ExternalProductMapper {
-
- Product map(ProductTO from);
-
-}
diff --git a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/external/product/ProductInput.java b/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/external/product/ProductInput.java
deleted file mode 100644
index 3f41a85f6..000000000
--- a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/external/product/ProductInput.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package io.github.kobylynskyi.order.external.product;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.math.BigDecimal;
-
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class ProductInput {
-
- private String title;
- private String sku;
- private BigDecimal price;
-
-}
diff --git a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/external/product/ProductServiceGraphQLClient.java b/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/external/product/ProductServiceGraphQLClient.java
deleted file mode 100644
index 9c1ab112d..000000000
--- a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/external/product/ProductServiceGraphQLClient.java
+++ /dev/null
@@ -1,148 +0,0 @@
-package io.github.kobylynskyi.order.external.product;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLRequest;
-import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLRequests;
-import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResponse;
-import io.github.kobylynskyi.order.model.Product;
-import io.github.kobylynskyi.order.model.UnableToCreateProductException;
-import io.github.kobylynskyi.order.model.UnableToRetrieveProductException;
-import io.github.kobylynskyi.order.model.UnableToRetrieveProductsException;
-import io.github.kobylynskyi.product.graphql.model.CreateMutationRequest;
-import io.github.kobylynskyi.product.graphql.model.CreateMutationResponse;
-import io.github.kobylynskyi.product.graphql.model.ProductByIdQueryRequest;
-import io.github.kobylynskyi.product.graphql.model.ProductByIdQueryResponse;
-import io.github.kobylynskyi.product.graphql.model.ProductInputTO;
-import io.github.kobylynskyi.product.graphql.model.ProductResponseProjection;
-import io.github.kobylynskyi.product.graphql.model.ProductTO;
-import io.github.kobylynskyi.product.graphql.model.ProductsByIdsQueryRequest;
-import io.github.kobylynskyi.product.graphql.model.ProductsByIdsQueryResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.MediaType;
-import org.springframework.stereotype.Service;
-import org.springframework.web.client.RestTemplate;
-
-import java.net.URI;
-import java.util.Collections;
-import java.util.List;
-import java.util.stream.Collectors;
-
-@Service
-public class ProductServiceGraphQLClient {
-
- @Autowired
- private ExternalProductMapper productMapper;
-
- @Autowired
- private RestTemplate restTemplate;
-
- @Autowired
- private ObjectMapper objectMapper;
-
- @Value("${external.service.product.url}")
- private String productUrl;
-
- public Product getProduct(String productId) throws UnableToRetrieveProductException {
- ProductByIdQueryRequest productByIdQueryRequest = new ProductByIdQueryRequest();
- productByIdQueryRequest.setId(productId);
- ProductResponseProjection responseProjection = new ProductResponseProjection()
- .id()
- .title()
- .price();
- GraphQLRequest graphQLRequest = new GraphQLRequest(productByIdQueryRequest, responseProjection);
-
- ProductByIdQueryResponse result = restTemplate.exchange(URI.create(productUrl),
- HttpMethod.POST,
- httpEntity(graphQLRequest),
- ProductByIdQueryResponse.class).getBody();
- if (result.hasErrors()) {
- throw new UnableToRetrieveProductException(productId, result.getErrors().get(0).getMessage());
- }
- return productMapper.map(result.productById());
- }
-
- public List getProducts(List productIds) throws UnableToRetrieveProductsException {
- ProductsByIdsQueryRequest getProductRequest = new ProductsByIdsQueryRequest();
- getProductRequest.setIds(productIds);
- ProductResponseProjection responseProjection = new ProductResponseProjection()
- .id()
- .title()
- .price();
- GraphQLRequest request = new GraphQLRequest(getProductRequest, responseProjection);
-
- ProductsByIdsQueryResponse result = restTemplate.exchange(URI.create(productUrl),
- HttpMethod.POST,
- httpEntity(request),
- ProductsByIdsQueryResponse.class).getBody();
- if (result.hasErrors()) {
- throw new UnableToRetrieveProductsException(productIds, result.getErrors().get(0).getMessage());
- }
- return result.productsByIds().stream().map(productMapper::map).collect(Collectors.toList());
- }
-
- public Product createProduct(ProductInput input) throws UnableToCreateProductException {
- CreateMutationRequest createProductRequest = new CreateMutationRequest();
- createProductRequest.setProductInput(mapInputTO(input));
- GraphQLRequest request = new GraphQLRequest(createProductRequest,
- new ProductResponseProjection().id().title().price().sku());
-
- CreateMutationResponse result = restTemplate.exchange(URI.create(productUrl),
- HttpMethod.POST,
- httpEntity(request),
- CreateMutationResponse.class).getBody();
- if (result.hasErrors()) {
- throw new UnableToCreateProductException(result.getErrors().get(0).getMessage());
- }
- ProductTO productTO = result.create();
- return productMapper.map(productTO);
- }
-
- public List createMultipleProduct(List inputs) throws UnableToCreateProductException {
- GraphQLRequests requests = new GraphQLRequests();
- for (ProductInput input : inputs) {
- CreateMutationRequest createProductRequest = new CreateMutationRequest("create" + input.getSku());
- createProductRequest.setProductInput(mapInputTO(input));
- requests.addRequest(new GraphQLRequest(createProductRequest,
- new ProductResponseProjection().id().title().price().sku()));
- }
-
- GraphQLResponse result = restTemplate.exchange(URI.create(productUrl),
- HttpMethod.POST,
- httpEntity(requests),
- GraphQLResponse.class).getBody();
- if (result.hasErrors()) {
- throw new UnableToCreateProductException(result.getErrors().get(0).getMessage());
- }
- return result.getData().values().stream()
- .map(o -> objectMapper.convertValue(o, ProductTO.class))
- .map(productMapper::map)
- .collect(Collectors.toList());
- }
-
- public ProductInputTO mapInputTO(ProductInput input) {
- return new ProductInputTO.Builder()
- .setTitle(input.getTitle())
- .setPrice(input.getPrice().toString())
- .setSku(input.getSku())
- .build();
- }
-
- private static HttpEntity httpEntity(GraphQLRequest request) {
- return new HttpEntity<>(request.toHttpJsonBody(), getHttpHeaders());
- }
-
- private static HttpEntity httpEntity(GraphQLRequests request) {
- return new HttpEntity<>(request.toHttpJsonBody(), getHttpHeaders());
- }
-
- private static HttpHeaders getHttpHeaders() {
- HttpHeaders headers = new HttpHeaders();
- headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
- headers.setContentType(MediaType.APPLICATION_JSON);
- return headers;
- }
-}
diff --git a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/external/starwars/CharacterTypeResolver.java b/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/external/starwars/CharacterTypeResolver.java
deleted file mode 100644
index 38ac4cc59..000000000
--- a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/external/starwars/CharacterTypeResolver.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package io.github.kobylynskyi.order.external.starwars;
-
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.databind.DatabindContext;
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.jsontype.impl.TypeIdResolverBase;
-import io.github.kobylynskyi.starwars.graphql.Droid;
-import io.github.kobylynskyi.starwars.graphql.Human;
-
-/**
- * Resolver of Character type
- */
-public class CharacterTypeResolver extends TypeIdResolverBase {
-
- private JavaType superType;
-
- @Override
- public void init(JavaType baseType) {
- superType = baseType;
- }
-
- @Override
- public JavaType typeFromId(DatabindContext context, String id) {
- switch (id) {
- case "Human":
- return context.constructSpecializedType(superType, Human.class);
- case "Droid":
- return context.constructSpecializedType(superType, Droid.class);
- default:
- return null;
- }
- }
-
- @Override
- public JsonTypeInfo.Id getMechanism() {
- return JsonTypeInfo.Id.NAME;
- }
-
- @Override
- public String idFromValue(Object obj) {
- return idFromValueAndType(obj, obj.getClass());
- }
-
- @Override
- public String idFromValueAndType(Object obj, Class> subType) {
- return subType.getSimpleName();
- }
-
-}
\ No newline at end of file
diff --git a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/graphql/mappers/OrderMapper.java b/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/graphql/mappers/OrderMapper.java
deleted file mode 100644
index e96486170..000000000
--- a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/graphql/mappers/OrderMapper.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package io.github.kobylynskyi.order.graphql.mappers;
-
-import io.github.kobylynskyi.order.graphql.model.ItemTO;
-import io.github.kobylynskyi.order.graphql.model.OrderTO;
-import io.github.kobylynskyi.order.model.Item;
-import io.github.kobylynskyi.order.model.Order;
-import org.mapstruct.Mapper;
-
-@Mapper(componentModel = "spring")
-public interface OrderMapper {
-
- OrderTO map(Order from);
-
- ItemTO map(Item from);
-
-}
diff --git a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/graphql/resolvers/QueriesResolver.java b/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/graphql/resolvers/QueriesResolver.java
deleted file mode 100644
index 54ff5e84c..000000000
--- a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/graphql/resolvers/QueriesResolver.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package io.github.kobylynskyi.order.graphql.resolvers;
-
-import graphql.kickstart.tools.GraphQLQueryResolver;
-import io.github.kobylynskyi.order.graphql.api.OrderByIdQueryResolver;
-import io.github.kobylynskyi.order.graphql.api.OrdersQueryResolver;
-import io.github.kobylynskyi.order.graphql.mappers.OrderMapper;
-import io.github.kobylynskyi.order.graphql.model.OrderTO;
-import io.github.kobylynskyi.order.model.OrderNotFoundException;
-import io.github.kobylynskyi.order.service.OrderService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-import static java.util.stream.Collectors.toList;
-
-@Component
-public class QueriesResolver implements OrdersQueryResolver, OrderByIdQueryResolver, GraphQLQueryResolver {
-
- @Autowired
- private OrderService service;
- @Autowired
- private OrderMapper mapper;
-
- @Override
- public List orders() {
- return service.getOrders().stream().map(mapper::map).collect(toList());
- }
-
- @Override
- public OrderTO orderById(String id) throws OrderNotFoundException {
- return mapper.map(service.getOrderById(id));
- }
-}
diff --git a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/model/Item.java b/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/model/Item.java
deleted file mode 100644
index e62e90a30..000000000
--- a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/model/Item.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package io.github.kobylynskyi.order.model;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.math.BigDecimal;
-
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class Item {
-
- private String productId;
- private int quantity;
- private BigDecimal total;
-
-}
diff --git a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/model/Order.java b/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/model/Order.java
deleted file mode 100644
index f15ea0ac3..000000000
--- a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/model/Order.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package io.github.kobylynskyi.order.model;
-
-import lombok.Data;
-import org.springframework.data.annotation.Id;
-
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-
-@Data
-public class Order {
-
- @Id
- private String id;
-
- private List- items = new ArrayList<>();
-
- public BigDecimal getTotal() {
- return getItems().stream()
- .map(Item::getTotal)
- .reduce(BigDecimal.ZERO, BigDecimal::add);
- }
-
-}
diff --git a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/model/OrderNotFoundException.java b/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/model/OrderNotFoundException.java
deleted file mode 100644
index 1ddaba52b..000000000
--- a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/model/OrderNotFoundException.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package io.github.kobylynskyi.order.model;
-
-public class OrderNotFoundException extends Exception {
-
- public OrderNotFoundException(String id) {
- super(String.format("Order with id '%s' does not exist", id));
- }
-
-}
diff --git a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/model/UnableToRetrieveProductException.java b/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/model/UnableToRetrieveProductException.java
deleted file mode 100644
index b2460fd74..000000000
--- a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/model/UnableToRetrieveProductException.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package io.github.kobylynskyi.order.model;
-
-public class UnableToRetrieveProductException extends Exception {
-
- public UnableToRetrieveProductException(String id, String message) {
- super(String.format("Unable to retrieve product with id '%s': %s", id, message));
- }
-
-}
diff --git a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/model/UnableToRetrieveProductsException.java b/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/model/UnableToRetrieveProductsException.java
deleted file mode 100644
index b3e0e54ca..000000000
--- a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/model/UnableToRetrieveProductsException.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package io.github.kobylynskyi.order.model;
-
-import java.util.Collection;
-
-public class UnableToRetrieveProductsException extends Exception {
-
- public UnableToRetrieveProductsException(Collection ids, String message) {
- super(String.format("Unable to retrieve products with ids '%s': %s", ids, message));
- }
-
-}
diff --git a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/repository/OrderRepository.java b/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/repository/OrderRepository.java
deleted file mode 100644
index 6053f735b..000000000
--- a/plugins/maven/example-client/src/main/java/io/github/kobylynskyi/order/repository/OrderRepository.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package io.github.kobylynskyi.order.repository;
-
-import io.github.kobylynskyi.order.model.Order;
-import org.springframework.data.mongodb.repository.MongoRepository;
-
-public interface OrderRepository extends MongoRepository {
-
-}
diff --git a/plugins/maven/example-client/src/main/resources/application.yml b/plugins/maven/example-client/src/main/resources/application.yml
deleted file mode 100644
index 4b2ebd776..000000000
--- a/plugins/maven/example-client/src/main/resources/application.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-server:
- port: 8082
-
-external:
- service:
- product:
- url: http://localhost:8081/graphql
- starwars:
- url: http://localhost:8081/star-wars/graphql
-
-graphql:
- tools:
- schemaLocationPattern: '**/schema.graphqls'
\ No newline at end of file
diff --git a/plugins/maven/example-client/src/main/resources/external/schema-product-service.graphqls b/plugins/maven/example-client/src/main/resources/external/schema-product-service.graphqls
deleted file mode 100644
index aa95cc4d5..000000000
--- a/plugins/maven/example-client/src/main/resources/external/schema-product-service.graphqls
+++ /dev/null
@@ -1,47 +0,0 @@
-schema {
- query: Query
- mutation: Mutation
-}
-
-type Query {
- products: [Product]
-
- productById(id: ID!): Product
-
- productsByIds(ids: [ID!]!): [Product]
-}
-
-type Mutation {
- create(productInput: ProductInput!): Product
-}
-
-type Product {
- id: ID!
- title: String!
- description: String
- price: BigDecimal!
- sku: String!
- stockNumber: Int!
- stockStatus: StockStatus
- addedDateTime: DateTime!
-}
-
-input ProductInput {
- title: String!
- description: String
- price: BigDecimal
- sku: String!
- stockStatus: StockStatus
-}
-
-enum StockStatus {
- IN_STOCK
- SPECIAL_ORDER
- BACK_ORDERED
- COMING_SOON
- SOLD_OUT
- DISCONTINUED
-}
-
-scalar DateTime
-scalar BigDecimal
\ No newline at end of file
diff --git a/plugins/maven/example-client/src/main/resources/external/schema-starwars-service.graphqls b/plugins/maven/example-client/src/main/resources/external/schema-starwars-service.graphqls
deleted file mode 100644
index 8cbe8e93d..000000000
--- a/plugins/maven/example-client/src/main/resources/external/schema-starwars-service.graphqls
+++ /dev/null
@@ -1,23 +0,0 @@
-type Query {
- heroes(episode: Episode): [Character]
-}
-
-interface Character {
- id: String!
- name: String
- appearsIn: [Episode]
-}
-
-type Droid implements Character {
- primaryFunction: String
-}
-
-type Human implements Character {
- homePlanet: String
-}
-
-enum Episode {
- NEWHOPE
- EMPIRE
- JEDI
-}
\ No newline at end of file
diff --git a/plugins/maven/example-client/src/main/resources/schema.graphqls b/plugins/maven/example-client/src/main/resources/schema.graphqls
deleted file mode 100644
index 0ca50e947..000000000
--- a/plugins/maven/example-client/src/main/resources/schema.graphqls
+++ /dev/null
@@ -1,29 +0,0 @@
-schema {
- query: Query
- mutation: Mutation
-}
-
-type Query {
- orders: [Order]
- orderById(id: ID!): Order
-}
-
-type Mutation {
- create: Order
- addProductToOrder(orderId: ID!, productId: ID!, quantity: Int = 0): Order
-}
-
-type Order {
- id: ID!
- items: [Item!]!
- total: BigDecimal!
-}
-
-type Item {
- quantity: Int!
- productId: ID!
- total: BigDecimal!
-}
-
-scalar DateTime
-scalar BigDecimal
\ No newline at end of file
diff --git a/plugins/maven/example-client/src/test/java/io/github/kobylynskyi/order/service/CreateProductIntegrationTest.java b/plugins/maven/example-client/src/test/java/io/github/kobylynskyi/order/service/CreateProductIntegrationTest.java
deleted file mode 100644
index f07e3cd56..000000000
--- a/plugins/maven/example-client/src/test/java/io/github/kobylynskyi/order/service/CreateProductIntegrationTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package io.github.kobylynskyi.order.service;
-
-import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLRequest;
-import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLResult;
-import io.github.kobylynskyi.product.graphql.model.CreateMutationRequest;
-import io.github.kobylynskyi.product.graphql.model.ProductInputTO;
-import io.github.kobylynskyi.product.graphql.model.ProductResponseProjection;
-import io.github.kobylynskyi.product.graphql.model.ProductTO;
-import io.github.kobylynskyi.product.graphql.model.StockStatusTO;
-import io.restassured.common.mapper.TypeRef;
-import io.restassured.http.ContentType;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-
-import java.math.BigDecimal;
-import java.util.Map;
-
-import static io.restassured.RestAssured.given;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-class CreateProductIntegrationTest {
-
- @Disabled("The test is for reference only")
- @Test
- void createProductUsingRestAssured() {
- CreateMutationRequest createProductMutation = new CreateMutationRequest();
- createProductMutation.setProductInput(getProductInput());
- ProductResponseProjection responseProjection = new ProductResponseProjection()
- .id().title().description().sku().price().stockStatus();
-
- GraphQLRequest request = new GraphQLRequest(createProductMutation, responseProjection);
-
- GraphQLResult