From 94f99c3a29786fc912ca5a51460229ce4b23a600 Mon Sep 17 00:00:00 2001 From: Mikael Mengistu Date: Mon, 13 Aug 2018 13:58:48 -0700 Subject: [PATCH] Add HubConnectionBuilder to Java client (#2780) --- .../com/microsoft/aspnet/signalr/Chat.java | 7 ++-- .../aspnet/signalr/HubConnection.java | 8 +++- .../aspnet/signalr/HubConnectionBuilder.java | 40 +++++++++++++++++++ 3 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubConnectionBuilder.java diff --git a/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Chat.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Chat.java index bf1c33efc5..d553926747 100644 --- a/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Chat.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Chat.java @@ -3,8 +3,6 @@ package com.microsoft.aspnet.signalr; -import com.microsoft.aspnet.signalr.HubConnection; - import java.util.Scanner; public class Chat { @@ -13,7 +11,10 @@ public class Chat { Scanner reader = new Scanner(System.in); // Reading from System.in String input; input = reader.nextLine(); - HubConnection hubConnection = new HubConnection(input, LogLevel.Information); + + HubConnection hubConnection = new HubConnectionBuilder() + .withUrl(input) + .configureLogging(LogLevel.Information).build(); hubConnection.on("Send", (message) -> { System.out.println("REGISTERED HANDLER: " + message); diff --git a/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubConnection.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubConnection.java index 05984de5f3..7656f9e06b 100644 --- a/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubConnection.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubConnection.java @@ -24,7 +24,13 @@ public class HubConnection { public HubConnection(String url, Transport transport, Logger logger){ this.url = url; this.protocol = new JsonHubProtocol(); - this.logger = logger; + + if (logger != null) { + this.logger = logger; + } else { + this.logger = new NullLogger(); + } + this.callback = (payload) -> { if (!handshakeReceived) { diff --git a/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubConnectionBuilder.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubConnectionBuilder.java new file mode 100644 index 0000000000..ac8fa99f8c --- /dev/null +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubConnectionBuilder.java @@ -0,0 +1,40 @@ +// 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.aspnet.signalr; + +public class HubConnectionBuilder { + private boolean built; + private String url; + private Transport transport; + private Logger logger; + + public HubConnectionBuilder withUrl(String url) { + this.url = url; + return this; + } + + public HubConnectionBuilder withUrl(String url, Transport transport) { + this.url = url; + this.transport = transport; + return this; + } + + public HubConnectionBuilder configureLogging(LogLevel logLevel) { + this.logger = new ConsoleLogger(logLevel); + return this; + } + + public HubConnectionBuilder configureLogging(Logger logger) { + this.logger = logger; + return this; + } + + public HubConnection build() throws Exception { + if (!built) { + built = true; + return new HubConnection(url, transport, logger); + } + throw new Exception("HubConnectionBuilder allows creation only of a single instance of HubConnection."); + } +} \ No newline at end of file