in src/main/com/intellij/lang/jsgraphql/ide/introspection/GraphQLIntrospectionResultToSchema.java [36:94]
public Document createSchemaDefinition(@NotNull Map<String, Object> introspectionResult) {
assertTrue(introspectionResult.get("__schema") != null, () -> "__schema expected");
Map<String, Object> schema = (Map<String, Object>)introspectionResult.get("__schema");
SchemaDefinition.Builder schemaDefinition = SchemaDefinition.newSchemaDefinition();
Map<String, Object> queryType = (Map<String, Object>)schema.get("queryType");
boolean nonDefaultQueryName = false;
if (queryType != null) {
TypeName query = TypeName.newTypeName().name((String)queryType.get("name")).build();
nonDefaultQueryName = !"Query".equals(query.getName());
schemaDefinition.operationTypeDefinition(
OperationTypeDefinition.newOperationTypeDefinition().name("query").typeName(query).build());
}
Map<String, Object> mutationType = (Map<String, Object>)schema.get("mutationType");
boolean nonDefaultMutationName = false;
if (mutationType != null) {
TypeName mutation = TypeName.newTypeName().name((String)mutationType.get("name")).build();
nonDefaultMutationName = !"Mutation".equals(mutation.getName());
schemaDefinition.operationTypeDefinition(
OperationTypeDefinition.newOperationTypeDefinition().name("mutation").typeName(mutation).build());
}
Map<String, Object> subscriptionType = (Map<String, Object>)schema.get("subscriptionType");
boolean nonDefaultSubscriptionName = false;
if (subscriptionType != null) {
TypeName subscription = TypeName.newTypeName().name(((String)subscriptionType.get("name"))).build();
nonDefaultSubscriptionName = !"Subscription".equals(subscription.getName());
schemaDefinition.operationTypeDefinition(
OperationTypeDefinition.newOperationTypeDefinition().name("subscription")
.typeName(subscription).build());
}
Document.Builder document = Document.newDocument();
if (nonDefaultQueryName || nonDefaultMutationName || nonDefaultSubscriptionName) {
document.definition(schemaDefinition.build());
}
List<Map<String, Object>> types = (List<Map<String, Object>>)schema.get("types");
if (types != null) {
for (Map<String, Object> type : types) {
if (type == null) continue;
TypeDefinition<?> typeDefinition = createTypeDefinition(type);
document.definition(typeDefinition);
}
}
List<Map<String, Object>> directives = (List<Map<String, Object>>)schema.get("directives");
if (directives != null) {
for (Map<String, Object> directive : directives) {
if (directive == null) continue;
DirectiveDefinition directiveDefinition = createDirectiveDefinition(directive);
document.definition(directiveDefinition);
}
}
return document.build();
}