Java Code Examples for java.util.concurrent.CompletableFuture
The following examples show how to use
java.util.concurrent.CompletableFuture. These examples are extracted from open source projects.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source Project: pulsar Source File: ZKMetadataStore.java License: Apache License 2.0 | 6 votes |
@Override public CompletableFuture<Boolean> exists(String path) { CompletableFuture<Boolean> future = new CompletableFuture<>(); try { zkc.exists(path, null, (rc, path1, ctx, stat) -> { executor.execute(() -> { Code code = Code.get(rc); if (code == Code.OK) { future.complete(true); } else if (code == Code.NONODE) { future.complete(false); } else { future.completeExceptionally(getException(code, path)); } }); }, future); } catch (Throwable t) { future.completeExceptionally(new MetadataStoreException(t)); } return future; }
Example 2
Source Project: triplea Source File: BattleDisplay.java License: GNU General Public License v3.0 | 6 votes |
private Action getPlayerAction( final String title, final Supplier<RetreatResult> showDialog, final CompletableFuture<Territory> future) { return SwingAction.of( title, e -> { actionButton.setEnabled(false); final RetreatResult retreatResult = showDialog.get(); if (retreatResult.isConfirmed()) { future.complete(retreatResult.getTarget()); actionButton.setAction(nullAction); } actionButton.setEnabled(true); }); }
Example 3
Source Project: crate Source File: ShardDMLExecutor.java License: Apache License 2.0 | 6 votes |
@Override public CompletableFuture<TResult> apply(BatchIterator<Row> batchIterator) { BatchIterator<TReq> reqBatchIterator = BatchIterators.partition(batchIterator, bulkSize, requestFactory, this::addRowToRequest, r -> false); // If the source batch iterator does not involve IO, mostly in-memory structures are used which we want to free // as soon as possible. We do not want to throttle based on the targets node counter in such cases. Predicate<TReq> shouldPause = ignored -> true; if (batchIterator.hasLazyResultSet()) { shouldPause = ignored -> nodeJobsCounter.getInProgressJobsForNode(localNodeId) >= MAX_NODE_CONCURRENT_OPERATIONS; } return new BatchIteratorBackpressureExecutor<>( scheduler, executor, reqBatchIterator, this::executeBatch, collector.combiner(), collector.supplier().get(), shouldPause, BACKOFF_POLICY ).consumeIteratorAndExecute() .thenApply(collector.finisher()); }
Example 4
Source Project: parsec-libraries Source File: ParsecAsyncHttpClient.java License: Apache License 2.0 | 6 votes |
/** * Critical execute a request (will not lookup in cache nor load into cache). * * @param request Request to critical execute * @param asyncHandler Request async handler * @param <T> Response type * @return {@literal CompletableFuture<T>} */ public <T> CompletableFuture<T> criticalExecute( final ParsecAsyncHttpRequest request, AsyncHandler<T> asyncHandler ) { AsyncHandler<T> practicalAsyncHandler = oldFashionProfiling? new ParsecAsyncHandlerWrapper<>(asyncHandler, request.getNingRequest()): asyncHandler; if (request.getRetryStatusCodes().isEmpty() && request.getRetryExceptions().isEmpty()) { return new ParsecCompletableFuture<>( client.executeRequest(request.getNingRequest(), practicalAsyncHandler) ); } else { ParsecHttpRequestRetryCallable<T> retryCallable; retryCallable = retryIntervalMillisOpt.map(retryIntervalMillis -> new ParsecHttpRequestRetryCallable<>( client, request, practicalAsyncHandler, retryIntervalMillis)) .orElseGet(() -> new ParsecHttpRequestRetryCallable<>(client, request, practicalAsyncHandler)); return new ParsecCompletableFuture<>(executorService.submit(retryCallable)); } }
Example 5
Source Project: Javacord Source File: ServerTextChannelBuilderDelegateImpl.java License: Apache License 2.0 | 6 votes |
@Override public CompletableFuture<ServerTextChannel> create() { ObjectNode body = JsonNodeFactory.instance.objectNode(); body.put("type", 0); super.prepareBody(body); if (topic != null) { body.put("topic", topic); } if (category != null) { body.put("parent_id", category.getIdAsString()); } if (delayModified) { body.put("rate_limit_per_user", delay); } return new RestRequest<ServerTextChannel>(server.getApi(), RestMethod.POST, RestEndpoint.SERVER_CHANNEL) .setUrlParameters(server.getIdAsString()) .setBody(body) .setAuditLogReason(reason) .execute(result -> server.getOrCreateServerTextChannel(result.getJsonBody())); }
Example 6
Source Project: pravega Source File: TaskStoreFactoryForTests.java License: Apache License 2.0 | 6 votes |
@Override public CompletableFuture<Void> lock(final Resource resource, final TaskData taskData, final String owner, final String tag, final String oldOwner, final String oldTag) { CompletableFuture<Void> future = super.lock(resource, taskData, owner, tag, oldOwner, oldTag); CompletableFuture<Void> lf = latch.get(); if (lf != null && first.getAndSet(false)) { log.debug("Waiting on the second thread to request the lock and complete the future"); lf.join(); } else if (lf != null) { log.debug("I'm the second thread, completing the future"); lf.complete(null); latch.set(null); } else { log.debug("Latch is null"); } return future; }
Example 7
Source Project: Flink-CEPplus Source File: Dispatcher.java License: Apache License 2.0 | 6 votes |
@Override public CompletableFuture<ClusterOverview> requestClusterOverview(Time timeout) { CompletableFuture<ResourceOverview> taskManagerOverviewFuture = runResourceManagerCommand(resourceManagerGateway -> resourceManagerGateway.requestResourceOverview(timeout)); final List<CompletableFuture<Optional<JobStatus>>> optionalJobInformation = queryJobMastersForInformation( (JobMasterGateway jobMasterGateway) -> jobMasterGateway.requestJobStatus(timeout)); CompletableFuture<Collection<Optional<JobStatus>>> allOptionalJobsFuture = FutureUtils.combineAll(optionalJobInformation); CompletableFuture<Collection<JobStatus>> allJobsFuture = allOptionalJobsFuture.thenApply(this::flattenOptionalCollection); final JobsOverview completedJobsOverview = archivedExecutionGraphStore.getStoredJobsOverview(); return allJobsFuture.thenCombine( taskManagerOverviewFuture, (Collection<JobStatus> runningJobsStatus, ResourceOverview resourceOverview) -> { final JobsOverview allJobsOverview = JobsOverview.create(runningJobsStatus).combine(completedJobsOverview); return new ClusterOverview(resourceOverview, allJobsOverview); }); }
Example 8
Source Project: Flink-CEPplus Source File: Dispatcher.java License: Apache License 2.0 | 6 votes |
@Override public CompletableFuture<JobStatus> requestJobStatus(JobID jobId, Time timeout) { final CompletableFuture<JobMasterGateway> jobMasterGatewayFuture = getJobMasterGatewayFuture(jobId); final CompletableFuture<JobStatus> jobStatusFuture = jobMasterGatewayFuture.thenCompose( (JobMasterGateway jobMasterGateway) -> jobMasterGateway.requestJobStatus(timeout)); return jobStatusFuture.exceptionally( (Throwable throwable) -> { final JobDetails jobDetails = archivedExecutionGraphStore.getAvailableJobDetails(jobId); // check whether it is a completed job if (jobDetails == null) { throw new CompletionException(ExceptionUtils.stripCompletionException(throwable)); } else { return jobDetails.getStatus(); } }); }
Example 9
Source Project: distributedlog Source File: BKLogWriteHandler.java License: Apache License 2.0 | 6 votes |
/** * Close log segment. * * @param inprogressZnodeName * @param logSegmentSeqNo * @param logSegmentId * @param firstTxId * @param lastTxId * @param recordCount * @param lastEntryId * @param lastSlotId * @throws IOException */ protected LogSegmentMetadata doCompleteAndCloseLogSegment( String inprogressZnodeName, long logSegmentSeqNo, long logSegmentId, long firstTxId, long lastTxId, int recordCount, long lastEntryId, long lastSlotId) throws IOException { CompletableFuture<LogSegmentMetadata> promise = new CompletableFuture<LogSegmentMetadata>(); doCompleteAndCloseLogSegment( inprogressZnodeName, logSegmentSeqNo, logSegmentId, firstTxId, lastTxId, recordCount, lastEntryId, lastSlotId, promise); return Utils.ioResult(promise); }
Example 10
Source Project: esjc Source File: ProjectionManager.java License: MIT License | 6 votes |
/** * Creates a projection with default options of the specified mode. * * @param name the name of the projection. * @param query the JavaScript source code for the query. * @param mode projection mode. * @param userCredentials user credentials to be used for this operation (use {@code null} for default user credentials). * @return a {@code CompletableFuture} representing the result of this operation. The future's methods * {@code get} and {@code join} can throw an exception with cause {@link ProjectionConflictException} * or {@link ProjectionException} on exceptional completion. In case of successful completion, * the future's methods {@code get} and {@code join} returns {@code null}. * @see #create(String, String, CreateOptions, UserCredentials) */ default CompletableFuture<Void> create(String name, String query, ProjectionMode mode, UserCredentials userCredentials) { checkNotNull(mode, "mode is null"); CreateOptions options; switch (mode) { case TRANSIENT: options = CreateOptions.TRANSIENT; break; case ONE_TIME: options = CreateOptions.ONE_TIME; break; case CONTINUOUS: options = CreateOptions.CONTINUOUS; break; default: throw new IllegalArgumentException("Unsupported projection mode: " + mode); } return create(name, query, options, userCredentials); }
Example 11
Source Project: pravega Source File: BookKeeperLogTests.java License: Apache License 2.0 | 5 votes |
/** * Tests the ability to retry writes when Bookies fail. */ @Test public void testAppendTransientBookieFailure() throws Exception { TreeMap<LogAddress, byte[]> writeData = new TreeMap<>(Comparator.comparingLong(LogAddress::getSequence)); try (DurableDataLog log = createDurableDataLog()) { log.initialize(TIMEOUT); val dataList = new ArrayList<byte[]>(); val futures = new ArrayList<CompletableFuture<LogAddress>>(); try { // Suspend a bookie (this will trigger write errors). stopFirstBookie(); // Issue appends in parallel, without waiting for them. int writeCount = getWriteCount(); for (int i = 0; i < writeCount; i++) { byte[] data = getWriteData(); futures.add(log.append(new CompositeByteArraySegment(data), TIMEOUT)); dataList.add(data); } } finally { // Resume the bookie with the appends still in flight. restartFirstBookie(); } // Wait for all writes to complete, then reassemble the data in the order set by LogAddress. val addresses = Futures.allOfWithResults(futures).join(); for (int i = 0; i < dataList.size(); i++) { writeData.put(addresses.get(i), dataList.get(i)); } } // Verify data. try (DurableDataLog log = createDurableDataLog()) { log.initialize(TIMEOUT); verifyReads(log, writeData); } }
Example 12
Source Project: atomix Source File: CachingAsyncAtomicDocumentTree.java License: Apache License 2.0 | 5 votes |
@Override public CompletableFuture<Boolean> replace(DocumentPath path, V newValue, long version) { return super.replace(path, newValue, version) .whenComplete((r, e) -> { if (r) { cache.invalidate(path); } }); }
Example 13
Source Project: microprofile-reactive-streams-operators Source File: FilterStageVerification.java License: Apache License 2.0 | 5 votes |
@Test(expectedExceptions = QuietRuntimeException.class, expectedExceptionsMessageRegExp = "failed") public void filterStageShouldPropagateExceptions() { CompletableFuture<Void> cancelled = new CompletableFuture<>(); CompletionStage<List<Integer>> result = infiniteStream() .onTerminate(() -> cancelled.complete(null)) .filter(foo -> { throw new QuietRuntimeException("failed"); }) .toList() .run(getEngine()); await(cancelled); await(result); }
Example 14
Source Project: mug Source File: Retryer.java License: Apache License 2.0 | 5 votes |
private <E extends Throwable, T> void retryIfCovered( E e, ScheduledExecutorService retryExecutor, CheckedSupplier<? extends CompletionStage<T>, ?> supplier, CompletableFuture<T> future) throws E { if (plan.covers(e)) { scheduleRetry(e, retryExecutor, supplier, future); } else { throw e; } }
Example 15
Source Project: armeria Source File: AbstractEndpointSelector.java License: Apache License 2.0 | 5 votes |
@Override public final CompletableFuture<Endpoint> select(ClientRequestContext ctx, ScheduledExecutorService executor, long timeoutMillis) { Endpoint endpoint = selectNow(ctx); if (endpoint != null) { return UnmodifiableFuture.completedFuture(endpoint); } final ListeningFuture listeningFuture = new ListeningFuture(ctx, executor); endpointGroup.addListener(listeningFuture); // Try to select again because the EndpointGroup might have been updated // between selectNow() and addListener() above. endpoint = selectNow(ctx); if (endpoint != null) { endpointGroup.removeListener(listeningFuture); return UnmodifiableFuture.completedFuture(endpoint); } // Schedule the timeout task. final ScheduledFuture<?> timeoutFuture = executor.schedule(() -> listeningFuture.complete(null), timeoutMillis, TimeUnit.MILLISECONDS); listeningFuture.timeoutFuture = timeoutFuture; // Cancel the timeout task if listeningFuture is done already. // This guards against the following race condition: // 1) (Current thread) Timeout task is scheduled. // 2) ( Other thread ) listeningFuture is completed, but the timeout task is not cancelled // 3) (Current thread) timeoutFuture is assigned to listeningFuture.timeoutFuture, but it's too late. if (listeningFuture.isDone()) { timeoutFuture.cancel(false); } return listeningFuture; }
Example 16
Source Project: datakernel Source File: FileDownloadExample.java License: Apache License 2.0 | 5 votes |
@Override protected void run() throws Exception { ExecutorService executor = newSingleThreadExecutor(); CompletableFuture<Void> future = eventloop.submit(() -> ChannelSupplier.ofPromise(client.download(REQUIRED_FILE)) .streamTo(ChannelFileWriter.open(executor, clientStorage.resolve(DOWNLOADED_FILE))) .whenResult(() -> System.out.printf("\nFile '%s' successfully downloaded to '%s'\n\n", REQUIRED_FILE, clientStorage)) ); future.get(); executor.shutdown(); }
Example 17
Source Project: webster Source File: HttpHandler.java License: Apache License 2.0 | 5 votes |
public HttpHandler(Function<Request, CompletableFuture<Response>> requestHandler, ExecutorService executor, long timeoutMillis) { super(false); this.requestHandler = requestHandler; this.executor = executor; this.timeoutMillis = timeoutMillis; }
Example 18
Source Project: styx Source File: CliMainTest.java License: Apache License 2.0 | 5 votes |
@Test public void testBackfillShow() { final String backfillId = "backfill-2"; final Backfill backfill = Backfill.newBuilder() .id(backfillId) .start(Instant.parse("2017-01-01T00:00:00Z")) .end(Instant.parse("2017-01-30T00:00:00Z")) .workflowId(WorkflowId.create("quux", backfillId)) .concurrency(1) .description("Description") .nextTrigger(Instant.parse("2017-01-01T00:00:00Z")) .schedule(Schedule.DAYS) .created(currentTime) .lastModified(currentTime) .build(); final BackfillPayload backfillPayload = BackfillPayload.create(backfill, Optional.empty()); when(client.backfill(backfillId, true)) .thenReturn(CompletableFuture.completedFuture(backfillPayload)); CliMain.run(cliContext, "backfill", "show", backfillId, "--no-trunc"); verify(client).backfill(backfillId, true); verify(cliOutput).printBackfillPayload(backfillPayload, true); }
Example 19
Source Project: caffeine Source File: Async.java License: Apache License 2.0 | 5 votes |
@Override @SuppressWarnings("FutureReturnValueIgnored") public void onRemoval(@Nullable K key, @Nullable CompletableFuture<V> future, RemovalCause cause) { if (future != null) { future.thenAcceptAsync(value -> delegate.onRemoval(key, value, cause), executor); } }
Example 20
Source Project: jdk8u60 Source File: ThenComposeAsyncTest.java License: GNU General Public License v2.0 | 5 votes |
public void testThenComposeAsync() throws Exception { // Composing CompletableFuture is complete CompletableFuture<String> cf1 = CompletableFuture.completedFuture("one"); // Composing function returns a CompletableFuture executed asynchronously CountDownLatch cdl = new CountDownLatch(1); CompletableFuture<String> cf2 = cf1.thenCompose(str -> CompletableFuture.supplyAsync(() -> { while (true) { try { cdl.await(); break; } catch (InterruptedException e) { } } return str + ", two"; })); // Ensure returned CompletableFuture completes after call to thenCompose // This guarantees that any premature internal completion will be // detected cdl.countDown(); String val = cf2.get(); Assert.assertNotNull(val); Assert.assertEquals(val, "one, two"); }
Example 21
Source Project: besu Source File: RlpxConnectionTest.java License: Apache License 2.0 | 5 votes |
@Test public void getPeer_pendingOutboundConnection() { final Peer peer = createPeer(); final CompletableFuture<PeerConnection> future = new CompletableFuture<>(); final RlpxConnection conn = RlpxConnection.outboundConnection(peer, future); assertThat(conn.getPeer()).isEqualTo(peer); }
Example 22
Source Project: vertx-shell Source File: CommandProcessTest.java License: Apache License 2.0 | 5 votes |
private Process createProcessInContext(Context context, Command command) throws Exception { CompletableFuture<Process> fut = new CompletableFuture<>(); context.runOnContext(v -> { Process process = command.createProcess().setSession(Session.create()).setTty(Pty.create().slave()); fut.complete(process); }); return fut.get(2000, TimeUnit.MILLISECONDS); }
Example 23
Source Project: onos Source File: AtomixDocumentTree.java License: Apache License 2.0 | 5 votes |
@Override public synchronized CompletableFuture<Void> addListener(DocumentPath path, DocumentTreeListener<V> listener) { io.atomix.core.tree.DocumentTreeEventListener<V> atomixListener = event -> listener.event(new DocumentTreeEvent<V>( toOnosPath(event.path()), DocumentTreeEvent.Type.valueOf(event.type().name()), event.newValue().map(this::toVersioned), event.oldValue().map(this::toVersioned))); listenerMap.put(listener, atomixListener); return adaptTreeFuture(atomixTree.addListener(toAtomixPath(path), atomixListener)); }
Example 24
Source Project: HAP-Java Source File: BaseCharacteristic.java License: MIT License | 5 votes |
/** * Creates the JSON serialized form of the accessory for use over the HomeKit Accessory Protocol. * * @param instanceId the static id of the accessory. * @return a future that will complete with the JSON builder for the object. */ protected CompletableFuture<JsonObjectBuilder> makeBuilder(int instanceId) { CompletableFuture<T> futureValue = getValue(); if (futureValue == null) { futureValue = CompletableFuture.completedFuture(getDefault()); } return futureValue .exceptionally( t -> { logger.warn("Could not retrieve value " + this.getClass().getName(), t); return null; }) .thenApply( value -> { JsonArrayBuilder perms = Json.createArrayBuilder(); if (isReadable) { perms.add("pr"); } if (isWritable) { perms.add("pw"); } if (subscriber.isPresent()) { perms.add("ev"); } JsonObjectBuilder builder = Json.createObjectBuilder() .add("iid", instanceId) .add("type", shortType) .add("perms", perms.build()) .add("format", format) .add("ev", false) .add("description", description); if (isReadable) setJsonValue(builder, value); return builder; }); }
Example 25
Source Project: botbuilder-java Source File: MiddlewareSetTest.java License: MIT License | 5 votes |
@Test public void RunCodeBeforeAndAfter() { final boolean[] didRun1 = { false }; final boolean[] codeafter2run = { false }; final boolean[] didRun2 = { false }; MiddlewareSet m = new MiddlewareSet(); m.use(new AnonymousReceiveMiddleware((tc, nd) -> { Assert.assertFalse("Looks like the 1st middleware has already run", didRun1[0]); didRun1[0] = true; CompletableFuture<Void> result = nd.next(); Assert.assertTrue("The 2nd middleware should have run now.", didRun1[0]); codeafter2run[0] = true; return result; })); m.use(new AnonymousReceiveMiddleware((tc, nd) -> { Assert.assertTrue("Looks like the 1st middleware has not been run", didRun1[0]); Assert.assertFalse( "The code that runs after middleware 2 is complete has already run.", codeafter2run[0] ); didRun2[0] = true; return nd.next(); })); m.receiveActivityWithStatus(null, null).join(); Assert.assertTrue(didRun1[0]); Assert.assertTrue(didRun2[0]); Assert.assertTrue(codeafter2run[0]); }
Example 26
Source Project: HubTurbo Source File: RepoIO.java License: GNU Lesser General Public License v3.0 | 5 votes |
public CompletableFuture<Model> updateModel(Model model, boolean syncOperation, int remainingTries) { return downloadModelUpdates(model) .thenCompose((updates) -> getRepoOpControl().updateLocalModel(updates, syncOperation)) .thenApply(newModel -> { boolean corruptedJson = false; if (!model.equals(newModel)) { try { corruptedJson = jsonStore.saveRepository(newModel.getRepoId(), new SerializableModel(newModel)) .get(); } catch (InterruptedException | ExecutionException ex) { corruptedJson = true; } } else { logger.info(HTLog.format(model.getRepoId(), "Nothing changed; not writing to store")); } if (corruptedJson && remainingTries > 0) { return downloadRepoFromSourceAsync(model.getRepoId(), remainingTries - 1).join(); } else { if (corruptedJson && remainingTries == 0) { UI.events.triggerEvent(new ShowErrorDialogEvent("Could not sync " + model.getRepoId(), "We were not able to sync with GitHub " + "to retrieve and store data for the repository " + model.getRepoId() + ". Please let us know if you " + "encounter this issue consistently.")); } else { UI.status.displayMessage(model.getRepoId() + " is up to date!"); } UI.events.triggerEvent(new UpdateProgressEvent(model.getRepoId())); return newModel; } }).exceptionally(withResult(new Model(model.getRepoId()))); }
Example 27
Source Project: atomix Source File: DefaultAtomicValueBuilder.java License: Apache License 2.0 | 5 votes |
@Override @SuppressWarnings("unchecked") public CompletableFuture<AtomicValue<V>> buildAsync() { return newProxy(AtomicValueService.class, new ServiceConfig()) .thenCompose(proxy -> new AtomicValueProxy(proxy, managementService.getPrimitiveRegistry()).connect()) .thenApply(elector -> { Serializer serializer = serializer(); return new TranscodingAsyncAtomicValue<V, byte[]>( elector, key -> serializer.encode(key), bytes -> serializer.decode(bytes)) .sync(); }); }
Example 28
Source Project: samza Source File: TestAsyncRetriableTable.java License: Apache License 2.0 | 5 votes |
@Test public void testPutWithPermFailureOnTimeout() { TableRetryPolicy policy = new TableRetryPolicy(); policy.withFixedBackoff(Duration.ofMillis(5)); policy.withStopAfterDelay(Duration.ofMillis(100)); TableReadFunction<String, String> readFn = mock(TableReadFunction.class); TableWriteFunction<String, String> writeFn = mock(TableWriteFunction.class); doReturn(true).when(writeFn).isRetriable(any()); CompletableFuture<String> future = new CompletableFuture(); future.completeExceptionally(new RuntimeException("test exception")); doReturn(future).when(readFn).getAsync(anyString()); AsyncReadWriteTable delegate = new AsyncRemoteTable(readFn, writeFn); AsyncRetriableTable table = new AsyncRetriableTable("t1", delegate, null, policy, schedExec, readFn, writeFn); table.init(TestRemoteTable.getMockContext()); try { table.putAsync("foo", "bar").join(); fail(); } catch (Throwable t) { } verify(writeFn, atLeast(3)).putAsync(any(), any()); assertTrue(table.writeRetryMetrics.retryCount.getCount() >= 3); assertEquals(0, table.writeRetryMetrics.successCount.getCount()); assertEquals(1, table.writeRetryMetrics.permFailureCount.getCount()); assertTrue(table.writeRetryMetrics.retryTimer.getSnapshot().getMax() > 0); }
Example 29
Source Project: component-runtime Source File: JsonSchemaConverter.java License: Apache License 2.0 | 5 votes |
@Override public CompletionStage<PropertyContext<?>> convert(final CompletionStage<PropertyContext<?>> cs) { return cs.thenCompose(context -> { final JsonSchema jsonSchema = new JsonSchema(); jsonSchema.setTitle(context.getProperty().getDisplayName()); final String type = context.getProperty().getType(); switch (type.toLowerCase(ROOT)) { case "enum": return new EnumPropertyConverter(jsonSchema) .convert(CompletableFuture.completedFuture(context)) .thenCompose(c -> postHandling(context, jsonSchema, type)); case "array": return new ArrayPropertyConverter(jsonb, jsonSchema, properties) .convert(CompletableFuture.completedFuture(context)) .thenCompose(c -> postHandling(context, jsonSchema, type)); default: if (context.getProperty().getPath().endsWith("[]")) { return CompletableFuture.completedFuture(context); } jsonSchema.setType(type.toLowerCase(ROOT)); of(context .findDirectChild(properties) .filter(nested -> new PropertyContext<>(nested, context.getRootContext(), context.getConfiguration()).isRequired()) .map(SimplePropertyDefinition::getName) .collect(toSet())).filter(s -> !s.isEmpty()).ifPresent(jsonSchema::setRequired); return CompletableFuture .completedFuture(context) .thenCompose(c -> postHandling(context, jsonSchema, type)); } }); }
Example 30
Source Project: botbuilder-java Source File: TeamsActivityHandler.java License: MIT License | 4 votes |
protected CompletableFuture<MessagingExtensionResponse> onTeamsAppBasedLinkQuery( TurnContext turnContext, AppBasedLinkQuery query ) { return notImplemented(); }