Skip to content

Commit 8f51759

Browse files
author
Thomas Draier
committed
Fixed merge and dependencies resolution. Correctly inject all objects in GraphQLAnnotations constructor
1 parent 234c3cf commit 8f51759

16 files changed

+89
-93
lines changed

src/main/java/graphql/annotations/processor/GraphQLAnnotations.java

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,12 @@
1919
import graphql.annotations.processor.graphQLProcessors.GraphQLAnnotationsProcessor;
2020
import graphql.annotations.processor.graphQLProcessors.GraphQLInputProcessor;
2121
import graphql.annotations.processor.graphQLProcessors.GraphQLOutputProcessor;
22-
import graphql.annotations.processor.retrievers.GraphQLExtensionsHandler;
23-
import graphql.annotations.processor.retrievers.GraphQLObjectHandler;
22+
import graphql.annotations.processor.retrievers.*;
23+
import graphql.annotations.processor.searchAlgorithms.BreadthFirstSearch;
24+
import graphql.annotations.processor.searchAlgorithms.ParentalSearch;
2425
import graphql.annotations.processor.typeFunctions.DefaultTypeFunction;
2526
import graphql.annotations.processor.typeFunctions.TypeFunction;
27+
import graphql.annotations.processor.util.DataFetcherConstructor;
2628
import graphql.relay.Relay;
2729
import graphql.schema.GraphQLObjectType;
2830

