in mobius-rx2/src/main/java/com/spotify/mobius/rx2/RxMobius.java [176:206]
public <G extends F> SubtypeEffectHandlerBuilder<F, E> addTransformer(
final Class<G> effectClass, final ObservableTransformer<G, E> effectHandler) {
//noinspection ResultOfMethodCallIgnored
checkNotNull(effectClass);
//noinspection ResultOfMethodCallIgnored
checkNotNull(effectHandler);
for (Class<?> cls : effectPerformerMap.keySet()) {
if (cls.isAssignableFrom(effectClass) || effectClass.isAssignableFrom(cls)) {
throw new IllegalArgumentException(
"Effect classes may not be assignable to each other, collision found: "
+ effectClass.getSimpleName()
+ " <-> "
+ cls.getSimpleName());
}
}
effectPerformerMap.put(
effectClass,
new ObservableTransformer<F, E>() {
@Override
public Observable<E> apply(Observable<F> effects) {
return effects
.ofType(effectClass)
.compose(effectHandler)
.doOnError(onErrorFunction.apply(effectHandler));
}
});
return this;
}