@Override public SingleSource<Object> apply(Maybe<Object> m) throws Exception { return m.toSingle(); } });
@Test public void source() { Maybe<Integer> m = Maybe.just(1); Single<Integer> s = m.toSingle(); assertTrue(s.getClass().toString(), s instanceof HasUpstreamMaybeSource); assertSame(m, (((HasUpstreamMaybeSource<?>)s).source())); }
@Test public void emptyToSingle() { Maybe.empty() .toSingle() .test() .assertFailure(NoSuchElementException.class); }
@Test public void dispose() { TestHelper.checkDisposed(PublishProcessor.create().singleElement().toSingle()); }
@Test public void errorToSingle() { Maybe.error(new TestException()) .toSingle() .test() .assertFailure(TestException.class); }
@Test public void singleMaybeSingle() { Single.just(1).toMaybe().toSingle().test().assertResult(1); }
/** * Check if we can load it from the cache (forceLoad parameter), if we can't, * load from the network (Single loadFromNetwork) * and put the results in the cache. */ private static <I extends Info> Single<I> checkCache(boolean forceLoad, int serviceId, String url, Single<I> loadFromNetwork) { checkServiceId(serviceId); loadFromNetwork = loadFromNetwork.doOnSuccess(info -> cache.putInfo(serviceId, url, info)); Single<I> load; if (forceLoad) { cache.removeInfo(serviceId, url); load = loadFromNetwork; } else { load = Maybe.concat(ExtractorHelper.loadFromCache(serviceId, url), loadFromNetwork.toMaybe()) .firstElement() //Take the first valid .toSingle(); } return load; }
void registerAdapters(ReactiveAdapterRegistry registry) { registry.registerReactiveType( ReactiveTypeDescriptor.multiValue(io.reactivex.Flowable.class, io.reactivex.Flowable::empty), source -> (io.reactivex.Flowable<?>) source, Flowable::fromPublisher ); registry.registerReactiveType( ReactiveTypeDescriptor.multiValue(io.reactivex.Observable.class, io.reactivex.Observable::empty), source -> ((io.reactivex.Observable<?>) source).toFlowable(BackpressureStrategy.BUFFER), source -> io.reactivex.Flowable.fromPublisher(source).toObservable() ); registry.registerReactiveType( ReactiveTypeDescriptor.singleRequiredValue(io.reactivex.Single.class), source -> ((io.reactivex.Single<?>) source).toFlowable(), source -> io.reactivex.Flowable.fromPublisher(source).toObservable().singleElement().toSingle() ); registry.registerReactiveType( ReactiveTypeDescriptor.singleOptionalValue(io.reactivex.Maybe.class, io.reactivex.Maybe::empty), source -> ((io.reactivex.Maybe<?>) source).toFlowable(), source -> io.reactivex.Flowable.fromPublisher(source).toObservable().singleElement() ); registry.registerReactiveType( ReactiveTypeDescriptor.noValue(io.reactivex.Completable.class, io.reactivex.Completable::complete), source -> ((io.reactivex.Completable) source).toFlowable(), source -> io.reactivex.Flowable.fromPublisher(source).toObservable().ignoreElements() ); } }
void registerAdapters(ReactiveAdapterRegistry registry) { registry.registerReactiveType( ReactiveTypeDescriptor.multiValue(io.reactivex.Flowable.class, io.reactivex.Flowable::empty), source -> (io.reactivex.Flowable<?>) source, Flowable::fromPublisher ); registry.registerReactiveType( ReactiveTypeDescriptor.multiValue(io.reactivex.Observable.class, io.reactivex.Observable::empty), source -> ((io.reactivex.Observable<?>) source).toFlowable(BackpressureStrategy.BUFFER), source -> io.reactivex.Flowable.fromPublisher(source).toObservable() ); registry.registerReactiveType( ReactiveTypeDescriptor.singleRequiredValue(io.reactivex.Single.class), source -> ((io.reactivex.Single<?>) source).toFlowable(), source -> io.reactivex.Flowable.fromPublisher(source).toObservable().singleElement().toSingle() ); registry.registerReactiveType( ReactiveTypeDescriptor.singleOptionalValue(io.reactivex.Maybe.class, io.reactivex.Maybe::empty), source -> ((io.reactivex.Maybe<?>) source).toFlowable(), source -> io.reactivex.Flowable.fromPublisher(source).toObservable().singleElement() ); registry.registerReactiveType( ReactiveTypeDescriptor.noValue(io.reactivex.Completable.class, io.reactivex.Completable::complete), source -> ((io.reactivex.Completable) source).toFlowable(), source -> io.reactivex.Flowable.fromPublisher(source).toObservable().ignoreElements() ); } }
/** * Converts the request to a single. When subscribed, the request is invoked. When the response is received, onSuccess or onError is called. * * @return An RxJava single */ default Single<T> toSingle() { return toMaybe().toSingle(); }
private Single<IdentityProvider> getIdentityProvider(String identityProviderId) { return identityProviderManager.getIdentityProvider(identityProviderId) .map(identityProvider -> { String identityProviderType = identityProvider.getType(); Optional<String> identityProviderSocialType = socialProviders.stream().filter(socialProvider -> identityProviderType.toLowerCase().contains(socialProvider)).findFirst(); if (identityProviderSocialType.isPresent()) { identityProvider.setType(identityProviderSocialType.get()); } return identityProvider; }).toSingle(); }
@Override public Single<Form> update(Form item) { FormMongo page = convert(item); return Single.fromPublisher(formsCollection.replaceOne(eq(FIELD_ID, page.getId()), page)).flatMap(updateResult -> findById(page.getId()).toSingle()); }
@Override public Single<IdentityProvider> update(IdentityProvider item) { IdentityProviderMongo identityProvider = convert(item); return Single.fromPublisher(identitiesCollection.replaceOne(eq(FIELD_ID, identityProvider.getId()), identityProvider)).flatMap(updateResult -> findById(identityProvider.getId()).toSingle()); }
@Override public Single<Group> update(Group item) { GroupMongo group = convert(item); return Single.fromPublisher(groupsCollection.replaceOne(eq(FIELD_ID, group.getId()), group)).flatMap(success -> findById(group.getId()).toSingle()); }
@Override public Single<Streaming.Average> collect(Flowable<Streaming.Metric> request) { return request.map(m -> m.getMetric()) .map(m -> new State(m, 1)) .reduce((a, b) -> new State(a.sum + b.sum, a.count + b.count)) .map(s -> Streaming.Average.newBuilder().setVal(s.sum / s.count).build()) .toSingle(); } };
@Override public Single<ExtensionGrant> create(ExtensionGrant item) { ExtensionGrantMongo extensionGrant = convert(item); extensionGrant.setId(extensionGrant.getId() == null ? (String) idGenerator.generate() : extensionGrant.getId()); return Single.fromPublisher(extensionGrantsCollection.insertOne(extensionGrant)).flatMap(success -> findById(extensionGrant.getId()).toSingle()); }
@Override public Single<Role> create(Role item) { RoleMongo role = convert(item); role.setId(role.getId() == null ? (String) idGenerator.generate() : role.getId()); return Single.fromPublisher(rolesCollection.insertOne(role)).flatMap(success -> findById(role.getId()).toSingle()); }
@Override public Single<Domain> create(Domain item) { DomainMongo domain = convert(item); domain.setId(domain.getId() == null ? (String) idGenerator.generate() : domain.getId()); return Single.fromPublisher(domainsCollection.insertOne(domain)).flatMap(success -> findById(domain.getId()).toSingle()); }
@Override public Single<Group> create(Group item) { GroupMongo group = convert(item); group.setId(group.getId() == null ? (String) idGenerator.generate() : group.getId()); return Single.fromPublisher(groupsCollection.insertOne(group)).flatMap(success -> findById(group.getId()).toSingle()); }