From d4b9c4750d878b50d2a9e71c3d22481328f24c72 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Wed, 7 Oct 2020 21:13:20 +0100 Subject: [PATCH] Polishing WebOutput See gh-6 --- .../springframework/graphql/WebOutput.java | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/spring-graphql-web/src/main/java/org/springframework/graphql/WebOutput.java b/spring-graphql-web/src/main/java/org/springframework/graphql/WebOutput.java index 9f136d0c..b0e9e5a1 100644 --- a/spring-graphql-web/src/main/java/org/springframework/graphql/WebOutput.java +++ b/spring-graphql-web/src/main/java/org/springframework/graphql/WebOutput.java @@ -15,6 +15,7 @@ */ package org.springframework.graphql; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.function.Consumer; @@ -58,6 +59,7 @@ public class WebOutput implements ExecutionResult { return this.executionResult.getErrors(); } + @Nullable public Map getExtensions() { return this.executionResult.getExtensions(); } @@ -67,6 +69,10 @@ public class WebOutput implements ExecutionResult { return this.executionResult.toSpecification(); } + /** + * Transform this {@code WebOutput} instance through a {@link Builder} and + * return a new instance with the modified values. + */ public WebOutput transform(Consumer consumer) { Builder builder = new Builder(this); consumer.accept(builder); @@ -81,6 +87,7 @@ public class WebOutput implements ExecutionResult { private List errors; + @Nullable private Map extensions; public Builder(WebOutput output) { @@ -89,17 +96,26 @@ public class WebOutput implements ExecutionResult { this.extensions = output.getExtensions(); } - public Builder data(Object data) { + /** + * Set the execution {@link ExecutionResult#getData() data}. + */ + public Builder data(@Nullable Object data) { this.data = data; return this; } - public Builder errors(List errors) { - this.errors = errors; + /** + * Set the execution {@link ExecutionResult#getErrors() errors}. + */ + public Builder errors(@Nullable List errors) { + this.errors = (errors != null ? errors : Collections.emptyList()); return this; } - public Builder extensions(Map extensions) { + /** + * Set the execution {@link ExecutionResult#getExtensions() extensions}. + */ + public Builder extensions(@Nullable Map extensions) { this.extensions = extensions; return this; }