Skip to content

Commit 574d816

Browse files
jplockapottere
authored andcommitted
Add a builder to SimpleGraphQLServlet (#53)
* Ignore eclipse files * Add a builder to SimpleGraphQLServlet * Add a create() method
1 parent 3301e0f commit 574d816

File tree

2 files changed

+99
-0
lines changed

2 files changed

+99
-0
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,7 @@ build/
66
.idea/
77
target/
88
/out/
9+
.classpath
10+
.project
11+
.settings
12+
bin

src/main/java/graphql/servlet/SimpleGraphQLServlet.java

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,42 @@
1717
*/
1818
public class SimpleGraphQLServlet extends GraphQLServlet {
1919

20+
/**
21+
* @deprecated use {@link #builder()} instead.
22+
*/
23+
@Deprecated
2024
public SimpleGraphQLServlet(GraphQLSchema schema) {
2125
this(schema, new DefaultExecutionStrategyProvider());
2226
}
2327

28+
/**
29+
* @deprecated use {@link #builder()} instead.
30+
*/
31+
@Deprecated
2432
public SimpleGraphQLServlet(GraphQLSchema schema, ExecutionStrategy executionStrategy) {
2533
this(schema, new DefaultExecutionStrategyProvider(executionStrategy));
2634
}
2735

36+
/**
37+
* @deprecated use {@link #builder()} instead.
38+
*/
39+
@Deprecated
2840
public SimpleGraphQLServlet(GraphQLSchema schema, ExecutionStrategyProvider executionStrategyProvider) {
2941
this(schema, executionStrategyProvider, null, null, null, null, null, null, null);
3042
}
3143

44+
/**
45+
* @deprecated use {@link #builder()} instead.
46+
*/
47+
@Deprecated
3248
public SimpleGraphQLServlet(final GraphQLSchema schema, ExecutionStrategyProvider executionStrategyProvider, ObjectMapperConfigurer objectMapperConfigurer, List<GraphQLServletListener> listeners, Instrumentation instrumentation, GraphQLErrorHandler errorHandler, GraphQLContextBuilder contextBuilder, GraphQLRootObjectBuilder rootObjectBuilder, PreparsedDocumentProvider preparsedDocumentProvider) {
3349
this(new DefaultGraphQLSchemaProvider(schema), executionStrategyProvider, objectMapperConfigurer, listeners, instrumentation, errorHandler, contextBuilder, rootObjectBuilder, preparsedDocumentProvider);
3450
}
3551

52+
/**
53+
* @deprecated use {@link #builder()} instead.
54+
*/
55+
@Deprecated
3656
public SimpleGraphQLServlet(GraphQLSchemaProvider schemaProvider, ExecutionStrategyProvider executionStrategyProvider, ObjectMapperConfigurer objectMapperConfigurer, List<GraphQLServletListener> listeners, Instrumentation instrumentation, GraphQLErrorHandler errorHandler, GraphQLContextBuilder contextBuilder, GraphQLRootObjectBuilder rootObjectBuilder, PreparsedDocumentProvider preparsedDocumentProvider) {
3757
super(objectMapperConfigurer, listeners, null);
3858

@@ -70,6 +90,18 @@ public SimpleGraphQLServlet(GraphQLSchemaProvider schemaProvider, ExecutionStrat
7090
}
7191
}
7292

93+
private SimpleGraphQLServlet(Builder builder) {
94+
super(builder.objectMapperConfigurer, builder.listeners, null);
95+
96+
this.schemaProvider = builder.schemaProvider;
97+
this.executionStrategyProvider = builder.executionStrategyProvider;
98+
this.instrumentation = builder.instrumentation;
99+
this.errorHandler = builder.errorHandler;
100+
this.contextBuilder = builder.contextBuilder;
101+
this.rootObjectBuilder = builder.rootObjectBuilder;
102+
this.preparsedDocumentProvider = builder.preparsedDocumentProvider;
103+
}
104+
73105
private final GraphQLSchemaProvider schemaProvider;
74106
private final ExecutionStrategyProvider executionStrategyProvider;
75107
private final Instrumentation instrumentation;
@@ -78,6 +110,69 @@ public SimpleGraphQLServlet(GraphQLSchemaProvider schemaProvider, ExecutionStrat
78110
private final GraphQLRootObjectBuilder rootObjectBuilder;
79111
private final PreparsedDocumentProvider preparsedDocumentProvider;
80112

113+
public static SimpleGraphQLServlet create(GraphQLSchema schema) {
114+
return new Builder(schema).build();
115+
}
116+
117+
public static Builder builder(GraphQLSchema schema) {
118+
return new Builder(schema);
119+
}
120+
121+
public static class Builder {
122+
private final GraphQLSchemaProvider schemaProvider;
123+
private ExecutionStrategyProvider executionStrategyProvider = new DefaultExecutionStrategyProvider();
124+
private ObjectMapperConfigurer objectMapperConfigurer;
125+
private List<GraphQLServletListener> listeners;
126+
private Instrumentation instrumentation = NoOpInstrumentation.INSTANCE;
127+
private GraphQLErrorHandler errorHandler = new DefaultGraphQLErrorHandler();
128+
private GraphQLContextBuilder contextBuilder = new DefaultGraphQLContextBuilder();
129+
private GraphQLRootObjectBuilder rootObjectBuilder = new DefaultGraphQLRootObjectBuilder();
130+
private PreparsedDocumentProvider preparsedDocumentProvider = NoOpPreparsedDocumentProvider.INSTANCE;
131+
132+
public Builder(GraphQLSchema schema) {
133+
this.schemaProvider = new DefaultGraphQLSchemaProvider(schema);
134+
}
135+
136+
public Builder withExecutionStrategyProvider(ExecutionStrategyProvider provider) {
137+
this.executionStrategyProvider = provider;
138+
return this;
139+
}
140+
141+
public Builder withObjectMapperConfigurer(ObjectMapperConfigurer configurer) {
142+
this.objectMapperConfigurer = configurer;
143+
return this;
144+
}
145+
146+
public Builder withInstrumentation(Instrumentation instrumentation) {
147+
this.instrumentation = instrumentation;
148+
return this;
149+
}
150+
151+
public Builder withGraphQLErrorHandler(GraphQLErrorHandler handler) {
152+
this.errorHandler = handler;
153+
return this;
154+
}
155+
156+
public Builder withGraphQLContextBuilder(GraphQLContextBuilder context) {
157+
this.contextBuilder = context;
158+
return this;
159+
}
160+
161+
public Builder withGraphQLRootObjectBuilder(GraphQLRootObjectBuilder rootObject) {
162+
this.rootObjectBuilder = rootObject;
163+
return this;
164+
}
165+
166+
public Builder withPreparsedDocumentProvider(PreparsedDocumentProvider provider) {
167+
this.preparsedDocumentProvider = provider;
168+
return this;
169+
}
170+
171+
public SimpleGraphQLServlet build() {
172+
return new SimpleGraphQLServlet(this);
173+
}
174+
}
175+
81176
@Override
82177
protected GraphQLSchemaProvider getSchemaProvider() {
83178
return schemaProvider;

0 commit comments

Comments
 (0)