in buildSrc/artist-traits-rx/src/main/kotlin/com/uber/artist/traits/rx/KotlinApiHelper.kt [80:112]
fun addRxBindingApiForAdditive(type: TypeSpec.Builder, api: KotlinAdditiveApi) {
val artistRxConfig = KotlinArtistRxConfigService.newInstance().getArtistRxConfig()
val rx_alias = api.rxBindingInfo.getRxAlias()
type.addFunction(FunSpec.builder(api.rxBindingInfo.methodName)
.addKdoc("${api.rxBindingInfo.methodDoc}\n")
.apply {
if (api.isUViewOverride) {
addModifiers(KModifier.OVERRIDE)
}
}
.addModifiers(KModifier.OPEN)
.returns(KotlinRxTypeNames.Rx.Observable.parameterizedBy(api.observableType.irrelevantIfObject()))
.addCode(CodeBlock.builder()
.apply {
if (rx_alias != null) {
add("return ${rx_alias}()")
} else {
add("return ${api.rxBindingInfo.methodName}()")
}
}
.apply {
if (api.observableType == KotlinTypeNames.Java.Object) {
artistRxConfig.processRxBindingSignalEvent(this)
}
if (api.rxBindingInfo.methodName != "attachEvents") {
// Safe to call, otherwise it'd be a recursive stack overflow
artistRxConfig.processRxBindingStream(this, api.observableType.irrelevantIfObject())
}
}
.add("\n")
.build())
.build())
}