override fun generateTypeSpecFor()

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
  }