Java Code Examples for com.google.common.util.concurrent.SettableFuture#setException()

The following examples show how to use com.google.common.util.concurrent.SettableFuture#setException() . 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 File: BDBHARemoteReplicationNodeImpl.java    From qpid-broker-j with Apache License 2.0 6 votes vote down vote up
@Override
protected ListenableFuture<Void> onDelete()
{
    if (!_nodeLeft)
    {
        SettableFuture<Void> future = SettableFuture.create();

        String nodeName = getName();
        try
        {
            _replicatedEnvironmentFacade.removeNodeFromGroup(nodeName);
            getEventLogger().message(_virtualHostNodeLogSubject, HighAvailabilityMessages.DELETED());
            future.set(null);
        }
        catch (RuntimeException e)
        {
            future.setException(e);
        }
        return future;
    }
    else
    {
        return super.onDelete();
    }
}
 
Example 2
Source File: PlatformBusClient.java    From arcusplatform with Apache License 2.0 6 votes vote down vote up
private void dispatchExpectedResponse(PlatformMessage message) {
   String correlationId = message.getCorrelationId();
   if(StringUtils.isBlank(correlationId)) {
      return;
   }

   SettableFuture<PlatformMessage> future = futures.get(message.getCorrelationId());
   if(future == null) {
      return;
   }

   if(message.isError()) {
      MessageBody body = message.getValue();
      future.setException(new ErrorEventException((String) body.getAttributes().get("code"), (String) body.getAttributes().get("message")));
   } else {
      future.set(message);
   }
}
 
Example 3
Source File: RecurlyClient.java    From arcusplatform with Apache License 2.0 6 votes vote down vote up
protected <T extends BaseRecurlyModel> ListenableFuture<T> doGET(String resourcePath, final Class<T> clazz, @Nullable String apiVersion) {
    final SettableFuture<T> future = SettableFuture.create();

    try {
        get(baseURL + resourcePath, apiVersion)
                .execute(new AsyncCompletionHandler<Void>() {
                    @Override
                    public Void onCompleted(Response response) throws Exception {
                        setResponse(response, future, clazz);
                        return null;
                    }
                });
    } catch (Exception ex) {
        future.setException(ex);
    }

    return future;
}
 
Example 4
Source File: UpsertByIdTask.java    From Elasticsearch with Apache License 2.0 5 votes vote down vote up
private void executeUpsertRequest(final UpsertByIdNode.Item item, final SettableFuture<TaskResult> futureResult) {
    ShardId shardId;
    try {
        shardId = clusterService.operationRouting().indexShards(
                clusterService.state(),
                item.index(),
                Constants.DEFAULT_MAPPING_TYPE,
                item.id(),
                item.routing()
        ).shardId();
    } catch (IndexNotFoundException e) {
        if (PartitionName.isPartition(item.index())) {
            futureResult.set(TaskResult.ZERO);
            return;
        }
        throw e;
    }

    ShardUpsertRequest upsertRequest = new ShardUpsertRequest(
            shardId, node.updateColumns(), node.insertColumns(), item.routing(), jobId());
    upsertRequest.continueOnError(false);
    ShardUpsertRequest.Item requestItem = new ShardUpsertRequest.Item(
            item.id(), item.updateAssignments(), item.insertValues(), item.version());
    upsertRequest.add(0, requestItem);

    UpsertByIdContext upsertByIdContext = new UpsertByIdContext(
            node.executionPhaseId(), upsertRequest, item, futureResult, transportShardUpsertActionDelegate);
    createJobExecutionContext(upsertByIdContext);
    try {
        jobExecutionContext.start();
    } catch (Throwable throwable) {
        futureResult.setException(throwable);
    }
}
 
Example 5
Source File: DaprClientGrpcTest.java    From java-sdk with MIT License 5 votes vote down vote up
@Test(expected = RuntimeException.class)
public void invokeServiceCallbackExceptionThrownTest() {
  SettableFuture<CommonProtos.InvokeResponse> settableFuture = SettableFuture.create();
  RuntimeException ex = new RuntimeException("An Exception");
  MockCallback<CommonProtos.InvokeResponse> callback =
      new MockCallback<CommonProtos.InvokeResponse>(ex);
  addCallback(settableFuture, callback, directExecutor());
  when(client.invokeService(any(DaprProtos.InvokeServiceRequest.class)))
      .thenReturn(settableFuture);
  Mono<String> result = adapter.invokeService(Verb.GET, "appId", "method", "request", null, String.class);
  settableFuture.setException(ex);
  result.block();
}
 
