Skip to content

Commit 9b364e0

Browse files
authored
pass code registry to all directive environments (#1159)
* pass code registry to all directive environments * update tests * always pass code registry to wiring
1 parent d522a37 commit 9b364e0

File tree

15 files changed

+54
-59
lines changed

15 files changed

+54
-59
lines changed

generator/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/directives/KotlinDirectiveWiringFactory.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ open class KotlinDirectiveWiringFactory(
3535
/**
3636
* Wire up the directive based on the GraphQL type.
3737
*/
38-
fun onWire(graphQLSchemaElement: GraphQLSchemaElement, coordinates: FieldCoordinates? = null, codeRegistry: GraphQLCodeRegistry.Builder? = null): GraphQLSchemaElement {
38+
fun onWire(graphQLSchemaElement: GraphQLSchemaElement, coordinates: FieldCoordinates? = null, codeRegistry: GraphQLCodeRegistry.Builder): GraphQLSchemaElement {
3939
if (graphQLSchemaElement !is GraphQLDirectiveContainer) return graphQLSchemaElement
4040

4141
return wireDirectives(graphQLSchemaElement, coordinates, graphQLSchemaElement.getAllDirectives(), codeRegistry)
@@ -51,7 +51,7 @@ open class KotlinDirectiveWiringFactory(
5151
element: GraphQLDirectiveContainer,
5252
coordinates: FieldCoordinates?,
5353
directives: List<GraphQLDirective>,
54-
codeRegistry: GraphQLCodeRegistry.Builder?
54+
codeRegistry: GraphQLCodeRegistry.Builder
5555
): GraphQLDirectiveContainer {
5656
var modifiedObject = element
5757
for (directive in directives) {
@@ -60,12 +60,13 @@ open class KotlinDirectiveWiringFactory(
6060
field = modifiedObject,
6161
fieldDirective = directive,
6262
coordinates = coordinates ?: throw InvalidSchemaDirectiveWiringException("Unable to wire directive on a field due to missing field coordinates"),
63-
codeRegistry = codeRegistry ?: throw InvalidSchemaDirectiveWiringException("Unable to wire directive on a field due to a missing code registry")
63+
codeRegistry = codeRegistry
6464
)
6565
} else {
6666
KotlinSchemaDirectiveEnvironment(
6767
element = modifiedObject,
68-
directive = directive
68+
directive = directive,
69+
codeRegistry = codeRegistry
6970
)
7071
}
7172

generator/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/directives/KotlinFieldDirectiveEnvironment.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ class KotlinFieldDirectiveEnvironment(
2929
field: GraphQLFieldDefinition,
3030
fieldDirective: GraphQLDirective,
3131
private val coordinates: FieldCoordinates,
32-
private val codeRegistry: GraphQLCodeRegistry.Builder
33-
) : KotlinSchemaDirectiveEnvironment<GraphQLFieldDefinition>(element = field, directive = fieldDirective) {
32+
codeRegistry: GraphQLCodeRegistry.Builder
33+
) : KotlinSchemaDirectiveEnvironment<GraphQLFieldDefinition>(element = field, directive = fieldDirective, codeRegistry = codeRegistry) {
3434

3535
/**
3636
* Retrieve current data fetcher associated with the target element.

generator/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/directives/KotlinSchemaDirectiveEnvironment.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package com.expediagroup.graphql.generator.directives
1818

1919
import graphql.introspection.Introspection
2020
import graphql.schema.GraphQLArgument
21+
import graphql.schema.GraphQLCodeRegistry
2122
import graphql.schema.GraphQLDirective
2223
import graphql.schema.GraphQLDirectiveContainer
2324
import graphql.schema.GraphQLEnumType
@@ -35,7 +36,8 @@ import graphql.schema.GraphQLUnionType
3536
*/
3637
open class KotlinSchemaDirectiveEnvironment<out T : GraphQLDirectiveContainer>(
3738
val element: T,
38-
val directive: GraphQLDirective
39+
val directive: GraphQLDirective,
40+
val codeRegistry: GraphQLCodeRegistry.Builder
3941
) {
4042
/**
4143
* Verifies whether specified directive is applicable on the target element.

generator/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/hooks/SchemaGeneratorHooks.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ interface SchemaGeneratorHooks {
121121
* Called after `willGenerateGraphQLType` and before `didGenerateGraphQLType`.
122122
* Enables you to change the wiring, e.g. apply directives to alter the target type.
123123
*/
124-
fun onRewireGraphQLType(generatedType: GraphQLSchemaElement, coordinates: FieldCoordinates? = null, codeRegistry: GraphQLCodeRegistry.Builder? = null): GraphQLSchemaElement =
124+
fun onRewireGraphQLType(generatedType: GraphQLSchemaElement, coordinates: FieldCoordinates? = null, codeRegistry: GraphQLCodeRegistry.Builder): GraphQLSchemaElement =
125125
wiringFactory.onWire(generatedType, coordinates, codeRegistry)
126126

127127
/**

generator/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/internal/types/generateArgument.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ internal fun generateArgument(generator: SchemaGenerator, parameter: KParameter)
5959
builder.withDirective(it)
6060
}
6161

62-
return generator.config.hooks.onRewireGraphQLType(builder.build()).safeCast()
62+
return generator.config.hooks.onRewireGraphQLType(builder.build(), null, generator.codeRegistry).safeCast()
6363
}
6464

6565
private fun getUnwrappedClass(parameterType: KType): KClass<*> =

generator/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/internal/types/generateEnum.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ internal fun generateEnum(generator: SchemaGenerator, kClass: KClass<out Enum<*>
4141
kClass.java.enumConstants.forEach {
4242
enumBuilder.value(getEnumValueDefinition(generator, it, kClass))
4343
}
44-
return generator.config.hooks.onRewireGraphQLType(enumBuilder.build()).safeCast()
44+
return generator.config.hooks.onRewireGraphQLType(enumBuilder.build(), null, generator.codeRegistry).safeCast()
4545
}
4646

4747
private fun getEnumValueDefinition(generator: SchemaGenerator, enum: Enum<*>, kClass: KClass<out Enum<*>>): GraphQLEnumValueDefinition {
@@ -63,5 +63,5 @@ private fun getEnumValueDefinition(generator: SchemaGenerator, enum: Enum<*>, kC
6363
valueBuilder.withDirective(deprecatedDirectiveWithReason(it))
6464
}
6565

66-
return generator.config.hooks.onRewireGraphQLType(valueBuilder.build()).safeCast()
66+
return generator.config.hooks.onRewireGraphQLType(valueBuilder.build(), null, generator.codeRegistry).safeCast()
6767
}

generator/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/internal/types/generateInputObject.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,5 @@ internal fun generateInputObject(generator: SchemaGenerator, kClass: KClass<*>):
4444
builder.field(generateInputProperty(generator, it, kClass))
4545
}
4646

47-
return generator.config.hooks.onRewireGraphQLType(builder.build()).safeCast()
47+
return generator.config.hooks.onRewireGraphQLType(builder.build(), null, generator.codeRegistry).safeCast()
4848
}

generator/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/internal/types/generateInputProperty.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,5 +43,5 @@ internal fun generateInputProperty(generator: SchemaGenerator, prop: KProperty<*
4343
builder.withDirective(it)
4444
}
4545

46-
return generator.config.hooks.onRewireGraphQLType(builder.build()).safeCast()
46+
return generator.config.hooks.onRewireGraphQLType(builder.build(), null, generator.codeRegistry).safeCast()
4747
}

generator/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/internal/types/generateInterface.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,5 +63,5 @@ internal fun generateInterface(generator: SchemaGenerator, kClass: KClass<*>): G
6363

6464
val interfaceType = builder.build()
6565
generator.codeRegistry.typeResolver(interfaceType) { env: TypeResolutionEnvironment -> env.schema.getObjectType(env.getObject<Any>().javaClass.kotlin.getSimpleName()) }
66-
return generator.config.hooks.onRewireGraphQLType(interfaceType).safeCast()
66+
return generator.config.hooks.onRewireGraphQLType(interfaceType, null, generator.codeRegistry).safeCast()
6767
}

generator/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/internal/types/generateObject.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,5 +61,5 @@ internal fun generateObject(generator: SchemaGenerator, kClass: KClass<*>): Grap
6161
kClass.getValidFunctions(generator.config.hooks)
6262
.forEach { builder.field(generateFunction(generator, it, name)) }
6363

64-
return generator.config.hooks.onRewireGraphQLType(builder.build()).safeCast()
64+
return generator.config.hooks.onRewireGraphQLType(builder.build(), null, generator.codeRegistry).safeCast()
6565
}

0 commit comments

Comments
 (0)