public Document createSchemaDefinition()

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();
  }