Skip to content

Commit 276fdf0

Browse files
committed
fix: workaround to SpringBoot GraalVM issue
SpringBoot is currently unable to register nested enum configuration classes. Looks like previous versions (<3.1.3) were not detecting this. Moving enum classes to a top level class fixes the issue.
1 parent 900303c commit 276fdf0

File tree

2 files changed

+18
-12
lines changed

2 files changed

+18
-12
lines changed

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

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,6 @@ data class GraphQLConfigurationProperties(
9898
val protocol: SubscriptionProtocol = SubscriptionProtocol.GRAPHQL_WS
9999
)
100100

101-
enum class SubscriptionProtocol {
102-
APOLLO_SUBSCRIPTIONS_WS,
103-
GRAPHQL_WS
104-
}
105-
106101
/**
107102
* Playground configuration properties.
108103
*/
@@ -141,11 +136,6 @@ data class GraphQLConfigurationProperties(
141136
val enabled: Boolean = true
142137
)
143138

144-
/**
145-
* Approaches for batching transactions of a set of GraphQL Operations.
146-
*/
147-
enum class BatchingStrategy { LEVEL_DISPATCHED, SYNC_EXHAUSTION }
148-
149139
/**
150140
* Batching configuration properties.
151141
*/
@@ -161,3 +151,19 @@ data class GraphQLConfigurationProperties(
161151
val enabled: Boolean = false
162152
)
163153
}
154+
155+
// workaround to Spring GraalVM native issue
156+
// when using nested configuration enum classes Spring Boot is unable to bind them correctly
157+
158+
enum class SubscriptionProtocol {
159+
APOLLO_SUBSCRIPTIONS_WS,
160+
GRAPHQL_WS
161+
}
162+
163+
/**
164+
* Approaches for batching transactions of a set of GraphQL Operations.
165+
*/
166+
enum class BatchingStrategy {
167+
LEVEL_DISPATCHED,
168+
SYNC_EXHAUSTION
169+
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@ class GraphQLSchemaConfiguration {
9191
builder.doNotAddDefaultInstrumentations()
9292
instrumentations.add(
9393
when (config.batching.strategy) {
94-
GraphQLConfigurationProperties.BatchingStrategy.LEVEL_DISPATCHED -> DataLoaderLevelDispatchedInstrumentation()
95-
GraphQLConfigurationProperties.BatchingStrategy.SYNC_EXHAUSTION -> DataLoaderSyncExecutionExhaustedInstrumentation()
94+
BatchingStrategy.LEVEL_DISPATCHED -> DataLoaderLevelDispatchedInstrumentation()
95+
BatchingStrategy.SYNC_EXHAUSTION -> DataLoaderSyncExecutionExhaustedInstrumentation()
9696
}
9797
)
9898
}

0 commit comments

Comments
 (0)