1414 */
1515package graphql .annotations .processor ;
1616
17- import graphql .annotations .processor .exceptions .GraphQLAnnotationsException ;
18- import graphql .annotations .processor .retrievers .GraphQLObjectHandler ;
1917import graphql .annotations .annotationTypes .GraphQLName ;
2018import graphql .annotations .annotationTypes .GraphQLTypeExtension ;
19+ import graphql .annotations .processor .exceptions .GraphQLAnnotationsException ;
2120import graphql .annotations .processor .graphQLProcessors .GraphQLAnnotationsProcessor ;
2221import graphql .annotations .processor .graphQLProcessors .GraphQLInputProcessor ;
2322import graphql .annotations .processor .graphQLProcessors .GraphQLOutputProcessor ;
23+ import graphql .annotations .processor .retrievers .GraphQLObjectHandler ;
2424import graphql .annotations .processor .typeFunctions .DefaultTypeFunction ;
2525import graphql .annotations .processor .typeFunctions .TypeFunction ;
26- import graphql .annotations .processor .retrievers .GraphQLObjectInfoRetriever ;
2726import graphql .relay .Relay ;
28- import graphql .schema .GraphQLFieldDefinition ;
2927import graphql .schema .GraphQLObjectType ;
3028import org .osgi .service .component .annotations .Component ;
29+ import org .osgi .service .component .annotations .Reference ;
3130
32- import java .util .*;
31+ import java .util .HashSet ;
32+ import java .util .Map ;
3333
3434import static graphql .annotations .processor .util .NamingKit .toGraphqlName ;
3535
@@ -43,26 +43,13 @@ public class GraphQLAnnotations implements GraphQLAnnotationsProcessor {
4343 private GraphQLObjectHandler graphQLObjectHandler ;
4444 private ProcessingElementsContainer container ;
4545
46- private GraphQLObjectInfoRetriever graphQLObjectInfoRetriever ;
47-
4846 public GraphQLAnnotations () {
49- this (new DefaultTypeFunction (new GraphQLInputProcessor (), new GraphQLOutputProcessor ()), new GraphQLObjectInfoRetriever (), new GraphQLObjectHandler ());
47+ this (new DefaultTypeFunction (new GraphQLInputProcessor (), new GraphQLOutputProcessor ()), new GraphQLObjectHandler ());
5048 }
5149
52- public GraphQLAnnotations (TypeFunction defaultTypeFunction , GraphQLObjectInfoRetriever graphQLObjectInfoRetriever , GraphQLObjectHandler graphQLObjectHandler ) {
53- this .graphQLObjectInfoRetriever = graphQLObjectInfoRetriever ;
54- this .defaultTypeFunction = defaultTypeFunction ;
50+ public GraphQLAnnotations (TypeFunction defaultTypeFunction , GraphQLObjectHandler graphQLObjectHandler ) {
5551 this .graphQLObjectHandler = graphQLObjectHandler ;
56- this .container = initializeContainer (this .defaultTypeFunction );
57- }
58-
59- private ProcessingElementsContainer initializeContainer (TypeFunction defaultTypeFunction ) {
60- Map <String , graphql .schema .GraphQLType > typeRegistry = new HashMap <>();
61- Map <Class <?>, Set <Class <?>>> extensionsTypeRegistry = new HashMap <>();
62- final Stack <String > processing = new Stack <>();
63- Relay relay = new Relay ();
64- ProcessingElementsContainer container = new ProcessingElementsContainer (defaultTypeFunction , relay , typeRegistry , extensionsTypeRegistry , processing );
65- return container ;
52+ this .container = new ProcessingElementsContainer (defaultTypeFunction );
6653 }
6754
6855 public static GraphQLAnnotations instance = new GraphQLAnnotations ();
@@ -75,32 +62,16 @@ public void setRelay(Relay relay) {
7562 this .container .setRelay (relay );
7663 }
7764
78-
7965 public String getTypeName (Class <?> objectClass ) {
8066 GraphQLName name = objectClass .getAnnotation (GraphQLName .class );
8167 return toGraphqlName (name == null ? objectClass .getSimpleName () : name .value ());
8268 }
8369
8470 public static GraphQLObjectType object (Class <?> object ) throws GraphQLAnnotationsException {
85- return new GraphQLObjectHandler ().getObject (object , getInstance ().getContainer ());
86- }
87-
88- public static class GraphQLFieldDefinitionWrapper extends GraphQLFieldDefinition {
89-
90- public GraphQLFieldDefinitionWrapper (GraphQLFieldDefinition fieldDefinition ) {
91- super (fieldDefinition .getName (), fieldDefinition .getDescription (), fieldDefinition .getType (),
92- fieldDefinition .getDataFetcher (), fieldDefinition .getArguments (), fieldDefinition .getDeprecationReason ());
93- }
94-
95- @ Override
96- public boolean equals (Object obj ) {
97- return obj instanceof GraphQLFieldDefinition &&
98- ((GraphQLFieldDefinition ) obj ).getName ().contentEquals (getName ());
99- }
71+ GraphQLAnnotations instance = getInstance ();
72+ return instance .graphQLObjectHandler .getObject (object , instance .getContainer ());
10073 }
10174
102- protected TypeFunction defaultTypeFunction ;
103-
10475 public void registerTypeExtension (Class <?> objectClass ) {
10576 GraphQLTypeExtension typeExtension = objectClass .getAnnotation (GraphQLTypeExtension .class );
10677 if (typeExtension == null ) {
@@ -127,7 +98,7 @@ public void unregisterTypeExtension(Class<?> objectClass) {
12798 }
12899
129100 public void registerType (TypeFunction typeFunction ) {
130- ((DefaultTypeFunction ) defaultTypeFunction ).register (typeFunction );
101+ ((DefaultTypeFunction ) container . getDefaultTypeFunction () ).register (typeFunction );
131102 }
132103
133104 public static void register (TypeFunction typeFunction ) {
@@ -142,4 +113,13 @@ public ProcessingElementsContainer getContainer() {
142113 return container ;
143114 }
144115
116+ public void setContainer (ProcessingElementsContainer container ) {
117+ this .container = container ;
118+ }
119+
120+ @ Reference (target = "(type=default)" )
121+ public void setDefaultTypeFunction (TypeFunction function ) {
122+ this .container .setDefaultTypeFunction (function );
123+ }
124+
145125}
0 commit comments