Repository navigation
Expand file tree
/
Copy pathImmutableTypeDefinitionRegistry.java
More file actions
132 lines (112 loc) · 4.28 KB
/
Copy pathImmutableTypeDefinitionRegistry.java
File metadata and controls
132 lines (112 loc) · 4.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package graphql.schema.idl;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import graphql.GraphQLError;
import graphql.PublicApi;
import graphql.language.DirectiveDefinition;
import graphql.language.EnumTypeExtensionDefinition;
import graphql.language.InputObjectTypeExtensionDefinition;
import graphql.language.InterfaceTypeExtensionDefinition;
import graphql.language.ObjectTypeExtensionDefinition;
import graphql.language.SDLDefinition;
import graphql.language.ScalarTypeDefinition;
import graphql.language.ScalarTypeExtensionDefinition;
import graphql.language.SchemaExtensionDefinition;
import graphql.language.TypeDefinition;
import graphql.language.UnionTypeExtensionDefinition;
import graphql.schema.idl.errors.SchemaProblem;
import org.jspecify.annotations.NullMarked;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import static com.google.common.collect.ImmutableMap.copyOf;
/**
* A {@link ImmutableTypeDefinitionRegistry} contains an immutable set of type definitions that come from compiling
* a graphql schema definition file via {@link SchemaParser#parse(String)} and is more performant because it
* uses {@link ImmutableMap} structures.
*/
@SuppressWarnings("rawtypes")
@PublicApi
@NullMarked
public class ImmutableTypeDefinitionRegistry extends TypeDefinitionRegistry {
ImmutableTypeDefinitionRegistry(TypeDefinitionRegistry registry) {
super(
copyOf(registry.objectTypeExtensions),
copyOf(registry.interfaceTypeExtensions),
copyOf(registry.unionTypeExtensions),
copyOf(registry.enumTypeExtensions),
copyOf(registry.scalarTypeExtensions),
copyOf(registry.inputObjectTypeExtensions),
copyOf(registry.types),
copyOf(registry.scalars()), // has an extra side effect
copyOf(registry.directiveDefinitions),
ImmutableList.copyOf(registry.schemaExtensionDefinitions),
registry.schema,
registry.schemaParseOrder
);
}
private UnsupportedOperationException unsupportedOperationException() {
return new UnsupportedOperationException("The TypeDefinitionRegistry is in read only mode");
}
@Override
public TypeDefinitionRegistry merge(TypeDefinitionRegistry typeRegistry) throws SchemaProblem {
throw unsupportedOperationException();
}
@Override
public Optional<GraphQLError> addAll(Collection<SDLDefinition> definitions) {
throw unsupportedOperationException();
}
@Override
public Optional<GraphQLError> add(SDLDefinition definition) {
throw unsupportedOperationException();
}
@Override
public void remove(SDLDefinition definition) {
throw unsupportedOperationException();
}
@Override
public void remove(String key, SDLDefinition definition) {
throw unsupportedOperationException();
}
@Override
public Map<String, TypeDefinition> types() {
return types;
}
@Override
public Map<String, ScalarTypeDefinition> scalars() {
return scalarTypes;
}
@Override
public Map<String, List<ObjectTypeExtensionDefinition>> objectTypeExtensions() {
return objectTypeExtensions;
}
@Override
public Map<String, List<InterfaceTypeExtensionDefinition>> interfaceTypeExtensions() {
return interfaceTypeExtensions;
}
@Override
public Map<String, List<UnionTypeExtensionDefinition>> unionTypeExtensions() {
return unionTypeExtensions;
}
@Override
public Map<String, List<EnumTypeExtensionDefinition>> enumTypeExtensions() {
return enumTypeExtensions;
}
@Override
public Map<String, List<ScalarTypeExtensionDefinition>> scalarTypeExtensions() {
return scalarTypeExtensions;
}
@Override
public Map<String, List<InputObjectTypeExtensionDefinition>> inputObjectTypeExtensions() {
return inputObjectTypeExtensions;
}
@Override
public List<SchemaExtensionDefinition> getSchemaExtensionDefinitions() {
return schemaExtensionDefinitions;
}
@Override
public Map<String, DirectiveDefinition> getDirectiveDefinitions() {
return directiveDefinitions;
}
}