package netflix.ocelli; import rx.Observable; import rx.functions.Func1; public abstract class Instances { public static <T, S> Func1<Instance<T>, Instance<S>> transform(final Func1<T, S> func) { return new Func1<Instance<T>, Instance<S>>() { @Override public Instance<S> call(final Instance<T> primary) { final S s = func.call(primary.getValue()); return new Instance<S>() { @Override public Observable<Void> getLifecycle() { return primary.getLifecycle(); } @Override public S getValue() { return s; } @Override public String toString() { return "Instance[" + primary.getValue() + " -> " + getValue() + "]"; } }; } }; } }