Skip to content

Commit ac9f882

Browse files
BatchParser target netstandard2.0 and remove Hosting dependency (#1564)
* Remove Hosting dependency from BatchParser, wip for logging replacement * netstandard2.0 and fixes * comment + cleanup * comment * fix build * Update newtonsoft * localize errors
1 parent e64e31e commit ac9f882

21 files changed

+192
-17
lines changed

src/Microsoft.SqlTools.ManagedBatchParser/BatchParser/BatchParserWrapper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
44
//
55

6-
using Microsoft.SqlTools.Utility;
6+
using Microsoft.SqlTools.BatchParser.Utility;
77
using System;
88
using System.Collections.Generic;
99
using System.IO;

src/Microsoft.SqlTools.ManagedBatchParser/BatchParser/ExecutionEngineCode/Batch.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
using System.Diagnostics.CodeAnalysis;
1111
using System.Globalization;
1212
using Microsoft.SqlTools.ServiceLayer.Connection.ReliableConnection;
13-
using Microsoft.SqlTools.Utility;
13+
using Microsoft.SqlTools.BatchParser.Utility;
1414
using Microsoft.SqlTools.ManagedBatchParser;
1515

1616
namespace Microsoft.SqlTools.ServiceLayer.BatchParser.ExecutionEngineCode

src/Microsoft.SqlTools.ManagedBatchParser/BatchParser/ExecutionEngineCode/ExecutionEngine.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
using System.Text;
1515
using Microsoft.SqlTools.ManagedBatchParser;
1616
using Microsoft.SqlTools.ServiceLayer.Connection.ReliableConnection;
17-
using Microsoft.SqlTools.Utility;
17+
using Microsoft.SqlTools.BatchParser.Utility;
1818

1919
namespace Microsoft.SqlTools.ServiceLayer.BatchParser.ExecutionEngineCode
2020
{

src/Microsoft.SqlTools.ManagedBatchParser/BatchParser/ExecutionEngineCode/ExecutionEngineConditions.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
//
55

66
using System.Collections.Specialized;
7-
using Microsoft.SqlTools.Utility;
7+
using Microsoft.SqlTools.BatchParser.Utility;
88

99
namespace Microsoft.SqlTools.ServiceLayer.BatchParser.ExecutionEngineCode
1010
{

src/Microsoft.SqlTools.ManagedBatchParser/Localization/sr.cs

+11
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,14 @@ public static string SqlCmd_FailedInclude
285285
}
286286
}
287287

288+
public static string NullEmptyOrWhitespaceString
289+
{
290+
get
291+
{
292+
return Keys.GetString(Keys.NullEmptyOrWhitespaceString);
293+
}
294+
}
295+
288296
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
289297
public class Keys
290298
{
@@ -389,6 +397,9 @@ public class Keys
389397
public const string SqlCmd_FailedInclude = "SqlCmd_FailedInclude";
390398

391399

400+
public const string NullEmptyOrWhitespaceString = "NullEmptyOrWhitespaceString";
401+
402+
392403
private Keys()
393404
{ }
394405

src/Microsoft.SqlTools.ManagedBatchParser/Localization/sr.resx

+4
Original file line numberDiff line numberDiff line change
@@ -245,4 +245,8 @@
245245
<value>Could not find included file {0}.</value>
246246
<comment></comment>
247247
</data>
248+
<data name="NullEmptyOrWhitespaceString" xml:space="preserve">
249+
<value>Parameter contains a null, empty, or whitespace string.</value>
250+
<comment></comment>
251+
</data>
248252
</root>

src/Microsoft.SqlTools.ManagedBatchParser/Localization/sr.strings

+2
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,5 @@ SqlCmd_PathLong = Path too long.
8888

8989
SqlCmd_FailedInclude = Could not find included file {0}.
9090

91+
NullEmptyOrWhitespaceString = Parameter contains a null, empty, or whitespace string.
92+

src/Microsoft.SqlTools.ManagedBatchParser/Localization/sr.xlf

+5
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,11 @@
162162
<target state="new">Could not find included file {0}.</target>
163163
<note></note>
164164
</trans-unit>
165+
<trans-unit id="NullEmptyOrWhitespaceString">
166+
<source>Parameter contains a null, empty, or whitespace string.</source>
167+
<target state="new">Parameter contains a null, empty, or whitespace string.</target>
168+
<note></note>
169+
</trans-unit>
165170
</body>
166171
</file>
167172
</xliff>

src/Microsoft.SqlTools.ManagedBatchParser/Microsoft.SqlTools.ManagedBatchParser.csproj

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3+
<!-- Targeting netstandard2.0 so that other things such as PS cmdlets can use this which need to support a wider range of machines -->
4+
<TargetFramework>netstandard2.0</TargetFramework>
5+
<Nullable>disable</Nullable>
36
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
47
<EnableDefaultEmbeddedResourceItems>false</EnableDefaultEmbeddedResourceItems>
58
<EmbeddedResourceUseDependentUponConvention>false</EmbeddedResourceUseDependentUponConvention>
@@ -12,12 +15,10 @@
1215
<PackageReference Include="Microsoft.SqlServer.DACFx" />
1316
<PackageReference Include="Microsoft.SqlServer.SqlManagementObjects" />
1417
<PackageReference Include="Microsoft.SqlServer.Management.SmoMetadataProvider" />
18+
<PackageReference Include="Newtonsoft.Json" />
1519
</ItemGroup>
1620
<ItemGroup>
1721
<EmbeddedResource Include="Localization\*.resx" />
1822
<None Include="Localization\sr.strings" />
1923
</ItemGroup>
20-
<ItemGroup>
21-
<ProjectReference Include="..\Microsoft.SqlTools.Hosting\Microsoft.SqlTools.Hosting.csproj" />
22-
</ItemGroup>
2324
</Project>

src/Microsoft.SqlTools.ManagedBatchParser/ReliableConnection/AmbientSettings.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
using System.Collections.Generic;
88
using System.Diagnostics;
99
using System.Reflection;
10-
using Microsoft.SqlTools.Utility;
10+
using Microsoft.SqlTools.BatchParser.Utility;
1111

1212
namespace Microsoft.SqlTools.ServiceLayer.Connection.ReliableConnection
1313
{

src/Microsoft.SqlTools.ManagedBatchParser/ReliableConnection/CachedServerInfo.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
using System.Linq;
1212
using Microsoft.SqlServer.Management.Common;
1313
using Microsoft.SqlServer.Management.Dmf;
14-
using Microsoft.SqlTools.Utility;
14+
using Microsoft.SqlTools.BatchParser.Utility;
1515

1616
namespace Microsoft.SqlTools.ServiceLayer.Connection.ReliableConnection
1717
{

src/Microsoft.SqlTools.ManagedBatchParser/ReliableConnection/DbCommandWrapper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
using System;
77
using System.Data;
88
using Microsoft.Data.SqlClient;
9-
using Microsoft.SqlTools.Utility;
9+
using Microsoft.SqlTools.BatchParser.Utility;
1010

1111
namespace Microsoft.SqlTools.ServiceLayer.Connection.ReliableConnection
1212
{

src/Microsoft.SqlTools.ManagedBatchParser/ReliableConnection/DbConnectionWrapper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
using System;
77
using System.Data;
88
using Microsoft.Data.SqlClient;
9-
using Microsoft.SqlTools.Utility;
9+
using Microsoft.SqlTools.BatchParser.Utility;
1010

1111
namespace Microsoft.SqlTools.ServiceLayer.Connection.ReliableConnection
1212
{

src/Microsoft.SqlTools.ManagedBatchParser/ReliableConnection/ReliableConnectionHelper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
using System.Diagnostics.CodeAnalysis;
1212
using System.Globalization;
1313
using System.Security;
14-
using Microsoft.SqlTools.Utility;
14+
using Microsoft.SqlTools.BatchParser.Utility;
1515
using Microsoft.SqlServer.Management.Common;
1616
using Microsoft.SqlServer.Management.Smo;
1717
using System.Linq;

src/Microsoft.SqlTools.ManagedBatchParser/ReliableConnection/ReliableSqlConnection.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
using System.Threading;
3535
using System.Threading.Tasks;
3636
using Microsoft.SqlServer.Management.Common;
37-
using Microsoft.SqlTools.Utility;
37+
using Microsoft.SqlTools.BatchParser.Utility;
3838

3939
namespace Microsoft.SqlTools.ServiceLayer.Connection.ReliableConnection
4040
{

src/Microsoft.SqlTools.ManagedBatchParser/ReliableConnection/RetryPolicy.DataTransferDetectionErrorStrategy.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
using Microsoft.Data.SqlClient;
77
using System.Diagnostics;
8-
using Microsoft.SqlTools.Utility;
8+
using Microsoft.SqlTools.BatchParser.Utility;
99

1010
namespace Microsoft.SqlTools.ServiceLayer.Connection.ReliableConnection
1111
{

src/Microsoft.SqlTools.ManagedBatchParser/ReliableConnection/RetryPolicy.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
using System.Diagnostics.Contracts;
3030
using System.Globalization;
3131
using System.Threading;
32-
using Microsoft.SqlTools.Utility;
32+
using Microsoft.SqlTools.BatchParser.Utility;
3333

3434
namespace Microsoft.SqlTools.ServiceLayer.Connection.ReliableConnection
3535
{

src/Microsoft.SqlTools.ManagedBatchParser/ReliableConnection/RetryPolicyFactory.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
using System;
77
using System.Diagnostics;
88
using System.Globalization;
9-
using Microsoft.SqlTools.Utility;
9+
using Microsoft.SqlTools.BatchParser.Utility;
1010

1111
namespace Microsoft.SqlTools.ServiceLayer.Connection.ReliableConnection
1212
{

src/Microsoft.SqlTools.ManagedBatchParser/ReliableConnection/RetryPolicyUtils.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
using Microsoft.Data.SqlClient;
99
using System.Diagnostics;
1010
using System.Runtime.InteropServices;
11-
using Microsoft.SqlTools.Utility;
11+
using Microsoft.SqlTools.BatchParser.Utility;
1212

1313
namespace Microsoft.SqlTools.ServiceLayer.Connection.ReliableConnection
1414
{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
//
2+
// Copyright (c) Microsoft. All rights reserved.
3+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
4+
//
5+
6+
using System.Diagnostics;
7+
8+
namespace Microsoft.SqlTools.BatchParser.Utility
9+
{
10+
/// <summary>
11+
/// Provides a simple logging interface built on top of .Net tracing frameworks
12+
/// </summary>
13+
/// <remarks>This functionality is a simplified version of other similar implementations such as from Microsoft.SqlTools.Hosting, using
14+
/// just pure Trace calls instead of setting up a TraceSource and/or listeners to keep this as simple as possible.</remarks>
15+
public static class Logger
16+
{
17+
/// <summary>
18+
/// Writes a message to the log file with the Verbose event level
19+
/// </summary>
20+
/// <param name="logMessage">The message text to be written.</param>
21+
public static void Verbose(string logMessage) => Write(TraceEventType.Verbose, logMessage);
22+
23+
/// <summary>
24+
/// Writes a message to the log file with the Information event level
25+
/// </summary>
26+
/// <param name="logMessage">The message text to be written.</param>
27+
public static void Information(string logMessage) => Write(TraceEventType.Information, logMessage);
28+
29+
/// <summary>
30+
/// Writes a message to the log file with the Warning event level
31+
/// </summary>
32+
/// <param name="logMessage">The message text to be written.</param>
33+
public static void Warning(string logMessage) => Write(TraceEventType.Warning, logMessage);
34+
35+
/// <summary>
36+
/// Writes a message to the log file with the Error event level
37+
/// </summary>
38+
/// <param name="logMessage">The message text to be written.</param>
39+
public static void Error(string logMessage) => Write(TraceEventType.Error, logMessage);
40+
41+
/// <summary>
42+
/// Writes a message to the log file with the Critical event level
43+
/// </summary>
44+
/// <param name="logMessage">The message text to be written.</param>
45+
public static void Critical(string logMessage) => Write(TraceEventType.Critical, logMessage);
46+
47+
/// <summary>
48+
/// Writes a message to the log file.
49+
/// </summary>
50+
/// <param name="eventType">The level at which the message will be written.</param>
51+
/// <param name="logEvent">The event id enumeration for the log event.</param>
52+
/// <param name="logMessage">The message text to be written.</param>
53+
public static void Write(
54+
TraceEventType eventType,
55+
string logMessage)
56+
{
57+
// Note that despite the more fine grained TraceEventType we expose in this class we currently are using just the default
58+
// Trace methods available which only allow Error/Warning/Information. An improvement would be to fully implement a TraceSource/EventSource
59+
// and use that instead, then ensure that users of this library are set up to consume events from that source.
60+
switch (eventType)
61+
{
62+
case TraceEventType.Critical:
63+
case TraceEventType.Error:
64+
if (eventType == TraceEventType.Critical)
65+
{
66+
logMessage = $@"event={eventType}: {logMessage}";
67+
}
68+
69+
Trace.TraceError(logMessage);
70+
break;
71+
case TraceEventType.Warning:
72+
Trace.TraceWarning(logMessage);
73+
break;
74+
case TraceEventType.Information:
75+
case TraceEventType.Resume:
76+
case TraceEventType.Start:
77+
case TraceEventType.Stop:
78+
case TraceEventType.Suspend:
79+
case TraceEventType.Transfer:
80+
case TraceEventType.Verbose:
81+
if (eventType != TraceEventType.Information)
82+
{
83+
logMessage = $@"event={eventType}: {logMessage}";
84+
}
85+
86+
Trace.TraceInformation(logMessage);
87+
break;
88+
}
89+
}
90+
}
91+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
//
2+
// Copyright (c) Microsoft. All rights reserved.
3+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
4+
//
5+
6+
using System;
7+
using Microsoft.SqlTools.ManagedBatchParser;
8+
9+
namespace Microsoft.SqlTools.BatchParser.Utility
10+
{
11+
/// <summary>
12+
/// Provides common validation methods to simplify method
13+
/// parameter checks.
14+
/// </summary>
15+
public static class Validate
16+
{
17+
/// <summary>
18+
/// Throws ArgumentNullException if value is null.
19+
/// </summary>
20+
/// <param name="parameterName">The name of the parameter being validated.</param>
21+
/// <param name="valueToCheck">The value of the parameter being validated.</param>
22+
public static void IsNotNull(string parameterName, object valueToCheck)
23+
{
24+
if (valueToCheck == null)
25+
{
26+
throw new ArgumentNullException(parameterName);
27+
}
28+
}
29+
30+
/// <summary>
31+
/// Throws ArgumentException if the value is null or an empty string.
32+
/// </summary>
33+
/// <param name="parameterName">The name of the parameter being validated.</param>
34+
/// <param name="valueToCheck">The value of the parameter being validated.</param>
35+
public static void IsNotNullOrEmptyString(string parameterName, string valueToCheck)
36+
{
37+
if (string.IsNullOrEmpty(valueToCheck))
38+
{
39+
throw new ArgumentException(
40+
SR.NullEmptyOrWhitespaceString,
41+
parameterName);
42+
}
43+
}
44+
45+
/// <summary>
46+
/// Throws ArgumentException if the value is null, an empty string,
47+
/// or a string containing only whitespace.
48+
/// </summary>
49+
/// <param name="parameterName">The name of the parameter being validated.</param>
50+
/// <param name="valueToCheck">The value of the parameter being validated.</param>
51+
public static void IsNotNullOrWhitespaceString(string parameterName, string valueToCheck)
52+
{
53+
if (string.IsNullOrWhiteSpace(valueToCheck))
54+
{
55+
throw new ArgumentException(
56+
SR.NullEmptyOrWhitespaceString,
57+
parameterName);
58+
}
59+
}
60+
}
61+
}

0 commit comments

Comments
 (0)