Java 类org.springframework.util.concurrent.SettableListenableFuture 实例源码
项目:spring4-understanding
文件:DefaultStompSessionTests.java
@Test
public void sendWithExecutionException() throws Exception {
this.session.afterConnected(this.connection);
assertTrue(this.session.isConnected());
IllegalStateException exception = new IllegalStateException("simulated exception");
SettableListenableFuture<Void> future = new SettableListenableFuture<>();
future.setException(exception);
when(this.connection.send(any())).thenReturn(future);
this.expected.expect(MessageDeliveryException.class);
this.expected.expectCause(Matchers.sameInstance(exception));
this.session.send("/topic/foo", "sample payload".getBytes(UTF_8));
verifyNoMoreInteractions(this.connection);
}
项目:spring4-understanding
文件:WebSocketTransport.java
@Override
public ListenableFuture<WebSocketSession> connect(TransportRequest request, WebSocketHandler handler) {
final SettableListenableFuture<WebSocketSession> future = new SettableListenableFuture<WebSocketSession>();
WebSocketClientSockJsSession session = new WebSocketClientSockJsSession(request, handler, future);
handler = new ClientSockJsWebSocketHandler(session);
request.addTimeoutTask(session.getTimeoutTask());
URI url = request.getTransportUrl();
WebSocketHttpHeaders headers = new WebSocketHttpHeaders(request.getHandshakeHeaders());
if (logger.isDebugEnabled()) {
logger.debug("Starting WebSocket session url=" + url);
}
this.webSocketClient.doHandshake(handler, headers, url).addCallback(
new ListenableFutureCallback<WebSocketSession>() {
@Override
public void onSuccess(WebSocketSession webSocketSession) {
// WebSocket session ready, SockJS Session not yet
}
@Override
public void onFailure(Throwable ex) {
future.setException(ex);
}
});
return future;
}
项目:spring4-understanding
文件:SockJsClient.java
@Override
public final ListenableFuture<WebSocketSession> doHandshake(
WebSocketHandler handler, WebSocketHttpHeaders headers, URI url) {
Assert.notNull(handler, "WebSocketHandler is required");
Assert.notNull(url, "URL is required");
String scheme = url.getScheme();
if (!supportedProtocols.contains(scheme)) {
throw new IllegalArgumentException("Invalid scheme: '" + scheme + "'");
}
SettableListenableFuture<WebSocketSession> connectFuture = new SettableListenableFuture<WebSocketSession>();
try {
SockJsUrlInfo sockJsUrlInfo = new SockJsUrlInfo(url);
ServerInfo serverInfo = getServerInfo(sockJsUrlInfo, getHttpRequestHeaders(headers));
createRequest(sockJsUrlInfo, headers, serverInfo).connect(handler, connectFuture);
}
catch (Throwable exception) {
if (logger.isErrorEnabled()) {
logger.error("Initial SockJS \"Info\" request to server failed, url=" + url, exception);
}
connectFuture.setException(exception);
}
return connectFuture;
}
项目:spring4-understanding
文件:AbstractXhrTransport.java
@Override
@SuppressWarnings("deprecation")
public ListenableFuture<WebSocketSession> connect(TransportRequest request, WebSocketHandler handler) {
SettableListenableFuture<WebSocketSession> connectFuture = new SettableListenableFuture<WebSocketSession>();
XhrClientSockJsSession session = new XhrClientSockJsSession(request, handler, this, connectFuture);
request.addTimeoutTask(session.getTimeoutTask());
URI receiveUrl = request.getTransportUrl();
if (logger.isDebugEnabled()) {
logger.debug("Starting XHR " +
(isXhrStreamingDisabled() ? "Polling" : "Streaming") + "session url=" + receiveUrl);
}
HttpHeaders handshakeHeaders = new HttpHeaders();
handshakeHeaders.putAll(getRequestHeaders());
handshakeHeaders.putAll(request.getHandshakeHeaders());
connectInternal(request, handler, receiveUrl, handshakeHeaders, session, connectFuture);
return connectFuture;
}
项目:spring4-understanding
文件:WebSocketStompClient.java
@Override
public ListenableFuture<Void> send(Message<byte[]> message) {
updateLastWriteTime();
SettableListenableFuture<Void> future = new SettableListenableFuture<Void>();
try {
this.session.sendMessage(this.codec.encode(message, this.session.getClass()));
future.set(null);
}
catch (Throwable ex) {
future.setException(ex);
}
finally {
updateLastWriteTime();
}
return future;
}
项目:spring4-understanding
文件:Netty4ClientHttpRequest.java
@Override
protected ListenableFuture<ClientHttpResponse> executeInternal(final HttpHeaders headers) throws IOException {
final SettableListenableFuture<ClientHttpResponse> responseFuture =
new SettableListenableFuture<ClientHttpResponse>();
ChannelFutureListener connectionListener = new ChannelFutureListener() {
@Override
public void operationComplete(ChannelFuture future) throws Exception {
if (future.isSuccess()) {
Channel channel = future.channel();
channel.pipeline().addLast(new RequestExecuteHandler(responseFuture));
FullHttpRequest nettyRequest = createFullHttpRequest(headers);
channel.writeAndFlush(nettyRequest);
}
else {
responseFuture.setException(future.cause());
}
}
};
this.bootstrap.connect(this.uri.getHost(), getPort(this.uri)).addListener(connectionListener);
return responseFuture;
}
项目:zipkin
文件:ZipkinHttpCollector.java
ListenableFuture<ResponseEntity<?>> validateAndStoreSpans(String encoding, Codec codec,
byte[] body) {
SettableListenableFuture<ResponseEntity<?>> result = new SettableListenableFuture<>();
metrics.incrementMessages();
if (encoding != null && encoding.contains("gzip")) {
try {
body = gunzip(body);
} catch (IOException e) {
metrics.incrementMessagesDropped();
result.set(ResponseEntity.badRequest().body("Cannot gunzip spans: " + e.getMessage() + "\n"));
}
}
collector.acceptSpans(body, codec, new Callback<Void>() {
@Override public void onSuccess(@Nullable Void value) {
result.set(SUCCESS);
}
@Override public void onError(Throwable t) {
String message = t.getMessage() == null ? t.getClass().getSimpleName() : t.getMessage();
result.set(t.getMessage() == null || message.startsWith("Cannot store")
? ResponseEntity.status(500).body(message + "\n")
: ResponseEntity.status(400).body(message + "\n"));
}
});
return result;
}
项目:haven-platform
文件:NettyRequest.java
protected ListenableFuture<ClientHttpResponse> executeInternal(final HttpHeaders headers) {
final SettableListenableFuture<ClientHttpResponse> responseFuture = new SettableListenableFuture<>();
ChannelFutureListener connectionListener = future -> {
if (future.isSuccess()) {
Channel channel = future.channel();
channel.pipeline().addLast(new NettyResponseHandler(responseFuture));
FullHttpRequest nettyRequest = createFullHttpRequest(headers);
channel.writeAndFlush(nettyRequest);
}
else {
responseFuture.setException(future.cause());
}
};
this.bootstrap.connect(this.uri.getHost(), getPort(this.uri)).addListener(connectionListener);
return responseFuture;
}
项目:buildTube
文件:TeamCityService.java
public ListenableFuture<List<Build>> getBuilds(String projectId, String baseBuildNumber) {
SettableListenableFuture<List<Build>> builds = new SettableListenableFuture<>();
ListenableFuture<List<BuildStep>> projectBuildSteps = getProjectBuildSteps(projectId);
projectBuildSteps.addCallback(
buildSteps -> {
List<ListenableFuture<StepBuilds>> allBuilds = new ArrayList<>();
buildSteps.forEach(buildStep -> {
allBuilds.add(fetchBuildsForStep(buildStep));
});
ListenableFuture<List<StepBuilds>> buildsOnFuture = asyncUtil.flatMapCommands(allBuilds);
buildsOnFuture.addCallback(
buildsList -> {
Collections.sort(buildsList);
List<Build> relatedBuilds = new ArrayList<>();
buildsList.forEach(currentBuilds -> {
addRelatedBuildStep(currentBuilds.getBuild(), relatedBuilds, baseBuildNumber);
});
builds.set(relatedBuilds);
},
builds::setException);
},
builds::setException);
return builds;
}
项目:spring-cloud-gcp
文件:PubSubTemplate.java
@Override
public ListenableFuture<String> publish(final String topic, PubsubMessage pubsubMessage) {
ApiFuture<String> publishFuture =
this.publisherFactory.createPublisher(topic).publish(pubsubMessage);
final SettableListenableFuture<String> settableFuture = new SettableListenableFuture<>();
ApiFutures.addCallback(publishFuture, new ApiFutureCallback<String>() {
@Override
public void onFailure(Throwable throwable) {
LOGGER.warn("Publishing to " + topic + " topic failed.", throwable);
settableFuture.setException(throwable);
}
@Override
public void onSuccess(String result) {
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(
"Publishing to " + topic + " was successful. Message ID: " + result);
}
settableFuture.set(result);
}
});
return settableFuture;
}
项目:spring-cloud-gcp
文件:PubSubMessageHandlerTests.java
@Before
public void setUp() {
this.message = new GenericMessage<>("testPayload",
ImmutableMap.of("key1", "value1", "key2", "value2"));
SettableListenableFuture<String> future = new SettableListenableFuture<>();
future.set("benfica");
when(this.pubSubTemplate.publish(eq("testTopic"),
eq(ByteString.copyFrom("testPayload", Charset.defaultCharset())),
isA(Map.class)))
.thenReturn(future);
this.adapter = new PubSubMessageHandler(this.pubSubTemplate, "testTopic");
}
项目:rmap
文件:MockKafkaTemplateFactory.java
@SuppressWarnings("unchecked")
public static <K, V> KafkaTemplate<K, V> mockTemplate()
throws InterruptedException, ExecutionException, TimeoutException {
KafkaTemplate<K, V> template = mock(KafkaTemplate.class);
SettableListenableFuture future = mock(SettableListenableFuture.class);
when(future.get(30000, TimeUnit.MILLISECONDS)).thenReturn(null);
when(template.send(any(), any(), any())).thenReturn(future);
return template;
}
项目:spring4-understanding
文件:DefaultStompSessionTests.java
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
this.sessionHandler = mock(StompSessionHandler.class);
this.connectHeaders = new StompHeaders();
this.session = new DefaultStompSession(this.sessionHandler, this.connectHeaders);
this.session.setMessageConverter(new StringMessageConverter());
SettableListenableFuture<Void> future = new SettableListenableFuture<>();
future.set(null);
when(this.connection.send(this.messageCaptor.capture())).thenReturn(future);
}
项目:spring4-understanding
文件:AbstractClientSockJsSession.java
protected AbstractClientSockJsSession(TransportRequest request, WebSocketHandler handler,
SettableListenableFuture<WebSocketSession> connectFuture) {
Assert.notNull(request, "'request' is required");
Assert.notNull(handler, "'handler' is required");
Assert.notNull(connectFuture, "'connectFuture' is required");
this.request = request;
this.webSocketHandler = handler;
this.connectFuture = connectFuture;
}
项目:spring4-understanding
文件:RestTemplateXhrTransport.java
@Override
protected void connectInternal(final TransportRequest transportRequest, final WebSocketHandler handler,
final URI receiveUrl, final HttpHeaders handshakeHeaders, final XhrClientSockJsSession session,
final SettableListenableFuture<WebSocketSession> connectFuture) {
getTaskExecutor().execute(new Runnable() {
@Override
public void run() {
HttpHeaders httpHeaders = transportRequest.getHttpRequestHeaders();
XhrRequestCallback requestCallback = new XhrRequestCallback(handshakeHeaders);
XhrRequestCallback requestCallbackAfterHandshake = new XhrRequestCallback(httpHeaders);
XhrReceiveExtractor responseExtractor = new XhrReceiveExtractor(session);
while (true) {
if (session.isDisconnected()) {
session.afterTransportClosed(null);
break;
}
try {
if (logger.isTraceEnabled()) {
logger.trace("Starting XHR receive request, url=" + receiveUrl);
}
getRestTemplate().execute(receiveUrl, HttpMethod.POST, requestCallback, responseExtractor);
requestCallback = requestCallbackAfterHandshake;
}
catch (Throwable ex) {
if (!connectFuture.isDone()) {
connectFuture.setException(ex);
}
else {
session.handleTransportError(ex);
session.afterTransportClosed(new CloseStatus(1006, ex.getMessage()));
}
break;
}
}
}
});
}
项目:spring4-understanding
文件:UndertowXhrTransport.java
@Override
protected void connectInternal(TransportRequest request, WebSocketHandler handler, URI receiveUrl,
HttpHeaders handshakeHeaders, XhrClientSockJsSession session,
SettableListenableFuture<WebSocketSession> connectFuture) {
executeReceiveRequest(request, receiveUrl, handshakeHeaders, session, connectFuture);
}
项目:spring4-understanding
文件:UndertowXhrTransport.java
private void executeReceiveRequest(final TransportRequest transportRequest,
final URI url, final HttpHeaders headers, final XhrClientSockJsSession session,
final SettableListenableFuture<WebSocketSession> connectFuture) {
if (logger.isTraceEnabled()) {
logger.trace("Starting XHR receive request for " + url);
}
ClientCallback<ClientConnection> clientCallback = new ClientCallback<ClientConnection>() {
@Override
public void completed(ClientConnection connection) {
ClientRequest request = new ClientRequest().setMethod(Methods.POST).setPath(url.getPath());
HttpString headerName = HttpString.tryFromString(HttpHeaders.HOST);
request.getRequestHeaders().add(headerName, url.getHost());
addHttpHeaders(request, headers);
HttpHeaders httpHeaders = transportRequest.getHttpRequestHeaders();
connection.sendRequest(request, createReceiveCallback(transportRequest,
url, httpHeaders, session, connectFuture));
}
@Override
public void failed(IOException ex) {
throw new SockJsTransportFailureException("Failed to execute request to " + url, ex);
}
};
this.undertowBufferSupport.httpClientConnect(this.httpClient, clientCallback, url, worker, this.optionMap);
}
项目:spring4-understanding
文件:UndertowXhrTransport.java
public SockJsResponseListener(TransportRequest request, ClientConnection connection, URI url,
HttpHeaders headers, XhrClientSockJsSession sockJsSession,
SettableListenableFuture<WebSocketSession> connectFuture) {
this.request = request;
this.connection = connection;
this.url = url;
this.headers = headers;
this.session = sockJsSession;
this.connectFuture = connectFuture;
}
项目:spring4-understanding
文件:XhrClientSockJsSession.java
public XhrClientSockJsSession(TransportRequest request, WebSocketHandler handler,
XhrTransport transport, SettableListenableFuture<WebSocketSession> connectFuture) {
super(request, handler, connectFuture);
Assert.notNull(transport, "'restTemplate' is required");
this.transport = transport;
this.headers = request.getHttpRequestHeaders();
this.sendHeaders = new HttpHeaders();
if (this.headers != null) {
this.sendHeaders.putAll(this.headers);
}
this.sendHeaders.setContentType(MediaType.APPLICATION_JSON);
this.sendUrl = request.getSockJsUrlInfo().getTransportUrl(TransportType.XHR_SEND);
}
项目:spring4-understanding
文件:DefaultTransportRequest.java
public void connect(WebSocketHandler handler, SettableListenableFuture<WebSocketSession> future) {
if (logger.isTraceEnabled()) {
logger.trace("Starting " + this);
}
ConnectCallback connectCallback = new ConnectCallback(handler, future);
scheduleConnectTimeoutTask(connectCallback);
this.transport.connect(this, handler).addCallback(connectCallback);
}
项目:spring4-understanding
文件:JettyXhrTransport.java
@Override
protected void connectInternal(TransportRequest transportRequest, WebSocketHandler handler,
URI url, HttpHeaders handshakeHeaders, XhrClientSockJsSession session,
SettableListenableFuture<WebSocketSession> connectFuture) {
HttpHeaders httpHeaders = transportRequest.getHttpRequestHeaders();
SockJsResponseListener listener = new SockJsResponseListener(url, httpHeaders, session, connectFuture);
executeReceiveRequest(url, handshakeHeaders, listener);
}
项目:spring4-understanding
文件:JettyXhrTransport.java
public SockJsResponseListener(URI url, HttpHeaders headers, XhrClientSockJsSession sockJsSession,
SettableListenableFuture<WebSocketSession> connectFuture) {
this.transportUrl = url;
this.receiveHeaders = headers;
this.connectFuture = connectFuture;
this.sockJsSession = sockJsSession;
}
项目:spring4-understanding
文件:XhrTransportTests.java
@Override
protected void connectInternal(TransportRequest request, WebSocketHandler handler, URI receiveUrl,
HttpHeaders handshakeHeaders, XhrClientSockJsSession session,
SettableListenableFuture<WebSocketSession> connectFuture) {
this.actualHandshakeHeaders = handshakeHeaders;
this.actualSession = session;
}
项目:spring4-understanding
文件:DefaultTransportRequestTests.java
@SuppressWarnings("unchecked")
@Before
public void setup() throws Exception {
this.connectCallback = mock(ListenableFutureCallback.class);
this.connectFuture = new SettableListenableFuture<>();
this.connectFuture.addCallback(this.connectCallback);
this.webSocketTransport = new TestTransport("WebSocketTestTransport");
this.xhrTransport = new TestTransport("XhrTestTransport");
}
项目:spring4-understanding
文件:ClientSockJsSessionTests.java
@Before
public void setup() throws Exception {
SockJsUrlInfo urlInfo = new SockJsUrlInfo(new URI("http://example.com"));
Transport transport = mock(Transport.class);
TransportRequest request = new DefaultTransportRequest(urlInfo, null, null, transport, TransportType.XHR, CODEC);
this.handler = mock(WebSocketHandler.class);
this.connectFuture = new SettableListenableFuture<>();
this.session = new TestClientSockJsSession(request, this.handler, this.connectFuture);
}
项目:spring4-understanding
文件:WebSocketStompClientTests.java
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
WebSocketClient webSocketClient = mock(WebSocketClient.class);
this.stompClient = new TestWebSocketStompClient(webSocketClient);
this.stompClient.setTaskScheduler(this.taskScheduler);
this.stompClient.setStompSession(this.stompSession);
this.webSocketHandlerCaptor = ArgumentCaptor.forClass(WebSocketHandler.class);
this.handshakeFuture = new SettableListenableFuture<>();
when(webSocketClient.doHandshake(this.webSocketHandlerCaptor.capture(), any(), any(URI.class)))
.thenReturn(this.handshakeFuture);
}
项目:wingtips
文件:WingtipsAsyncClientHttpRequestInterceptorTest.java
@Before
public void beforeMethod() throws IOException {
resetTracing();
spanRecorder = new SpanRecorder();
Tracer.getInstance().addSpanLifecycleListener(spanRecorder);
method = HttpMethod.PATCH;
uri = URI.create("http://localhost:4242/" + UUID.randomUUID().toString());
httpRequest = new HttpRequest() {
@Override
public HttpHeaders getHeaders() { return new HttpHeaders(); }
@Override
public HttpMethod getMethod() {
return method;
}
@Override
public URI getURI() {
return uri;
}
};
body = UUID.randomUUID().toString().getBytes();
executionMock = mock(AsyncClientHttpRequestExecution.class);
doAnswer(invocation -> {
tracingStateAtTimeOfExecution = TracingState.getCurrentThreadTracingState();
executionResponseFuture = new SettableListenableFuture<>();
return executionResponseFuture;
}).when(executionMock).executeAsync(any(HttpRequest.class), any(byte[].class));
}
项目:buildTube
文件:TeamCityService.java
public ListenableFuture<List<BuildStep>> getProjectBuildSteps(String projectId) {
SettableListenableFuture<List<BuildStep>> returnFuture = new SettableListenableFuture<>();
ListenableFuture<Project> project = getProject(projectId);
project.addCallback(
result -> returnFuture.set(getBuildSteps(result)),
returnFuture::setException);
return returnFuture;
}
项目:spring4-understanding
文件:DefaultTransportRequest.java
public ConnectCallback(WebSocketHandler handler, SettableListenableFuture<WebSocketSession> future) {
this.handler = handler;
this.future = future;
}
项目:spring4-understanding
文件:WebSocketClientSockJsSession.java
public WebSocketClientSockJsSession(TransportRequest request, WebSocketHandler handler,
SettableListenableFuture<WebSocketSession> connectFuture) {
super(request, handler, connectFuture);
}
项目:spring4-understanding
文件:ClientSockJsSessionTests.java
protected TestClientSockJsSession(TransportRequest request, WebSocketHandler handler,
SettableListenableFuture<WebSocketSession> connectFuture) {
super(request, handler, connectFuture);
}
项目:spring4-understanding
文件:Netty4ClientHttpRequest.java
public RequestExecuteHandler(SettableListenableFuture<ClientHttpResponse> responseFuture) {
this.responseFuture = responseFuture;
}
项目:spring4-understanding
文件:MockAsyncClientHttpRequest.java
@Override
public ListenableFuture<ClientHttpResponse> executeAsync() throws IOException {
SettableListenableFuture<ClientHttpResponse> future = new SettableListenableFuture<ClientHttpResponse>();
future.set(execute());
return future;
}
项目:haven-platform
文件:NettyResponseHandler.java
NettyResponseHandler(SettableListenableFuture<ClientHttpResponse> responseFuture) {
this.responseFuture = responseFuture;
}
项目:buildTube
文件:TeamCityService.java
public ListenableFuture<List<Build>> getProjectBuilds(String projectId) {
final SettableListenableFuture<List<Build>> projectBuilds = new SettableListenableFuture<>();
ListenableFuture<Project> project = getProject(projectId);
project.addCallback(result -> populateBuilds(getFirstBuildStep(result), projectBuilds),
projectBuilds::setException);
return projectBuilds;
}
项目:buildTube
文件:TeamCityService.java
private void populateBuilds(BuildStep buildStep, SettableListenableFuture<List<Build>> returnFuture) {
fetchBuildsForStep(buildStep).addCallback(
result -> returnFuture.set(result.getBuild()),
returnFuture::setException);
}
项目:future-converter
文件:SpringFutureUtils.java
private ValueSourceBackedListenableFuture(ValueSource<T> valueSource) {
super(new SettableListenableFuture<>());
this.valueSource = valueSource;
valueSource.addCallbacks(value -> getWrappedFuture().set(value), ex -> getWrappedFuture().setException(ex));
}
项目:future-converter
文件:SpringFutureUtils.java
@Override
protected SettableListenableFuture<T> getWrappedFuture() {
return (SettableListenableFuture<T>) super.getWrappedFuture();
}
项目:future-converter
文件:SpringOriginalFutureTestHelper.java
@Override
public ListenableFuture<String> createFinishedFuture() {
SettableListenableFuture<String> future = new SettableListenableFuture<>();
future.set(AbstractConverterTest.VALUE);
return future;
}
项目:spring4-understanding
文件:AbstractXhrTransport.java
protected abstract void connectInternal(TransportRequest request, WebSocketHandler handler,
URI receiveUrl, HttpHeaders handshakeHeaders, XhrClientSockJsSession session,
SettableListenableFuture<WebSocketSession> connectFuture);