/** * Perform the actual retrieval and notifies the client through the given completionHandler. */ public void query(Consumer<QueryResult> completionHandler) { query().thenAccept(completionHandler); }
private DeferredResult<Void> unassignPrincipal(String role, String principalId) { PrincipalRoleAssignment rolePatch = new PrincipalRoleAssignment(); rolePatch.remove = new ArrayList<>(); rolePatch.remove.add(role); return sendWithDeferredResult(Operation.createPatch(this, UriUtils.buildUriPath(PrincipalService.SELF_LINK, principalId, PrincipalService.ROLES_SUFFIX)) .setBody(rolePatch)) .thenAccept(ignore -> { }); }
private void retrieveExpandedState(ProjectState simpleState, Operation get) { ProjectUtil.expandProjectState(this, get, simpleState, get.getUri()) .thenAccept(get::setBody) .whenCompleteNotify(get); }
private DeferredResult<Void> pksDeleteCluster(RequestContext ctx) { String clusterName = ctx.request.customProperties.get(PKS_CLUSTER_NAME_PROP_NAME); return getPKSContext(ctx.endpoint) .thenCompose(pksContext -> getClient().deleteCluster(pksContext, clusterName)) .thenAccept(aVoid -> ctx.operation.complete()); }
private DeferredResult<Void> handleProjectMemberGroupUnssignment(ProjectState projectState, String groupId) { String projectId = Service.getId(projectState.documentSelfLink); String encodedGroupId = encode(groupId); String roleLink = AuthRole.PROJECT_MEMBER.buildRoleWithSuffix(projectId, encodedGroupId); String userGroupLink = UriUtils.buildUriPath(UserGroupService.FACTORY_LINK, encodedGroupId); return deleteRole(roleLink) .thenCompose(ignore -> deleteExtendedMemberRole(projectId, encodedGroupId)) .thenAccept(ignore -> projectState.membersUserGroupLinks.remove(userGroupLink)); }
@Override public void handlePost(Operation post) { IPAddressState returnState = processInput(post); logInfo("Resource %s was granted the ip %s with the status %s", returnState.connectedResourceLink, returnState.ipAddress, returnState.ipAddressStatus); ResourceUtils.populateTags(this, returnState) .thenAccept(__ -> setState(post, returnState)) .whenCompleteNotify(post); }
@Override public void handlePut(Operation put) { if (PhotonModelUtils.isFromMigration(put)) { super.handlePut(put); return; } ResourceDescription returnState = processInput(put); ResourceUtils.populateTags(this, returnState) .thenAccept(__ -> setState(put, returnState)) .whenCompleteNotify(put); }
@Override public void handlePut(Operation put) { if (PhotonModelUtils.isFromMigration(put)) { super.handlePut(put); return; } StorageDescription returnState = validatePut(put); ResourceUtils.populateTags(this, returnState) .thenAccept(__ -> setState(put, returnState)) .whenCompleteNotify(put); }
@Override public void handlePut(Operation put) { if (PhotonModelUtils.isFromMigration(put)) { super.handlePut(put); return; } FirewallState returnState = processInput(put); ResourceUtils.populateTags(this, returnState) .thenAccept(__ -> setState(put, returnState)) .whenCompleteNotify(put); }
@Override public void handlePut(Operation put) { if (PhotonModelUtils.isFromMigration(put)) { super.handlePut(put); return; } LoadBalancerDescription returnState = processInput(put); ResourceUtils.populateTags(this, returnState) .thenAccept(__ -> setState(put, returnState)) .whenCompleteNotify(put); }
@Override public void handlePut(Operation put) { if (PhotonModelUtils.isFromMigration(put)) { super.handlePut(put); return; } LoadBalancerState returnState = processInput(put); ResourceUtils.populateTags(this, returnState) .thenAccept(__ -> setState(put, returnState)) .whenCompleteNotify(put); }
@Override public void handlePut(Operation put) { if (PhotonModelUtils.isFromMigration(put)) { super.handlePut(put); return; } SnapshotState returnState = processInput(put); ResourceUtils.populateTags(this, returnState) .thenAccept(__ -> setState(put, returnState)) .whenCompleteNotify(put); }
@Override public void handlePut(Operation put) { if (PhotonModelUtils.isFromMigration(put)) { super.handlePut(put); return; } NetworkInterfaceState returnState = validatePut(put); ResourceUtils.populateTags(this, returnState) .thenAccept(__ -> setState(put, returnState)) .whenCompleteNotify(put); }
@Override public void handlePost(Operation post) { TagAssignmentRequest request = post.getBody(TagAssignmentRequest.class); postTagStates(request) .thenCompose(ignore -> updateTags(request)) .thenAccept(tagLinks -> { request.tagLinks = tagLinks; post.setBody(request); }) .whenCompleteNotify(post); }
private DeferredResult<Void> pksListPlans(RequestContext ctx) { return getPKSContext(ctx.endpoint) .thenCompose(pksContext -> getClient().getPlans(pksContext)) .thenAccept(pksPlans -> ctx.operation.setBodyNoCloning(pksPlans).complete()); }
private DeferredResult<Void> pksCreateCluster(RequestContext ctx) { PKSCluster cluster = PKSClusterMapper.fromMap(ctx.request.customProperties); return getPKSContext(ctx.endpoint) .thenCompose(pksContext -> getClient().createCluster(pksContext, cluster)) .thenAccept(pksCluster -> ctx.operation.setBodyNoCloning(pksCluster).complete()); }
@Override public void handleCreate(Operation start) { if (PhotonModelUtils.isFromMigration(start)) { start.complete(); return; } DiskState state = processInput(start); state.documentCreationTimeMicros = Utils.getNowMicrosUtc(); ResourceUtils.populateTags(this, state) .thenAccept(__ -> ResourceUtils.initNoEndpointFlag(state, DiskState.class)) .whenCompleteNotify(start); }
@Override public void handlePeriodicMaintenance(Operation maintenance) { if (getProcessingStage() != ProcessingStage.AVAILABLE) { logInfo("Skipping maintenance since service is not available: %s ", getUri()); } maintenance.complete(); logFine("Performing maintenance for: %s", getUri()); retrieveReleasedIPAddresses() .thenAccept(ips -> markIPAddressesAsAvailable(ips)); }
@Test public void testThenAcceptCanThrowException() throws Throwable { TestContext ctx = new TestContext(1, TestContext.DEFAULT_WAIT_DURATION); DeferredResult<Integer> original = new DeferredResult<>(); original .thenAccept(i -> { throw new TestException(); }) .whenComplete(getExpectedExceptionCompletion(ctx)); runAfter(10, () -> original.complete(1)); ctx.await(); }
@Test public void testThenAcceptCanThrowException() throws Throwable { TestContext ctx = new TestContext(1, TestContext.DEFAULT_WAIT_DURATION); DeferredResult<Integer> original = new DeferredResult<>(); original .thenAccept(i -> { throw new TestException(); }) .whenComplete(getExpectedExceptionCompletion(ctx)); runAfter(10, () -> original.complete(1)); ctx.await(); }