override fun postProcessEnvironment()

in graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/autoconfig/DgsSpringGraphQLEnvironmentPostProcessor.kt [31:74]


    override fun postProcessEnvironment(
        environment: ConfigurableEnvironment,
        application: SpringApplication,
    ) {
        val properties = mutableMapOf<String, Any>()

        if (environment.getProperty(SPRING_GRAPHQL_SCHEMA_INTROSPECTION_ENABLED) != null &&
            environment.getProperty(DGS_GRAPHQL_INTROSPECTION_ENABLED) != null
        ) {
            throw RuntimeException(
                "Both properties `$SPRING_GRAPHQL_SCHEMA_INTROSPECTION_ENABLED` and `$DGS_GRAPHQL_INTROSPECTION_ENABLED` are explicitly set. Use `$DGS_GRAPHQL_INTROSPECTION_ENABLED` only",
            )
        } else if (environment.getProperty(DGS_GRAPHQL_INTROSPECTION_ENABLED) != null) {
            properties[SPRING_GRAPHQL_SCHEMA_INTROSPECTION_ENABLED] = environment.getProperty(
                DGS_GRAPHQL_INTROSPECTION_ENABLED,
            ) ?: true
        } else {
            properties[SPRING_GRAPHQL_SCHEMA_INTROSPECTION_ENABLED] =
                environment[SPRING_GRAPHQL_SCHEMA_INTROSPECTION_ENABLED] ?: true
        }

        properties["spring.graphql.graphiql.enabled"] = environment.getProperty("dgs.graphql.graphiql.enabled") ?: true
        properties["spring.graphql.graphiql.path"] = environment.getProperty("dgs.graphql.graphiql.path") ?: "/graphiql"
        properties["spring.graphql.path"] = environment.getProperty("dgs.graphql.path") ?: "/graphql"
        properties["spring.graphql.websocket.connection-init-timeout"] =
            environment.getProperty("dgs.graphql.websocket.connection-init-timeout") ?: "10s"

        environment.getProperty("dgs.graphql.websocket.path")?.let { websocketPath ->
            properties["spring.graphql.websocket.path"] = websocketPath
        }

        if (environment.getProperty("dgs.graphql.virtualthreads.enabled") == null &&
            environment.getProperty("spring.threads.virtual.enabled") == "true"
        ) {
            properties["dgs.graphql.virtualthreads.enabled"] = true
        }

        environment.propertySources.addLast(
            MapPropertySource(
                "dgs-spring-graphql-defaults",
                properties,
            ),
        )
    }