From 2265acde7880fbced32355bcfe0bebe08a097360 Mon Sep 17 00:00:00 2001 From: BrennanConroy Date: Wed, 8 Aug 2018 14:04:05 -0700 Subject: [PATCH 1/5] Don't start stream if already canceled (#2764) --- .../HubConnection.cs | 1 + .../HubConnectionTests.cs | 14 ++------------ 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/src/Microsoft.AspNetCore.SignalR.Client.Core/HubConnection.cs b/src/Microsoft.AspNetCore.SignalR.Client.Core/HubConnection.cs index c8a2ebd559..bf15256716 100644 --- a/src/Microsoft.AspNetCore.SignalR.Client.Core/HubConnection.cs +++ b/src/Microsoft.AspNetCore.SignalR.Client.Core/HubConnection.cs @@ -420,6 +420,7 @@ namespace Microsoft.AspNetCore.SignalR.Client { CheckDisposed(); CheckConnectionActive(nameof(StreamAsChannelCoreAsync)); + cancellationToken.ThrowIfCancellationRequested(); var irq = InvocationRequest.Stream(cancellationToken, returnType, _connectionState.GetNextId(), _loggerFactory, this, out channel); await InvokeStreamCore(methodName, irq, args, cancellationToken); diff --git a/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/HubConnectionTests.cs b/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/HubConnectionTests.cs index 6ba1bbeb5e..313efa5b5c 100644 --- a/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/HubConnectionTests.cs +++ b/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/HubConnectionTests.cs @@ -398,15 +398,8 @@ namespace Microsoft.AspNetCore.SignalR.Client.FunctionalTests [MemberData(nameof(HubProtocolsAndTransportsAndHubPaths))] public async Task StreamDoesNotStartIfTokenAlreadyCanceled(string protocolName, HttpTransportType transportType, string path) { - bool ExpectedErrors(WriteContext writeContext) - { - return (writeContext.LoggerName == nameof(Http.Connections.Client.Internal.ServerSentEventsTransport) || - writeContext.LoggerName == nameof(Http.Connections.Client.Internal.LongPollingTransport)) && - writeContext.EventId.Name == "ErrorSending"; - } - var protocol = HubProtocols[protocolName]; - using (StartVerifiableLog(out var loggerFactory, LogLevel.Trace, $"{nameof(StreamDoesNotStartIfTokenAlreadyCanceled)}_{protocol.Name}_{transportType}_{path.TrimStart('/')}", expectedErrorsFilter: ExpectedErrors)) + using (StartVerifiableLog(out var loggerFactory, LogLevel.Trace, $"{nameof(StreamDoesNotStartIfTokenAlreadyCanceled)}_{protocol.Name}_{transportType}_{path.TrimStart('/')}")) { var connection = CreateHubConnection(path, transportType, protocol, loggerFactory); try @@ -416,10 +409,7 @@ namespace Microsoft.AspNetCore.SignalR.Client.FunctionalTests var cts = new CancellationTokenSource(); cts.Cancel(); - var channel = await connection.StreamAsChannelAsync("Stream", 5, cts.Token).OrTimeout(); - - await Assert.ThrowsAnyAsync(() => - channel.WaitToReadAsync().AsTask().OrTimeout()); + await Assert.ThrowsAnyAsync(() =>connection.StreamAsChannelAsync("Stream", 5, cts.Token).OrTimeout()); } catch (Exception ex) { From c9104d4932b85ab7dfa784f3314421584a3882e1 Mon Sep 17 00:00:00 2001 From: Mikael Mengistu Date: Wed, 8 Aug 2018 16:32:46 -0600 Subject: [PATCH 2/5] Move Java client into com.microsoft.aspnet.signalr (#2763) --- .../microsoft/aspnet/signalr}/Action.java | 2 ++ .../microsoft/aspnet/signalr}/Action1.java | 2 ++ .../microsoft/aspnet/signalr}/Action2.java | 2 ++ .../microsoft/aspnet/signalr}/Action3.java | 2 ++ .../microsoft/aspnet/signalr}/Action4.java | 2 ++ .../microsoft/aspnet/signalr}/Action5.java | 2 ++ .../microsoft/aspnet/signalr}/Action6.java | 2 ++ .../microsoft/aspnet/signalr}/Action7.java | 2 ++ .../microsoft/aspnet/signalr}/Action8.java | 2 ++ .../microsoft/aspnet/signalr}/ActionBase.java | 2 ++ .../aspnet/signalr}/CallbackMap.java | 2 ++ .../microsoft/aspnet/signalr}/Chat.java | 4 +++ .../aspnet/signalr}/ConsoleLogger.java | 2 ++ .../aspnet/signalr}/HandshakeProtocol.java | 2 ++ .../signalr}/HandshakeRequestMessage.java | 2 ++ .../signalr}/HandshakeResponseMessage.java | 2 ++ .../aspnet/signalr}/HubConnection.java | 3 ++- .../aspnet/signalr}/HubConnectionState.java | 2 ++ .../microsoft/aspnet/signalr}/HubMessage.java | 4 ++- .../aspnet/signalr}/HubMessageType.java | 2 ++ .../aspnet/signalr}/HubProtocol.java | 2 ++ .../aspnet/signalr}/InvocationMessage.java | 4 ++- .../aspnet/signalr}/JsonHubProtocol.java | 2 ++ .../microsoft/aspnet/signalr}/LogLevel.java | 2 ++ .../microsoft/aspnet/signalr}/Logger.java | 2 ++ .../microsoft/aspnet/signalr}/NullLogger.java | 2 ++ .../aspnet/signalr}/OnReceiveCallBack.java | 2 +- .../aspnet/signalr}/PingMessage.java | 4 ++- .../aspnet/signalr}/Subscription.java | 3 +++ .../aspnet/signalr}/TransferFormat.java | 2 ++ .../microsoft/aspnet/signalr}/Transport.java | 2 ++ .../aspnet/signalr}/WebSocketTransport.java | 5 ++-- .../src/test/java/HandshakeProtocolTest.java | 3 +++ .../src/test/java/HubConnectionTest.java | 4 +-- .../src/test/java/JsonHubProtocolTest.java | 25 ++++++++++--------- .../src/test/java/WebSocketTransportTest.java | 9 ++++--- 36 files changed, 93 insertions(+), 25 deletions(-) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/Action.java (84%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/Action1.java (85%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/Action2.java (86%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/Action3.java (86%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/Action4.java (87%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/Action5.java (88%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/Action6.java (88%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/Action7.java (89%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/Action8.java (89%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/ActionBase.java (85%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/CallbackMap.java (96%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/Chat.java (92%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/ConsoleLogger.java (97%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/HandshakeProtocol.java (94%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/HandshakeRequestMessage.java (90%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/HandshakeResponseMessage.java (90%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/HubConnection.java (99%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/HubConnectionState.java (85%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/HubMessage.java (72%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/HubMessageType.java (91%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/HubProtocol.java (95%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/InvocationMessage.java (92%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/JsonHubProtocol.java (98%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/LogLevel.java (90%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/Logger.java (89%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/NullLogger.java (90%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/OnReceiveCallBack.java (87%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/PingMessage.java (79%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/Subscription.java (94%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/TransferFormat.java (84%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/Transport.java (91%) rename clients/java/signalr/src/main/java/{ => com/microsoft/aspnet/signalr}/WebSocketTransport.java (98%) diff --git a/clients/java/signalr/src/main/java/Action.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action.java similarity index 84% rename from clients/java/signalr/src/main/java/Action.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action.java index 8d41276eb6..09c45da9a6 100644 --- a/clients/java/signalr/src/main/java/Action.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action.java @@ -1,6 +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.aspnet.signalr; + public interface Action { void invoke(); } diff --git a/clients/java/signalr/src/main/java/Action1.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action1.java similarity index 85% rename from clients/java/signalr/src/main/java/Action1.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action1.java index ae4c4d7cbb..6cd1fd7230 100644 --- a/clients/java/signalr/src/main/java/Action1.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action1.java @@ -1,6 +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.aspnet.signalr; + public interface Action1 { void invoke(T1 param1); } diff --git a/clients/java/signalr/src/main/java/Action2.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action2.java similarity index 86% rename from clients/java/signalr/src/main/java/Action2.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action2.java index 41ab3b123f..6f4d74080c 100644 --- a/clients/java/signalr/src/main/java/Action2.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action2.java @@ -1,6 +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.aspnet.signalr; + public interface Action2 { void invoke(T1 param1, T2 param2); } diff --git a/clients/java/signalr/src/main/java/Action3.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action3.java similarity index 86% rename from clients/java/signalr/src/main/java/Action3.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action3.java index b79e6449df..3743dae08c 100644 --- a/clients/java/signalr/src/main/java/Action3.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action3.java @@ -1,6 +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.aspnet.signalr; + public interface Action3 { void invoke(T1 param1, T2 param2, T3 param3); } diff --git a/clients/java/signalr/src/main/java/Action4.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action4.java similarity index 87% rename from clients/java/signalr/src/main/java/Action4.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action4.java index 34665d8fd6..918e9c7568 100644 --- a/clients/java/signalr/src/main/java/Action4.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action4.java @@ -1,6 +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.aspnet.signalr; + public interface Action4 { void invoke(T1 param1, T2 param2, T3 param3, T4 param4); } diff --git a/clients/java/signalr/src/main/java/Action5.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action5.java similarity index 88% rename from clients/java/signalr/src/main/java/Action5.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action5.java index 446aa52132..8f73f053de 100644 --- a/clients/java/signalr/src/main/java/Action5.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action5.java @@ -1,6 +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.aspnet.signalr; + public interface Action5 { void invoke(T1 param1, T2 param2, T3 param3, T4 param4, T5 param5); } diff --git a/clients/java/signalr/src/main/java/Action6.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action6.java similarity index 88% rename from clients/java/signalr/src/main/java/Action6.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action6.java index 2aca2c1d64..54185b4040 100644 --- a/clients/java/signalr/src/main/java/Action6.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action6.java @@ -1,6 +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.aspnet.signalr; + public interface Action6 { void invoke(T1 param1, T2 param2, T3 param3, T4 param4, T5 param5, T6 param6); } diff --git a/clients/java/signalr/src/main/java/Action7.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action7.java similarity index 89% rename from clients/java/signalr/src/main/java/Action7.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action7.java index a835b2c686..8484ca3a0e 100644 --- a/clients/java/signalr/src/main/java/Action7.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action7.java @@ -1,6 +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.aspnet.signalr; + public interface Action7 { void invoke(T1 param1, T2 param2, T3 param3, T4 param4, T5 param5, T6 param6, T7 param7); } diff --git a/clients/java/signalr/src/main/java/Action8.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action8.java similarity index 89% rename from clients/java/signalr/src/main/java/Action8.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action8.java index 769d66b343..700f4933d8 100644 --- a/clients/java/signalr/src/main/java/Action8.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Action8.java @@ -1,6 +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.aspnet.signalr; + public interface Action8 { void invoke(T1 param1, T2 param2, T3 param3, T4 param4, T5 param5, T6 param6, T7 param7, T8 param8); } diff --git a/clients/java/signalr/src/main/java/ActionBase.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/ActionBase.java similarity index 85% rename from clients/java/signalr/src/main/java/ActionBase.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/ActionBase.java index 09b1bc7cfb..bb95ca6515 100644 --- a/clients/java/signalr/src/main/java/ActionBase.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/ActionBase.java @@ -1,6 +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.aspnet.signalr; + public interface ActionBase { void invoke(Object ... params); } diff --git a/clients/java/signalr/src/main/java/CallbackMap.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/CallbackMap.java similarity index 96% rename from clients/java/signalr/src/main/java/CallbackMap.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/CallbackMap.java index ec4bf817d0..3e8d8c923c 100644 --- a/clients/java/signalr/src/main/java/CallbackMap.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/CallbackMap.java @@ -1,6 +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.aspnet.signalr; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; diff --git a/clients/java/signalr/src/main/java/Chat.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Chat.java similarity index 92% rename from clients/java/signalr/src/main/java/Chat.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Chat.java index ca7c4dc074..bf1c33efc5 100644 --- a/clients/java/signalr/src/main/java/Chat.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Chat.java @@ -1,6 +1,10 @@ // 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; + +import com.microsoft.aspnet.signalr.HubConnection; + import java.util.Scanner; public class Chat { diff --git a/clients/java/signalr/src/main/java/ConsoleLogger.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/ConsoleLogger.java similarity index 97% rename from clients/java/signalr/src/main/java/ConsoleLogger.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/ConsoleLogger.java index f74f0080c9..a79ff1ad52 100644 --- a/clients/java/signalr/src/main/java/ConsoleLogger.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/ConsoleLogger.java @@ -1,6 +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.aspnet.signalr; + public class ConsoleLogger implements Logger { private LogLevel logLevel; public ConsoleLogger(LogLevel logLevel) { diff --git a/clients/java/signalr/src/main/java/HandshakeProtocol.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HandshakeProtocol.java similarity index 94% rename from clients/java/signalr/src/main/java/HandshakeProtocol.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HandshakeProtocol.java index 322625ce9e..35282fae8f 100644 --- a/clients/java/signalr/src/main/java/HandshakeProtocol.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HandshakeProtocol.java @@ -1,6 +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.aspnet.signalr; + import com.google.gson.Gson; public class HandshakeProtocol { diff --git a/clients/java/signalr/src/main/java/HandshakeRequestMessage.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HandshakeRequestMessage.java similarity index 90% rename from clients/java/signalr/src/main/java/HandshakeRequestMessage.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HandshakeRequestMessage.java index 370de4e513..7786bc229a 100644 --- a/clients/java/signalr/src/main/java/HandshakeRequestMessage.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HandshakeRequestMessage.java @@ -1,6 +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.aspnet.signalr; + public class HandshakeRequestMessage { String protocol; int version; diff --git a/clients/java/signalr/src/main/java/HandshakeResponseMessage.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HandshakeResponseMessage.java similarity index 90% rename from clients/java/signalr/src/main/java/HandshakeResponseMessage.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HandshakeResponseMessage.java index 8b40a79283..cb2eb6c3a7 100644 --- a/clients/java/signalr/src/main/java/HandshakeResponseMessage.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HandshakeResponseMessage.java @@ -1,6 +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.aspnet.signalr; + public class HandshakeResponseMessage { public String error; diff --git a/clients/java/signalr/src/main/java/HubConnection.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubConnection.java similarity index 99% rename from clients/java/signalr/src/main/java/HubConnection.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubConnection.java index e3eb1bec97..05984de5f3 100644 --- a/clients/java/signalr/src/main/java/HubConnection.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubConnection.java @@ -1,9 +1,10 @@ // 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; + import com.google.gson.Gson; import com.google.gson.JsonArray; - import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; diff --git a/clients/java/signalr/src/main/java/HubConnectionState.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubConnectionState.java similarity index 85% rename from clients/java/signalr/src/main/java/HubConnectionState.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubConnectionState.java index 6c45a93e61..2bf62ffa5a 100644 --- a/clients/java/signalr/src/main/java/HubConnectionState.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubConnectionState.java @@ -1,6 +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.aspnet.signalr; + public enum HubConnectionState { CONNECTED, DISCONNECTED, diff --git a/clients/java/signalr/src/main/java/HubMessage.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubMessage.java similarity index 72% rename from clients/java/signalr/src/main/java/HubMessage.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubMessage.java index ca4b9a788f..9e8f887996 100644 --- a/clients/java/signalr/src/main/java/HubMessage.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubMessage.java @@ -1,9 +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.aspnet.signalr; + /** * A base class for hub messages. */ public abstract class HubMessage { - abstract HubMessageType getMessageType(); + public abstract HubMessageType getMessageType(); } diff --git a/clients/java/signalr/src/main/java/HubMessageType.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubMessageType.java similarity index 91% rename from clients/java/signalr/src/main/java/HubMessageType.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubMessageType.java index d18e3b9f6b..a02075858a 100644 --- a/clients/java/signalr/src/main/java/HubMessageType.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubMessageType.java @@ -1,6 +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.aspnet.signalr; + public enum HubMessageType { INVOCATION(1), STREAM_ITEM(2), diff --git a/clients/java/signalr/src/main/java/HubProtocol.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubProtocol.java similarity index 95% rename from clients/java/signalr/src/main/java/HubProtocol.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubProtocol.java index 2869d9ac4a..0ee6eeb9cb 100644 --- a/clients/java/signalr/src/main/java/HubProtocol.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/HubProtocol.java @@ -1,6 +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.aspnet.signalr; + /** * A protocol abstraction for communicating with SignalR hubs. */ diff --git a/clients/java/signalr/src/main/java/InvocationMessage.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/InvocationMessage.java similarity index 92% rename from clients/java/signalr/src/main/java/InvocationMessage.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/InvocationMessage.java index 635067ff2e..4a0ed52ea8 100644 --- a/clients/java/signalr/src/main/java/InvocationMessage.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/InvocationMessage.java @@ -1,6 +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.aspnet.signalr; + public class InvocationMessage extends HubMessage { int type = HubMessageType.INVOCATION.value; String invocationId; @@ -37,7 +39,7 @@ public class InvocationMessage extends HubMessage { } @Override - HubMessageType getMessageType() { + public HubMessageType getMessageType() { return HubMessageType.INVOCATION; } } diff --git a/clients/java/signalr/src/main/java/JsonHubProtocol.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/JsonHubProtocol.java similarity index 98% rename from clients/java/signalr/src/main/java/JsonHubProtocol.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/JsonHubProtocol.java index f80c57912b..4bee9e089c 100644 --- a/clients/java/signalr/src/main/java/JsonHubProtocol.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/JsonHubProtocol.java @@ -1,6 +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.aspnet.signalr; + import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; diff --git a/clients/java/signalr/src/main/java/LogLevel.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/LogLevel.java similarity index 90% rename from clients/java/signalr/src/main/java/LogLevel.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/LogLevel.java index 72a5dac734..9541e6d891 100644 --- a/clients/java/signalr/src/main/java/LogLevel.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/LogLevel.java @@ -1,6 +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.aspnet.signalr; + public enum LogLevel { Trace(0), Debug(1), diff --git a/clients/java/signalr/src/main/java/Logger.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Logger.java similarity index 89% rename from clients/java/signalr/src/main/java/Logger.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Logger.java index 8e2fee7d4b..db918f51b9 100644 --- a/clients/java/signalr/src/main/java/Logger.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Logger.java @@ -1,6 +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.aspnet.signalr; + public interface Logger { void log(LogLevel logLevel, String message); void log(LogLevel logLevel, String formattedMessage, Object ... args); diff --git a/clients/java/signalr/src/main/java/NullLogger.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/NullLogger.java similarity index 90% rename from clients/java/signalr/src/main/java/NullLogger.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/NullLogger.java index 38eb818fad..b308931ce4 100644 --- a/clients/java/signalr/src/main/java/NullLogger.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/NullLogger.java @@ -1,6 +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.aspnet.signalr; + public class NullLogger implements Logger { @Override public void log(LogLevel logLevel, String message) { } diff --git a/clients/java/signalr/src/main/java/OnReceiveCallBack.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/OnReceiveCallBack.java similarity index 87% rename from clients/java/signalr/src/main/java/OnReceiveCallBack.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/OnReceiveCallBack.java index 6d971d1955..168c858c26 100644 --- a/clients/java/signalr/src/main/java/OnReceiveCallBack.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/OnReceiveCallBack.java @@ -1,7 +1,7 @@ // 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. -import com.google.gson.JsonObject; +package com.microsoft.aspnet.signalr; public interface OnReceiveCallBack { void invoke(String message) throws Exception; diff --git a/clients/java/signalr/src/main/java/PingMessage.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/PingMessage.java similarity index 79% rename from clients/java/signalr/src/main/java/PingMessage.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/PingMessage.java index 6bf9be7753..de4d861894 100644 --- a/clients/java/signalr/src/main/java/PingMessage.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/PingMessage.java @@ -1,12 +1,14 @@ // 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 PingMessage extends HubMessage { int type = HubMessageType.PING.value; @Override - HubMessageType getMessageType() { + public HubMessageType getMessageType() { return HubMessageType.PING; } } diff --git a/clients/java/signalr/src/main/java/Subscription.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Subscription.java similarity index 94% rename from clients/java/signalr/src/main/java/Subscription.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Subscription.java index f036d71e6d..f4a3e7d035 100644 --- a/clients/java/signalr/src/main/java/Subscription.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Subscription.java @@ -1,12 +1,15 @@ // 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; + import java.util.List; public class Subscription { private CallbackMap handlers; private ActionBase action; private String target; + public Subscription(CallbackMap handlers, ActionBase action, String target) { this.handlers = handlers; this.action = action; diff --git a/clients/java/signalr/src/main/java/TransferFormat.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/TransferFormat.java similarity index 84% rename from clients/java/signalr/src/main/java/TransferFormat.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/TransferFormat.java index 8813920de6..32b8956bfb 100644 --- a/clients/java/signalr/src/main/java/TransferFormat.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/TransferFormat.java @@ -1,6 +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.aspnet.signalr; + public enum TransferFormat { Text, Binary diff --git a/clients/java/signalr/src/main/java/Transport.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Transport.java similarity index 91% rename from clients/java/signalr/src/main/java/Transport.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Transport.java index 240675dfe5..d8356ae949 100644 --- a/clients/java/signalr/src/main/java/Transport.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/Transport.java @@ -1,6 +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.aspnet.signalr; + public interface Transport { void start() throws InterruptedException; void send(String message) throws Exception; diff --git a/clients/java/signalr/src/main/java/WebSocketTransport.java b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/WebSocketTransport.java similarity index 98% rename from clients/java/signalr/src/main/java/WebSocketTransport.java rename to clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/WebSocketTransport.java index 0089794d02..40ce5beb7e 100644 --- a/clients/java/signalr/src/main/java/WebSocketTransport.java +++ b/clients/java/signalr/src/main/java/com/microsoft/aspnet/signalr/WebSocketTransport.java @@ -1,11 +1,12 @@ // 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. -import org.java_websocket.client.WebSocketClient; -import org.java_websocket.handshake.ServerHandshake; +package com.microsoft.aspnet.signalr; import java.net.URI; import java.net.URISyntaxException; +import org.java_websocket.client.WebSocketClient; +import org.java_websocket.handshake.ServerHandshake; public class WebSocketTransport implements Transport { private WebSocketClient webSocketClient; diff --git a/clients/java/signalr/src/test/java/HandshakeProtocolTest.java b/clients/java/signalr/src/test/java/HandshakeProtocolTest.java index ae8f960242..f41ded8d90 100644 --- a/clients/java/signalr/src/test/java/HandshakeProtocolTest.java +++ b/clients/java/signalr/src/test/java/HandshakeProtocolTest.java @@ -1,6 +1,9 @@ // 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. +import com.microsoft.aspnet.signalr.HandshakeProtocol; +import com.microsoft.aspnet.signalr.HandshakeRequestMessage; +import com.microsoft.aspnet.signalr.HandshakeResponseMessage; import org.junit.Test; import static org.junit.Assert.*; diff --git a/clients/java/signalr/src/test/java/HubConnectionTest.java b/clients/java/signalr/src/test/java/HubConnectionTest.java index 55f30cae70..617871d443 100644 --- a/clients/java/signalr/src/test/java/HubConnectionTest.java +++ b/clients/java/signalr/src/test/java/HubConnectionTest.java @@ -1,10 +1,10 @@ // 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. -import org.junit.Test; - +import com.microsoft.aspnet.signalr.*; import java.util.ArrayList; import java.util.concurrent.atomic.AtomicReference; +import org.junit.Test; import static org.junit.Assert.*; diff --git a/clients/java/signalr/src/test/java/JsonHubProtocolTest.java b/clients/java/signalr/src/test/java/JsonHubProtocolTest.java index 4d6e2fd6d1..31c349e8e5 100644 --- a/clients/java/signalr/src/test/java/JsonHubProtocolTest.java +++ b/clients/java/signalr/src/test/java/JsonHubProtocolTest.java @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. import com.google.gson.JsonArray; +import com.microsoft.aspnet.signalr.*; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -57,10 +58,10 @@ public class JsonHubProtocolTest { //We can safely cast here because we know that it's an invocation message. InvocationMessage invocationMessage = (InvocationMessage) messages[0]; - assertEquals("test", invocationMessage.target); - assertEquals(null, invocationMessage.invocationId); + assertEquals("test", invocationMessage.getTarget()); + assertEquals(null, invocationMessage.getInvocationId()); - JsonArray messageResult = (JsonArray) invocationMessage.arguments[0]; + JsonArray messageResult = (JsonArray) invocationMessage.getArguments()[0]; assertEquals(42, messageResult.getAsInt()); } @@ -95,9 +96,9 @@ public class JsonHubProtocolTest { //Now that we know we have an invocation message we can cast the hubMessage. InvocationMessage invocationMessage = (InvocationMessage) messages[0]; - assertEquals("one", invocationMessage.target); - assertEquals(null, invocationMessage.invocationId); - JsonArray messageResult = (JsonArray) invocationMessage.arguments[0]; + assertEquals("one", invocationMessage.getTarget()); + assertEquals(null, invocationMessage.getInvocationId()); + JsonArray messageResult = (JsonArray) invocationMessage.getArguments()[0]; assertEquals(42, messageResult.getAsInt()); // Check the second message @@ -106,9 +107,9 @@ public class JsonHubProtocolTest { //Now that we know we have an invocation message we can cast the hubMessage. InvocationMessage invocationMessage2 = (InvocationMessage) messages[1]; - assertEquals("two", invocationMessage2.target); - assertEquals(null, invocationMessage2.invocationId); - JsonArray secondMessageResult = (JsonArray) invocationMessage2.arguments[0]; + assertEquals("two", invocationMessage2.getTarget()); + assertEquals(null, invocationMessage2.getInvocationId()); + JsonArray secondMessageResult = (JsonArray) invocationMessage2.getArguments()[0]; assertEquals(43, secondMessageResult.getAsInt()); } @@ -121,9 +122,9 @@ public class JsonHubProtocolTest { assertEquals(HubMessageType.INVOCATION, messages[0].getMessageType()); InvocationMessage message = (InvocationMessage)messages[0]; - assertEquals("test", message.target); - assertEquals(null, message.invocationId); - JsonArray messageResult = ((JsonArray) message.arguments[0]); + assertEquals("test", message.getTarget()); + assertEquals(null, message.getInvocationId()); + JsonArray messageResult = ((JsonArray) message.getArguments()[0]); assertEquals(42, messageResult.get(0).getAsInt()); assertEquals(24, messageResult.get(1).getAsInt()); } diff --git a/clients/java/signalr/src/test/java/WebSocketTransportTest.java b/clients/java/signalr/src/test/java/WebSocketTransportTest.java index bb550d94dd..ba251c9a9f 100644 --- a/clients/java/signalr/src/test/java/WebSocketTransportTest.java +++ b/clients/java/signalr/src/test/java/WebSocketTransportTest.java @@ -1,13 +1,14 @@ // 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. -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - +import com.microsoft.aspnet.signalr.NullLogger; +import com.microsoft.aspnet.signalr.WebSocketTransport; import java.net.URISyntaxException; import java.util.Arrays; import java.util.Collection; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; import static org.junit.Assert.*; From a550ae6cc3fec741c0fc9c8206ee6ff012c52ba3 Mon Sep 17 00:00:00 2001 From: BrennanConroy Date: Wed, 8 Aug 2018 15:55:33 -0700 Subject: [PATCH 3/5] Provide a better error message when invoking a non-existant hub method (#2768) --- .../Internal/DefaultHubDispatcher.cs | 2 +- .../Protocol/MessagePackHubProtocol.cs | 4 +- .../HubConnectionTests.cs | 41 +++++++++++++++++-- .../HubConnectionHandlerTests.cs | 14 +++---- 4 files changed, 47 insertions(+), 14 deletions(-) diff --git a/src/Microsoft.AspNetCore.SignalR.Core/Internal/DefaultHubDispatcher.cs b/src/Microsoft.AspNetCore.SignalR.Core/Internal/DefaultHubDispatcher.cs index 4f1fc15668..d26d10ac89 100644 --- a/src/Microsoft.AspNetCore.SignalR.Core/Internal/DefaultHubDispatcher.cs +++ b/src/Microsoft.AspNetCore.SignalR.Core/Internal/DefaultHubDispatcher.cs @@ -136,7 +136,7 @@ namespace Microsoft.AspNetCore.SignalR.Internal { if (!_methods.TryGetValue(methodName, out var descriptor)) { - return Type.EmptyTypes; + throw new HubException("Method does not exist."); } return descriptor.ParameterTypes; } diff --git a/src/Microsoft.AspNetCore.SignalR.Protocols.MessagePack/Protocol/MessagePackHubProtocol.cs b/src/Microsoft.AspNetCore.SignalR.Protocols.MessagePack/Protocol/MessagePackHubProtocol.cs index 0b693605bf..d4e29baf92 100644 --- a/src/Microsoft.AspNetCore.SignalR.Protocols.MessagePack/Protocol/MessagePackHubProtocol.cs +++ b/src/Microsoft.AspNetCore.SignalR.Protocols.MessagePack/Protocol/MessagePackHubProtocol.cs @@ -157,10 +157,10 @@ namespace Microsoft.AspNetCore.SignalR.Protocol } var target = ReadString(input, ref offset, "target"); - var parameterTypes = binder.GetParameterTypes(target); try { + var parameterTypes = binder.GetParameterTypes(target); var arguments = BindArguments(input, ref offset, parameterTypes, resolver); return ApplyHeaders(headers, new InvocationMessage(invocationId, target, arguments)); } @@ -175,10 +175,10 @@ namespace Microsoft.AspNetCore.SignalR.Protocol var headers = ReadHeaders(input, ref offset); var invocationId = ReadInvocationId(input, ref offset); var target = ReadString(input, ref offset, "target"); - var parameterTypes = binder.GetParameterTypes(target); try { + var parameterTypes = binder.GetParameterTypes(target); var arguments = BindArguments(input, ref offset, parameterTypes, resolver); return ApplyHeaders(headers, new StreamInvocationMessage(invocationId, target, arguments)); } diff --git a/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/HubConnectionTests.cs b/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/HubConnectionTests.cs index 313efa5b5c..0fe68b0589 100644 --- a/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/HubConnectionTests.cs +++ b/test/Microsoft.AspNetCore.SignalR.Client.FunctionalTests/HubConnectionTests.cs @@ -464,7 +464,7 @@ namespace Microsoft.AspNetCore.SignalR.Client.FunctionalTests bool ExpectedErrors(WriteContext writeContext) { return writeContext.LoggerName == DefaultHubDispatcherLoggerName && - writeContext.EventId.Name == "UnknownHubMethod"; + writeContext.EventId.Name == "FailedInvokingHubMethod"; } var hubProtocol = HubProtocols[hubProtocolName]; @@ -476,7 +476,40 @@ namespace Microsoft.AspNetCore.SignalR.Client.FunctionalTests await connection.StartAsync().OrTimeout(); var ex = await Assert.ThrowsAsync(() => connection.InvokeAsync("!@#$%")).OrTimeout(); - Assert.Equal("Unknown hub method '!@#$%'", ex.Message); + Assert.Equal("Failed to invoke '!@#$%' due to an error on the server. HubException: Method does not exist.", ex.Message); + } + catch (Exception ex) + { + loggerFactory.CreateLogger().LogError(ex, "{ExceptionType} from test", ex.GetType().FullName); + throw; + } + finally + { + await connection.DisposeAsync().OrTimeout(); + } + } + } + + [Theory] + [MemberData(nameof(HubProtocolsAndTransportsAndHubPaths))] + public async Task ServerThrowsHubExceptionIfHubMethodCannotBeResolvedAndArgumentsPassedIn(string hubProtocolName, HttpTransportType transportType, string hubPath) + { + bool ExpectedErrors(WriteContext writeContext) + { + return writeContext.LoggerName == DefaultHubDispatcherLoggerName && + writeContext.EventId.Name == "FailedInvokingHubMethod"; + } + + var hubProtocol = HubProtocols[hubProtocolName]; + using (StartVerifiableLog(out var loggerFactory, $"{nameof(ServerThrowsHubExceptionIfHubMethodCannotBeResolvedAndArgumentsPassedIn)}_{hubProtocol.Name}_{transportType}_{hubPath.TrimStart('/')}", expectedErrorsFilter: ExpectedErrors)) + { + var connection = CreateHubConnection(hubPath, transportType, hubProtocol, loggerFactory); + try + { + await connection.StartAsync().OrTimeout(); + + var ex = await Assert.ThrowsAsync(() => connection.InvokeAsync("!@#$%", 10, "test")).OrTimeout(); + Assert.Equal("Failed to invoke '!@#$%' due to an error on the server. HubException: Method does not exist.", ex.Message); } catch (Exception ex) { @@ -563,7 +596,7 @@ namespace Microsoft.AspNetCore.SignalR.Client.FunctionalTests bool ExpectedErrors(WriteContext writeContext) { return writeContext.LoggerName == DefaultHubDispatcherLoggerName && - writeContext.EventId.Name == "UnknownHubMethod"; + writeContext.EventId.Name == "FailedInvokingHubMethod"; } var hubProtocol = HubProtocols[hubProtocolName]; @@ -576,7 +609,7 @@ namespace Microsoft.AspNetCore.SignalR.Client.FunctionalTests var channel = await connection.StreamAsChannelAsync("!@#$%"); var ex = await Assert.ThrowsAsync(() => channel.ReadAllAsync().OrTimeout()); - Assert.Equal("Unknown hub method '!@#$%'", ex.Message); + Assert.Equal("Failed to invoke '!@#$%' due to an error on the server. HubException: Method does not exist.", ex.Message); } catch (Exception ex) { diff --git a/test/Microsoft.AspNetCore.SignalR.Tests/HubConnectionHandlerTests.cs b/test/Microsoft.AspNetCore.SignalR.Tests/HubConnectionHandlerTests.cs index 02a5146e02..c637f9e131 100644 --- a/test/Microsoft.AspNetCore.SignalR.Tests/HubConnectionHandlerTests.cs +++ b/test/Microsoft.AspNetCore.SignalR.Tests/HubConnectionHandlerTests.cs @@ -799,7 +799,7 @@ namespace Microsoft.AspNetCore.SignalR.Tests var result = await client.InvokeAsync(nameof(MethodHub.OnDisconnectedAsync)).OrTimeout(); - Assert.Equal("Unknown hub method 'OnDisconnectedAsync'", result.Error); + Assert.Equal("Failed to invoke 'OnDisconnectedAsync' due to an error on the server. HubException: Method does not exist.", result.Error); // kill the connection client.Dispose(); @@ -837,7 +837,7 @@ namespace Microsoft.AspNetCore.SignalR.Tests var result = await client.InvokeAsync(nameof(MethodHub.StaticMethod)).OrTimeout(); - Assert.Equal("Unknown hub method 'StaticMethod'", result.Error); + Assert.Equal("Failed to invoke 'StaticMethod' due to an error on the server. HubException: Method does not exist.", result.Error); // kill the connection client.Dispose(); @@ -858,16 +858,16 @@ namespace Microsoft.AspNetCore.SignalR.Tests var connectionHandlerTask = await client.ConnectAsync(connectionHandler); var result = await client.InvokeAsync(nameof(MethodHub.ToString)).OrTimeout(); - Assert.Equal("Unknown hub method 'ToString'", result.Error); + Assert.Equal("Failed to invoke 'ToString' due to an error on the server. HubException: Method does not exist.", result.Error); result = await client.InvokeAsync(nameof(MethodHub.GetHashCode)).OrTimeout(); - Assert.Equal("Unknown hub method 'GetHashCode'", result.Error); + Assert.Equal("Failed to invoke 'GetHashCode' due to an error on the server. HubException: Method does not exist.", result.Error); result = await client.InvokeAsync(nameof(MethodHub.Equals)).OrTimeout(); - Assert.Equal("Unknown hub method 'Equals'", result.Error); + Assert.Equal("Failed to invoke 'Equals' due to an error on the server. HubException: Method does not exist.", result.Error); result = await client.InvokeAsync(nameof(MethodHub.ReferenceEquals)).OrTimeout(); - Assert.Equal("Unknown hub method 'ReferenceEquals'", result.Error); + Assert.Equal("Failed to invoke 'ReferenceEquals' due to an error on the server. HubException: Method does not exist.", result.Error); // kill the connection client.Dispose(); @@ -889,7 +889,7 @@ namespace Microsoft.AspNetCore.SignalR.Tests var result = await client.InvokeAsync(nameof(MethodHub.Dispose)).OrTimeout(); - Assert.Equal("Unknown hub method 'Dispose'", result.Error); + Assert.Equal("Failed to invoke 'Dispose' due to an error on the server. HubException: Method does not exist.", result.Error); // kill the connection client.Dispose(); From 6a6e1743ae55154a2391bfcda764ce1c4657cc4f Mon Sep 17 00:00:00 2001 From: BrennanConroy Date: Wed, 8 Aug 2018 16:38:43 -0700 Subject: [PATCH 4/5] Expose full implementation for configureLogging in ESM definition file (#2770) --- clients/ts/signalr/src/HubConnectionBuilder.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/clients/ts/signalr/src/HubConnectionBuilder.ts b/clients/ts/signalr/src/HubConnectionBuilder.ts index 10ba5f6e2e..773ab3aa00 100644 --- a/clients/ts/signalr/src/HubConnectionBuilder.ts +++ b/clients/ts/signalr/src/HubConnectionBuilder.ts @@ -35,6 +35,12 @@ export class HubConnectionBuilder { * @returns The {@link @aspnet/signalr.HubConnectionBuilder} instance, for chaining. */ public configureLogging(logger: ILogger): HubConnectionBuilder; + /** Configures custom logging for the {@link @aspnet/signalr.HubConnection}. + * + * @param {LogLevel | ILogger} logging An object implementing the {@link @aspnet/signalr.ILogger} interface or {@link @aspnet/signalr.LogLevel}. + * @returns The {@link @aspnet/signalr.HubConnectionBuilder} instance, for chaining. + */ + public configureLogging(logging: LogLevel | ILogger): HubConnectionBuilder; public configureLogging(logging: LogLevel | ILogger): HubConnectionBuilder { Arg.isRequired(logging, "logging"); From 5843b5415b56367de53f78376d94cac61f6fc0a7 Mon Sep 17 00:00:00 2001 From: Mikael Mengistu Date: Wed, 8 Aug 2018 17:50:55 -0600 Subject: [PATCH 5/5] Update Java client build scripts for Maven publishing (#2765) --- build/repo.targets | 12 +++--------- clients/java/signalr/build.gradle | 24 +++++++++++++++++------- clients/java/signalr/settings.gradle | 2 +- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/build/repo.targets b/build/repo.targets index 424fa09955..54b7931cfa 100644 --- a/build/repo.targets +++ b/build/repo.targets @@ -126,15 +126,9 @@ - - - - - - - - - + + + diff --git a/clients/java/signalr/build.gradle b/clients/java/signalr/build.gradle index da1abbd823..00b71ef1c5 100644 --- a/clients/java/signalr/build.gradle +++ b/clients/java/signalr/build.gradle @@ -3,7 +3,7 @@ plugins { id 'maven' } -group 'com.microsoft.aspnetcore' +group 'com.microsoft.aspnet' version '0.1.0-preview1' sourceCompatibility = 1.8 @@ -31,11 +31,10 @@ task javadocJar(type: Jar, dependsOn: javadoc) { task generatePOM { pom { project { - groupId 'com.microsoft.aspnetcore' - artifactId 'signalr' - version '0.1.0-preview1' - inceptionYear '2018' + description 'ASP.NET Core SignalR Client for Java applications' + url 'https://github.com/aspnet/SignalR' + name groupId + ':' + artifactId licenses { license { name 'The Apache Software License, Version 2.0' @@ -43,9 +42,20 @@ task generatePOM { distribution 'repo' } } + scm { + connection 'scm:git:git://github.com/aspnet/SignalR.git' + developerConnection 'scm:git:git://github.com/aspnet/SignalR.git' + url 'http://github.com/aspnet/SignalR/tree/master' + } + developers { + developer { + id 'microsoft' + name 'Microsoft' + } + } } - }.writeTo("signalr-client-0.1.0-preview1.pom") + }.writeTo("signalr-0.1.0-preview1.pom") - ant.move file: "signalr-client-0.1.0-preview1.pom", + ant.move file: "signalr-0.1.0-preview1.pom", todir: "${buildDir}/libs" } diff --git a/clients/java/signalr/settings.gradle b/clients/java/signalr/settings.gradle index 90473932b7..f3f257cc4d 100644 --- a/clients/java/signalr/settings.gradle +++ b/clients/java/signalr/settings.gradle @@ -1,3 +1,3 @@ -rootProject.name = 'signalr-client' +rootProject.name = 'signalr' include 'main'