Example 6
Source File: FutureUtilsTest.java    From hivemq-community-edition with Apache License 2.0 5 votes vote down vote up
@Test(expected = ExecutionException.class)
public void test_void_future_from_any_future_failure() throws Exception {
    final SettableFuture<Object> future = SettableFuture.create();

    final ListenableFuture<Void> voidFuture = FutureUtils.voidFutureFromAnyFuture(future);
    assertEquals(false, voidFuture.isDone());
    future.setException(new RuntimeException());
    assertEquals(true, voidFuture.isDone());
    voidFuture.get();
}
 
Example 7
Source File: WrappingKeySerializingExecutor.java    From c5-replicator with Apache License 2.0 5 votes vote down vote up
/**
 * Create a Runnable that runs a task which produces a value, then sets the passed-in Future
 * with the produced value.
 */
private <T> Runnable createFutureSettingTaskRunner(CheckedSupplier<T, Exception> task,
                                                   SettableFuture<T> setWhenFinished) {
  return () -> {
    try {
      setWhenFinished.set(task.get());
    } catch (Throwable t) {
      LOG.error("Error executing task", t);
      setWhenFinished.setException(t);
    }
  };
}
 
Example 8
Source File: AbstractConfiguredObjectTest.java    From qpid-broker-j with Apache License 2.0 5 votes vote down vote up
@Test
public void testCreateAwaitsAttainState_StateChangeAsyncErrors() throws Exception
{
    SettableFuture stateChangeFuture = SettableFuture.create();
    RuntimeException stateChangeException = new RuntimeException("state change error");

    TestCar car = _model.getObjectFactory().create(TestCar.class, Collections.<String, Object>singletonMap(ConfiguredObject.NAME, "myCar"), null);

    Map<String, Object> engineAttributes = new HashMap<>();
    engineAttributes.put(ConfiguredObject.NAME, "myEngine");
    engineAttributes.put(TestEngine.STATE_CHANGE_FUTURE, stateChangeFuture);

    ListenableFuture engine = car.createChildAsync(TestEngine.class, engineAttributes);
    assertFalse("create child has completed before state change completes", engine.isDone());

    stateChangeFuture.setException(stateChangeException);

    assertTrue("create child has not completed", engine.isDone());
    try
    {
        engine.get();
        fail("Exception not thrown");
    }
    catch (ExecutionException ee)
    {
        assertSame(stateChangeException, ee.getCause());
    }

    assertEquals("Failed engine should not be registered with parent",
                        (long) 0,
                        (long) car.getChildren(TestEngine.class).size());

}
 
Example 9
Source File: RequestMuxer.java    From xio with Apache License 2.0 5 votes vote down vote up
private ChannelFutureListener newWriteListener(SettableFuture<UUID> promise, Request request) {
  return new ChannelFutureListener() {
    @Override
    public void operationComplete(ChannelFuture future) throws Exception {
      if (future.isSuccess()) {
        promise.set(request.getId());
      } else {
        promise.setException(future.cause());
      }
    }
  };
}
 
Example 10
Source File: DaprClientGrpcTest.java    From java-sdk with MIT License 5 votes vote down vote up
@Test(expected = RuntimeException.class)
public void invokeServiceNoRequestNoClassCallbackExceptionThrownTest() {
  SettableFuture<CommonProtos.InvokeResponse> settableFuture = SettableFuture.create();
  RuntimeException ex = new RuntimeException("An Exception");
  MockCallback<CommonProtos.InvokeResponse> callback =
      new MockCallback<CommonProtos.InvokeResponse>(ex);
  addCallback(settableFuture, callback, directExecutor());
  when(client.invokeService(any(DaprProtos.InvokeServiceRequest.class)))
      .thenReturn(settableFuture);
  Mono<Void> result = adapter.invokeService(Verb.GET, "appId", "method", null);
  settableFuture.setException(ex);
  result.block();
}
 
Example 11
Source File: MobileServiceClient.java    From azure-mobile-apps-android-client with Apache License 2.0 5 votes vote down vote up
/**
 * Invokes a custom API
 *
 * @param apiName        The API name
 * @param content        The byte array to send as the request body
 * @param httpMethod     The HTTP Method used to invoke the API
 * @param requestHeaders The extra headers to send in the request
 * @param parameters     The query string parameters sent in the request
 * @param features       The SDK features used in the request
 */
