diff --git a/clients/java/signalr/src/main/java/com/microsoft/signalr/HubConnection.java b/clients/java/signalr/src/main/java/com/microsoft/signalr/HubConnection.java index 1df62674e4..d9257f6093 100644 --- a/clients/java/signalr/src/main/java/com/microsoft/signalr/HubConnection.java +++ b/clients/java/signalr/src/main/java/com/microsoft/signalr/HubConnection.java @@ -15,7 +15,6 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; -import java.util.function.Consumer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,7 +37,7 @@ public class HubConnection { private Boolean handshakeReceived = false; private HubConnectionState hubConnectionState = HubConnectionState.DISCONNECTED; private final Lock hubConnectionStateLock = new ReentrantLock(); - private List> onClosedCallbackList; + private List onClosedCallbackList; private final boolean skipNegotiate; private Single accessTokenProvider; private final Map headers = new HashMap<>(); @@ -432,8 +431,8 @@ public class HubConnection { // Do not run these callbacks inside the hubConnectionStateLock if (onClosedCallbackList != null) { - for (Consumer callback : onClosedCallbackList) { - callback.accept(exception); + for (OnClosedCallback callback : onClosedCallbackList) { + callback.invoke(exception); } } } @@ -526,7 +525,7 @@ public class HubConnection { * * @param callback A callback to run when the connection closes. */ - public void onClosed(Consumer callback) { + public void onClosed(OnClosedCallback callback) { if (onClosedCallbackList == null) { onClosedCallbackList = new ArrayList<>(); } diff --git a/clients/java/signalr/src/main/java/com/microsoft/signalr/OkHttpWebSocketWrapper.java b/clients/java/signalr/src/main/java/com/microsoft/signalr/OkHttpWebSocketWrapper.java index 1f5710afa9..b9d19c3e92 100644 --- a/clients/java/signalr/src/main/java/com/microsoft/signalr/OkHttpWebSocketWrapper.java +++ b/clients/java/signalr/src/main/java/com/microsoft/signalr/OkHttpWebSocketWrapper.java @@ -4,7 +4,6 @@ package com.microsoft.signalr; import java.util.Map; -import java.util.function.BiConsumer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -24,7 +23,7 @@ class OkHttpWebSocketWrapper extends WebSocketWrapper { private Map headers; private OkHttpClient client; private OnReceiveCallBack onReceive; - private BiConsumer onClose; + private WebSocketOnClosedCallback onClose; private CompletableSubject startSubject = CompletableSubject.create(); private CompletableSubject closeSubject = CompletableSubject.create(); @@ -70,7 +69,7 @@ class OkHttpWebSocketWrapper extends WebSocketWrapper { } @Override - public void setOnClose(BiConsumer onClose) { + public void setOnClose(WebSocketOnClosedCallback onClose) { this.onClose = onClose; } @@ -92,7 +91,7 @@ class OkHttpWebSocketWrapper extends WebSocketWrapper { @Override public void onClosing(WebSocket webSocket, int code, String reason) { - onClose.accept(code, reason); + onClose.invoke(code, reason); closeSubject.onComplete(); checkStartFailure(); } @@ -101,7 +100,7 @@ class OkHttpWebSocketWrapper extends WebSocketWrapper { public void onFailure(WebSocket webSocket, Throwable t, Response response) { logger.error("Websocket closed from an error: {}.", t.getMessage()); closeSubject.onError(new RuntimeException(t)); - onClose.accept(null, t.getMessage()); + onClose.invoke(null, t.getMessage()); checkStartFailure(); } diff --git a/clients/java/signalr/src/main/java/com/microsoft/signalr/OnClosedCallback.java b/clients/java/signalr/src/main/java/com/microsoft/signalr/OnClosedCallback.java new file mode 100644 index 0000000000..0122b0d869 --- /dev/null +++ b/clients/java/signalr/src/main/java/com/microsoft/signalr/OnClosedCallback.java @@ -0,0 +1,11 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +package com.microsoft.signalr; + +/** + * A callback to create and register on a HubConnections OnClosed method. + */ +public interface OnClosedCallback { + void invoke(Exception exception); +} \ No newline at end of file diff --git a/clients/java/signalr/src/main/java/com/microsoft/signalr/Transport.java b/clients/java/signalr/src/main/java/com/microsoft/signalr/Transport.java index bfa24578f3..97e3a81896 100644 --- a/clients/java/signalr/src/main/java/com/microsoft/signalr/Transport.java +++ b/clients/java/signalr/src/main/java/com/microsoft/signalr/Transport.java @@ -3,8 +3,6 @@ package com.microsoft.signalr; -import java.util.function.Consumer; - import io.reactivex.Completable; interface Transport { @@ -12,6 +10,6 @@ interface Transport { Completable send(String message); void setOnReceive(OnReceiveCallBack callback); void onReceive(String message); - void setOnClose(Consumer onCloseCallback); + void setOnClose(TransportOnClosedCallback onCloseCallback); Completable stop(); } diff --git a/clients/java/signalr/src/main/java/com/microsoft/signalr/TransportOnClosedCallback.java b/clients/java/signalr/src/main/java/com/microsoft/signalr/TransportOnClosedCallback.java new file mode 100644 index 0000000000..d06f00dd98 --- /dev/null +++ b/clients/java/signalr/src/main/java/com/microsoft/signalr/TransportOnClosedCallback.java @@ -0,0 +1,8 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +package com.microsoft.signalr; + +interface TransportOnClosedCallback { + void invoke(String reason); +} diff --git a/clients/java/signalr/src/main/java/com/microsoft/signalr/WebSocketTransport.java b/clients/java/signalr/src/main/java/com/microsoft/signalr/WebSocketTransport.java index 230914fccb..b57917a11a 100644 --- a/clients/java/signalr/src/main/java/com/microsoft/signalr/WebSocketTransport.java +++ b/clients/java/signalr/src/main/java/com/microsoft/signalr/WebSocketTransport.java @@ -4,7 +4,6 @@ package com.microsoft.signalr; import java.util.Map; -import java.util.function.Consumer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -14,7 +13,7 @@ import io.reactivex.Completable; class WebSocketTransport implements Transport { private WebSocketWrapper webSocketClient; private OnReceiveCallBack onReceiveCallBack; - private Consumer onClose; + private TransportOnClosedCallback onClose; private String url; private final HttpClient client; private final Map headers; @@ -78,7 +77,7 @@ class WebSocketTransport implements Transport { } @Override - public void setOnClose(Consumer onCloseCallback) { + public void setOnClose(TransportOnClosedCallback onCloseCallback) { this.onClose = onCloseCallback; } @@ -91,10 +90,10 @@ class WebSocketTransport implements Transport { logger.info("WebSocket connection stopping with " + "code {} and reason '{}'.", code, reason); if (code != 1000) { - onClose.accept(reason); + onClose.invoke(reason); } else { - onClose.accept(null); + onClose.invoke(null); } } } diff --git a/clients/java/signalr/src/main/java/com/microsoft/signalr/WebSocketWrapper.java b/clients/java/signalr/src/main/java/com/microsoft/signalr/WebSocketWrapper.java index 064dc3eaab..06d57a159b 100644 --- a/clients/java/signalr/src/main/java/com/microsoft/signalr/WebSocketWrapper.java +++ b/clients/java/signalr/src/main/java/com/microsoft/signalr/WebSocketWrapper.java @@ -3,8 +3,6 @@ package com.microsoft.signalr; -import java.util.function.BiConsumer; - import io.reactivex.Completable; abstract class WebSocketWrapper { @@ -16,5 +14,5 @@ abstract class WebSocketWrapper { public abstract void setOnReceive(OnReceiveCallBack onReceive); - public abstract void setOnClose(BiConsumer onClose); + public abstract void setOnClose(WebSocketOnClosedCallback onClose); } \ No newline at end of file diff --git a/clients/java/signalr/src/main/java/com/microsoft/signalr/WebsocketWrapperOnClosed.java b/clients/java/signalr/src/main/java/com/microsoft/signalr/WebsocketWrapperOnClosed.java new file mode 100644 index 0000000000..055ced74cc --- /dev/null +++ b/clients/java/signalr/src/main/java/com/microsoft/signalr/WebsocketWrapperOnClosed.java @@ -0,0 +1,8 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +package com.microsoft.signalr; + +interface WebSocketOnClosedCallback { + void invoke(Integer code, String reason); +} diff --git a/clients/java/signalr/src/test/java/com/microsoft/signalr/MockTransport.java b/clients/java/signalr/src/test/java/com/microsoft/signalr/MockTransport.java index 54a61a3898..02e2224565 100644 --- a/clients/java/signalr/src/test/java/com/microsoft/signalr/MockTransport.java +++ b/clients/java/signalr/src/test/java/com/microsoft/signalr/MockTransport.java @@ -4,7 +4,6 @@ package com.microsoft.signalr; import java.util.ArrayList; -import java.util.function.Consumer; import io.reactivex.Completable; import io.reactivex.subjects.CompletableSubject; @@ -13,7 +12,7 @@ class MockTransport implements Transport { private OnReceiveCallBack onReceiveCallBack; private ArrayList sentMessages = new ArrayList<>(); private String url; - private Consumer onClose; + private TransportOnClosedCallback onClose; final private boolean ignorePings; final private boolean autoHandshake; final private CompletableSubject startSubject = CompletableSubject.create(); @@ -67,19 +66,19 @@ class MockTransport implements Transport { } @Override - public void setOnClose(Consumer onCloseCallback) { + public void setOnClose(TransportOnClosedCallback onCloseCallback) { this.onClose = onCloseCallback; } @Override public Completable stop() { - onClose.accept(null); + onClose.invoke(null); stopSubject.onComplete(); return stopSubject; } public void stopWithError(String errorMessage) { - onClose.accept(errorMessage); + onClose.invoke(errorMessage); } public void receiveMessage(String message) { diff --git a/clients/java/signalr/src/test/java/com/microsoft/signalr/TestHttpClient.java b/clients/java/signalr/src/test/java/com/microsoft/signalr/TestHttpClient.java index 166ac43bf0..7c95f25c00 100644 --- a/clients/java/signalr/src/test/java/com/microsoft/signalr/TestHttpClient.java +++ b/clients/java/signalr/src/test/java/com/microsoft/signalr/TestHttpClient.java @@ -6,12 +6,11 @@ package com.microsoft.signalr; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.function.Function; import io.reactivex.Single; class TestHttpClient extends HttpClient { - private Function> handler; + private TestHttpRequestHandler handler; private List sentRequests; public TestHttpClient() { @@ -24,39 +23,39 @@ class TestHttpClient extends HttpClient { @Override public Single send(HttpRequest request) { this.sentRequests.add(request); - return this.handler.apply(request); + return this.handler.invoke(request); } public List getSentRequests() { return sentRequests; } - public TestHttpClient on(Function> handler) { - this.handler = (req) -> handler.apply(req); + public TestHttpClient on(TestHttpRequestHandler handler) { + this.handler = (req) -> handler.invoke(req); return this; } - public TestHttpClient on(String method, Function> handler) { - Function> oldHandler = this.handler; + public TestHttpClient on(String method, TestHttpRequestHandler handler) { + TestHttpRequestHandler oldHandler = this.handler; this.handler = (req) -> { if (req.getMethod().equals(method)) { - return handler.apply(req); + return handler.invoke(req); } - return oldHandler.apply(req); + return oldHandler.invoke(req); }; return this; } - public TestHttpClient on(String method, String url, Function> handler) { - Function> oldHandler = this.handler; + public TestHttpClient on(String method, String url, TestHttpRequestHandler handler) { + TestHttpRequestHandler oldHandler = this.handler; this.handler = (req) -> { if (req.getMethod().equals(method) && req.getUrl().equals(url)) { - return handler.apply(req); + return handler.invoke(req); } - return oldHandler.apply(req); + return oldHandler.invoke(req); }; return this; @@ -66,4 +65,8 @@ class TestHttpClient extends HttpClient { public WebSocketWrapper createWebSocket(String url, Map headers) { throw new RuntimeException("WebSockets isn't supported in testing currently."); } + + interface TestHttpRequestHandler { + Single invoke(HttpRequest request); + } } \ No newline at end of file