From 08c05f919d32621fc89362cb31d4cefebf6c92ce Mon Sep 17 00:00:00 2001 From: Shane Myrick Date: Tue, 22 Oct 2019 14:41:32 -0700 Subject: [PATCH 1/6] Migrate GH actions to java 11 --- .github/workflows/maven.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index a0c1e404ca..e30bc8d860 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -12,9 +12,9 @@ jobs: steps: - uses: actions/checkout@v1 - - name: Set up JDK 1.8 + - name: Set up Java 11 uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 11 - name: Build with Maven - run: mvn clean verify -PdefaultBuild -P!jdk8 + run: mvn clean verify -PdefaultBuild From 179348e154a1170b4b7f1f667808b971ed72242f Mon Sep 17 00:00:00 2001 From: Shane Myrick Date: Wed, 23 Oct 2019 15:26:59 -0700 Subject: [PATCH 2/6] Update maven.yml --- .github/workflows/maven.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index e30bc8d860..077fc716f4 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -15,6 +15,6 @@ jobs: - name: Set up Java 11 uses: actions/setup-java@v1 with: - java-version: 11 + java-version: '11.0.2' - name: Build with Maven run: mvn clean verify -PdefaultBuild From 4b21041043ba75cd5b4ccc591839f8a2a6c3289d Mon Sep 17 00:00:00 2001 From: Shane Myrick Date: Wed, 23 Oct 2019 15:33:27 -0700 Subject: [PATCH 3/6] Update maven.yml --- .github/workflows/maven.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 077fc716f4..af8a43094c 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -17,4 +17,4 @@ jobs: with: java-version: '11.0.2' - name: Build with Maven - run: mvn clean verify -PdefaultBuild + run: ./mvnw clean verify -PdefaultBuild From 7d268a67bc27311deb4746bf893273ba8ed38632 Mon Sep 17 00:00:00 2001 From: Shane Myrick Date: Fri, 25 Oct 2019 10:37:11 -0700 Subject: [PATCH 4/6] Trying to fix classloader for SubTypeMapper --- .../com/expediagroup/graphql/generator/types/TypeTestHelper.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graphql-kotlin-schema-generator/src/test/kotlin/com/expediagroup/graphql/generator/types/TypeTestHelper.kt b/graphql-kotlin-schema-generator/src/test/kotlin/com/expediagroup/graphql/generator/types/TypeTestHelper.kt index 88a5999439..fb2c9d1e16 100644 --- a/graphql-kotlin-schema-generator/src/test/kotlin/com/expediagroup/graphql/generator/types/TypeTestHelper.kt +++ b/graphql-kotlin-schema-generator/src/test/kotlin/com/expediagroup/graphql/generator/types/TypeTestHelper.kt @@ -45,10 +45,10 @@ import kotlin.test.BeforeTest "Detekt.LongMethod" ) internal open class TypeTestHelper { + private val subTypeMapper = SubTypeMapper(listOf("com.expediagroup.graphql")) var generator = mockk() var config = mockk() var state = spyk(SchemaGeneratorState(listOf("com.expediagroup.graphql"))) - var subTypeMapper = spyk(SubTypeMapper(listOf("com.expediagroup.graphql"))) var cache = spyk(TypesCache(listOf("com.expediagroup.graphql"))) val spyWiringFactory = spyk(KotlinDirectiveWiringFactory()) var hooks: SchemaGeneratorHooks = object : SchemaGeneratorHooks { From 4039352bbb99676cd2e2987a8f8ba39ac77bcba9 Mon Sep 17 00:00:00 2001 From: Shane Myrick Date: Fri, 25 Oct 2019 11:06:32 -0700 Subject: [PATCH 5/6] Close scan result on generator complete --- .../graphql/generator/SchemaGenerator.kt | 8 +++++++- .../graphql/generator/SubTypeMapper.kt | 2 ++ .../graphql/generator/state/TypesCache.kt | 5 +++++ .../graphql/generator/types/TypeTestHelper.kt | 15 +++++++++++++-- 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/SchemaGenerator.kt b/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/SchemaGenerator.kt index 8540b2f79b..275abaa13a 100644 --- a/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/SchemaGenerator.kt +++ b/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/SchemaGenerator.kt @@ -86,7 +86,13 @@ open class SchemaGenerator(val config: SchemaGeneratorConfig) { builder.additionalDirectives(state.directives.values.toSet()) builder.codeRegistry(codeRegistry.build()) - return config.hooks.willBuildSchema(builder).build() + + val schema = config.hooks.willBuildSchema(builder).build() + + // Clean up the classpath scanner + subTypeMapper.close() + + return schema } open fun function(fn: KFunction<*>, parentName: String, target: Any? = null, abstract: Boolean = false) = diff --git a/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/SubTypeMapper.kt b/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/SubTypeMapper.kt index 78828dc34d..3b86d86a54 100644 --- a/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/SubTypeMapper.kt +++ b/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/SubTypeMapper.kt @@ -39,6 +39,8 @@ internal class SubTypeMapper(supportedPackages: List) { .filterNot { it.isAbstract } } + fun close() = scanResult.close() + @Suppress("Detekt.SwallowedException") private fun getImplementingClasses(classInfo: ClassInfo) = try { diff --git a/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/state/TypesCache.kt b/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/state/TypesCache.kt index 0dbb1320eb..dc2b23c6b8 100644 --- a/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/state/TypesCache.kt +++ b/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/state/TypesCache.kt @@ -62,6 +62,11 @@ internal class TypesCache(private val supportedPackages: List) { return null } + /** + * Clear the map of all saved values + */ + internal fun clear() = cache.clear() + fun doesNotContainGraphQLType(graphQLType: GraphQLType) = cache.none { (_, v) -> v.graphQLType.name == graphQLType.name } diff --git a/graphql-kotlin-schema-generator/src/test/kotlin/com/expediagroup/graphql/generator/types/TypeTestHelper.kt b/graphql-kotlin-schema-generator/src/test/kotlin/com/expediagroup/graphql/generator/types/TypeTestHelper.kt index fb2c9d1e16..6b91e50406 100644 --- a/graphql-kotlin-schema-generator/src/test/kotlin/com/expediagroup/graphql/generator/types/TypeTestHelper.kt +++ b/graphql-kotlin-schema-generator/src/test/kotlin/com/expediagroup/graphql/generator/types/TypeTestHelper.kt @@ -30,6 +30,10 @@ import graphql.schema.GraphQLCodeRegistry import io.mockk.every import io.mockk.mockk import io.mockk.spyk +import org.junit.jupiter.api.AfterAll +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.TestInstance +import org.junit.jupiter.api.TestInstance.Lifecycle import java.lang.reflect.Field import kotlin.reflect.KAnnotatedElement import kotlin.reflect.KClass @@ -37,13 +41,13 @@ import kotlin.reflect.KFunction import kotlin.reflect.KParameter import kotlin.reflect.KProperty import kotlin.reflect.KType -import kotlin.test.BeforeTest @Suppress( "Detekt.UnsafeCast", "Detekt.UnsafeCallOnNullableType", "Detekt.LongMethod" ) +@TestInstance(Lifecycle.PER_CLASS) internal open class TypeTestHelper { private val subTypeMapper = SubTypeMapper(listOf("com.expediagroup.graphql")) var generator = mockk() @@ -69,10 +73,12 @@ internal open class TypeTestHelper { private var argumentBuilder: ArgumentBuilder? = null private var inputObjectBuilder: InputObjectBuilder? = null - @BeforeTest + @BeforeEach fun setup() { beforeSetup() + cache.clear() + every { generator.state } returns state every { state.cache } returns cache every { generator.config } returns config @@ -157,6 +163,11 @@ internal open class TypeTestHelper { beforeTest() } + @AfterAll + fun cleanup() { + subTypeMapper.close() + } + open fun beforeTest() {} open fun beforeSetup() {} From 595a3fd9aca9f792718277425bbb52ab04112376 Mon Sep 17 00:00:00 2001 From: Shane Myrick Date: Fri, 25 Oct 2019 11:07:40 -0700 Subject: [PATCH 6/6] Close results in federation scanning --- .../graphql/federation/FederatedSchemaGenerator.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/graphql-kotlin-federation/src/main/kotlin/com/expediagroup/graphql/federation/FederatedSchemaGenerator.kt b/graphql-kotlin-federation/src/main/kotlin/com/expediagroup/graphql/federation/FederatedSchemaGenerator.kt index c16f74dfc1..7231af3dbf 100644 --- a/graphql-kotlin-federation/src/main/kotlin/com/expediagroup/graphql/federation/FederatedSchemaGenerator.kt +++ b/graphql-kotlin-federation/src/main/kotlin/com/expediagroup/graphql/federation/FederatedSchemaGenerator.kt @@ -61,6 +61,9 @@ open class FederatedSchemaGenerator(generatorConfig: FederatedSchemaGeneratorCon .forEach { this.additionalType(it) } + + scanResult.close() + return this } }