Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add configuration to generate Kotlin models with internal modifier #1818

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Add configuration to generate Kotlin models with internal modifier
Closes #1605
sav007 committed Dec 2, 2019
commit 5b420d1438e2e7796131cd11adf1dc35a3580d04
Original file line number Diff line number Diff line change
@@ -36,7 +36,8 @@ class GraphQLCompiler {
ir = ir,
customTypeMap = args.customTypeMap,
useSemanticNaming = args.useSemanticNaming,
packageNameProvider = args.packageNameProvider
packageNameProvider = args.packageNameProvider,
generateAsInternal = args.generateAsInternal
).write(args.outputDir)
} else {
ir.writeJavaFiles(
@@ -122,6 +123,7 @@ class GraphQLCompiler {
val packageNameProvider: PackageNameProvider,
val generateKotlinModels: Boolean = false,
val transformedQueriesOutputDir: File? = null,
val generateAsInternal: Boolean = false,

// only if generateKotlinModels = false
val nullableValueType: NullableValueType,
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
package com.apollographql.apollo.compiler.codegen.kotlin

import com.apollographql.apollo.api.ScalarType
import com.apollographql.apollo.compiler.applyIf
import com.apollographql.apollo.compiler.ast.CustomTypes
import com.apollographql.apollo.compiler.codegen.kotlin.KotlinCodeGen.normalizeGraphQLType
import com.squareup.kotlinpoet.*
import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy

internal fun CustomTypes.typeSpec() =
internal fun CustomTypes.typeSpec(generateAsInternal: Boolean = false) =
TypeSpec
.enumBuilder("CustomType")
.applyIf(generateAsInternal) { addModifiers(KModifier.INTERNAL) }
.addSuperinterface(ScalarType::class.java)
.apply {
map { (schemaType, customType) ->
@@ -35,4 +37,4 @@ private fun enumConstantTypeSpec(schemaType: String, customType: String) =
.addStatement("return %L::class.java", customType)
.build()
)
.build()
.build()
Original file line number Diff line number Diff line change
@@ -2,15 +2,13 @@ package com.apollographql.apollo.compiler.codegen.kotlin

import com.apollographql.apollo.compiler.applyIf
import com.apollographql.apollo.compiler.ast.EnumType
import com.squareup.kotlinpoet.ClassName
import com.squareup.kotlinpoet.FunSpec
import com.squareup.kotlinpoet.PropertySpec
import com.squareup.kotlinpoet.TypeSpec
import com.squareup.kotlinpoet.*

internal fun EnumType.typeSpec() =
internal fun EnumType.typeSpec(generateAsInternal: Boolean = false) =
TypeSpec
.enumBuilder(name)
.applyIf(description.isNotBlank()) { addKdoc("%L\n", description) }
.applyIf(generateAsInternal) { addModifiers(KModifier.INTERNAL) }
.primaryConstructor(primaryConstructorSpec)
.addProperty(rawValuePropertySpec)
.apply {
Original file line number Diff line number Diff line change
@@ -14,7 +14,8 @@ class GraphQLKompiler(
private val ir: CodeGenerationIR,
private val customTypeMap: Map<String, String>,
private val packageNameProvider: PackageNameProvider,
private val useSemanticNaming: Boolean
private val useSemanticNaming: Boolean,
private val generateAsInternal: Boolean = false
) {
fun write(outputDir: File) {
val customTypeMap = customTypeMap.supportedCustomTypes(ir.typesUsed)
@@ -31,7 +32,8 @@ class GraphQLKompiler(
}

val schemaCodegen = SchemaCodegen(
packageNameProvider = packageNameProvider
packageNameProvider = packageNameProvider,
generateAsInternal = generateAsInternal
)
schemaCodegen.apply(schema::accept).writeTo(outputDir)
}
Original file line number Diff line number Diff line change
@@ -13,10 +13,11 @@ import com.apollographql.apollo.compiler.codegen.kotlin.KotlinCodeGen.toDefaultV
import com.squareup.kotlinpoet.*
import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy

internal fun InputType.typeSpec() =
internal fun InputType.typeSpec(generateAsInternal: Boolean = false) =
TypeSpec
.classBuilder(name)
.applyIf(description.isNotBlank()) { addKdoc("%L\n", description) }
.applyIf(generateAsInternal) { addModifiers(KModifier.INTERNAL) }
.addAnnotation(suppressWarningsAnnotation)
.addModifiers(KModifier.DATA)
.addSuperinterface(com.apollographql.apollo.api.InputType::class)
Original file line number Diff line number Diff line change
@@ -13,9 +13,10 @@ import com.apollographql.apollo.compiler.codegen.kotlin.KotlinCodeGen.toMapperFu
import com.squareup.kotlinpoet.*
import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy

internal fun ObjectType.typeSpec(): TypeSpec = when (kind) {
internal fun ObjectType.typeSpec(generateAsInternal: Boolean = false): TypeSpec = when (kind) {
is ObjectType.Kind.Object -> TypeSpec
.classBuilder(name)
.applyIf(generateAsInternal) { addModifiers(KModifier.INTERNAL) }
.addModifiers(KModifier.DATA)
.primaryConstructor(primaryConstructorSpec)
.addProperties(fields.map { it.asPropertySpec(initializer = CodeBlock.of(it.name)) })
@@ -64,6 +65,7 @@ internal fun ObjectType.typeSpec(): TypeSpec = when (kind) {

is ObjectType.Kind.Fragment -> TypeSpec
.classBuilder(name)
.applyIf(generateAsInternal) { addModifiers(KModifier.INTERNAL) }
.addModifiers(KModifier.DATA)
.addSuperinterface(GraphqlFragment::class.java)
.addAnnotation(KotlinCodeGen.suppressWarningsAnnotation)
Original file line number Diff line number Diff line change
@@ -20,10 +20,11 @@ import com.squareup.kotlinpoet.jvm.throws
import okio.BufferedSource
import java.io.IOException

internal fun OperationType.typeSpec(targetPackage: String) = TypeSpec
internal fun OperationType.typeSpec(targetPackage: String, generateAsInternal: Boolean = false) = TypeSpec
.classBuilder(name)
.addAnnotation(suppressWarningsAnnotation)
.addSuperinterface(superInterfaceType(targetPackage))
.applyIf(generateAsInternal) { addModifiers(KModifier.INTERNAL) }
.applyIf(variables.fields.isNotEmpty()) {
addModifiers(KModifier.DATA)
primaryConstructor(primaryConstructorSpec)
Original file line number Diff line number Diff line change
@@ -1,36 +1,37 @@
package com.apollographql.apollo.compiler.codegen.kotlin

import com.apollographql.apollo.compiler.DeprecatedPackageNameProvider
import com.apollographql.apollo.compiler.PackageNameProvider
import com.apollographql.apollo.compiler.ast.*
import com.squareup.kotlinpoet.FileSpec
import com.squareup.kotlinpoet.TypeSpec
import java.io.File

internal class SchemaCodegen(
private val packageNameProvider: PackageNameProvider
private val packageNameProvider: PackageNameProvider,
private val generateAsInternal: Boolean = false
) : SchemaVisitor {
private var fileSpecs: List<FileSpec> = emptyList()

override fun visit(customTypes: CustomTypes) {
fileSpecs = fileSpecs + customTypes.typeSpec().fileSpec(packageNameProvider.typesPackageName)
fileSpecs = fileSpecs + customTypes.typeSpec(generateAsInternal).fileSpec(packageNameProvider.typesPackageName)
}

override fun visit(enumType: EnumType) {
fileSpecs = fileSpecs + enumType.typeSpec().fileSpec(packageNameProvider.typesPackageName)
fileSpecs = fileSpecs + enumType.typeSpec(generateAsInternal).fileSpec(packageNameProvider.typesPackageName)
}

override fun visit(inputType: InputType) {
fileSpecs = fileSpecs + inputType.typeSpec().fileSpec(packageNameProvider.typesPackageName)
fileSpecs = fileSpecs + inputType.typeSpec(generateAsInternal).fileSpec(packageNameProvider.typesPackageName)
}

override fun visit(fragmentType: ObjectType) {
fileSpecs = fileSpecs + fragmentType.typeSpec().fileSpec(packageNameProvider.fragmentsPackageName)
fileSpecs = fileSpecs + fragmentType.typeSpec(generateAsInternal).fileSpec(packageNameProvider.fragmentsPackageName)
}

override fun visit(operationType: OperationType) {
val targetPackage = packageNameProvider.operationPackageName(operationType.filePath)
fileSpecs = fileSpecs + operationType.typeSpec(targetPackage).fileSpec(targetPackage)
fileSpecs = fileSpecs + operationType.typeSpec(targetPackage = targetPackage, generateAsInternal = generateAsInternal)
.fileSpec(targetPackage)
}

fun writeTo(outputDir: File) {
Original file line number Diff line number Diff line change
@@ -36,7 +36,7 @@ import okio.BufferedSource

@Suppress("NAME_SHADOWING", "UNUSED_ANONYMOUS_PARAMETER", "LocalVariableName",
"RemoveExplicitTypeArguments", "NestedLambdaShadowedImplicitParameter")
data class CreateReviewForEpisode(
internal data class CreateReviewForEpisode(
val ep: Episode,
val review: ReviewInput
) : Mutation<CreateReviewForEpisode.Data, CreateReviewForEpisode.Data, Operation.Variables> {
Original file line number Diff line number Diff line change
@@ -17,7 +17,7 @@ import kotlin.Suppress
*/
@Suppress("NAME_SHADOWING", "UNUSED_ANONYMOUS_PARAMETER", "LocalVariableName",
"RemoveExplicitTypeArguments", "NestedLambdaShadowedImplicitParameter")
data class ColorInput(
internal data class ColorInput(
/**
* Red color
*/
Original file line number Diff line number Diff line change
@@ -9,7 +9,7 @@ import com.apollographql.apollo.api.ScalarType
import java.lang.Class
import kotlin.String

enum class CustomType : ScalarType {
internal enum class CustomType : ScalarType {
DATE {
override fun typeName(): String = "Date"

Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ import kotlin.String
/**
* The episodes in the Star Wars trilogy
*/
enum class Episode(
internal enum class Episode(
val rawValue: String
) {
/**
Original file line number Diff line number Diff line change
@@ -21,7 +21,7 @@ import kotlin.collections.List
*/
@Suppress("NAME_SHADOWING", "UNUSED_ANONYMOUS_PARAMETER", "LocalVariableName",
"RemoveExplicitTypeArguments", "NestedLambdaShadowedImplicitParameter")
data class ReviewInput(
internal data class ReviewInput(
/**
* 0-5 stars
*/
Original file line number Diff line number Diff line change
@@ -15,7 +15,7 @@ import kotlin.Suppress
*/
@Suppress("NAME_SHADOWING", "UNUSED_ANONYMOUS_PARAMETER", "LocalVariableName",
"RemoveExplicitTypeArguments", "NestedLambdaShadowedImplicitParameter")
data class ReviewRefInput(
internal data class ReviewRefInput(
val reviewInput: Input<ReviewInput> = Input.absent()
) : InputType {
override fun marshaller(): InputFieldMarshaller = InputFieldMarshaller { writer ->
Original file line number Diff line number Diff line change
@@ -28,7 +28,7 @@ import okio.BufferedSource

@Suppress("NAME_SHADOWING", "UNUSED_ANONYMOUS_PARAMETER", "LocalVariableName",
"RemoveExplicitTypeArguments", "NestedLambdaShadowedImplicitParameter")
class TestQuery : Query<TestQuery.Data, TestQuery.Data, Operation.Variables> {
internal class TestQuery : Query<TestQuery.Data, TestQuery.Data, Operation.Variables> {
override fun operationId(): String = OPERATION_ID
override fun queryDocument(): String = QUERY_DOCUMENT
override fun wrapData(data: Data?): Data? = data
Original file line number Diff line number Diff line change
@@ -15,7 +15,7 @@ import kotlin.Suppress

@Suppress("NAME_SHADOWING", "UNUSED_ANONYMOUS_PARAMETER", "LocalVariableName",
"RemoveExplicitTypeArguments", "NestedLambdaShadowedImplicitParameter")
data class HeroDetails(
internal data class HeroDetails(
val __typename: String,
/**
* The name of the character
Original file line number Diff line number Diff line change
@@ -15,7 +15,7 @@ import kotlin.Suppress

@Suppress("NAME_SHADOWING", "UNUSED_ANONYMOUS_PARAMETER", "LocalVariableName",
"RemoveExplicitTypeArguments", "NestedLambdaShadowedImplicitParameter")
data class HumanDetails(
internal data class HumanDetails(
val __typename: String,
/**
* What this human calls themselves
Original file line number Diff line number Diff line change
@@ -9,7 +9,7 @@ import com.apollographql.apollo.api.ScalarType
import java.lang.Class
import kotlin.String

enum class CustomType : ScalarType {
internal enum class CustomType : ScalarType {
ID {
override fun typeName(): String = "ID"

Original file line number Diff line number Diff line change
@@ -33,7 +33,7 @@ class CodeGenTest(val folder: File) {
}

val walk = folder.walkTopDown()
walk.forEach {file ->
walk.forEach { file ->
if (!file.name.endsWith(extension)) {
return@forEach
}
@@ -73,35 +73,39 @@ class CodeGenTest(val folder: File) {
} else {
emptyMap()
}
val nullableValueType = when {
folder.name == "hero_details_guava" -> NullableValueType.GUAVA_OPTIONAL
folder.name == "hero_details_java_optional" -> NullableValueType.JAVA_OPTIONAL
folder.name == "fragments_with_type_condition_nullable" -> NullableValueType.ANNOTATED
folder.name == "hero_details_nullable" -> NullableValueType.ANNOTATED
folder.name == "union_fragment" -> NullableValueType.ANNOTATED
val nullableValueType = when (folder.name) {
"hero_details_guava" -> NullableValueType.GUAVA_OPTIONAL
"hero_details_java_optional" -> NullableValueType.JAVA_OPTIONAL
"fragments_with_type_condition_nullable" -> NullableValueType.ANNOTATED
"hero_details_nullable" -> NullableValueType.ANNOTATED
"union_fragment" -> NullableValueType.ANNOTATED
else -> NullableValueType.APOLLO_OPTIONAL
}
val useSemanticNaming = when {
folder.name == "hero_details_semantic_naming" -> true
folder.name == "mutation_create_review_semantic_naming" -> true
val useSemanticNaming = when (folder.name) {
"hero_details_semantic_naming" -> true
"mutation_create_review_semantic_naming" -> true
else -> false
}
val generateModelBuilder = when {
folder.name == "fragment_with_inline_fragment" -> true
val generateModelBuilder = when (folder.name) {
"fragment_with_inline_fragment" -> true
else -> false
}
val useJavaBeansSemanticNaming = when {
folder.name == "java_beans_semantic_naming" -> true
val useJavaBeansSemanticNaming = when (folder.name) {
"java_beans_semantic_naming" -> true
else -> false
}
val suppressRawTypesWarning = when {
folder.name == "custom_scalar_type_warnings" -> true
val suppressRawTypesWarning = when (folder.name) {
"custom_scalar_type_warnings" -> true
else -> false
}
val generateVisitorForPolymorphicDatatypes = when {
folder.name == "java_beans_semantic_naming" -> false
val generateVisitorForPolymorphicDatatypes = when (folder.name) {
"java_beans_semantic_naming" -> false
else -> true
}
val generateAsInternal = when (folder.name) {
"mutation_create_review", "simple_fragment" -> true
else -> false
}

val schemaJson = folder.listFiles()!!.find { it.isFile && it.name == "schema.json" }
?: File("src/test/graphql/schema.json")
@@ -127,7 +131,8 @@ class CodeGenTest(val folder: File) {
useJavaBeansSemanticNaming = useJavaBeansSemanticNaming,
suppressRawTypesWarning = suppressRawTypesWarning,
generateVisitorForPolymorphicDatatypes = generateVisitorForPolymorphicDatatypes,
packageNameProvider = packageNameProvider
packageNameProvider = packageNameProvider,
generateAsInternal = generateAsInternal
)
return args
}
@@ -150,7 +155,7 @@ fun checkTestFixture(actual: File, expected: File) {

if (actualText != expectedText) {
when (System.getProperty("updateTestFixtures")?.trim()) {
"on", "true", "1" ->{
"on", "true", "1" -> {
expected.writeText(actualText)
}
else -> {
Original file line number Diff line number Diff line change
@@ -104,4 +104,11 @@ interface CompilerParams {
* You can override it from [ApolloExtension.onCompilationUnits] for more advanced use cases
*/
val schemaFile: RegularFileProperty

/**
* Whether to generate Kotlin models with `internal` visibility modifier.
*
* false by default
*/
val generateAsInternal: Property<Boolean>
}
Original file line number Diff line number Diff line change
@@ -69,6 +69,10 @@ abstract class ApolloGenerateSourcesTask : DefaultTask() {
@get:OutputDirectory
abstract val transformedQueriesOutputDir: DirectoryProperty

@get:Input
@get:Optional
abstract val generateAsInternal: Property<Boolean>

@TaskAction
fun taskAction() {

@@ -106,7 +110,8 @@ abstract class ApolloGenerateSourcesTask : DefaultTask() {
generateKotlinModels = generateKotlinModels.getOrElse(false),
generateVisitorForPolymorphicDatatypes = generateVisitorForPolymorphicDatatypes.getOrElse(false),
packageNameProvider = packageNameProvider,
transformedQueriesOutputDir = transformedQueriesOutputDir.orNull?.asFile
transformedQueriesOutputDir = transformedQueriesOutputDir.orNull?.asFile,
generateAsInternal = generateAsInternal.getOrElse(false)
)

GraphQLCompiler().write(args)
@@ -140,4 +145,4 @@ abstract class ApolloGenerateSourcesTask : DefaultTask() {
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -187,6 +187,7 @@ open class ApolloPlugin : Plugin<Project> {
}
disallowChanges()
}
it.generateAsInternal.set(compilerParams.generateAsInternal)
Unit
}
}
Original file line number Diff line number Diff line change
@@ -23,6 +23,7 @@ fun CompilerParams.withFallback(objects: ObjectFactory, other: CompilerParams):
merge.useJavaBeansSemanticNaming.set(this.useJavaBeansSemanticNaming.orElse(other.useJavaBeansSemanticNaming))
merge.generateVisitorForPolymorphicDatatypes.set(this.generateVisitorForPolymorphicDatatypes.orElse(other.generateVisitorForPolymorphicDatatypes))
merge.rootPackageName.set(this.rootPackageName.orElse(other.rootPackageName))
merge.generateAsInternal.set(this.generateAsInternal.orElse(other.generateAsInternal))

return merge
}
Original file line number Diff line number Diff line change
@@ -37,4 +37,6 @@ abstract class DefaultCompilerParams @Inject constructor(objects: ObjectFactory)
abstract override val generateVisitorForPolymorphicDatatypes : Property<Boolean>

abstract override val rootPackageName : Property<String>

abstract override val generateAsInternal: Property<Boolean>
}
Original file line number Diff line number Diff line change
@@ -3,7 +3,7 @@ package com.example
import com.example.DroidDetailsQuery

class Main {
fun aMethodThatReferencesAGeneratedQuery(): DroidDetailsQuery {
internal fun aMethodThatReferencesAGeneratedQuery(): DroidDetailsQuery {
return DroidDetailsQuery()
}
}
}
Original file line number Diff line number Diff line change
@@ -253,7 +253,7 @@ class ConfigurationTests {
assertTrue(dir.generatedChild("main/starwars/fragment/SpeciesInformation.java").isFile)
}
}

@Test
fun `schemaPath can be absolute path`() {
val schema = File(System.getProperty("user.dir"), "src/test/files/starwars/schema.json")
Original file line number Diff line number Diff line change
@@ -4,7 +4,11 @@ import com.apollographql.apollo.gradle.internal.child
import com.apollographql.apollo.gradle.util.TestUtils
import com.apollographql.apollo.gradle.util.TestUtils.withProject
import com.apollographql.apollo.gradle.util.generatedChild
import org.gradle.testkit.runner.TaskOutcome
import org.hamcrest.CoreMatchers
import org.junit.Assert
import org.junit.Assert.assertThat
import org.junit.Assert.assertTrue
import org.junit.Test
import java.io.File

@@ -24,10 +28,42 @@ class KotlinCodegenTests {
source.child("kotlin").copyRecursively(dir.child("src", "main", "kotlin"))

TestUtils.executeTask("build", dir)
Assert.assertTrue(File(dir, "build/classes/kotlin/main/com/example/DroidDetailsQuery.class").isFile)
Assert.assertTrue(dir.generatedChild("main/service/com/example/DroidDetailsQuery.kt").isFile)
Assert.assertTrue(dir.generatedChild("main/service/com/example/type/CustomType.kt").isFile)
Assert.assertTrue(dir.generatedChild("main/service/com/example/fragment/SpeciesInformation.kt").isFile)
assertTrue(File(dir, "build/classes/kotlin/main/com/example/DroidDetailsQuery.class").isFile)
assertTrue(dir.generatedChild("main/service/com/example/DroidDetailsQuery.kt").isFile)
assertTrue(dir.generatedChild("main/service/com/example/type/CustomType.kt").isFile)
assertTrue(dir.generatedChild("main/service/com/example/fragment/SpeciesInformation.kt").isFile)
}
}


@Test
fun `when generateAsInternal set to true - generated models are internal`() {
val apolloConfiguration = """
apollo {
generateKotlinModels = true
generateAsInternal = true
}
""".trimIndent()

withProject(
usesKotlinDsl = false,
apolloConfiguration = apolloConfiguration,
plugins = listOf(TestUtils.javaPlugin, TestUtils.kotlinJvmPlugin, TestUtils.apolloPlugin)
) { dir ->

val source = TestUtils.fixturesDirectory()
source.child("kotlin").copyRecursively(dir.child("src", "main", "kotlin"))

TestUtils.executeTask("build", dir)

assertTrue(dir.generatedChild("main/service/com/example/DroidDetailsQuery.kt").isFile)
assertThat(dir.generatedChild("main/service/com/example/DroidDetailsQuery.kt").readText(), CoreMatchers.containsString("internal class"))

assertTrue(dir.generatedChild("main/service/com/example/type/CustomType.kt").isFile)
assertThat(dir.generatedChild("main/service/com/example/type/CustomType.kt").readText(), CoreMatchers.containsString("internal enum class"))

assertTrue(dir.generatedChild("main/service/com/example/fragment/SpeciesInformation.kt").isFile)
assertThat(dir.generatedChild("main/service/com/example/fragment/SpeciesInformation.kt").readText(), CoreMatchers.containsString("internal data class"))
}
}
}
Original file line number Diff line number Diff line change
@@ -32,6 +32,7 @@ class ApolloCodegenTask extends SourceTask {
@Input Property<Boolean> generateVisitorForPolymorphicDatatypes = project.objects.property(Boolean.class)
@Optional @OutputDirectory DirectoryProperty transformedQueriesOutputDir = project.objects.directoryProperty()
@Input ListProperty<String> excludeFiles = project.objects.listProperty(String.class)
@Input Property<Boolean> generateAsInternal = project.objects.property(Boolean.class)

@TaskAction
void generateClasses() {
@@ -72,6 +73,7 @@ class ApolloCodegenTask extends SourceTask {
packageNameProvider,
generateKotlinModels.get(),
transformedQueriesOutputDir.getOrNull()?.asFile,
generateAsInternal.get(),
nullableValueType != null ? nullableValueType : NullableValueType.ANNOTATED,
generateModelBuilder.get(),
useJavaBeansSemanticNaming.get(),
Original file line number Diff line number Diff line change
@@ -19,6 +19,7 @@ class ApolloExtension {
final Property<String> outputPackageName
final Property<Boolean> generateTransformedQueries
final MapProperty<String, String> customTypeMapping
final Property<Boolean> generateAsInternal

ApolloExtension(Project project) {
nullableValueType = project.objects.property(String.class)
@@ -53,6 +54,9 @@ class ApolloExtension {

customTypeMapping = project.objects.mapProperty(String.class, String.class)
customTypeMapping.set(new LinkedHashMap())

generateAsInternal = project.objects.property(Boolean.class)
generateAsInternal.set(false)
}

void setNullableValueType(String nullableValueType) {
@@ -95,6 +99,10 @@ class ApolloExtension {
this.generateTransformedQueries.set(generateTransformedQueries)
}

void setGenerateAsInternal(Boolean generateAsInternal) {
this.generateAsInternal.set(generateAsInternal)
}

void setCustomTypeMapping(Map customTypeMapping) {
LinkedHashMap tmp = new LinkedHashMap()
tmp.putAll(customTypeMapping)
Original file line number Diff line number Diff line change
@@ -42,6 +42,7 @@ abstract class TaskConfigurator {
generateKotlinModels = project.apollo.generateKotlinModels
generateVisitorForPolymorphicDatatypes = project.apollo.generateVisitorForPolymorphicDatatypes
transformedQueriesOutputDir.set(transformedQueriesOutputFolder)
generateAsInternal = project.apollo.generateAsInternal
}
}
}