private ListenableFuture<ServiceFilterResponse> invokeApiInternal(String apiName, byte[] content, String httpMethod,
                                                                  List<Pair<String, String>> requestHeaders, List<Pair<String, String>> parameters, EnumSet<MobileServiceFeatures> features) {
    final SettableFuture<ServiceFilterResponse> future = SettableFuture.create();

    if (apiName == null || apiName.trim().equals("")) {
        future.setException(new IllegalArgumentException("apiName cannot be null"));
        return future;
    }

    MobileServiceHttpClient httpClient = new MobileServiceHttpClient(this);
    return httpClient.request(CUSTOM_API_URL + apiName, content, httpMethod, requestHeaders, parameters, features);
}
 
Example 12
Source File: PingStreamContextTest.java    From pinpoint with Apache License 2.0 5 votes vote down vote up
@Test
public void test2() throws InterruptedException, ExecutionException, TimeoutException {
    SettableFuture<Object> future = SettableFuture.create();
    boolean done = future.isDone();
    logger.debug("future done:{}", future.isDone());
    SettableFuture<Object> future2 = SettableFuture.create();
    future2.setFuture(future);
    logger.debug("future2 done:{}", future2.isDone());

    boolean timeout = future2.setException(new RuntimeException("timeout"));
    logger.debug("timeout:{}", timeout);

}
 
Example 13
Source File: HBaseCommitTable.java    From phoenix-omid with Apache License 2.0 5 votes vote down vote up
@Override
public ListenableFuture<Optional<CommitTimestamp>> getCommitTimestamp(long startTimestamp) {
    startTimestamp = removeCheckpointBits(startTimestamp);
    SettableFuture<Optional<CommitTimestamp>> f = SettableFuture.create();
    try(Table table = hbaseConnection.getTable(TableName.valueOf(tableName))) {
        Get get = new Get(startTimestampToKey(startTimestamp));
        get.addColumn(commitTableFamily, COMMIT_TABLE_QUALIFIER);
        get.addColumn(commitTableFamily, INVALID_TX_QUALIFIER);

        Result result = table.get(get);

        if (containsInvalidTransaction(result)) {
            CommitTimestamp invalidCT =
                    new CommitTimestamp(Location.COMMIT_TABLE, INVALID_TRANSACTION_MARKER, false);
            f.set(Optional.of(invalidCT));
            return f;
        }

        if (containsATimestamp(result)) {
            long commitTSValue =
                    decodeCommitTimestamp(startTimestamp, result.getValue(commitTableFamily, COMMIT_TABLE_QUALIFIER));
            CommitTimestamp validCT = new CommitTimestamp(Location.COMMIT_TABLE, commitTSValue, true);
            f.set(Optional.of(validCT));
        } else {
            f.set(Optional.<CommitTimestamp>absent());
        }
    } catch (IOException e) {
        LOG.error("Error getting commit timestamp for TX {}", startTimestamp, e);
        f.setException(e);
    }
    return f;
}
 
Example 14
Source File: MobileServicePush.java    From azure-mobile-apps-android-client with Apache License 2.0 5 votes vote down vote up
/**
 * Registers the client for template notifications with tags
 *
 * @param pnsHandle    PNS specific identifier
 * @param templateName The template name
 * @param templateBody The template body
 * @return Future with TemplateRegistration Information
 */
public ListenableFuture<Void> registerTemplate(String pnsHandle, String templateName, String templateBody) {
    final SettableFuture<Void> resultFuture = SettableFuture.create();

    if (isNullOrWhiteSpace(pnsHandle)) {
        resultFuture.setException(new IllegalArgumentException("pnsHandle"));
        return resultFuture;
    }

    if (isNullOrWhiteSpace(templateName)) {
        resultFuture.setException(new IllegalArgumentException("templateName"));
        return resultFuture;
    }

    if (isNullOrWhiteSpace(templateBody)) {
        resultFuture.setException(new IllegalArgumentException("body"));
        return resultFuture;
    }

    JsonObject templateObject = GetTemplateObject(templateName, templateBody);

    ListenableFuture<Void> registerInternalFuture = createOrUpdateInstallation(pnsHandle, templateObject);

    Futures.addCallback(registerInternalFuture, new FutureCallback<Void>() {
        @Override
        public void onFailure(Throwable exception) {
            resultFuture.setException(exception);
        }

        @Override
        public void onSuccess(Void v) {
            resultFuture.set(v);
        }
    }, MoreExecutors.directExecutor());

    return resultFuture;
}
 
Example 15
Source File: MobileServiceJsonTable.java    From azure-mobile-apps-android-client with Apache License 2.0 4 votes vote down vote up
/**
 * Undelete an element from a Mobile Service Table
 *
 * @param element    The JsonObject to undelete
 * @param parameters A list of user-defined parameters and values to include in the
 *                   request URI query string
 */
