Java 类java.util.concurrent.CompletionStage 实例源码
项目:commercetools-sync-java
文件:TaxCategoryServiceImpl.java
@Nonnull
private CompletionStage<Optional<String>> cacheAndFetch(@Nonnull final String key) {
final Consumer<List<TaxCategory>> taxCategoryPageConsumer = taxCategoryPage ->
taxCategoryPage.forEach(taxCategory -> {
final String fetchedTaxCategoryKey = taxCategory.getKey();
final String id = taxCategory.getId();
if (StringUtils.isNotBlank(fetchedTaxCategoryKey)) {
keyToIdCache.put(fetchedTaxCategoryKey, id);
} else {
syncOptions.applyWarningCallback(format("TaxCategory with id: '%s' has no key set. Keys are"
+ " required for taxCategory matching.", id));
}
});
return CtpQueryUtils.queryAll(syncOptions.getCtpClient(), TaxCategoryQuery.of(), taxCategoryPageConsumer)
.thenApply(result -> Optional.ofNullable(keyToIdCache.get(key)));
}
项目:commercetools-sync-java
文件:InventoryReferenceResolver.java
/**
* Given an {@link InventoryEntryDraftBuilder} and a {@code channelKey} this method fetches the actual id of the
* channel corresponding to this key, ideally from a cache. Then it sets this id on the supply channel reference
* id of the inventory entry draft builder. If the id is not found in cache nor the CTP project
* and {@code ensureChannel} option is set to true, a new channel will be created with this key
* and the role {@code "InventorySupply"}.
* However, if the {@code ensureChannel} is set to false, the future is completed exceptionally with a
* {@link ReferenceResolutionException}.
*
* @param draftBuilder the inventory draft builder to read it's values (key, sku, channel)
* and then to write resolved references.
* @param channelKey the key of the channel to resolve it's actual id on the draft.
* @return a {@link CompletionStage} that contains as a result the same {@code draftBuilder} inventory draft builder
* instance with resolved supply channel reference or an exception.
*/
@Nonnull
private CompletionStage<InventoryEntryDraftBuilder> fetchOrCreateAndResolveReference(
@Nonnull final InventoryEntryDraftBuilder draftBuilder,
@Nonnull final String channelKey) {
final CompletionStage<InventoryEntryDraftBuilder> inventoryEntryDraftCompletionStage = channelService
.fetchCachedChannelId(channelKey)
.thenCompose(resolvedChannelIdOptional -> resolvedChannelIdOptional
.map(resolvedChannelId -> setChannelReference(resolvedChannelId, draftBuilder))
.orElseGet(() -> createChannelAndSetReference(channelKey, draftBuilder)));
final CompletableFuture<InventoryEntryDraftBuilder> result = new CompletableFuture<>();
inventoryEntryDraftCompletionStage
.whenComplete((resolvedDraftBuilder, exception) -> {
if (exception != null) {
result.completeExceptionally(
new ReferenceResolutionException(format(FAILED_TO_RESOLVE_SUPPLY_CHANNEL, draftBuilder.getSku(),
exception.getCause().getMessage()), exception));
} else {
result.complete(resolvedDraftBuilder);
}
});
return result;
}
项目:hashsdn-controller
文件:DistributedShardedDOMDataTree.java
@Override
public CompletionStage<Void> close() {
// first despawn on the local node
distributedShardedDOMDataTree.despawnShardFrontend(prefix);
// update the config so the remote nodes are updated
final Future<Object> ask =
Patterns.ask(shardedDataTreeActor, new PrefixShardRemovalLookup(prefix), SHARD_FUTURE_TIMEOUT);
final Future<Void> closeFuture = ask.transform(
new Mapper<Object, Void>() {
@Override
public Void apply(final Object parameter) {
return null;
}
},
new Mapper<Throwable, Throwable>() {
@Override
public Throwable apply(final Throwable throwable) {
return throwable;
}
}, actorSystem.dispatcher());
return FutureConverters.toJava(closeFuture);
}
项目:mug
文件:RetryerTest.java
@Test public void returnValueAndExceptionRetriedButStillReturnBad() throws Exception {
Delay<Throwable> exceptionDelay = spy(ofSeconds(1));
Delay<String> returnValueDelay = spy(ofSeconds(1));
Retryer.ForReturnValue<String> forReturnValue = retryer
.upon(IOException.class, asList(exceptionDelay))
.uponReturn("bad", asList(returnValueDelay, returnValueDelay));
IOException exception = new IOException();
when(action.run())
.thenReturn("bad").thenThrow(exception).thenReturn("bad").thenReturn("bad")
.thenReturn("fixed");
CompletionStage<String> stage = forReturnValue.retry(action::run, executor);
assertPending(stage);
elapse(4, Duration.ofSeconds(1));
assertCompleted(stage).isEqualTo("bad");
verify(action, times(4)).run();
verify(returnValueDelay, times(2)).beforeDelay("bad");
verify(returnValueDelay, times(2)).afterDelay("bad");
verify(exceptionDelay).beforeDelay(exception);
verify(exceptionDelay).afterDelay(exception);
}
项目:play-framework-blog
文件:PostExistsAndUserIsOwnerAction.java
public CompletionStage<Result> call(final Http.Context ctx) {
String username = ctx.session().get("username");
Long postId = Long.parseLong(ctx.request().getQueryString("id"));
Optional<PostDTO> optionalPost = postService.getPost(postId);
if (!optionalPost.isPresent()) {
// Post doesn't exists, return notFound
return CompletableFuture.completedFuture(notFound());
} else if (!optionalPost.get().username.equals(username)) {
// User is not the owner of Post, show him Login form
Result login = unauthorized(views.html.login.render(
loginDTOForm.withGlobalError("Please login with proper credentials to modify this post")));
return CompletableFuture.completedFuture(login);
} else {
// Post exists and User is the owner of Post, call delegate
return delegate.call(ctx);
}
}
项目:commercetools-sync-java
文件:PriceReferenceResolver.java
/**
* Given an {@link PriceDraftBuilder} and a {@code channelKey} this method fetches the actual id of the
* channel corresponding to this key, ideally from a cache. Then it sets this id on the supply channel reference
* id of the inventory entry draft. If the id is not found in cache nor the CTP project and {@code ensureChannel}
* option is set to true, a new channel will be created with this key and the role {@code "InventorySupply"}.
* However, if the {@code ensureChannel} is set to false, the future is completed exceptionally with a
* {@link ReferenceResolutionException}.
*
* @param draftBuilder the price draft builder where to set resolved references.
* @param channelKey the key of the channel to resolve it's actual id on the draft.
* @return a {@link CompletionStage} that contains as a result the same {@code draft} instance with resolved
* supply channel reference or an exception.
*/
@Nonnull
private CompletionStage<PriceDraftBuilder> fetchOrCreateAndResolveReference(
@Nonnull final PriceDraftBuilder draftBuilder,
@Nonnull final String channelKey) {
final CompletionStage<PriceDraftBuilder> priceDraftCompletionStage = channelService
.fetchCachedChannelId(channelKey)
.thenCompose(resolvedChannelIdOptional -> resolvedChannelIdOptional
.map(resolvedChannelId -> setChannelReference(resolvedChannelId, draftBuilder))
.orElseGet(() -> createChannelAndSetReference(channelKey, draftBuilder)));
final CompletableFuture<PriceDraftBuilder> result = new CompletableFuture<>();
priceDraftCompletionStage
.whenComplete((resolvedDraft, exception) -> {
if (exception != null) {
result.completeExceptionally(
new ReferenceResolutionException(format(FAILED_TO_RESOLVE_CHANNEL, draftBuilder.getCountry(),
draftBuilder.getValue(), exception.getMessage()), exception));
} else {
result.complete(resolvedDraft);
}
});
return result;
}
项目:commercetools-sync-java
文件:InventorySync.java
/**
* Given a list of inventory entry {@code drafts}, this method resolves the references of each entry and attempts to
* sync it to the CTP project depending whether the references resolution was successful. In addition the given
* {@code oldInventories} list is converted to a {@link Map} of an identifier to an inventory entry, for a resources
* comparison reason.
*
* @param oldInventories inventory entries from CTP
* @param inventoryEntryDrafts drafts that need to be synced
* @return a future which contains an empty result after execution of the update
*/
private CompletionStage<InventorySyncStatistics> syncBatch(@Nonnull final List<InventoryEntry> oldInventories,
@Nonnull final List<InventoryEntryDraft> inventoryEntryDrafts) {
final Map<InventoryEntryIdentifier , InventoryEntry> identifierToOldInventoryEntry = oldInventories
.stream().collect(toMap(InventoryEntryIdentifier::of, identity()));
final List<CompletableFuture<Void>> futures = new ArrayList<>(inventoryEntryDrafts.size());
inventoryEntryDrafts.forEach(inventoryEntryDraft ->
futures.add(referenceResolver.resolveReferences(inventoryEntryDraft)
.thenCompose(resolvedDraft ->
syncDraft(identifierToOldInventoryEntry, resolvedDraft))
.exceptionally(referenceResolutionException -> {
final String errorMessage = format(FAILED_TO_RESOLVE_REFERENCES,
inventoryEntryDraft.getSku(),
referenceResolutionException.getMessage());
handleError(errorMessage, referenceResolutionException, 1);
return null;
})
.toCompletableFuture()));
return CompletableFuture.allOf(futures.toArray(new CompletableFuture[futures.size()]))
.thenApply(result -> statistics);
}
项目:centraldogma
文件:ProjectServiceV1.java
/**
* POST /projects
*
* <p>Creates a new project.
*/
@Post("/projects")
@ResponseConverter(CreateApiResponseConverter.class)
public CompletionStage<ProjectDto> createProject(@RequestObject CreateProjectRequest request,
@RequestObject Author author) {
return mds.createProject(request.name(), author, request.owners(), request.members())
.thenCompose(projectInfo -> execute(Command.createProject(author, projectInfo.name())))
.handle((unused, thrown) -> {
try {
if (thrown == null) {
return DtoConverter.convert(projectManager().get(request.name()));
} else {
return Exceptions.throwUnsafely(thrown);
}
} finally {
if (thrown != null) {
// Remove created project from metadata.
mds.removeProject(request.name(), author);
}
}
});
}
项目:centraldogma
文件:RepositoryService.java
/**
* GET /projects/{projectName}/repositories/{repository}/files/revisions/{revision}{path}
* Returns the blob in the path.
*/
@Get("regex:/projects/(?<projectName>[^/]+)/repositories/(?<repositoryName>[^/]+)" +
"/files/revisions/(?<revision>[^/]+)(?<path>/.*$)")
public CompletionStage<EntryWithRevisionDto> getFile(@Param("projectName") String projectName,
@Param("repositoryName") String repositoryName,
@Param("revision") String revision,
@Param("path") String path,
@Param("queryType") Optional<String> queryType,
@Param("expression") Optional<String> expressions) {
final Query<?> query = Query.of(QueryType.valueOf(queryType.orElse("IDENTITY")),
path, expressions.orElse(""));
final Repository repo = projectManager().get(projectName).repos().get(repositoryName);
return repo.normalize(new Revision(revision))
.thenCompose(normalized -> repo.get(normalized, query))
.thenApply(queryResult -> DtoConverter.convert(path, queryResult));
}
项目:integration-patterns
文件:ComposingRequestHandler.java
private CompletionStage<Response<ByteString>> compose(final RequestContext context, final RouteMatch match,
final Response<ByteString> response) {
if (match.shouldProxy()) {
return CompletableFuture.completedFuture(response);
}
if (response.status().code() != Status.OK.code() || !response.payload().isPresent()) {
// Do whatever suits your environment, retrieve the data from a cache,
// re-execute the request or just fail.
return defaultResponse();
}
final String responseAsUtf8 = response.payload().get().utf8();
return composerFactory.build(context.requestScopedClient(), match.parsedPathArguments())
.composeTemplate(response.withPayload(responseAsUtf8))
.thenApply(r -> toByteString(r)
.withHeaders(transformHeaders(response.headerEntries())));
}
项目:hashsdn-controller
文件:SimpleShardBackendResolver.java
@Override
public CompletionStage<? extends ShardBackendInfo> refreshBackendInfo(final Long cookie,
final ShardBackendInfo staleInfo) {
final ShardState existing = state;
if (existing != null) {
if (!staleInfo.equals(existing.getResult())) {
return existing.getStage();
}
synchronized (this) {
LOG.debug("Invalidating backend information {}", staleInfo);
flushCache(shardName);
LOG.trace("Invalidated cache %s", staleInfo);
state = null;
}
}
return getBackendInfo(cookie);
}
项目:commercetools-sync-java
文件:ProductTypeServiceImpl.java
@Nonnull
private CompletionStage<Optional<String>> cacheAndFetch(@Nonnull final String key) {
final Consumer<List<ProductType>> productTypePageConsumer = productTypePage ->
productTypePage.forEach(type -> {
final String fetchedTypeKey = type.getKey();
final String id = type.getId();
productsAttributesMetaData.put(id, getAttributeMetaDataMap(type));
if (StringUtils.isNotBlank(fetchedTypeKey)) {
keyToIdCache.put(fetchedTypeKey, id);
} else {
syncOptions.applyWarningCallback(format("ProductType with id: '%s' has no key set. Keys are"
+ " required for productType matching.", id));
}
});
return CtpQueryUtils.queryAll(syncOptions.getCtpClient(), ProductTypeQuery.of(), productTypePageConsumer)
.thenAccept(result -> isCached = true)
.thenApply(result -> Optional.ofNullable(keyToIdCache.get(key)));
}
项目:commercetools-sync-java
文件:ProductReferenceResolver.java
/**
* Given a {@link ProductDraftBuilder} this method attempts to resolve the categories and categoryOrderHints to
* return a {@link CompletionStage} which contains a new instance of the builder with the resolved references.
* The key of the category references is either taken from the expanded references or taken from the value of the
* id fields.
*
* @param draftBuilder the productDraft to resolve its category and categoryOrderHints references.
* @return a {@link CompletionStage} that contains as a result a new builder instance with resolved references or,
* in case an error occurs during reference resolution, a {@link ReferenceResolutionException}.
*/
@Nonnull
public CompletionStage<ProductDraftBuilder> resolveCategoryReferences(
@Nonnull final ProductDraftBuilder draftBuilder) {
final Set<ResourceIdentifier<Category>> categoryResourceIdentifiers = draftBuilder.getCategories();
final Set<String> categoryKeys = new HashSet<>();
for (ResourceIdentifier<Category> categoryResourceIdentifier: categoryResourceIdentifiers) {
if (categoryResourceIdentifier != null) {
try {
final String categoryKey = getKeyFromResourceIdentifier(categoryResourceIdentifier,
options.shouldAllowUuidKeys());
categoryKeys.add(categoryKey);
} catch (ReferenceResolutionException referenceResolutionException) {
return exceptionallyCompletedFuture(
new ReferenceResolutionException(
format(FAILED_TO_RESOLVE_REFERENCE, categoryResourceIdentifier.getTypeId(),
draftBuilder.getKey(),referenceResolutionException.getMessage())));
}
}
}
return fetchAndResolveCategoryReferences(draftBuilder, categoryKeys);
}
项目:iothub-manager-java
文件:Jobs.java
@Override
public CompletionStage<JobServiceModel> scheduleDeviceMethodAsync(
String jobId,
String queryCondition,
MethodParameterServiceModel parameter,
Date startTime,
long maxExecutionTimeInSeconds)
throws ExternalDependencyException {
try {
JobResult result = this.jobClient.scheduleDeviceMethod(
jobId,
queryCondition,
parameter.getName(),
parameter.getResponseTimeout() == null ? null : parameter.getResponseTimeout().getSeconds(),
parameter.getConnectionTimeout() == null ? null : parameter.getConnectionTimeout().getSeconds(),
parameter.getJsonPayload(),
startTime,
maxExecutionTimeInSeconds);
JobServiceModel jobModel = new JobServiceModel(result, null);
return CompletableFuture.supplyAsync(() -> jobModel);
} catch (IOException | IotHubException e) {
String message = String.format("Unable to schedule device method job: %s, %s, %s",
jobId, queryCondition, Json.stringify(Json.toJson(parameter)));
log.error(message, e);
throw new ExternalDependencyException(message, e);
}
}
项目:gnag-website
文件:GitHubAuthController.java
/**
* Used to render the Gradle configuration for a specific repository slug, access_token and version combination.
* Will fetch the latest plugin version if it has not already been cached.
* @param slug
* @return
*/
public CompletionStage<Result> configForSlug(String slug) {
final Http.Context context = Http.Context.current();
return wsClient.url("https://api.bintray.com/packages/btkelly/maven/gnag-gradle-plugin/versions/_latest")
.setHeader("accept", "application/json")
.setRequestTimeout(10 * 1000)
.get()
.thenApply(response -> {
String latestVersion = response.asJson().get("name").asText();
return ok(gnagconfig.render(slug, context.session().get(TOKEN_KEY), latestVersion));
});
}
项目:simulacron
文件:Server.java
/**
* Unregisters a cluster and closes all listening network interfaces associated with it.
*
* <p>If the cluster is not currently registered the returned future will fail with an {@link
* IllegalArgumentException}.
*
* @param clusterId id of the cluster.
* @return A future that when completed provides the unregistered cluster as it existed in the
* registry, may not be the same object as the input.
*/
public CompletionStage<BoundCluster> unregisterAsync(Long clusterId) {
if (isClosed()) {
return failByClose();
}
CompletableFuture<BoundCluster> future = new CompletableFuture<>();
if (clusterId == null) {
future.completeExceptionally(new IllegalArgumentException("Null id provided"));
} else {
BoundCluster foundCluster = clusters.remove(clusterId);
List<CompletableFuture<BoundNode>> closeFutures = new ArrayList<>();
if (foundCluster != null) {
// Close socket on each node.
for (BoundDataCenter dataCenter : foundCluster.getDataCenters()) {
for (BoundNode node : dataCenter.getNodes()) {
closeFutures.add(close(node));
}
}
CompletableFuture.allOf(closeFutures.toArray(new CompletableFuture[] {}))
.whenComplete(
(__, ex) -> {
if (ex != null) {
future.completeExceptionally(ex);
} else {
future.complete(foundCluster);
}
});
} else {
future.completeExceptionally(new IllegalArgumentException("ClusterSpec not found."));
}
}
return future;
}
项目:centraldogma
文件:ContentServiceV1.java
/**
* GET /projects/{projectName}/repos/{repoName}/tree{path}?revision={revision}
*
* <p>Returns the list of files in the path.
*/
@Get("regex:/projects/(?<projectName>[^/]+)/repos/(?<repoName>[^/]+)/tree(?<path>(|/.*))$")
public CompletionStage<List<EntryDto<?>>> listFiles(@Param("path") String path,
@Param("revision") @Default("-1") String revision,
@RequestObject Repository repository) {
final String path0 = rootDirIfEmpty(path);
return listFiles(repository, path0, new Revision(revision),
ImmutableMap.of(FindOption.FETCH_CONTENT, false));
}
项目:centraldogma
文件:ContentServiceV1.java
private static CompletionStage<Object> handleWatchSuccess(Repository repository,
Revision revision, String pathPattern) {
final CompletableFuture<List<Commit>> historyFuture =
repository.history(revision, revision, pathPattern);
return repository.find(revision, pathPattern)
.thenCombine(historyFuture, (entryMap, commits) -> {
// the size of commits should be 1
return DtoConverter.convert(commits.get(0), entryMap.values(),
repository.parent().name(), repository.name());
});
}
项目:rkt-launcher
文件:RktCommandRemoteImpl.java
@Override
public CompletionStage<RunOutput> runPrepared(String id, boolean daemonize) {
return RktCommandHelper.sendRequest(client,
RktCommandHelper.uri(apiHost, ImmutableMap
.of("daemonize",
ImmutableList.of(Boolean.toString(daemonize))),
"run-prepared", id),
RunOutput.class);
}
项目:commercetools-sync-java
文件:ProductSync.java
@Override
protected CompletionStage<ProductSyncStatistics> syncBatches(@Nonnull final List<List<ProductDraft>> batches,
@Nonnull final CompletionStage<ProductSyncStatistics>
result) {
if (batches.isEmpty()) {
return result;
}
final List<ProductDraft> firstBatch = batches.remove(0);
return syncBatches(batches, result.thenCompose(subResult -> processBatch(firstBatch)));
}
项目:java-dataloader
文件:PromisedValuesImpl.java
@Override
@SuppressWarnings("unchecked")
public T get(int index) {
assertState(isDone(), "The PromisedValues MUST be complete before calling the get() method");
try {
CompletionStage<T> future = futures.get(index);
return future.toCompletableFuture().get();
} catch (InterruptedException | ExecutionException e) {
return null;
}
}
项目:soabase-stages
文件:StagedFutureImpl.java
@Override
public <U> StagedFutureTimeout<U> thenIf(Function<T, Optional<U>> proc) {
Objects.requireNonNull(proc, "proc cannot be null");
// don't burn a thread if the optional is empty
CompletionStage<Optional<U>> nextStage = future.thenCompose(optional -> {
if (optional.isPresent()) {
Function<T, Optional<U>> tracedProc = tracingProc(tracing, proc);
return future.thenApplyAsync(__ -> tracedProc.apply(optional.get()), executor);
}
return CompletableFuture.completedFuture(Optional.empty());
});
return new StagedFutureImpl<>(executor, nextStage, tracing);
}
项目:commercetools-sync-java
文件:ProductReferenceResolver.java
/**
* Given a {@link ProductDraftBuilder} this method attempts to resolve the product type to return a
* {@link CompletionStage} which contains a new instance of the builder with the resolved product type reference.
* The key of the product type reference is either taken from the expanded reference or taken from the value of the
* id field.
*
* @param draftBuilder the productDraft to resolve its product type reference.
* @return a {@link CompletionStage} that contains as a result a new builder instance with resolved product type
* reference or, in case an error occurs during reference resolution,
* a {@link ReferenceResolutionException}.
*/
@Nonnull
public CompletionStage<ProductDraftBuilder> resolveProductTypeReference(
@Nonnull final ProductDraftBuilder draftBuilder) {
final ResourceIdentifier<ProductType> productTypeResourceIdentifier = draftBuilder.getProductType();
return getProductTypeId(productTypeResourceIdentifier,
format(FAILED_TO_RESOLVE_PRODUCT_TYPE, draftBuilder.getKey()))
.thenApply(resolvedProductTypeIdOptional -> {
resolvedProductTypeIdOptional.ifPresent(resolvedTypeId -> draftBuilder
.productType(ResourceIdentifier.ofId(resolvedTypeId, ProductType.referenceTypeId())));
return draftBuilder;
});
}
项目:graphql-java-reactive
文件:ReactiveExecutionStrategy.java
protected Object adapt(Object result) {
if (result instanceof CompletionStage) {
CompletionStage<Object> stage = (CompletionStage<Object>) result;
return Single.create(emitter -> stage.whenComplete((it, e) -> {
if (e != null) {
emitter.onError(e);
} else {
emitter.onSuccess(it);
}
})).toFlowable();
}
return result;
}
项目:rkt-launcher
文件:RktCommandRemoteImpl.java
@Override
public CompletionStage<FetchOutput> fetch(final boolean async,
final String image,
String... images) {
return RktCommandHelper.sendRequest(
client,
RktCommandHelper.uri(apiHost,
ImmutableMap.of("async", ImmutableList.of(Boolean.toString(async)),
"image", RktCommandHelper.merge(image, images)),
"fetch"),
FetchOutput.class);
}
项目:commercetools-sync-java
文件:CategorySync.java
@Override
protected CompletionStage<CategorySyncStatistics> syncBatches(@Nonnull final List<List<CategoryDraft>> batches,
@Nonnull final
CompletionStage<CategorySyncStatistics> result) {
if (batches.isEmpty()) {
return result;
}
final List<CategoryDraft> firstBatch = batches.remove(0);
return syncBatches(batches, result.thenCompose(subResult -> processBatch(firstBatch)));
}
项目:exam
文件:ExternalCourseHandlerImpl.java
@Override
public CompletionStage<Collection<String>> getPermittedCourses(User user) throws MalformedURLException {
URL url = parseUrl(user);
WSRequest request = wsClient.url(url.toString().split("\\?")[0]);
if (url.getQuery() != null) {
request = request.setQueryString(url.getQuery());
}
RemoteFunction<WSResponse, Collection<String>> onSuccess = response -> {
JsonNode root = response.asJson();
if (root.has("exception")) {
throw new RemoteException(root.get("exception").asText());
} else if (root.has("data")) {
Set<String> results = new HashSet<>();
for (JsonNode course : root.get("data")) {
if (course.has("course_code")) {
results.add(course.get("course_code").asText());
} else {
Logger.warn("Unexpected content {}", course.asText());
}
}
return results;
} else {
Logger.warn("Unexpected content {}", root.asText());
throw new RemoteException("sitnet_request_timed_out");
}
};
return request.get().thenApplyAsync(onSuccess);
}
项目:EasyFXML
文件:Stages.java
public static CompletionStage<Stage> stageOf(final String title, final Pane rootPane) {
final CompletableFuture<Stage> upcomingStage = new CompletableFuture<>();
Platform.runLater(() -> {
final Stage stage = new Stage(StageStyle.DECORATED);
stage.setTitle(title);
stage.setScene(new Scene(rootPane));
upcomingStage.complete(stage);
});
return upcomingStage;
}
项目:commercetools-sync-java
文件:InventoryServiceImpl.java
@Nonnull
@Override
public CompletionStage<List<InventoryEntry>> fetchInventoryEntriesBySkus(@Nonnull final Set<String> skus) {
final InventoryEntryQuery query = InventoryEntryQueryBuilder.of()
.plusPredicates(
queryModel -> queryModel.sku().isIn(skus))
.build();
return QueryExecutionUtils.queryAll(ctpClient, query);
}
项目:java-dataloader
文件:DataLoaderTest.java
@Test
public void should_Build_a_really_really_simple_data_loader() {
AtomicBoolean success = new AtomicBoolean();
DataLoader<Integer, Integer> identityLoader = new DataLoader<>(keysAsValues());
CompletionStage<Integer> future1 = identityLoader.load(1);
future1.thenAccept(value -> {
assertThat(value, equalTo(1));
success.set(true);
});
identityLoader.dispatch();
await().untilAtomic(success, is(true));
}
项目:iothub-manager-java
文件:JobsController.java
public CompletionStage<Result> scheduleJobAsync()
throws NotSupportedException, ExternalDependencyException {
JsonNode json = request().body().asJson();
final JobApiModel jobApiModel = fromJson(json, JobApiModel.class);
if (jobApiModel.getUpdateTwin() != null) {
return jobService.scheduleTwinUpdateAsync(
jobApiModel.getJobId(),
jobApiModel.getQueryCondition(),
jobApiModel.getUpdateTwin(),
jobApiModel.getStartTimeUtc() == null ?
DateTime.now(DateTimeZone.UTC).toDate() : jobApiModel.getStartTimeUtc(),
jobApiModel.getMaxExecutionTimeInSeconds() == null ?
3600 : jobApiModel.getMaxExecutionTimeInSeconds())
.thenApply(job -> ok(toJson(new JobApiModel(job))));
}
if (jobApiModel.getMethodParameter() != null) {
return jobService.scheduleDeviceMethodAsync(
jobApiModel.getJobId(),
jobApiModel.getQueryCondition(),
jobApiModel.getMethodParameter().toServiceModel(),
jobApiModel.getStartTimeUtc() == null ?
DateTime.now(DateTimeZone.UTC).toDate() : jobApiModel.getStartTimeUtc(),
jobApiModel.getMaxExecutionTimeInSeconds() == null ?
3600 : jobApiModel.getMaxExecutionTimeInSeconds())
.thenApply(job -> ok(toJson(new JobApiModel(job))));
}
throw new NotSupportedException();
}
项目:exam
文件:CombinedRoleAndPermissionHandler.java
@Override
public CompletionStage<Boolean> checkPermission(String permissionValue,
Optional<String> meta,
DeadboltHandler deadboltHandler,
Http.Context ctx) {
return CompletableFuture.completedFuture(false);
}
项目:OpenJSharp
文件:CompletableFuture.java
private <U,V> CompletableFuture<V> biApplyStage(
Executor e, CompletionStage<U> o,
BiFunction<? super T,? super U,? extends V> f) {
CompletableFuture<U> b;
if (f == null || (b = o.toCompletableFuture()) == null)
throw new NullPointerException();
CompletableFuture<V> d = new CompletableFuture<V>();
if (e != null || !d.biApply(this, b, f, null)) {
BiApply<T,U,V> c = new BiApply<T,U,V>(e, d, this, b, f);
bipush(b, c);
c.tryFire(SYNC);
}
return d;
}
项目:exam
文件:RoomController.java
private CompletionStage<Result> updateRemote(ExamRoom room) throws MalformedURLException {
if (room.getExternalRef() != null && IOP_ACTIVATED) {
return externalApi.updateFacility(room)
.thenApplyAsync(x -> ok("updated"))
.exceptionally(throwable -> internalServerError(throwable.getMessage()));
} else {
return wrapAsPromise(ok());
}
}
项目:exam
文件:CalendarController.java
private CompletionStage<Result> makeNewReservation(ExamEnrolment enrolment, Reservation reservation, User user) {
Ebean.save(reservation);
enrolment.setReservation(reservation);
enrolment.setReservationCanceled(false);
Ebean.save(enrolment);
Exam exam = enrolment.getExam();
// Send some emails asynchronously
system.scheduler().scheduleOnce(Duration.create(1, TimeUnit.SECONDS), () -> {
emailComposer.composeReservationNotification(user, reservation, exam, false);
Logger.info("Reservation confirmation email sent to {}", user.getEmail());
}, system.dispatcher());
return wrapAsPromise(ok("ok"));
}
项目:centraldogma
文件:ProjectServiceV1.java
/**
* PATCH /projects/{projectName}/members/{user}?role={role}
*
* <p>Changes the role of a user.
*/
@ConsumeType("application/json-patch+json")
@Patch("/projects/{projectName}/tokens/{appId}")
public CompletionStage<ProjectInfo> changeTokenRole(@Param("projectName") String projectName,
@Param("appId") String appId,
@Param("role") String role,
@RequestObject Author author) {
return mds.changeTokenRole(projectName, author, appId, ProjectRole.of(role));
}
项目:tascalate-concurrent
文件:Promises.java
private static <T, R> CompletablePromise<R> createLinkedPromise(CompletionStage<? extends T> stage) {
return new CompletablePromise<R>() {
@Override
public boolean cancel(boolean mayInterruptIfRunning) {
if (super.cancel(mayInterruptIfRunning)) {
cancelPromise(stage, mayInterruptIfRunning);
return true;
} else {
return false;
}
}
};
}
项目:mug
文件:RetryerTest.java
@Test public void returnValueAsyncFailedAfterRetry() throws Exception {
Delay<String> delay = spy(ofSeconds(1));
Retryer.ForReturnValue<String> forReturnValue =
retryer.ifReturns((String s) -> s.startsWith("bad"), asList(delay));
when(action.runAsync())
.thenReturn(completedFuture("bad"))
.thenReturn(completedFuture("bad2"));
CompletionStage<String> stage = forReturnValue.retryAsync(action::runAsync, executor);
assertPending(stage);
elapse(Duration.ofSeconds(1));
assertCompleted(stage).isEqualTo("bad2");
verify(action, times(2)).runAsync();
verify(delay).beforeDelay("bad");
verify(delay).afterDelay("bad");
}
项目:commercetools-sync-java
文件:VariantReferenceResolver.java
private static <T> CompletableFuture<List<T>> mapValuesToFutureOfCompletedValues(
@Nonnull final List<T> entities,
@Nonnull final Function<T, CompletionStage<T>> entityMapper) {
return mapValuesToFutureOfCompletedValues(entities.stream(), entityMapper);
}
项目:mug
文件:MaybeTest.java
private static <T> CompletionStage<T> exceptionally(Throwable e) {
CompletableFuture<T> future = new CompletableFuture<>();
future.completeExceptionally(e);
return future;
}