
io.reactiverse.reactivecontexts.propagators.rxjava2.ContextPropagatorOnMaybeCreateAction Maven / Gradle / Ivy
package io.reactiverse.reactivecontexts.propagators.rxjava2;
import io.reactiverse.reactivecontexts.core.Context;
import io.reactivex.Maybe;
import io.reactivex.MaybeObserver;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.BiFunction;
public class ContextPropagatorOnMaybeCreateAction
implements BiFunction {
@Override
public MaybeObserver apply(Maybe maybe, MaybeObserver observer) throws Exception {
return new ContextCapturerMaybe<>(maybe, observer);
}
public class ContextCapturerMaybe implements MaybeObserver {
private final MaybeObserver source;
private final Object[] states;
public ContextCapturerMaybe(Maybe observable, MaybeObserver observer) {
this.source = observer;
this.states = Context.capture();
}
@Override
public void onComplete() {
Object[] previousStates = Context.install(states);
try {
source.onComplete();
}finally {
Context.restore(previousStates);
}
}
@Override
public void onError(Throwable t) {
Object[] previousStates = Context.install(states);
try {
source.onError(t);
}finally {
Context.restore(previousStates);
}
}
@Override
public void onSubscribe(Disposable d) {
Object[] previousStates = Context.install(states);
try {
source.onSubscribe(d);
}finally {
Context.restore(previousStates);
}
}
@Override
public void onSuccess(T v) {
Object[] previousStates = Context.install(states);
try {
source.onSuccess(v);
}finally {
Context.restore(previousStates);
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy