in buildSrc/artist-core/src/main/kotlin/com/uber/artist/JavaArtistCodeGenerator.kt [49:71]
override fun generateTypeSpecFor(
stencil: JavaViewStencil,
rPackageName: String,
traitMap: Map<Class<out JavaTrait>, JavaTrait>,
superinterfaceClassName: String?): TypeSpec.Builder {
val rClass = ClassName.get(rPackageName, "R")
val typeBuilder = TypeSpec.classBuilder(stencil.name())
.addModifiers(Modifier.PUBLIC)
.superclass(stencil.sourceType)
superinterfaceClassName?.let { typeBuilder.addSuperinterface(superinterface(superinterfaceClassName)) }
generateConstructorsFor(stencil, typeBuilder, rClass)
val initMethod = createInitBuilderFor(stencil, typeBuilder)
stencil.traits()
.map { traitName -> traitMap[traitName] }
.forEach { it?.generateFor(typeBuilder, initMethod, rClass, stencil.name()) }
typeBuilder.addMethod(initMethod.build())
stencil.typeHook(typeBuilder)
return typeBuilder
}