return Observable.unsafeCreate(new Observable.OnSubscribe<Response>() {
/** * Converts a Reactive-Streams Publisher of any kind (the base type of 2.x Flowable) * into an 1.x Observable, composing the backpressure and cancellation * (unsubscription) through. * <p> * Note that this method can convert <strong>any</strong> Reactive-Streams compliant * source into an 1.x Observable, not just the 2.x Flowable. * <dl> * <dt><b>Backpressure:</b></dt> * <dd>The operator doesn't interfere with backpressure which is determined by the * source {@code Publisher}'s backpressure behavior.</dd> * <dt><b>Scheduler:</b></dt> * <dd>The method does not operate by default on a particular {@code Scheduler}.</dd> * </dl> * @param <T> the value type * @param source the source Reactive-Streams Publisher instance, not null * @return the new 1.x Observable instance * @throws NullPointerException if {@code source} is null */ @io.reactivex.annotations.SchedulerSupport(io.reactivex.annotations.SchedulerSupport.NONE) public static <T> rx.Observable<T> toV1Observable(org.reactivestreams.Publisher<T> source) { io.reactivex.internal.functions.ObjectHelper.requireNonNull(source, "source is null"); return rx.Observable.unsafeCreate(new FlowableV2ToObservableV1<T>(source)); }
/** * <p> * Returns an Observable sequence of {@link Entry} that satisfy the given * condition. Note that this method is well-behaved only if: * * * <p> * {@code condition(g)} is true for {@link Geometry} g implies * {@code condition(r)} is true for the minimum bounding rectangles of the * ancestor nodes. * * <p> * {@code distance(g) < D} is an example of such a condition. * * * @param condition * return Entries whose geometry satisfies the given condition * @return sequence of matching entries */ @VisibleForTesting Observable<Entry<T, S>> search(Func1<? super Geometry, Boolean> condition) { if (root.isPresent()) return Observable.unsafeCreate(new OnSubscribeSearch<T, S>(root.get(), condition)); else return Observable.empty(); }
@Test public void o1f2IgnoreCancel() { toV2Flowable(rx.Observable.unsafeCreate(new OnSubscribe<Object>() { @Override public void call(Subscriber<? super Object> s) { s.onNext(null); s.onNext(1); s.onError(new RuntimeException("Forced failure")); s.onCompleted(); } })) .test() .assertFailure(NullPointerException.class); }
@Test public void o1fo2IgnoreCancel() { toV2Observable(rx.Observable.unsafeCreate(new OnSubscribe<Object>() { @Override public void call(Subscriber<? super Object> s) { s.onNext(null); s.onNext(1); s.onError(new RuntimeException("Forced failure")); s.onCompleted(); } })) .test() .assertFailure(NullPointerException.class); }
@NonNull public static Observable<byte[]> getBytes(@NonNull final StorageReference storageRef, final long maxDownloadSizeBytes) { return Observable.unsafeCreate(new Observable.OnSubscribe<byte[]>() { @Override public void call(final Subscriber<? super byte[]> subscriber) { RxTask.assignOnTask(subscriber, storageRef.getBytes(maxDownloadSizeBytes)); } }); }
@NonNull public static Observable<StorageMetadata> getMetadata(@NonNull final StorageReference storageRef) { return Observable.unsafeCreate(new Observable.OnSubscribe<StorageMetadata>() { @Override public void call(final Subscriber<? super StorageMetadata> subscriber) { RxTask.assignOnTask(subscriber, storageRef.getMetadata()); } }); }
@NonNull public static Observable<FileDownloadTask.TaskSnapshot> getFile(@NonNull final StorageReference storageRef, @NonNull final File destinationFile) { return Observable.unsafeCreate(new Observable.OnSubscribe<FileDownloadTask.TaskSnapshot>() { @Override public void call(final Subscriber<? super FileDownloadTask.TaskSnapshot> subscriber) { RxTask.assignOnTask(subscriber, storageRef.getFile(destinationFile)); } }); }
@NonNull public static Observable<FileDownloadTask.TaskSnapshot> getFile(@NonNull final StorageReference storageRef, @NonNull final Uri destinationUri) { return Observable.unsafeCreate(new Observable.OnSubscribe<FileDownloadTask.TaskSnapshot>() { @Override public void call(final Subscriber<? super FileDownloadTask.TaskSnapshot> subscriber) { RxTask.assignOnTask(subscriber, storageRef.getFile(destinationUri)); } }); }
@NonNull public static Observable<StorageMetadata> updateMetadata(@NonNull final StorageReference storageRef, @NonNull final StorageMetadata metadata) { return Observable.unsafeCreate(new Observable.OnSubscribe<StorageMetadata>() { @Override public void call(final Subscriber<? super StorageMetadata> subscriber) { RxTask.assignOnTask(subscriber, storageRef.updateMetadata(metadata)); } }); }
@NonNull public static Observable<AuthResult> signInWithCredential(@NonNull final FirebaseAuth firebaseAuth, @NonNull final AuthCredential credential) { return Observable.unsafeCreate(new Observable.OnSubscribe<AuthResult>() { @Override public void call(final Subscriber<? super AuthResult> subscriber) { RxTask.assignOnTask(subscriber, firebaseAuth.signInWithCredential(credential)); } }); }
@NonNull public static Observable<ProviderQueryResult> fetchProvidersForEmail(@NonNull final FirebaseAuth firebaseAuth, @NonNull final String email) { return Observable.unsafeCreate(new Observable.OnSubscribe<ProviderQueryResult>() { @Override public void call(final Subscriber<? super ProviderQueryResult> subscriber) { RxTask.assignOnTask(subscriber, firebaseAuth.fetchProvidersForEmail(email)); } }); }
@NonNull public static Observable<Void> sendPasswordResetEmail(@NonNull final FirebaseAuth firebaseAuth, @NonNull final String email) { return Observable.unsafeCreate(new Observable.OnSubscribe<Void>() { @Override public void call(final Subscriber<? super Void> subscriber) { RxTask.assignOnTask(subscriber, firebaseAuth.sendPasswordResetEmail(email)); } }); }
@NonNull public static Observable<HttpsCallableResult> getHttpsCallable(@NonNull final FirebaseFunctions functions, @NonNull final String name, @Nullable final Object data) { return Observable.unsafeCreate(new Observable.OnSubscribe<HttpsCallableResult>() { @Override public void call(Subscriber<? super HttpsCallableResult> subscriber) { RxTask.assignOnTask(subscriber, functions.getHttpsCallable(name).call(data)); } }); }
@NonNull public static Observable<AuthResult> signInWithEmailAndPassword(@NonNull final FirebaseAuth firebaseAuth, @NonNull final String email, @NonNull final String password) { return Observable.unsafeCreate(new Observable.OnSubscribe<AuthResult>() { @Override public void call(final Subscriber<? super AuthResult> subscriber) { RxTask.assignOnTask(subscriber, firebaseAuth.signInWithEmailAndPassword(email, password)); } }); }
@NonNull public static Observable<UploadTask.TaskSnapshot> putBytes(@NonNull final StorageReference storageRef, @NonNull final byte[] bytes, @NonNull final StorageMetadata metadata) { return Observable.unsafeCreate(new Observable.OnSubscribe<UploadTask.TaskSnapshot>() { @Override public void call(final Subscriber<? super UploadTask.TaskSnapshot> subscriber) { RxTask.assignOnTask(subscriber, storageRef.putBytes(bytes, metadata)); } }); }
@NonNull public static Observable<UploadTask.TaskSnapshot> putStream(@NonNull final StorageReference storageRef, @NonNull final InputStream stream, @NonNull final StorageMetadata metadata) { return Observable.unsafeCreate(new Observable.OnSubscribe<UploadTask.TaskSnapshot>() { @Override public void call(final Subscriber<? super UploadTask.TaskSnapshot> subscriber) { RxTask.assignOnTask(subscriber, storageRef.putStream(stream, metadata)); } }); }
@Override public Observable<T> call(Observable<T> source) { return Observable.unsafeCreate(new OnSubscribeMapLast<T>(source, function)); } };
@Override public Observable<T> call(Observable<T> o) { return Observable.unsafeCreate(new OnSubscribeDoOnEmpty<T>(o, onEmpty)); } };
Observable<File> create(final File rootDir) { return Observable.unsafeCreate(subscriber -> { File[] childDirs = rootDir.listFiles(); for (File child : childDirs) { subscriber.onNext(child); } subscriber.onCompleted(); }); } }