com.apollographql.apollo.compiler.ir.InlineFragment.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of aws-android-sdk-appsync-compiler Show documentation
Show all versions of aws-android-sdk-appsync-compiler Show documentation
AWS AppSync Implementation for the Gradle plugin
The newest version!
/**
* Copyright 2018-2019 Amazon.com,
* Inc. or its affiliates. All Rights Reserved.
*
* SPDX-License-Identifier: Apache-2.0
*/
package com.apollographql.apollo.compiler.ir
import com.apollographql.apollo.compiler.JavaTypeResolver
import com.apollographql.apollo.compiler.SchemaTypeSpecBuilder
import com.apollographql.apollo.compiler.withBuilder
import com.squareup.javapoet.FieldSpec
import com.squareup.javapoet.MethodSpec
import com.squareup.javapoet.TypeSpec
import javax.lang.model.element.Modifier
data class InlineFragment(
val typeCondition: String,
val possibleTypes: List?,
val fields: List,
val fragmentSpreads: List?
) : CodeGenerator {
override fun toTypeSpec(context: CodeGenerationContext): TypeSpec =
SchemaTypeSpecBuilder(
typeName = formatClassName(),
fields = fields,
fragmentSpreads = fragmentSpreads ?: emptyList(),
inlineFragments = emptyList(),
context = context
)
.build(Modifier.PUBLIC, Modifier.STATIC)
.let {
if (context.generateModelBuilder) {
it.withBuilder()
} else {
it
}
}
fun accessorMethodSpec(context: CodeGenerationContext): MethodSpec {
return MethodSpec.methodBuilder(formatClassName().decapitalize())
.addModifiers(Modifier.PUBLIC)
.returns(typeName(context))
.addStatement("return this.\$L", formatClassName().decapitalize())
.build()
}
fun fieldSpec(context: CodeGenerationContext, publicModifier: Boolean = false): FieldSpec =
FieldSpec.builder(typeName(context), formatClassName().decapitalize())
.let { if (publicModifier) it.addModifiers(Modifier.PUBLIC) else it }
.addModifiers(Modifier.FINAL)
.build()
fun formatClassName(): String = "$INTERFACE_PREFIX${typeCondition.capitalize()}"
private fun typeName(context: CodeGenerationContext) = JavaTypeResolver(context, "").resolve(formatClassName(), true)
companion object {
private val INTERFACE_PREFIX = "As"
}
}