@@ -42,7 +44,38 @@ public class GraphQLAnnotations implements GraphQLAnnotationsProcessor {
4244
private ProcessingElementsContainer container;
4345

4446
public GraphQLAnnotations() {
45-
this(new DefaultTypeFunction(new GraphQLInputProcessor(), new GraphQLOutputProcessor()), new GraphQLObjectHandler(), new GraphQLExtensionsHandler());
47+
GraphQLObjectHandler objectHandler = new GraphQLObjectHandler();
48+
GraphQLTypeRetriever typeRetriever = new GraphQLTypeRetriever();
49+
GraphQLObjectInfoRetriever objectInfoRetriever = new GraphQLObjectInfoRetriever();
50+
GraphQLInterfaceRetriever interfaceRetriever = new GraphQLInterfaceRetriever();
51+
GraphQLFieldRetriever fieldRetriever = new GraphQLFieldRetriever();
52+
GraphQLInputProcessor inputProcessor = new GraphQLInputProcessor();
53+
GraphQLOutputProcessor outputProcessor = new GraphQLOutputProcessor();
54+
BreadthFirstSearch methodSearchAlgorithm = new BreadthFirstSearch(objectInfoRetriever);
55+
ParentalSearch fieldSearchAlgorithm = new ParentalSearch(objectInfoRetriever);
56+
DataFetcherConstructor dataFetcherConstructor = new DataFetcherConstructor();
57+
GraphQLExtensionsHandler extensionsHandler = new GraphQLExtensionsHandler();
58+
DefaultTypeFunction defaultTypeFunction = new DefaultTypeFunction(inputProcessor, outputProcessor);
59+
60+
objectHandler.setTypeRetriever(typeRetriever);
61+
typeRetriever.setGraphQLObjectInfoRetriever(objectInfoRetriever);
62+
typeRetriever.setGraphQLInterfaceRetriever(interfaceRetriever);
63+
typeRetriever.setMethodSearchAlgorithm(methodSearchAlgorithm);
64+
typeRetriever.setFieldSearchAlgorithm(fieldSearchAlgorithm);
65+
typeRetriever.setExtensionsHandler(extensionsHandler);
66+
typeRetriever.setGraphQLFieldRetriever(fieldRetriever);
67+
interfaceRetriever.setGraphQLTypeRetriever(typeRetriever);
68+
fieldRetriever.setDataFetcherConstructor(dataFetcherConstructor);
69+
inputProcessor.setGraphQLTypeRetriever(typeRetriever);
70+
outputProcessor.setGraphQLTypeRetriever(typeRetriever);
71+
extensionsHandler.setGraphQLObjectInfoRetriever(objectInfoRetriever);
72+
extensionsHandler.setFieldSearchAlgorithm(fieldSearchAlgorithm);
73+
extensionsHandler.setMethodSearchAlgorithm(methodSearchAlgorithm);
74+
extensionsHandler.setFieldRetriever(fieldRetriever);
75+
76+
this.graphQLObjectHandler = objectHandler;
77+
this.graphQLExtensionsHandler = extensionsHandler;
78+
this.container = new ProcessingElementsContainer(defaultTypeFunction);
4679
}
4780

4881
public GraphQLAnnotations(TypeFunction defaultTypeFunction, GraphQLObjectHandler graphQLObjectHandler, GraphQLExtensionsHandler graphQLExtensionsHandler) {
@@ -87,6 +120,14 @@ public Map<String, graphql.schema.GraphQLType> getTypeRegistry() {
87120
return container.getTypeRegistry();
88121
}
89122

123+
public GraphQLObjectHandler getObjectHandler() {
124+
return graphQLObjectHandler;
125+
}
126+
127+
public GraphQLExtensionsHandler getExtensionsHandler() {
128+
return graphQLExtensionsHandler;
129+
}
130+
90131
public ProcessingElementsContainer getContainer() {
91132
return container;
92133
}

src/main/java/graphql/annotations/processor/graphQLProcessors/GraphQLInputProcessor.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,6 @@ public class GraphQLInputProcessor {
2727

2828
private GraphQLTypeRetriever graphQLTypeRetriever;
2929

30-
public GraphQLInputProcessor(GraphQLTypeRetriever graphQLTypeRetriever) {
31-
this.graphQLTypeRetriever = graphQLTypeRetriever;
32-
}
33-
34-
public GraphQLInputProcessor() {
35-
this(new GraphQLTypeRetriever());
36-
}
37-
3830
/**
3931
* This will examine the object class and return a {@link GraphQLInputType} representation
4032
*
@@ -56,7 +48,7 @@ public void setGraphQLTypeRetriever(GraphQLTypeRetriever graphQLTypeRetriever) {
5648
}
5749

5850
public void unsetGraphQLTypeRetriever(GraphQLTypeRetriever graphQLTypeRetriever) {
59-
this.graphQLTypeRetriever = new GraphQLTypeRetriever();
51+
this.graphQLTypeRetriever = null;
6052
}
6153

6254
}

src/main/java/graphql/annotations/processor/graphQLProcessors/GraphQLOutputProcessor.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,6 @@ public class GraphQLOutputProcessor {
2929

3030
private GraphQLTypeRetriever graphQLTypeRetriever;
3131

32-
33-
public GraphQLOutputProcessor(GraphQLTypeRetriever graphQLTypeRetriever) {
34-
this.graphQLTypeRetriever = graphQLTypeRetriever;
35-
}
36-
37-
public GraphQLOutputProcessor() {
38-
this(new GraphQLTypeRetriever());
39-
}
40-
4132
/**
4233
* This will examine the object class and return a {@link GraphQLOutputType} representation
4334
* which may be a {@link GraphQLOutputType} or a {@link graphql.schema.GraphQLTypeReference}
@@ -59,6 +50,6 @@ public void setGraphQLTypeRetriever(GraphQLTypeRetriever graphQLTypeRetriever) {
5950
}
6051

6152
public void unsetGraphQLTypeRetriever(GraphQLTypeRetriever graphQLTypeRetriever) {
62-
this.graphQLTypeRetriever = new GraphQLTypeRetriever();
53+
this.graphQLTypeRetriever = null;
6354
}
6455
}

src/main/java/graphql/annotations/processor/retrievers/GraphQLExtensionsHandler.java

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -44,17 +44,6 @@ public class GraphQLExtensionsHandler {
4444
private SearchAlgorithm methodSearchAlgorithm;
4545
private GraphQLFieldRetriever fieldRetriever;
4646

47-
public GraphQLExtensionsHandler() {
48-
this(new GraphQLObjectInfoRetriever(), new ParentalSearch(new GraphQLObjectInfoRetriever()), new BreadthFirstSearch(new GraphQLObjectInfoRetriever()), new GraphQLFieldRetriever());
49-
}
50-
51-
public GraphQLExtensionsHandler(GraphQLObjectInfoRetriever graphQLObjectInfoRetriever, SearchAlgorithm fieldSearchAlgorithm, SearchAlgorithm methodSearchAlgorithm, GraphQLFieldRetriever fieldRetriever) {
52-
this.graphQLObjectInfoRetriever = graphQLObjectInfoRetriever;
53-
this.fieldSearchAlgorithm = fieldSearchAlgorithm;
54-
this.methodSearchAlgorithm = methodSearchAlgorithm;
55-
this.fieldRetriever = fieldRetriever;
56-
}
57-
5847
public List<GraphQLFieldDefinition> getExtensionFields(Class<?> object, List<String> definedFields, ProcessingElementsContainer container) throws CannotCastMemberException {
5948
List<GraphQLFieldDefinition> fields = new ArrayList<>();
6049
if (container.getExtensionsTypeRegistry().containsKey(object)) {
@@ -109,7 +98,7 @@ public void setGraphQLObjectInfoRetriever(GraphQLObjectInfoRetriever graphQLObje
10998
}
11099

111100
public void unsetGraphQLObjectInfoRetriever(GraphQLObjectInfoRetriever graphQLObjectInfoRetriever) {
112-
this.graphQLObjectInfoRetriever = new GraphQLObjectInfoRetriever();
101+
this.graphQLObjectInfoRetriever = null;
113102
}
114103

115104

@@ -119,7 +108,7 @@ public void setFieldSearchAlgorithm(SearchAlgorithm fieldSearchAlgorithm) {
119108
}
120109

121110
public void unsetFieldSearchAlgorithm(SearchAlgorithm fieldSearchAlgorithm) {
122-
this.fieldSearchAlgorithm = new ParentalSearch(new GraphQLObjectInfoRetriever());
111+
this.fieldSearchAlgorithm = null;
123112
}
124113

125114
@Reference(target = "(type=method)", policy=ReferencePolicy.DYNAMIC, policyOption= ReferencePolicyOption.GREEDY)
@@ -128,7 +117,7 @@ public void setMethodSearchAlgorithm(SearchAlgorithm methodSearchAlgorithm) {
128117
}
129118

130119
public void unsetMethodSearchAlgorithm(SearchAlgorithm methodSearchAlgorithm) {
131-
this.methodSearchAlgorithm = new BreadthFirstSearch(new GraphQLObjectInfoRetriever());
120+
this.methodSearchAlgorithm = null;
132121
}
133122

134123
@Reference(policy=ReferencePolicy.DYNAMIC, policyOption= ReferencePolicyOption.GREEDY)
@@ -137,6 +126,6 @@ public void setFieldRetriever(GraphQLFieldRetriever fieldRetriever) {
137126
}
138127

139128
public void unsetFieldRetriever(GraphQLFieldRetriever fieldRetriever) {
140-
this.fieldRetriever = new GraphQLFieldRetriever();
129+
this.fieldRetriever = null;
141130
}
142131
}

src/main/java/graphql/annotations/processor/retrievers/GraphQLInterfaceRetriever.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,6 @@ public class GraphQLInterfaceRetriever {
2828

2929
private GraphQLTypeRetriever graphQLTypeRetriever;
3030

31-
public GraphQLInterfaceRetriever(GraphQLTypeRetriever graphQLTypeRetriever) {
32-
this.graphQLTypeRetriever = graphQLTypeRetriever;
33-
}
34-
35-
public GraphQLInterfaceRetriever() {
36-
this(new GraphQLTypeRetriever());
37-
}
38-
3931
/**
4032
* This will examine the class and return a {@link graphql.schema.GraphQLOutputType} ready for further definition
4133
*
@@ -54,6 +46,6 @@ public void setGraphQLTypeRetriever(GraphQLTypeRetriever graphQLTypeRetriever) {
5446
}
5547

5648
public void unsetGraphQLTypeRetriever(GraphQLTypeRetriever graphQLOutputObjectRetriever) {
57-
this.graphQLTypeRetriever = new GraphQLTypeRetriever();
49+
this.graphQLTypeRetriever = null;
5850
}
5951
}

src/main/java/graphql/annotations/processor/retrievers/GraphQLObjectHandler.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,6 @@ public class GraphQLObjectHandler {
2929

3030
private GraphQLTypeRetriever typeRetriever;
3131

32-
public GraphQLObjectHandler(GraphQLTypeRetriever typeRetriever) {
33-
this.typeRetriever = typeRetriever;
34-
}
35-
36-
public GraphQLObjectHandler() {
37-
this(new GraphQLTypeRetriever());
38-
}
39-
4032
public GraphQLObjectType getObject(Class<?> object, ProcessingElementsContainer container) throws GraphQLAnnotationsException, CannotCastMemberException {
4133
GraphQLOutputType type = (GraphQLOutputType) typeRetriever.getGraphQLType(object, container, false);
4234
if (type instanceof GraphQLObjectType) {
@@ -46,13 +38,17 @@ public GraphQLObjectType getObject(Class<?> object, ProcessingElementsContainer
4638
}
4739
}
4840

41+
public GraphQLTypeRetriever getTypeRetriever() {
42+
return typeRetriever;
43+
}
44+
4945
@Reference(policy= ReferencePolicy.DYNAMIC, policyOption= ReferencePolicyOption.GREEDY)
5046
public void setTypeRetriever(GraphQLTypeRetriever typeRetriever) {
5147
this.typeRetriever = typeRetriever;
5248
}
5349

5450
public void unsetTypeRetriever(GraphQLTypeRetriever typeRetriever) {
55-
this.typeRetriever = new GraphQLTypeRetriever();
51+
this.typeRetriever = null;
5652
}
5753

5854

src/main/java/graphql/annotations/processor/retrievers/GraphQLTypeRetriever.java

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
import graphql.annotations.processor.ProcessingElementsContainer;
2020
import graphql.annotations.processor.exceptions.CannotCastMemberException;
2121
import graphql.annotations.processor.exceptions.GraphQLAnnotationsException;
22-
import graphql.annotations.processor.searchAlgorithms.BreadthFirstSearch;
23-
import graphql.annotations.processor.searchAlgorithms.ParentalSearch;
2422
import graphql.annotations.processor.searchAlgorithms.SearchAlgorithm;
2523
import graphql.annotations.processor.typeBuilders.*;
2624
import graphql.schema.*;
@@ -42,19 +40,6 @@ public class GraphQLTypeRetriever {
4240
private GraphQLExtensionsHandler extensionsHandler;
4341

4442

45-
public GraphQLTypeRetriever(GraphQLObjectInfoRetriever graphQLObjectInfoRetriever, GraphQLInterfaceRetriever graphQLInterfaceRetriever, GraphQLFieldRetriever graphQLFieldRetriever, SearchAlgorithm fieldSearchAlgorithm, SearchAlgorithm methodSearchAlgorithm, GraphQLExtensionsHandler extensionsHandler) {
46-
this.graphQLObjectInfoRetriever = graphQLObjectInfoRetriever;
47-
this.graphQLInterfaceRetriever = graphQLInterfaceRetriever;
48-
this.graphQLFieldRetriever = graphQLFieldRetriever;
49-
this.fieldSearchAlgorithm = fieldSearchAlgorithm;
50-
this.methodSearchAlgorithm = methodSearchAlgorithm;
51-
this.extensionsHandler = extensionsHandler;
52-
}
53-
54-
public GraphQLTypeRetriever() {
55-
this(new GraphQLObjectInfoRetriever(), new GraphQLInterfaceRetriever(), new GraphQLFieldRetriever(), new ParentalSearch(new GraphQLObjectInfoRetriever()), new BreadthFirstSearch(new GraphQLObjectInfoRetriever()), new GraphQLExtensionsHandler());
56-
}
57-
5843
/**
5944
* This will examine the object and will return a {@link GraphQLType} based on the class type and annotationTypes.
6045
* - If its annotated with {@link graphql.annotations.annotationTypes.GraphQLUnion} it will return a {@link GraphQLUnionType}
@@ -96,10 +81,10 @@ public GraphQLType getGraphQLType(Class<?> object, ProcessingElementsContainer c
9681
type = new EnumBuilder(graphQLObjectInfoRetriever).getEnumBuilder(object).build();
9782
} else {
9883
if (isInput) {
99-
type = new InputObjectBuilder(graphQLObjectInfoRetriever, methodSearchAlgorithm, fieldSearchAlgorithm,
84+
type = new InputObjectBuilder(graphQLObjectInfoRetriever, fieldSearchAlgorithm, methodSearchAlgorithm,
10085
graphQLFieldRetriever).getInputObjectBuilder(object, container).build();
10186
} else {
102-
type = new OutputObjectBuilder(graphQLObjectInfoRetriever, methodSearchAlgorithm, fieldSearchAlgorithm,
87+
type = new OutputObjectBuilder(graphQLObjectInfoRetriever, fieldSearchAlgorithm, methodSearchAlgorithm,
10388
graphQLFieldRetriever, graphQLInterfaceRetriever, extensionsHandler).getOutputObjectBuilder(object, container).build();
10489
}
10590
}
@@ -110,14 +95,25 @@ public GraphQLType getGraphQLType(Class<?> object, ProcessingElementsContainer c
11095
return type;
11196
}
11297

98+
public GraphQLObjectInfoRetriever getGraphQLObjectInfoRetriever() {
99+
return graphQLObjectInfoRetriever;
100+
}
101+
102+
public GraphQLInterfaceRetriever getGraphQLInterfaceRetriever() {
103+
return graphQLInterfaceRetriever;
104+
}
105+
106+
public GraphQLFieldRetriever getGraphQLFieldRetriever() {
107+
return graphQLFieldRetriever;
108+
}
113109

114110
@Reference(policy= ReferencePolicy.DYNAMIC, policyOption= ReferencePolicyOption.GREEDY)
115111
public void setGraphQLObjectInfoRetriever(GraphQLObjectInfoRetriever graphQLObjectInfoRetriever) {
116112
this.graphQLObjectInfoRetriever = graphQLObjectInfoRetriever;
117113
}
118114

119115
public void unsetGraphQLObjectInfoRetriever(GraphQLObjectInfoRetriever graphQLObjectInfoRetriever) {
120-
this.graphQLObjectInfoRetriever = new GraphQLObjectInfoRetriever();
116+
this.graphQLObjectInfoRetriever = null;
121117
}
122118

123119
@Reference(policy= ReferencePolicy.DYNAMIC, policyOption= ReferencePolicyOption.GREEDY)
@@ -126,7 +122,7 @@ public void setGraphQLInterfaceRetriever(GraphQLInterfaceRetriever graphQLInterf
126122
}
127123

128124
public void unsetGraphQLInterfaceRetriever(GraphQLInterfaceRetriever graphQLInterfaceRetriever) {
129-
this.graphQLInterfaceRetriever = new GraphQLInterfaceRetriever();
125+
this.graphQLInterfaceRetriever = null;
130126
}
131127

132128
@Reference(policy=ReferencePolicy.DYNAMIC, policyOption= ReferencePolicyOption.GREEDY)
@@ -135,7 +131,7 @@ public void setGraphQLFieldRetriever(GraphQLFieldRetriever graphQLFieldRetriever
135131
}
136132

137133
public void unsetGraphQLFieldRetriever(GraphQLFieldRetriever graphQLFieldRetriever) {
138-
this.graphQLFieldRetriever = new GraphQLFieldRetriever();
134+
this.graphQLFieldRetriever = null;
139135
}
140136

141137
@Reference(target = "(type=field)", policy=ReferencePolicy.DYNAMIC, policyOption= ReferencePolicyOption.GREEDY)
@@ -144,7 +140,7 @@ public void setFieldSearchAlgorithm(SearchAlgorithm fieldSearchAlgorithm) {
144140
}
145141

146142
public void unsetFieldSearchAlgorithm(SearchAlgorithm fieldSearchAlgorithm) {
147-
this.fieldSearchAlgorithm = new ParentalSearch(new GraphQLObjectInfoRetriever());
143+
this.fieldSearchAlgorithm = null;
148144
}
149145

150146
@Reference(target = "(type=method)", policy=ReferencePolicy.DYNAMIC, policyOption= ReferencePolicyOption.GREEDY)
@@ -153,7 +149,7 @@ public void setMethodSearchAlgorithm(SearchAlgorithm methodSearchAlgorithm) {
153149
}
154150

155151
public void unsetMethodSearchAlgorithm(SearchAlgorithm methodSearchAlgorithm) {
156-
this.methodSearchAlgorithm = new BreadthFirstSearch(new GraphQLObjectInfoRetriever());
152+
this.methodSearchAlgorithm = null;
157153
}
158154

159155
@Reference(policy=ReferencePolicy.DYNAMIC, policyOption= ReferencePolicyOption.GREEDY)
@@ -162,6 +158,6 @@ public void setExtensionsHandler(GraphQLExtensionsHandler extensionsHandler) {
162158
}
163159

164160
public void unsetExtensionsHandler(GraphQLExtensionsHandler extensionsHandler) {
165-
this.extensionsHandler = new GraphQLExtensionsHandler();
161+
this.extensionsHandler = null;
166162
}
167163
}

src/main/java/graphql/annotations/processor/searchAlgorithms/BreadthFirstSearch.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,6 @@ public void setGraphQLObjectInfoRetriever(GraphQLObjectInfoRetriever graphQLObje
9191
}
9292

9393
public void unsetGraphQLObjectInfoRetriever(GraphQLObjectInfoRetriever graphQLObjectInfoRetriever) {
94-
this.graphQLObjectInfoRetriever = new GraphQLObjectInfoRetriever();
94+
this.graphQLObjectInfoRetriever = null;
9595
}
9696
}

src/main/java/graphql/annotations/processor/searchAlgorithms/ParentalSearch.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,6 @@ public void setGraphQLObjectInfoRetriever(GraphQLObjectInfoRetriever graphQLObje
7272
}
7373

7474
public void unsetGraphQLObjectInfoRetriever(GraphQLObjectInfoRetriever graphQLObjectInfoRetriever) {
75-
this.graphQLObjectInfoRetriever = new GraphQLObjectInfoRetriever();
75+
this.graphQLObjectInfoRetriever = null;
7676
}
7777
}

src/main/java/graphql/annotations/processor/typeBuilders/InputObjectBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public class InputObjectBuilder {
4040
private SearchAlgorithm methodSearchAlgorithm;
4141
private GraphQLFieldRetriever graphQLFieldRetriever;
4242

43-
public InputObjectBuilder(GraphQLObjectInfoRetriever graphQLObjectInfoRetriever, SearchAlgorithm methodSearchAlgorithm, SearchAlgorithm fieldSearchAlgorithm, GraphQLFieldRetriever graphQLFieldRetriever) {
43+
public InputObjectBuilder(GraphQLObjectInfoRetriever graphQLObjectInfoRetriever, SearchAlgorithm fieldSearchAlgorithm, SearchAlgorithm methodSearchAlgorithm, GraphQLFieldRetriever graphQLFieldRetriever) {
4444
this.graphQLObjectInfoRetriever = graphQLObjectInfoRetriever;
4545
this.methodSearchAlgorithm = methodSearchAlgorithm;
4646
this.fieldSearchAlgorithm = fieldSearchAlgorithm;

0 commit comments

Comments
 (0)