3939@ NullMarked
4040public class ImmutableTypeDefinitionRegistry extends TypeDefinitionRegistry {
4141
42- private final Map <InterfaceTypeDefinition , List <ImplementingTypeDefinition >> allImplementationsOf ;
43- private final Map <InterfaceTypeDefinition , List <ObjectTypeDefinition >> implementationsOf ;
44-
4542 ImmutableTypeDefinitionRegistry (TypeDefinitionRegistry registry ) {
4643 super (
4744 copyOf (registry .objectTypeExtensions ),
@@ -57,50 +54,9 @@ public class ImmutableTypeDefinitionRegistry extends TypeDefinitionRegistry {
5754 registry .schema ,
5855 registry .schemaParseOrder
5956 );
60- allImplementationsOf = calculateAllImplementsOf ();
61- implementationsOf = calculateImplementationsOf (allImplementationsOf );
62- }
63-
64- private Map <InterfaceTypeDefinition , List <ImplementingTypeDefinition >> calculateAllImplementsOf () {
65- ImmutableMap .Builder <InterfaceTypeDefinition , List <ImplementingTypeDefinition >> mapBuilder = ImmutableMap .builder ();
66- List <ImplementingTypeDefinition > implementingTypeDefinitions = getTypes (ImplementingTypeDefinition .class );
67- for (TypeDefinition typeDef : types .values ()) {
68- if (typeDef instanceof InterfaceTypeDefinition ) {
69- InterfaceTypeDefinition interfaceTypeDef = (InterfaceTypeDefinition ) typeDef ;
70- ImmutableList .Builder <ImplementingTypeDefinition > listBuilder = ImmutableList .builder ();
71- for (ImplementingTypeDefinition <?> implementingTypeDefinition : implementingTypeDefinitions ) {
72- List <Type > implementsList = implementingTypeDefinition .getImplements ();
73- for (Type iFace : implementsList ) {
74- Optional <InterfaceTypeDefinition > implementsAnInterface = getType (iFace , InterfaceTypeDefinition .class );
75- if (implementsAnInterface .isPresent ()) {
76- boolean equals = implementsAnInterface .get ().getName ().equals (interfaceTypeDef .getName ());
77- if (equals ) {
78- listBuilder .add (implementingTypeDefinition );
79- break ;
80- }
81- }
82- }
83- }
84- mapBuilder .put (interfaceTypeDef , listBuilder .build ());
85- }
86- }
87- return mapBuilder .build ();
88- }
89-
90- private Map <InterfaceTypeDefinition , List <ObjectTypeDefinition >> calculateImplementationsOf (Map <InterfaceTypeDefinition , List <ImplementingTypeDefinition >> allImplementationsOf1 ) {
91- ImmutableMap .Builder <InterfaceTypeDefinition , List <ObjectTypeDefinition >> mapBuilder = ImmutableMap .builder ();
92- for (Map .Entry <InterfaceTypeDefinition , List <ImplementingTypeDefinition >> entry : allImplementationsOf1 .entrySet ()) {
93- ImmutableList .Builder <ObjectTypeDefinition > listBuilder = ImmutableList .builder ();
94- for (ImplementingTypeDefinition implementingTypeDefinition : entry .getValue ()) {
95- if (implementingTypeDefinition instanceof ObjectTypeDefinition ) {
96- listBuilder .add ((ObjectTypeDefinition ) implementingTypeDefinition );
97- }
98- }
99- mapBuilder .put (entry .getKey (), listBuilder .build ());
100- }
101- return mapBuilder .build ();
10257 }
10358
59+
10460 private UnsupportedOperationException unsupportedOperationException () {
10561 return new UnsupportedOperationException ("The TypeDefinitionRegistry is in read only mode" );
10662 }
@@ -179,14 +135,4 @@ public List<SchemaExtensionDefinition> getSchemaExtensionDefinitions() {
179135 public Map <String , DirectiveDefinition > getDirectiveDefinitions () {
180136 return directiveDefinitions ;
181137 }
182-
183- @ Override
184- public List <ImplementingTypeDefinition > getAllImplementationsOf (InterfaceTypeDefinition targetInterface ) {
185- return allImplementationsOf .getOrDefault (targetInterface , ImmutableList .of ());
186- }
187-
188- @ Override
189- public List <ObjectTypeDefinition > getImplementationsOf (InterfaceTypeDefinition targetInterface ) {
190- return implementationsOf .getOrDefault (targetInterface , ImmutableList .of ());
191- }
192138}
0 commit comments