Skip to content

Commit bb7324f

Browse files
smyrickShane Myrick
andauthored
[spring] Refactor config classes and internal functions (#656)
* [spring] Refactor config classes and internal functions * Optimize imports Co-authored-by: Shane Myrick <[email protected]>
1 parent cc782ad commit bb7324f

File tree

6 files changed

+48
-28
lines changed

6 files changed

+48
-28
lines changed

graphql-kotlin-spring-server/src/main/kotlin/com/expediagroup/graphql/spring/FederationAutoConfiguration.kt renamed to graphql-kotlin-spring-server/src/main/kotlin/com/expediagroup/graphql/spring/FederatedSchemaAutoConfiguration.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import com.expediagroup.graphql.federation.FederatedSchemaGeneratorConfig
2323
import com.expediagroup.graphql.federation.FederatedSchemaGeneratorHooks
2424
import com.expediagroup.graphql.federation.execution.FederatedTypeRegistry
2525
import com.expediagroup.graphql.federation.toFederatedSchema
26+
import com.expediagroup.graphql.spring.extensions.toTopLevelObjects
2627
import com.expediagroup.graphql.spring.operations.Mutation
2728
import com.expediagroup.graphql.spring.operations.Query
2829
import com.expediagroup.graphql.spring.operations.Subscription
@@ -39,9 +40,9 @@ import java.util.Optional
3940
*/
4041
@ConditionalOnProperty(value = ["graphql.federation.enabled"], havingValue = "true")
4142
@Configuration
42-
class FederationAutoConfiguration {
43+
class FederatedSchemaAutoConfiguration {
4344

44-
private val logger = LoggerFactory.getLogger(FederationAutoConfiguration::class.java)
45+
private val logger = LoggerFactory.getLogger(FederatedSchemaAutoConfiguration::class.java)
4546

4647
@Bean
4748
@ConditionalOnMissingBean

graphql-kotlin-spring-server/src/main/kotlin/com/expediagroup/graphql/spring/GraphQLAutoConfiguration.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ const val DEFAULT_INSTRUMENTATION_ORDER = 0
5757
@Import(
5858
RoutesConfiguration::class,
5959
SchemaAutoConfiguration::class,
60-
FederationAutoConfiguration::class,
60+
FederatedSchemaAutoConfiguration::class,
6161
SubscriptionAutoConfiguration::class,
6262
PlaygroundAutoConfiguration::class
6363
)

graphql-kotlin-spring-server/src/main/kotlin/com/expediagroup/graphql/spring/PlaygroundAutoConfiguration.kt

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
2121
import org.springframework.context.annotation.Bean
2222
import org.springframework.context.annotation.Configuration
2323
import org.springframework.core.io.Resource
24-
import org.springframework.web.reactive.function.server.RouterFunction
25-
import org.springframework.web.reactive.function.server.ServerResponse
2624
import org.springframework.web.reactive.function.server.bodyValueAndAwait
2725
import org.springframework.web.reactive.function.server.coRouter
2826
import org.springframework.web.reactive.function.server.html
@@ -37,17 +35,16 @@ class PlaygroundAutoConfiguration(
3735
@Value("classpath:/graphql-playground.html") private val playgroundHtml: Resource
3836
) {
3937

38+
private val body = playgroundHtml.inputStream.bufferedReader().use { reader ->
39+
reader.readText()
40+
.replace("\${graphQLEndpoint}", config.endpoint)
41+
.replace("\${subscriptionsEndpoint}", config.subscriptions.endpoint)
42+
}
43+
4044
@Bean
41-
fun playgroundRoute(): RouterFunction<ServerResponse> {
42-
val body = playgroundHtml.inputStream.bufferedReader().use { reader ->
43-
reader.readText()
44-
.replace("\${graphQLEndpoint}", config.endpoint)
45-
.replace("\${subscriptionsEndpoint}", config.subscriptions.endpoint)
46-
}
47-
return coRouter {
48-
GET(config.playground.endpoint) {
49-
ok().html().bodyValueAndAwait(body)
50-
}
45+
fun playgroundRoute() = coRouter {
46+
GET(config.playground.endpoint) {
47+
ok().html().bodyValueAndAwait(body)
5148
}
5249
}
5350
}

graphql-kotlin-spring-server/src/main/kotlin/com/expediagroup/graphql/spring/SchemaAutoConfiguration.kt

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,17 @@ package com.expediagroup.graphql.spring
1818

1919
import com.expediagroup.graphql.SchemaGeneratorConfig
2020
import com.expediagroup.graphql.TopLevelNames
21-
import com.expediagroup.graphql.TopLevelObject
2221
import com.expediagroup.graphql.execution.KotlinDataFetcherFactoryProvider
2322
import com.expediagroup.graphql.extensions.print
2423
import com.expediagroup.graphql.hooks.NoopSchemaGeneratorHooks
2524
import com.expediagroup.graphql.hooks.SchemaGeneratorHooks
25+
import com.expediagroup.graphql.spring.extensions.toTopLevelObjects
2626
import com.expediagroup.graphql.spring.operations.Mutation
2727
import com.expediagroup.graphql.spring.operations.Query
2828
import com.expediagroup.graphql.spring.operations.Subscription
2929
import com.expediagroup.graphql.toSchema
3030
import graphql.schema.GraphQLSchema
3131
import org.slf4j.LoggerFactory
32-
import org.springframework.aop.framework.Advised
33-
import org.springframework.aop.support.AopUtils
3432
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
3533
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
3634
import org.springframework.context.annotation.Bean
@@ -84,12 +82,3 @@ class SchemaAutoConfiguration {
8482
return schema
8583
}
8684
}
87-
88-
internal fun List<Any>.toTopLevelObjects() = this.map {
89-
val klazz = if (AopUtils.isAopProxy(it) && it is Advised) {
90-
it.targetSource.target!!::class
91-
} else {
92-
it::class
93-
}
94-
TopLevelObject(it, klazz)
95-
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/*
2+
* Copyright 2020 Expedia, Inc
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.expediagroup.graphql.spring.extensions
18+
19+
import com.expediagroup.graphql.TopLevelObject
20+
import org.springframework.aop.framework.Advised
21+
import org.springframework.aop.support.AopUtils
22+
23+
/**
24+
* Convert a list of spring objects into a list of [TopLevelObject]s that
25+
* the schema generator can use
26+
*/
27+
internal fun List<Any>.toTopLevelObjects() = this.map {
28+
val klazz = if (AopUtils.isAopProxy(it) && it is Advised) {
29+
it.targetSource.target!!::class
30+
} else {
31+
it::class
32+
}
33+
TopLevelObject(it, klazz)
34+
}

graphql-kotlin-spring-server/src/main/kotlin/com/expediagroup/graphql/spring/model/GraphQLResponse.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import com.fasterxml.jackson.annotation.JsonInclude
2121
import com.fasterxml.jackson.annotation.JsonInclude.Include
2222
import graphql.ExecutionResult
2323
import graphql.GraphQLError
24-
import java.lang.Exception
2524

2625
@JsonInclude(Include.NON_NULL)
2726
data class GraphQLResponse(

0 commit comments

Comments
 (0)