Skip to content

Commit 198480d

Browse files
authored
Pass schema to ApolloCompilerPlugin.schemaListener (#6166)
1 parent 16fa109 commit 198480d

File tree

4 files changed

+15
-23
lines changed

4 files changed

+15
-23
lines changed

libraries/apollo-compiler/src/main/kotlin/com/apollographql/apollo/compiler/ApolloCompilerPlugin.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,24 +79,24 @@ interface ApolloCompilerPlugin {
7979
}
8080

8181
/**
82-
* @return A [SchemaDocumentListener] called whenever the schema changed
82+
* @return A [SchemaListener] called whenever the schema changed
8383
*/
8484
@ApolloExperimental
85-
fun schemaDocumentListener(): SchemaDocumentListener? {
85+
fun schemaListener(): SchemaListener? {
8686
return null
8787
}
8888
}
8989

9090
@ApolloExperimental
91-
interface SchemaDocumentListener {
91+
interface SchemaListener {
9292
/**
9393
* Called when the schema changed and codegen needs to be updated
9494
*
95-
* @param schema the validated schema document.
95+
* @param schema the validated schema.
9696
* @param outputDirectory the compiler output directory. This directory is shared with the compiler, make sure to use a specific
9797
* package name to avoid clobbering other files.
9898
*/
99-
fun onSchemaDocument(schema: GQLDocument, outputDirectory: File)
99+
fun onSchema(schema: Schema, outputDirectory: File)
100100
}
101101

102102

libraries/apollo-gradle-plugin-external/src/main/kotlin/com/apollographql/apollo/gradle/internal/ApolloGenerateSourcesFromIrTask.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,8 @@ private abstract class GenerateSourcesFromIr : WorkAction<GenerateSourcesFromIrP
120120
operationOutputGenerator = plugin?.toOperationOutputGenerator(),
121121
).writeTo(outputDir.get().asFile, true, metadataOutputFile.orNull?.asFile)
122122

123-
plugin?.schemaDocumentListener()?.let { onSchemaDocument ->
124-
onSchemaDocument.onSchemaDocument(codegenSchema.schema.toGQLDocument(), outputDir.get().asFile)
123+
plugin?.schemaListener()?.let { onSchemaDocument ->
124+
onSchemaDocument.onSchema(codegenSchema.schema, outputDir.get().asFile)
125125
}
126126
}
127127
}

libraries/apollo-gradle-plugin-external/src/main/kotlin/com/apollographql/apollo/gradle/internal/ApolloGenerateSourcesTask.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.apollographql.apollo.gradle.internal
22

3-
import com.apollographql.apollo.ast.GQLDocument
43
import com.apollographql.apollo.compiler.ApolloCompiler
54
import com.apollographql.apollo.compiler.CodegenSchema
65
import com.apollographql.apollo.compiler.LayoutFactory
@@ -128,8 +127,8 @@ private abstract class GenerateSources : WorkAction<GenerateSourcesParameters> {
128127
operationManifestFile = operationManifestFile.orNull?.asFile,
129128
).writeTo(outputDir.get().asFile, true, null)
130129

131-
plugin?.schemaDocumentListener()?.let { onSchemaDocument ->
132-
onSchemaDocument.onSchemaDocument(codegenSchema.schema.toGQLDocument(), outputDir.get().asFile)
130+
plugin?.schemaListener()?.let { onSchemaDocument ->
131+
onSchemaDocument.onSchema(codegenSchema.schema, outputDir.get().asFile)
133132
}
134133
}
135134
}

tests/compiler-plugins/schema-codegen/src/main/kotlin/schema/TestPlugin.kt

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,20 @@
11
package schema
22

33
import com.apollographql.apollo.ast.ForeignSchema
4-
import com.apollographql.apollo.ast.GQLDocument
54
import com.apollographql.apollo.ast.GQLIntValue
6-
import com.apollographql.apollo.ast.GQLObjectTypeDefinition
5+
import com.apollographql.apollo.ast.Schema
76
import com.apollographql.apollo.ast.parseAsGQLDocument
87
import com.apollographql.apollo.compiler.ApolloCompilerPlugin
98
import com.apollographql.apollo.compiler.ApolloCompilerPluginEnvironment
109
import com.apollographql.apollo.compiler.ApolloCompilerPluginLogger
1110
import com.apollographql.apollo.compiler.ApolloCompilerPluginProvider
12-
import com.apollographql.apollo.compiler.CodegenSchema
13-
import com.apollographql.apollo.compiler.SchemaDocumentListener
14-
import com.apollographql.apollo.compiler.codegen.SchemaAndOperationsLayout
11+
import com.apollographql.apollo.compiler.SchemaListener
1512
import com.squareup.kotlinpoet.ClassName
1613
import com.squareup.kotlinpoet.FileSpec
1714
import com.squareup.kotlinpoet.PropertySpec
1815
import okio.buffer
1916
import okio.source
2017
import java.io.File
21-
import kotlin.math.max
2218

2319
class TestPlugin(
2420
logger: ApolloCompilerPluginLogger,
@@ -39,13 +35,10 @@ class TestPlugin(
3935
)
4036
}
4137

42-
override fun schemaDocumentListener(): SchemaDocumentListener {
43-
return object : SchemaDocumentListener {
44-
override fun onSchemaDocument(schema: GQLDocument, outputDirectory: File) {
45-
val maxAge = schema.definitions.filterIsInstance<GQLObjectTypeDefinition>()
46-
.single {
47-
it.name == "Menu"
48-
}
38+
override fun schemaListener(): SchemaListener {
39+
return object : SchemaListener {
40+
override fun onSchema(schema: Schema, outputDirectory: File) {
41+
val maxAge = schema.typeDefinition("Menu")
4942
.directives
5043
.single {
5144
it.name == "cacheControl"

0 commit comments

Comments
 (0)