in buildSrc/artist-traits-rx/src/main/kotlin/com/uber/artist/traits/rx/JavaApiHelper.kt [60:85]
fun addRxBindingApiForAdditive(type: TypeSpec.Builder, api: JavaAdditiveApi) {
val artistRxConfig = JavaArtistRxConfigService.newInstance().getArtistRxConfig()
type.addMethod(MethodSpec.methodBuilder(api.rxBindingInfo.methodName)
.addJavadoc("${api.rxBindingInfo.methodDoc}\n")
.apply {
if (api.isUViewOverride) {
addAnnotation(Override::class.java)
}
}
.addModifiers(Modifier.PUBLIC)
.returns(ParameterizedTypeName.get(JavaRxTypeNames.Rx.Observable, api.observableType.irrelevantIfObject()))
.addCode(CodeBlock.builder()
.add("return \$T.${api.rxBindingInfo.methodName}(this)", api.rxBindingInfo.className)
.apply {
if (api.observableType == TypeName.OBJECT.box()) {
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(";")
}
.build())
.build())
}