本文整理了Java中rx.Single.flatMapCompletable()
方法的一些代码示例,展示了Single.flatMapCompletable()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Single.flatMapCompletable()
方法的具体详情如下:
包路径:rx.Single
类名称:Single
方法名:flatMapCompletable
暂无
代码示例来源:origin: io.vertx/vertx-rx-java
/**
* Generates a {@link Completable} from {@link SQLConnection} operations.
*
* @param client the {@link SQLClient}
* @param sourceSupplier a user-provided function returning a {@link Completable} generated by interacting with the given {@link SQLConnection}
* @return a {@link Completable} generated from {@link SQLConnection} operations
*/
public static Completable usingConnectionCompletable(SQLClient client, Function<SQLConnection, Completable> sourceSupplier) {
return client.rxGetConnection().flatMapCompletable(conn -> {
return sourceSupplier.apply(conn).doAfterTerminate(conn::close);
});
}
代码示例来源:origin: vert-x3/vertx-rx
/**
* Generates a {@link Completable} from {@link SQLConnection} operations.
*
* @param client the {@link SQLClient}
* @param sourceSupplier a user-provided function returning a {@link Completable} generated by interacting with the given {@link SQLConnection}
* @return a {@link Completable} generated from {@link SQLConnection} operations
*/
public static Completable usingConnectionCompletable(SQLClient client, Function<SQLConnection, Completable> sourceSupplier) {
return client.rxGetConnection().flatMapCompletable(conn -> {
return sourceSupplier.apply(conn).doAfterTerminate(conn::close);
});
}
代码示例来源:origin: georocket/georocket
@Override
public Completable init(XMLChunkMeta meta) {
return canMerge(meta)
.flatMapCompletable(b -> {
if (b) {
return mergeParents(meta);
}
return Completable.error(new IllegalArgumentException(
"Chunk cannot be merged with this strategy"));
});
}
代码示例来源:origin: georocket/georocket
/**
* Append tags
* @param search the search query
* @param path the path
* @param tags the tags to append
* @return a Completable that completes when the tags have been appended
*/
private Completable appendTags(String search, String path, String tags) {
return Single.just(tags)
.map(x -> x.split(","))
.map(Arrays::asList)
.flatMapCompletable(tagList -> store.rxAppendTags(search, path, tagList));
}
代码示例来源:origin: georocket/georocket
@Override
public Completable merge(ChunkReadStream chunk, XMLChunkMeta meta,
WriteStream<Buffer> out) {
return canMerge(meta)
.flatMapCompletable(b -> {
if (!b) {
return Completable.error(new IllegalStateException(
"Chunk cannot be merged with this strategy"));
}
if (!headerWritten) {
writeHeader(out);
headerWritten = true;
}
return writeChunk(chunk, meta, out);
});
}
代码示例来源:origin: georocket/georocket
/**
* Update a document using a painless script
* @param postFilter the filter to select the documents
* @param updateScript the script which should be applied to the documents
* @return a Completable that completes if the update is successful or fails
* if an error occurs
*/
private Completable updateDocuments(JsonObject postFilter, JsonObject updateScript) {
return client.updateByQuery(TYPE_NAME, postFilter, updateScript)
.flatMapCompletable(sr -> {
if (sr.getBoolean("timed_out", true)) {
return Completable.error(new TimeoutException());
}
return Completable.complete();
});
}
}
代码示例来源:origin: com.microsoft.azure/azure-cosmosdb-gateway
private void startRefreshLocationTimerAsync(boolean initialization) {
if (this.isClosed) {
logger.info("startRefreshLocationTimerAsync: nothing to do, it is closed");
return;
}
logger.debug("registering a refresh in [{}] ms", this.backgroundRefreshLocationTimeIntervalInMS);
LocalDateTime now = LocalDateTime.now();
int delayInMillis = initialization ? 0: this.backgroundRefreshLocationTimeIntervalInMS;
Observable.timer(delayInMillis, TimeUnit.MILLISECONDS)
.toSingle().flatMapCompletable(
t -> {
if (this.isClosed) {
logger.warn("client already closed");
return Completable.error(new IllegalStateException("Client already closed"));
}
logger.debug("startRefreshLocationTimerAsync() - Invoking refresh, I was registered on [{}]", now);
Single<DatabaseAccount> databaseAccountObs = GlobalEndpointManager.getDatabaseAccountFromAnyLocationsAsync(this.defaultEndpoint, new ArrayList<>(this.connectionPolicy.getPreferredLocations()),
url -> this.getDatabaseAccountAsync(url)).toObservable().toSingle();
return databaseAccountObs.flatMapCompletable(dbAccount -> {
logger.debug("db account retrieved");
return this.refreshLocationPrivateAsync(dbAccount);
});
}).onErrorResumeNext(ex -> {
logger.error("startRefreshLocationTimerAsync() - Unable to refresh database account from any location. Exception: {}", ex.toString(), ex);
this.startRefreshLocationTimerAsync();
return Completable.complete();
}).toObservable().subscribeOn(scheduler).toBlocking().toFuture();
}
代码示例来源:origin: georocket/georocket
/**
* Ensure the Elasticsearch mapping exists
* @param type the target type for the mapping
* @return an observable that will emit a single item when the mapping has
* been created or if it already exists
*/
@Override
public Completable ensureMapping(String type, JsonObject mapping) {
// check if the target type exists
return typeExists(type).flatMapCompletable(exists -> {
if (exists) {
return Completable.complete();
} else {
// target type does not exist. create the mapping.
return putMapping(type, mapping).flatMapCompletable(ack -> {
if (ack) {
return Completable.complete();
}
return Completable.error(new NoStackTraceThrowable("Mapping creation "
+ "was not acknowledged by Elasticsearch"));
});
}
});
}
代码示例来源:origin: georocket/georocket
/**
* Ensure the Elasticsearch index exists
* @return an observable that will emit a single item when the index has
* been created or if it already exists
*/
@Override
public Completable ensureIndex() {
// check if the index exists
return indexExists().flatMapCompletable(exists -> {
if (exists) {
return Completable.complete();
} else {
// index does not exist. create it.
return createIndex().flatMapCompletable(ack -> {
if (ack) {
return Completable.complete();
}
return Completable.error(new NoStackTraceThrowable("Index creation "
+ "was not acknowledged by Elasticsearch"));
});
}
});
}
代码示例来源:origin: Aptoide/aptoide-client-v8
@Override public Completable send(Event event) {
AnalyticsEventRequestBody body = new AnalyticsEventRequestBody(event.getData(),
dateFormat.format(new Date(event.getTimeStamp())));
return analyticsBodyInterceptor.intercept(body)
.flatMapCompletable(analyticsBody -> serviceV7.sendEvent(event.getEventName(),
event.getAction()
.name(), event.getContext(), (AnalyticsEventRequestBody) analyticsBody)
.onErrorResumeNext(throwable -> {
if (throwable instanceof IllegalStateException) {
return Observable.error(throwable);
}
return Observable.empty();
})
.toCompletable());
}
代码示例来源:origin: georocket/georocket
.flatMapCompletable(success -> {
if (success) {
代码示例来源:origin: com.microsoft.azure/azure-cosmosdb-gateway
this.locationCache.onDatabaseAccountRead(dbAccount);
return dbAccount;
}).flatMapCompletable(dbAccount -> {
代码示例来源:origin: georocket/georocket
@Override
public Completable init(XMLChunkMeta meta) {
if (mergeStarted) {
return Completable.error(new IllegalStateException("You cannot "
+ "initialize the merger anymore after merging has begun"));
}
if (strategy == null) {
strategy = nextStrategy();
}
return strategy.canMerge(meta)
.flatMapCompletable(canMerge -> {
if (canMerge) {
// current strategy is able to handle the chunk
return strategy.init(meta);
}
// current strategy cannot merge the chunk. select next one and retry.
MergeStrategy ns = nextStrategy();
if (ns == null) {
return Completable.error(new UnsupportedOperationException(
"Cannot merge chunks. No valid strategy available."));
}
ns.setParents(strategy.getParents());
strategy = ns;
return init(meta);
});
}
代码示例来源:origin: georocket/georocket
/**
* Set properties
* @param search the search query
* @param path the path
* @param properties the properties to set
* @return a Completable that completes when the properties have been set
*/
private Completable setProperties(String search, String path, String properties) {
return Single.just(properties)
.map(x -> x.split(","))
.map(Arrays::asList)
.flatMap(x -> {
try {
return Single.just(parseProperties(x));
} catch (ServerAPIException e) {
return Single.error(e);
}
})
.flatMapCompletable(map -> store.rxSetProperties(search, path, map));
}
代码示例来源:origin: vert-x3/vertx-rx
protected Completable rxAssertAutoCommit(SQLConnection conn) {
String testName = UUID.randomUUID().toString();
return conn.rxExecute(String.format(INSERT_FOLK_SQL, testName)).toCompletable()
.andThen(client.rxGetConnection().flatMapCompletable(other -> {
return uniqueNames(other).contains(testName).toSingle()
.flatMapCompletable(contains -> {
if (contains) {
return Completable.complete();
}
return Completable.error(new AssertionError("Connection should be back in autocommit mode"));
})
.doAfterTerminate(other::close);
}));
}
代码示例来源:origin: georocket/georocket
@Override
public void start(Future<Void> startFuture) {
// load and copy all indexer factories now and not lazily to avoid
// concurrent modifications to the service loader's internal cache
indexerFactories = ImmutableList.copyOf(FilteredServiceLoader.load(IndexerFactory.class));
queryCompiler = createQueryCompiler();
queryCompiler.setQueryCompilers(indexerFactories);
new ElasticsearchClientFactory(vertx).createElasticsearchClient(INDEX_NAME)
.doOnSuccess(es -> {
client = es;
})
.flatMapCompletable(v -> client.ensureIndex())
.andThen(Completable.defer(() -> ensureMapping()))
.subscribe(() -> {
registerMessageConsumers();
startFuture.complete();
}, startFuture::fail);
}
代码示例来源:origin: georocket/georocket
client = es;
})
.flatMapCompletable(v -> client.ensureIndex())
.andThen(Completable.defer(this::ensureMapping))
.subscribe(() -> {
代码示例来源:origin: vert-x3/vertx-rx
private Completable inTransaction(Exception e) throws Exception {
return client.rxGetConnection().flatMapCompletable(conn -> {
return rxInsertExtraFolks(conn)
.andThen(uniqueNames(conn))
.<List<String>>collect(ArrayList::new, List::add).toSingle()
.flatMapCompletable(names -> rxAssertEquals(Arrays.asList(namesWithExtraFolks()), names))
.compose(upstream -> e == null ? upstream : upstream.andThen(Completable.error(e)))
.compose(SQLClientHelper.txCompletableTransformer(conn))
.andThen(rxAssertAutoCommit(conn))
.doAfterTerminate(conn::close);
});
}
}
代码示例来源:origin: vert-x3/vertx-rx
@Override
public void setUp() throws Exception {
super.setUp();
client = new JDBCClient(io.vertx.ext.jdbc.JDBCClient.createNonShared(vertx, config));
client.rxGetConnection().flatMapCompletable(conn -> {
Completable setup = conn.rxExecute("drop table folks if exists").toCompletable()
.andThen(conn.rxExecute("create table folks (firstname varchar(255) not null)").toCompletable());
for (String name : NAMES) {
setup = setup.andThen(conn.rxExecute(String.format(INSERT_FOLK_SQL, name)).toCompletable());
}
return setup.doAfterTerminate(conn::close);
}).await();
}
代码示例来源:origin: georocket/georocket
/**
* Test if canMerge works correctly
* @param context the test context
*/
@Test
public void canMerge(TestContext context) {
XMLChunkMeta cm2 = new XMLChunkMeta(Arrays.asList(new XMLStartElement("other")), 10, 20);
XMLChunkMeta cm3 = new XMLChunkMeta(Arrays.asList(new XMLStartElement("pre", "root")), 10, 20);
XMLChunkMeta cm4 = new XMLChunkMeta(Arrays.asList(new XMLStartElement(null, "root",
new String[] { "" }, new String[] { "uri" })), 10, 20);
Async async = context.async();
MergeStrategy strategy = new AllSameStrategy();
strategy.canMerge(cm)
.doOnSuccess(context::assertTrue)
.flatMapCompletable(v -> strategy.init(cm))
.andThen(strategy.canMerge(cm))
.doOnSuccess(context::assertTrue)
.flatMap(v -> strategy.canMerge(cm2))
.doOnSuccess(context::assertFalse)
.flatMap(v -> strategy.canMerge(cm3))
.doOnSuccess(context::assertFalse)
.flatMap(v -> strategy.canMerge(cm4))
.doOnSuccess(context::assertFalse)
.subscribe(v -> {
async.complete();
}, context::fail);
}
内容来源于网络,如有侵权,请联系作者删除!