public ListenableFuture<JsonObject> undelete(final JsonObject element, List<Pair<String, String>> parameters) {
    final SettableFuture<JsonObject> future = SettableFuture.create();

    Object id = null;
    String version = null;

    try {
        id = validateId(element);
    } catch (Exception e) {
        future.setException(e);
        return future;
    }

    if (!isNumericType(id)) {
        version = getVersionSystemProperty(element);
    }

    EnumSet<MobileServiceFeatures> features = mFeatures.clone();
    if (parameters != null && parameters.size() > 0) {
        features.add(MobileServiceFeatures.AdditionalQueryParameters);
    }

    List<Pair<String, String>> requestHeaders = null;
    if (version != null) {
        requestHeaders = new ArrayList<Pair<String, String>>();
        requestHeaders.add(new Pair<String, String>("If-Match", getEtagFromValue(version)));
        features.add(MobileServiceFeatures.OpportunisticConcurrency);
    }

    ListenableFuture<Pair<JsonObject, ServiceFilterResponse>> internalFuture = this.executeTableOperation(TABLES_URL + mTableName + "/" + id.toString(), null, HttpConstants.PostMethod, requestHeaders, parameters, features);

    Futures.addCallback(internalFuture, new FutureCallback<Pair<JsonObject, ServiceFilterResponse>>() {
        @Override
        public void onFailure(Throwable exc) {
            future.setException(exc);
        }

        @Override
        public void onSuccess(Pair<JsonObject, ServiceFilterResponse> result) {
            JsonObject patchedJson = patchOriginalEntityWithResponseEntity(element, result.first);

            updateVersionFromETag(result.second, patchedJson);

            future.set(patchedJson);
        }
    }, MoreExecutors.directExecutor());

    return future;
}
 
Example 16
Source File: DownloadFileControllerTest.java    From bistoury with GNU General Public License v3.0 4 votes vote down vote up
public static void main(String[] args) {
    WebSocketClient client = null;
    final SettableFuture<Integer> future = SettableFuture.create();
    final CountDownLatch latch = new CountDownLatch(1);
    try {
        client = new WebSocketClient(new URI("ws://100.80.128.181:9881/ws")) {
            @Override
            public void onOpen(ServerHandshake handshakedata) {
                System.out.println("web socket open");
                //System.out.println(this);
                this.send("{\"0\":\"Hk/Ue+DxkKe8FhLktTbfIwh6m9gjC0NJieyZCW8Zleau/37qmrfkinjX4zpEEcklb1p8JpoliDbDuTegvjdUjdcIhaRu/2qWeh+ebG/ufmi+fCqzSYbxl3hdrdkNekR5Akc+YtqbPhBUj5qdnPsrk6l4Qfh4H0BiaddpOxbHv6Y=\",\"1\":\"HX9LpFWgrTUt7yBqS6+Gjc4ftPHi1+kj/W+XqTq0vdCp1SmKGGLTdHFzMLgeJyiaJl2bCyCoDeSsfvpWEWxi8Nk/sUCkaaid164zR80mAc+uvg55Cc/KkdHsMF2UJwIPHJghucJgUg+MqYt04j8na+n7ZWEYxFuz6jZhVQOspZueZvkvyEH2Cb5EoU5yt2gcOWciX+K7T/iG1j0z5Oc5ovaejuBurwwL/ompvD0vI4plPdTXqqfuQAPy3pQ6pwhq53cGBVk56U0=\"}");

                future.set(0);
            }

            @Override
            public void onMessage(String message) {
                //proxy netty返回的是二进制数据,不走这个逻辑
            }

            @Override
            public void onMessage(ByteBuffer bytes) {
                handleResult(bytes, latch);
            }

            @Override
            public void onClose(int code, String reason, boolean remote) {
                System.out.println("close");
            }

            @Override
            public void onError(Exception ex) {
                ex.printStackTrace();
                future.setException(ex);
            }
        };
        client.connect();
        while (!client.getReadyState().equals(ReadyState.OPEN)) {
            System.out.println("正在连接");
        }

        latch.await();
    } catch (Exception e) {

    } finally {
        if (client != null) {
            client.close();
        }
    }
}
 
Example 17
Source File: MobileServiceJsonTable.java    From azure-mobile-apps-android-client with Apache License 2.0 4 votes vote down vote up
/**
 * Delete an element from a Mobile Service Table
 *
 * @param element    The JsonObject to undelete
 * @param parameters A list of user-defined parameters and values to include in the
 *                   request URI query string
 */
