1212import static java .util .stream .Collectors .toList ;
1313
1414@ ExperimentalApi
15- public class IncrementalItem {
15+ public abstract class IncrementalItem {
1616 private final List <Object > path ;
1717 private final List <GraphQLError > errors ;
1818 private final transient Map <Object , Object > extensions ;
1919
20- private IncrementalItem (List <Object > path , List <GraphQLError > errors , Map <Object , Object > extensions ) {
20+ protected IncrementalItem (List <Object > path , List <GraphQLError > errors , Map <Object , Object > extensions ) {
2121 this .path = path ;
2222 this .errors = errors ;
2323 this .extensions = extensions ;
2424 }
2525
26- IncrementalItem (IncrementalItem incrementalItem ) {
27- this (incrementalItem .getPath (), incrementalItem .getErrors (), incrementalItem .getExtensions ());
28- }
29-
3026 public List <Object > getPath () {
31- return null ;
27+ return this . path ;
3228 }
3329
3430 public List <GraphQLError > getErrors () {
35- return null ;
31+ return this . errors ;
3632 }
3733
3834 public Map <Object , Object > getExtensions () {
39- return null ;
35+ return this . extensions ;
4036 }
4137
42- public Map <String , Object > toSpecification () {
38+ protected Map <String , Object > toSpecification () {
4339 Map <String , Object > result = new LinkedHashMap <>();
4440 if (errors != null && !errors .isEmpty ()) {
4541 result .put ("errors" , errorsToSpec (errors ));
@@ -53,66 +49,60 @@ public Map<String, Object> toSpecification() {
5349 return result ;
5450 }
5551
56- private Object errorsToSpec (List <GraphQLError > errors ) {
52+ protected Object errorsToSpec (List <GraphQLError > errors ) {
5753 return errors .stream ().map (GraphQLError ::toSpecification ).collect (toList ());
5854 }
5955
60- static IncrementalItem .Builder newIncrementalExecutionResult () {
61- return new IncrementalItem .Builder ();
62- }
56+ protected static abstract class Builder <T extends IncrementalItem > {
57+ protected List <Object > path ;
58+ protected List <GraphQLError > errors = new ArrayList <>();
59+ protected Map <Object , Object > extensions ;
6360
64- public static class Builder {
65- private List <Object > path ;
66- private List <GraphQLError > errors = new ArrayList <>();
67- private Map <Object , Object > extensions ;
68-
69- public IncrementalItem .Builder from (IncrementalItem incrementalExecutionResult ) {
70- path = incrementalExecutionResult .getPath ();
71- errors = new ArrayList <>(incrementalExecutionResult .getErrors ());
72- extensions = incrementalExecutionResult .getExtensions ();
61+ public Builder <T > from (T incrementalExecutionResult ) {
62+ this .path = incrementalExecutionResult .getPath ();
63+ this .errors = new ArrayList <>(incrementalExecutionResult .getErrors ());
64+ this .extensions = incrementalExecutionResult .getExtensions ();
7365 return this ;
7466 }
7567
76- public IncrementalItem . Builder path (ResultPath path ) {
68+ public Builder < T > path (ResultPath path ) {
7769 if (path != null ) {
7870 this .path = path .toList ();
7971 }
8072 return this ;
8173 }
8274
83- public IncrementalItem . Builder path (List <Object > path ) {
75+ public Builder < T > path (List <Object > path ) {
8476 this .path = path ;
8577 return this ;
8678 }
8779
88- public IncrementalItem . Builder errors (List <GraphQLError > errors ) {
80+ public Builder < T > errors (List <GraphQLError > errors ) {
8981 this .errors = errors ;
9082 return this ;
9183 }
9284
93- public IncrementalItem . Builder addErrors (List <GraphQLError > errors ) {
85+ public Builder < T > addErrors (List <GraphQLError > errors ) {
9486 this .errors .addAll (errors );
9587 return this ;
9688 }
9789
98- public IncrementalItem . Builder addError (GraphQLError error ) {
90+ public Builder < T > addError (GraphQLError error ) {
9991 this .errors .add (error );
10092 return this ;
10193 }
10294
103- public IncrementalItem . Builder extensions (Map <Object , Object > extensions ) {
95+ public Builder < T > extensions (Map <Object , Object > extensions ) {
10496 this .extensions = extensions ;
10597 return this ;
10698 }
10799
108- public IncrementalItem . Builder addExtension (String key , Object value ) {
100+ public Builder < T > addExtension (String key , Object value ) {
109101 this .extensions = (this .extensions == null ? new LinkedHashMap <>() : this .extensions );
110102 this .extensions .put (key , value );
111103 return this ;
112104 }
113105
114- public IncrementalItem build () {
115- return new IncrementalItem (path , errors , extensions );
116- }
106+ public abstract T build ();
117107 }
118108}
0 commit comments