<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>GraphQL Java Kickstart</title><link>https://graphql-java-kickstart.github.io/</link><description>Recent content on GraphQL Java Kickstart</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 17 May 2021 07:00:00 -0500</lastBuildDate><atom:link href="https://graphql-java-kickstart.github.io/index.xml" rel="self" type="application/rss+xml"/><item><title>Getting started</title><link>https://graphql-java-kickstart.github.io/servlet/getting-started/</link><pubDate>Wed, 07 Nov 2018 00:11:02 +0100</pubDate><guid>https://graphql-java-kickstart.github.io/servlet/getting-started/</guid><description>&lt;p&gt;A working version of this example can be found at &lt;a href="https://github.com/graphql-java-kickstart/samples/tree/master/servlet-hello-world"&gt;https://github.com/graphql-java-kickstart/samples/tree/master/servlet-hello-world&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="build-with-gradle"&gt;Build with Gradle&lt;/h2&gt;&#10;&lt;p&gt;First you set up a basic build script. You can use any build system you like, but the code you need to work with&#10;Gradle and Maven is included here.&lt;/p&gt;&#10;&lt;h3 id="create-a-gradle-build-file"&gt;Create a Gradle build file&lt;/h3&gt;&#10;&lt;p&gt;Make sure &lt;code&gt;mavenCentral&lt;/code&gt; is among your repositories. The example build script below uses &lt;code&gt;org.gretty&lt;/code&gt; to provide&#10;a webserver to show a working example.&lt;/p&gt;</description></item><item><title>Getting started</title><link>https://graphql-java-kickstart.github.io/spring-boot/getting-started/</link><pubDate>Wed, 07 Nov 2018 00:11:02 +0100</pubDate><guid>https://graphql-java-kickstart.github.io/spring-boot/getting-started/</guid><description>&lt;p&gt;This project requires at least the following version:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Java 17&lt;/li&gt;&#10;&lt;li&gt;Spring Boot 3.x.x (&lt;code&gt;spring-boot-starter-web&lt;/code&gt;)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="quick-start"&gt;Quick start&lt;/h2&gt;&#10;&lt;p&gt;To add &lt;code&gt;graphql-spring-boot&lt;/code&gt; to your project and get started quickly, do the following.&lt;/p&gt;&#10;&lt;h3 id="build-with-gradle"&gt;Build with Gradle&lt;/h3&gt;&#10;&lt;p&gt;Make sure &lt;code&gt;mavenCentral&lt;/code&gt; is amongst your repositories:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gradle" data-lang="gradle"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;repositories &lt;span style="color:#f92672"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mavenCentral&lt;span style="color:#f92672"&gt;()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Add the respective starter dependencies you want to use:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gradle" data-lang="gradle"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dependencies &lt;span style="color:#f92672"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; implementation &lt;span style="color:#e6db74"&gt;&amp;#39;com.graphql-java-kickstart:graphql-spring-boot-starter:15.0.0&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// testing facilities&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; testImplementation &lt;span style="color:#e6db74"&gt;&amp;#39;com.graphql-java-kickstart:graphql-spring-boot-starter-test:15.0.0&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="build-with-maven"&gt;Build with Maven&lt;/h3&gt;&#10;&lt;p&gt;Add the respective starter dependencies you want to use:&lt;/p&gt;</description></item><item><title>Getting started</title><link>https://graphql-java-kickstart.github.io/tools/getting-started/</link><pubDate>Wed, 07 Nov 2018 00:11:02 +0100</pubDate><guid>https://graphql-java-kickstart.github.io/tools/getting-started/</guid><description>&lt;p&gt;A working &lt;a href="https://github.com/graphql-java-kickstart/samples/tree/master/tools-hello-world"&gt;Java Spring-Boot application&lt;/a&gt; is provided,&#10;based off the &lt;a href="https://github.com/graphql-java/graphql-java/blob/master/src/test/groovy/graphql/StarWarsSchema.java"&gt;Star Wars API&lt;/a&gt; tests&#10;and &lt;a href="https://github.com/graphql-java/graphql-java/blob/master/src/test/groovy/graphql/StarWarsData.groovy"&gt;test data&lt;/a&gt;.&#10;If you&amp;rsquo;re using Spring Boot, check out the &lt;a href="https://github.com/graphql-java-kickstart/graphql-spring-boot"&gt;graphql-spring-boot-starter&lt;/a&gt;!&lt;/p&gt;&#10;&lt;p&gt;A working &lt;a href="https://github.com/graphql-java-kickstart/graphql-java-tools/blob/master/src/test/kotlin/graphql/kickstart/tools/EndToEndSpecHelper.kt"&gt;Kotlin example&lt;/a&gt; can be found in the tests.&lt;/p&gt;&#10;&lt;h2 id="quick-start"&gt;Quick start&lt;/h2&gt;&#10;&lt;p&gt;To add &lt;code&gt;graphql-java-tools&lt;/code&gt; to your project and get started quickly, do the following.&lt;/p&gt;&#10;&lt;h3 id="build-with-gradle"&gt;Build with Gradle&lt;/h3&gt;&#10;&lt;p&gt;Make sure &lt;code&gt;mavenCentral&lt;/code&gt; is amongst your repositories:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gradle" data-lang="gradle"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;repositories &lt;span style="color:#f92672"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mavenCentral&lt;span style="color:#f92672"&gt;()&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Add the &lt;code&gt;graphql-java-tools&lt;/code&gt; dependency:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gradle" data-lang="gradle"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dependencies &lt;span style="color:#f92672"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; compile &lt;span style="color:#e6db74"&gt;&amp;#39;com.graphql-java-kickstart:graphql-java-tools:13.0.3&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="build-with-maven"&gt;Build with Maven&lt;/h3&gt;&#10;&lt;p&gt;Add the &lt;code&gt;graphql-java-tools&lt;/code&gt; dependency:&lt;/p&gt;</description></item><item><title>Dataloaders</title><link>https://graphql-java-kickstart.github.io/servlet/dataloaders/</link><pubDate>Wed, 07 Nov 2018 00:11:02 +0100</pubDate><guid>https://graphql-java-kickstart.github.io/servlet/dataloaders/</guid><description>&lt;p&gt;It is possible to create context, and consequently dataloaders, in both a request scope and a per query scope by&#10;customizing &lt;a href="https://github.com/graphql-java-kickstart/graphql-java-servlet/blob/master/graphql-java-kickstart/src/main/java/graphql/kickstart/execution/context/GraphQLContextBuilder.java"&gt;GraphQLContextBuilder&lt;/a&gt;&#10;and selecting the appropriate &lt;a href="https://github.com/graphql-java-kickstart/graphql-java-servlet/blob/master/graphql-java-kickstart/src/main/java/graphql/kickstart/execution/context/ContextSetting.java"&gt;ContextSetting&lt;/a&gt;&#10;with the provided &lt;a href="https://github.com/graphql-java-kickstart/graphql-java-servlet/blob/master/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLConfiguration.java"&gt;GraphQLConfiguration&lt;/a&gt;.&#10;A new &lt;a href="https://github.com/graphql-java/java-dataloader/blob/master/src/main/java/org/dataloader/DataLoaderRegistry.java"&gt;DataLoaderRegistry&lt;/a&gt; should be created in each call to the GraphQLContextBuilder, and the servlet will call the builder at the appropriate times.&#10;For example:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;CustomGraphQLContextBuilder&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;implements&lt;/span&gt; GraphQLServletContextBuilder {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;private&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;final&lt;/span&gt; DataLoader userDataLoader;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;CustomGraphQLContextBuilder&lt;/span&gt;(DataLoader userDataLoader) {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;this&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;userDataLoader&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; userDataLoader;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; GraphQLContext &lt;span style="color:#a6e22e"&gt;build&lt;/span&gt;() {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; DefaultGraphQLContext();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; GraphQLContext &lt;span style="color:#a6e22e"&gt;build&lt;/span&gt;(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; DefaultGraphQLServletContext.&lt;span style="color:#a6e22e"&gt;createServletContext&lt;/span&gt;()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;with&lt;/span&gt;(httpServletRequest)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;with&lt;/span&gt;(httpServletResponse)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;with&lt;/span&gt;(buildDataLoaderRegistry())&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;build&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; GraphQLContext &lt;span style="color:#a6e22e"&gt;build&lt;/span&gt;(Session session, HandshakeRequest handshakeRequest) {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; DefaultGraphQLWebSocketContext.&lt;span style="color:#a6e22e"&gt;createWebSocketContext&lt;/span&gt;()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;with&lt;/span&gt;(session)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;with&lt;/span&gt;(handshakeRequest)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;with&lt;/span&gt;(buildDataLoaderRegistry())&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;build&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;private&lt;/span&gt; DataLoaderRegistry &lt;span style="color:#a6e22e"&gt;buildDataLoaderRegistry&lt;/span&gt;() {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; DataLoaderRegistry registry &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; DataLoaderRegistry();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; registry.&lt;span style="color:#a6e22e"&gt;register&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;userDataLoader&amp;#34;&lt;/span&gt;, userDataLoader);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; registry;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It is then possible to access the &lt;a href="https://github.com/graphql-java/java-dataloader/blob/master/src/main/java/org/dataloader/DataLoader.java"&gt;DataLoader&lt;/a&gt;&#10;in the resolvers by accessing the &lt;a href="https://github.com/graphql-java/java-dataloader/blob/master/src/main/java/org/dataloader/DataLoaderRegistry.java"&gt;DataLoaderRegistry&lt;/a&gt; from context. For example:&lt;/p&gt;</description></item><item><title>Defining a schema</title><link>https://graphql-java-kickstart.github.io/tools/schema-definition/</link><pubDate>Wed, 07 Nov 2018 00:11:02 +0100</pubDate><guid>https://graphql-java-kickstart.github.io/tools/schema-definition/</guid><description>&lt;p&gt;A &lt;a href="http://graphql.org/learn/schema/"&gt;GraphQL schema&lt;/a&gt; can be given either as raw strings:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// My application class&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SchemaParser.&lt;span style="color:#a6e22e"&gt;newParser&lt;/span&gt;()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;schemaString&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;Query { }&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;or as files on the classpath:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// My application class&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SchemaParser.&lt;span style="color:#a6e22e"&gt;newParser&lt;/span&gt;()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;file&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;my-schema.graphqls&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// my-schema.graphqls&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Query { }&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Multiple sources will be concatenated together in the order given, allowing you to modularize your schema if desired.&lt;/p&gt;&#10;&lt;h2 id="resolvers-and-data-classes"&gt;Resolvers and Data Classes&lt;/h2&gt;&#10;&lt;p&gt;GraphQL Java Tools maps fields on your GraphQL objects to methods and properties on your java objects.&#10;For most scalar fields, a POJO with fields and/or getter methods is enough to describe the data to GraphQL.&#10;More complex fields (like looking up another object) often need more complex methods with state not provided by the GraphQL context (repositories, connections, etc).&#10;GraphQL Java Tools uses the concept of &amp;ldquo;Data Classes&amp;rdquo; and &amp;ldquo;Resolvers&amp;rdquo; to account for both of these situations.&lt;/p&gt;</description></item><item><title>Servlet Listener</title><link>https://graphql-java-kickstart.github.io/servlet/servlet-listener/</link><pubDate>Fri, 15 May 2020 09:28:02 +0100</pubDate><guid>https://graphql-java-kickstart.github.io/servlet/servlet-listener/</guid><description>&lt;p&gt;The GraphQL Servlet library allows you to add a &lt;a href="https://github.com/graphql-java-kickstart/graphql-java-servlet/blob/master/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletListener.java"&gt;Servlet Listener&lt;/a&gt;&#10;for listening to the GraphQL request. It provides hooks into the servlet request execution (success, error, and finally):&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;MyServlet&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;extends&lt;/span&gt; GraphQLHttpServlet {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;@Override&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;protected&lt;/span&gt; GraphQLConfiguration &lt;span style="color:#a6e22e"&gt;getConfiguration&lt;/span&gt;() {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; GraphQLConfiguration.&lt;span style="color:#a6e22e"&gt;with&lt;/span&gt;(createSchema())&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;with&lt;/span&gt;(queryInvoker)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;with&lt;/span&gt;(Arrays.&lt;span style="color:#a6e22e"&gt;asList&lt;/span&gt;(listener))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;build&lt;/span&gt;();&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="instrumentation"&gt;Instrumentation&lt;/h2&gt;&#10;&lt;p&gt;The Servlet Listener listens to the servlet request, but not to the GraphQL query execution.&#10;If you want to listen to that you should use the &lt;a href="https://www.graphql-java.com/documentation/v16/instrumentation/"&gt;Instrumentation&lt;/a&gt;&#10;provided by GraphQL Java. You can extend &lt;a href="https://github.com/graphql-java/graphql-java/blob/master/src/main/java/graphql/execution/instrumentation/SimpleInstrumentation.java"&gt;SimpleInstrumentation&lt;/a&gt;&#10;to quickly create a custom implementation and use it when creating the &lt;code&gt;GraphQLConfiguration&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Schema parser options</title><link>https://graphql-java-kickstart.github.io/tools/schema-parser-options/</link><pubDate>Wed, 07 Nov 2018 00:11:02 +0100</pubDate><guid>https://graphql-java-kickstart.github.io/tools/schema-parser-options/</guid><description>&lt;p&gt;For advanced use-cases, the schema parser can be tweaked to suit your needs.&#10;Use &lt;code&gt;SchemaParserOptions.newBuilder()&lt;/code&gt; to build an options object to pass to the parser.&lt;/p&gt;&#10;&lt;p&gt;Options:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;code&gt;contextClass&lt;/code&gt;: If you use a custom context object to execute your queries, let the parser know about it so that it can add it to data fetchers as an argument.&lt;br&gt;&#10;Make sure to also provide your context instance to the execution input:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; executionInput &lt;span style="color:#f92672"&gt;=&lt;/span&gt; ExecutionInput.&lt;span style="color:#a6e22e"&gt;newExecutionInput&lt;/span&gt;()&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;query&lt;/span&gt;(query)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;variables&lt;/span&gt;(variables)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;graphQLContext&lt;/span&gt;(Map.&lt;span style="color:#a6e22e"&gt;of&lt;/span&gt;(CustomContext.&lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;, context));&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;code&gt;genericWrappers&lt;/code&gt;: Allows defining your own generic classes that should be unwrapped when matching Java types to GraphQL types. You must supply the class and the index (zero-indexed) of the wrapped generic type. For example: If you want to unwrap type argument &lt;code&gt;T&lt;/code&gt; of &lt;code&gt;Future&amp;lt;T&amp;gt;&lt;/code&gt;, you must pass &lt;code&gt;Future.class&lt;/code&gt; and &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Relay</title><link>https://graphql-java-kickstart.github.io/tools/relay/</link><pubDate>Wed, 07 Nov 2018 00:11:02 +0100</pubDate><guid>https://graphql-java-kickstart.github.io/tools/relay/</guid><description>&lt;p&gt;Relay requires quite some boilerplate type definitions to be defined. They&#10;are all the same apart from type of the node the Relay connection targets.&#10;This results in schemas with a lot of duplication, like the following:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-graphql" data-lang="graphql"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Query&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; users(first: &lt;span style="color:#a6e22e"&gt;Int&lt;/span&gt;, after: &lt;span style="color:#a6e22e"&gt;String&lt;/span&gt;): &lt;span style="color:#a6e22e"&gt;UserConnection&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; organizations(first: &lt;span style="color:#a6e22e"&gt;Int&lt;/span&gt;, after: &lt;span style="color:#a6e22e"&gt;String&lt;/span&gt;): &lt;span style="color:#a6e22e"&gt;OrganizationConnection&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;UserConnection&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; edges: [UserEdge]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; pageInfo: &lt;span style="color:#a6e22e"&gt;PageInfo&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;UserEdge&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cursor: &lt;span style="color:#a6e22e"&gt;String&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; node: &lt;span style="color:#a6e22e"&gt;User&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;PageInfo&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; hasPreviousPage: &lt;span style="color:#a6e22e"&gt;Boolean&lt;/span&gt;!&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; hasNextPage: &lt;span style="color:#a6e22e"&gt;Boolean&lt;/span&gt;!&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;User&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; id: &lt;span style="color:#a6e22e"&gt;ID&lt;/span&gt;!&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; name: &lt;span style="color:#a6e22e"&gt;String&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;OrganizationConnection&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; edges: [OrganizationEdge]&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; pageInfo: &lt;span style="color:#a6e22e"&gt;PageInfo&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;OrganizationEdge&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cursor: &lt;span style="color:#a6e22e"&gt;String&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; node: &lt;span style="color:#a6e22e"&gt;Organization&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;type&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Organization&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; id: &lt;span style="color:#a6e22e"&gt;ID&lt;/span&gt;!&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="using-the-type-definition-factory"&gt;Using the Type Definition Factory&lt;/h2&gt;&#10;&lt;p&gt;In version 5.4 of &lt;code&gt;graphql-java-tools&lt;/code&gt; the&#10;&lt;a href="https://graphql-java-kickstart.github.io/tools/type-definition-factory/"&gt;Type Definition Factory&lt;/a&gt; has been&#10;introduced. This has been added with this particular use case in mind, but can&#10;be used for any type of definition that you&amp;rsquo;d want to add dynamically instead&#10;of defining it statically in the SDL.&lt;/p&gt;</description></item><item><title>Type Definition Factory</title><link>https://graphql-java-kickstart.github.io/spring-boot/type-definition-factory/</link><pubDate>Wed, 07 Nov 2018 00:11:02 +0100</pubDate><guid>https://graphql-java-kickstart.github.io/spring-boot/type-definition-factory/</guid><description>&lt;p&gt;The &lt;strong&gt;Type Definition Factory&lt;/strong&gt; has been added with to be able to dynamically&#10;add type definitions to the schema instead of having to define them manually&#10;in the SDL. There are a couple of use cases where the types that have to be defined&#10;are very much alike and only certain parts are different. For example the&#10;connection and edge types used by &lt;a href="https://graphql-java-kickstart.github.io/tools/relay/"&gt;Relay&lt;/a&gt;. Since generics isn&amp;rsquo;t supported in&#10;the definition language this type definition factory has been added.&lt;/p&gt;</description></item><item><title>Type Definition Factory</title><link>https://graphql-java-kickstart.github.io/tools/type-definition-factory/</link><pubDate>Wed, 07 Nov 2018 00:11:02 +0100</pubDate><guid>https://graphql-java-kickstart.github.io/tools/type-definition-factory/</guid><description>&lt;p&gt;The &lt;strong&gt;Type Definition Factory&lt;/strong&gt; has been added to allow to dynamically&#10;add type definitions to the schema instead of having to define them manually&#10;in the SDL. There are a couple of use cases where the types that have to be defined&#10;are very much alike and only certain parts are different. For example the&#10;connection and edge types used by &lt;a href="https://graphql-java-kickstart.github.io/tools/relay/"&gt;Relay&lt;/a&gt;. Since generics aren&amp;rsquo;t supported in&#10;the definition language this type definition factory has been added.&lt;/p&gt;</description></item><item><title>Directives</title><link>https://graphql-java-kickstart.github.io/spring-boot/directives/</link><pubDate>Wed, 07 Nov 2018 00:11:02 +0100</pubDate><guid>https://graphql-java-kickstart.github.io/spring-boot/directives/</guid><description>&lt;p&gt;See &lt;a href="https://www.graphql-java.com/documentation/v16/sdl-directives/"&gt;Schema Directives&lt;/a&gt;&#10;for a detailed explanation about directives including examples on how to define&#10;them in the SDL and to create the required classes.&lt;/p&gt;&#10;&lt;p&gt;To add your custom &lt;code&gt;SchemaDirectiveWiring&lt;/code&gt; to &lt;code&gt;graphql-spring-boot&lt;/code&gt; create a bean&#10;of type &lt;code&gt;SchemaDirective&lt;/code&gt; to have it automatically passed along to the &lt;code&gt;SchemaParser&lt;/code&gt;&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;SchemaDirective.create(&amp;#34;uppercase&amp;#34;, new UppercaseDirective())&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="basic-usage"&gt;Basic usage&lt;/h2&gt;&#10;&lt;p&gt;Let&amp;rsquo;s say you defined a custom directive to make text uppercase in a resource &lt;code&gt;schema.graphqls&lt;/code&gt;:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;directive @uppercase on FIELD_DEFINITION&#10;&#10;type Query {&#10; hello: String @uppercase&#10;}&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And the actual implementation is the following:&lt;/p&gt;</description></item><item><title>Directives</title><link>https://graphql-java-kickstart.github.io/tools/directives/</link><pubDate>Wed, 07 Nov 2018 00:11:02 +0100</pubDate><guid>https://graphql-java-kickstart.github.io/tools/directives/</guid><description>&lt;p&gt;See &lt;a href="https://www.graphql-java.com/documentation/v16/sdl-directives/"&gt;Schema Directives&lt;/a&gt;&#10;for a detailed explanation about directives including examples on how to define&#10;them in the SDL and to create the required classes.&lt;/p&gt;&#10;&lt;p&gt;To add your custom &lt;code&gt;SchemaDirectiveWiring&lt;/code&gt; to &lt;code&gt;graphql-java-tools&lt;/code&gt; pass it along&#10;when creating the &lt;code&gt;SchemaParser&lt;/code&gt; using&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;SchemaParser.newParser().directive(&amp;#34;name&amp;#34;, new MySchemaDirectiveWiring()).build()&#10;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="basic-usage"&gt;Basic usage&lt;/h2&gt;&#10;&lt;p&gt;Let&amp;rsquo;s say you defined a custom directive to make text uppercase in a resource &lt;code&gt;schema.graphqls&lt;/code&gt;:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;directive @uppercase on FIELD_DEFINITION&#10;&#10;type Query {&#10; hello: String @uppercase&#10;}&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And the actual implementation is the following:&lt;/p&gt;</description></item><item><title>Embedded Editors</title><link>https://graphql-java-kickstart.github.io/spring-boot/embedded-editors/</link><pubDate>Mon, 17 May 2021 07:00:00 -0500</pubDate><guid>https://graphql-java-kickstart.github.io/spring-boot/embedded-editors/</guid><description>&lt;p&gt;The following GraphQL Embedded Editors are bundled for convenience:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#altair"&gt;Altair&lt;/a&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#configuration-parameters"&gt;Configuration Parameters&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#graphql-playground"&gt;GraphQL Playground&lt;/a&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#configuration-parameters-1"&gt;Configuration Parameters&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#graphiql"&gt;GraphiQL&lt;/a&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#configuration-parameters-2"&gt;Configuration Parameters&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#graphql-voyager"&gt;GraphQL Voyager&lt;/a&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#configuration-parameters-3"&gt;Configuration Parameters&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="altair"&gt;Altair&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/imolorhe/altair"&gt;Altair&lt;/a&gt; becomes accessible at the root &lt;code&gt;/altair&lt;/code&gt; if the &lt;code&gt;graphql.altair.enabled&lt;/code&gt; property is true.&lt;/p&gt;&#10;&lt;p&gt;Note that GraphQL server must be available at &lt;code&gt;/graphql/\*&lt;/code&gt; context to be discovered by Altair.&lt;/p&gt;&#10;&lt;h3 id="configuration-parameters"&gt;Configuration Parameters&lt;/h3&gt;&#10;&lt;p&gt;Available Spring Boot configuration parameters (either &lt;code&gt;application.yml&lt;/code&gt; or &lt;code&gt;application.properties&lt;/code&gt;):&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;graphql&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;altair&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;enabled&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;mapping&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;/altair&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;subscriptions&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;timeout&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;30&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;reconnect&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;static&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;base-path&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;/&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;page-title&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;Altair&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;cdn&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;enabled&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;version&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;4.0.2&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;options&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;endpoint-url&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;/graphql&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;subscriptions-endpoint&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;/subscriptions&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;initial-settings&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;theme&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;dracula&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;initial-headers&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;Authorization&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;Bearer &amp;lt;your-token&amp;gt;&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;resources&lt;/span&gt;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;initial-query&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;defaultQuery.graphql&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;initial-variables&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;variables.graphql&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;initial-pre-request-script&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;pre-request.graphql&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;initial-post-request-script&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;post-request.graphql&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="graphql-playground"&gt;GraphQL Playground&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/prisma/graphql-playground"&gt;GraphQL Playground&lt;/a&gt; becomes accessible at root &lt;code&gt;/playground&lt;/code&gt; (or as configured in &lt;code&gt;graphql.playground.mapping&lt;/code&gt;) if the &lt;code&gt;graphql.playground.enabled&lt;/code&gt; property is true.&lt;/p&gt;</description></item><item><title>OSGi</title><link>https://graphql-java-kickstart.github.io/servlet/osgi/</link><pubDate>Fri, 15 May 2020 09:28:02 +0100</pubDate><guid>https://graphql-java-kickstart.github.io/servlet/osgi/</guid><description>&lt;p&gt;The &lt;a href="https://github.com/graphql-java-kickstart/graphql-java-servlet/blob/master/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/OsgiGraphQLHttpServlet.java"&gt;OsgiGraphQLHttpServlet&lt;/a&gt; uses a &amp;ldquo;provider&amp;rdquo; model to supply the servlet with the required objects:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/graphql-java-kickstart/graphql-java-servlet/blob/master/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/osgi/GraphQLQueryProvider.java"&gt;GraphQLQueryProvider&lt;/a&gt;: Provides query fields to the GraphQL schema.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/graphql-java-kickstart/graphql-java-servlet/blob/master/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/osgi/GraphQLMutationProvider.java"&gt;GraphQLMutationProvider&lt;/a&gt;: Provides mutation fields to the GraphQL schema.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/graphql-java-kickstart/graphql-java-servlet/blob/master/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/osgi/GraphQLTypesProvider.java"&gt;GraphQLTypesProvider&lt;/a&gt;: Provides type information to the GraphQL schema.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/graphql-java-kickstart/graphql-java-servlet/blob/master/graphql-java-kickstart/src/main/java/graphql/kickstart/execution/config/ExecutionStrategyProvider.java"&gt;ExecutionStrategyProvider&lt;/a&gt;: Provides an execution strategy for running each query.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/graphql-java-kickstart/graphql-java-servlet/blob/master/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContextBuilder.java"&gt;GraphQLContextBuilder&lt;/a&gt;: Builds a context for running each query.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;&#10;&lt;p&gt;You can now find some example on how to use graphql-java-servlet.&lt;/p&gt;&#10;&lt;h3 id="requirements"&gt;Requirements&lt;/h3&gt;&#10;&lt;p&gt;The OSGi examples use Maven as a build tool because it requires plugins that are not (yet) available for Gradle.&#10;Therefore you will need Maven 3.2+.&lt;/p&gt;</description></item></channel></rss>