public ListenableFuture<Void> delete(JsonObject element, List<Pair<String, String>> parameters) {

    validateId(element);

    final SettableFuture<Void> future = SettableFuture.create();

    Object id = null;
    String version = null;

    try {
        id = validateId(element);
    } catch (Exception e) {
        future.setException(e);
        return future;
    }

    if (!isNumericType(id)) {
        version = getVersionSystemProperty(element);
    }

    EnumSet<MobileServiceFeatures> features = mFeatures.clone();
    if (parameters != null && parameters.size() > 0) {
        features.add(MobileServiceFeatures.AdditionalQueryParameters);
    }

    List<Pair<String, String>> requestHeaders = null;
    if (version != null) {
        requestHeaders = new ArrayList<Pair<String, String>>();
        requestHeaders.add(new Pair<String, String>("If-Match", getEtagFromValue(version)));
        features.add(MobileServiceFeatures.OpportunisticConcurrency);
    }

    ListenableFuture<Pair<JsonObject, ServiceFilterResponse>> internalFuture = this.executeTableOperation(TABLES_URL + mTableName + "/" + id.toString(), null, HttpConstants.DeleteMethod, requestHeaders, parameters, features);

    Futures.addCallback(internalFuture, new FutureCallback<Pair<JsonObject, ServiceFilterResponse>>() {
        @Override
        public void onFailure(Throwable exc) {
            future.setException(exc);
        }

        @Override
        public void onSuccess(Pair<JsonObject, ServiceFilterResponse> result) {
            future.set(null);
        }
    }, MoreExecutors.directExecutor());

    return future;
}
 
Example 18
Source File: BlazeProjectSystemSyncManager.java    From intellij with Apache License 2.0 4 votes vote down vote up
public ListenableFuture<SyncResult> syncProject(ProjectSystemSyncManager.SyncReason reason) {
  SettableFuture<ProjectSystemSyncManager.SyncResult> syncResult = SettableFuture.create();

  if (BlazeSyncStatus.getInstance(project).syncInProgress()) {
    syncResult.setException(
        new RuntimeException(
            "A sync was requested while one is already in progress."
                + " Use ProjectSystemSyncManager.isSyncInProgress to detect this scenario."));
  } else {
    BlazeSyncParams syncParams =
        BlazeSyncParams.builder()
            .setTitle("Sync")
            .setSyncMode(SyncMode.INCREMENTAL)
            .setSyncOrigin("ProjectSystemSyncManager")
            .setBlazeBuildParams(BlazeBuildParams.fromProject(project))
            .setAddProjectViewTargets(true)
            .setAddWorkingSet(BlazeUserSettings.getInstance().getExpandSyncToWorkingSet())
            .setBackgroundSync(true)
            .build();

    MessageBusConnection connection = project.getMessageBus().connect(project);
    connection.subscribe(
        PROJECT_SYSTEM_SYNC_TOPIC,
        new SyncResultListener() {
          @Override
          public void syncEnded(@NotNull SyncResult result) {
            connection.disconnect();
            syncResult.set(result);
          }
        });

    try {
      BlazeSyncManager.getInstance(project).requestProjectSync(syncParams);
    } catch (Throwable t) {
      if (!Disposer.isDisposed(connection)) {
        connection.disconnect();
      }

      syncResult.setException(t);
    }
  }

  return syncResult;
}
 
Example 19
Source File: ListenableFutureConverterTest.java    From hivemq-community-edition with Apache License 2.0 3 votes vote down vote up
@Test(expected = ExecutionException.class)
public void test_execution_failed() throws ExecutionException, InterruptedException {

    final SettableFuture<Void> voidListenableFuture = SettableFuture.create();

    final Function<Void, String> functionMock = Mockito.mock(Function.class);

    final CompletableFuture<String> voidCompletableFuture = ListenableFutureConverter.toCompletable(voidListenableFuture, functionMock, MoreExecutors.directExecutor());

    voidListenableFuture.setException(TestException.INSTANCE);

    voidCompletableFuture.get();

}
 
Example 20
Source File: CheckedValue.java    From yangtools with Eclipse Public License 1.0 2 votes vote down vote up
/**
 * Complete target {@link SettableFuture} either successfully or exceptionally based on the state of this object.
 *
 * @param future Future to complete
 * @return True if this call has transitioned the future to a completed state, false otherwise.
 * @throws NullPointerException if {code future} is null
 */
public final boolean completeFuture(final SettableFuture<T> future) {
    return isFirst() ? future.set(first()) : future.setException(second());
}