Skip to content

Commit 95253ac

Browse files
authored
Merge | DbConnectionString (#3416)
* Move DbConnectionString to the common project # Conflicts: # src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj * Remove DbConnectionString.KEY * Rename DbConnectionString to match naming conventions
1 parent 78dec95 commit 95253ac

File tree

3 files changed

+45
-46
lines changed

3 files changed

+45
-46
lines changed

src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,9 @@
258258
<Compile Include="$(CommonSourceRoot)Microsoft\Data\Common\ConnectionString\DbConnectionStringSynonyms.cs">
259259
<Link>Microsoft\Data\Common\ConnectionString\DbConnectionStringSynonyms.cs</Link>
260260
</Compile>
261+
<Compile Include="$(CommonSourceRoot)Microsoft\Data\Common\ConnectionString\DbConnectionString.netfx.cs">
262+
<Link>Microsoft\Data\Common\ConnectionString\DbConnectionString.netfx.cs</Link>
263+
</Compile>
261264
<Compile Include="$(CommonSourceRoot)Microsoft\Data\Common\ConnectionString\DbConnectionStringUtilities.cs">
262265
<Link>Microsoft\Data\Common\ConnectionString\DbConnectionStringUtilities.cs</Link>
263266
</Compile>
@@ -948,9 +951,7 @@
948951
<Compile Include="$(CommonSourceRoot)System\IO\StreamExtensions.netfx.cs">
949952
<Link>System\IO\StreamExtensions.netfx.cs</Link>
950953
</Compile>
951-
</ItemGroup>
952-
<ItemGroup>
953-
<Compile Include="Microsoft\Data\Common\DBConnectionString.cs" />
954+
954955
<Compile Include="Microsoft\Data\SqlClient\SqlBulkCopy.cs" />
955956
<Compile Include="Microsoft\Data\SqlClient\SqlClientWrapperSmiStream.cs" />
956957
<Compile Include="Microsoft\Data\SqlClient\SqlClientWrapperSmiStreamChars.cs" />

src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/Common/DBConnectionString.cs renamed to src/Microsoft.Data.SqlClient/src/Microsoft/Data/Common/ConnectionString/DbConnectionString.netfx.cs

Lines changed: 27 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33
// See the LICENSE file in the project root for more information.
44

5+
#if NETFRAMEWORK
6+
57
using System;
68
using System.Collections.Generic;
79
using System.Data;
@@ -12,21 +14,15 @@
1214

1315
namespace Microsoft.Data.Common
1416
{
17+
// @TODO: Theoretically this class could be replaced with SqlConnectionString.
18+
1519
[Serializable] // MDAC 83147
16-
internal sealed class DBConnectionString
20+
internal sealed class DbConnectionString
1721
{
1822
// instances of this class are intended to be immutable, i.e readonly
1923
// used by permission classes so it is much easier to verify correctness
2024
// when not worried about the class being modified during execution
2125

22-
// @TODO: Remove in favor of DbConnectionStringKeywords
23-
private static class KEY
24-
{
25-
internal const string Password = DbConnectionStringKeywords.Password;
26-
internal const string PersistSecurityInfo = DbConnectionStringKeywords.PersistSecurityInfo;
27-
internal const string Pwd = DbConnectionStringSynonyms.Pwd;
28-
};
29-
3026
// this class is serializable with Everett, so ugly field names can't be changed
3127
readonly private string _encryptedUsersConnectionString;
3228

@@ -51,21 +47,21 @@ private static class KEY
5147
readonly private string _encryptedActualConnectionString;
5248
#pragma warning restore 169
5349

54-
internal DBConnectionString(string value, string restrictions, KeyRestrictionBehavior behavior, Dictionary<string, string> synonyms, bool useOdbcRules)
50+
internal DbConnectionString(string value, string restrictions, KeyRestrictionBehavior behavior, Dictionary<string, string> synonyms, bool useOdbcRules)
5551
: this(new DbConnectionOptions(value, synonyms), restrictions, behavior, synonyms, false)
5652
{
5753
// useOdbcRules is only used to parse the connection string, not to parse restrictions because values don't apply there
5854
// the hashtable doesn't need clone since it isn't shared with anything else
5955
}
6056

61-
internal DBConnectionString(DbConnectionOptions connectionOptions)
57+
internal DbConnectionString(DbConnectionOptions connectionOptions)
6258
: this(connectionOptions, (string)null, KeyRestrictionBehavior.AllowOnly, null, true)
6359
{
64-
// used by DBDataPermission to convert from DbConnectionOptions to DBConnectionString
60+
// used by DBDataPermission to convert from DbConnectionOptions to DbConnectionString
6561
// since backward compatibility requires Everett level classes
6662
}
6763

68-
private DBConnectionString(DbConnectionOptions connectionOptions, string restrictions, KeyRestrictionBehavior behavior, Dictionary<string, string> synonyms, bool mustCloneDictionary)
64+
private DbConnectionString(DbConnectionOptions connectionOptions, string restrictions, KeyRestrictionBehavior behavior, Dictionary<string, string> synonyms, bool mustCloneDictionary)
6965
{ // used by DBDataPermission
7066
Debug.Assert(connectionOptions != null, "null connectionOptions");
7167
switch (behavior)
@@ -101,13 +97,13 @@ private DBConnectionString(DbConnectionOptions connectionOptions, string restric
10197
// serialize out with '*' so already knows what we do. Better this way
10298
// than to treat password specially later on which causes problems.
10399
const string star = "*";
104-
if (_parsetable.ContainsKey(KEY.Password))
100+
if (_parsetable.ContainsKey(DbConnectionStringKeywords.Password))
105101
{
106-
_parsetable[KEY.Password] = star;
102+
_parsetable[DbConnectionStringKeywords.Password] = star;
107103
}
108-
if (_parsetable.ContainsKey(KEY.Pwd))
104+
if (_parsetable.ContainsKey(DbConnectionStringSynonyms.Pwd))
109105
{
110-
_parsetable[KEY.Pwd] = star;
106+
_parsetable[DbConnectionStringSynonyms.Pwd] = star;
111107
}
112108

113109
// replace user's password/pwd value with "*" in the linked list and build a new string
@@ -121,7 +117,7 @@ private DBConnectionString(DbConnectionOptions connectionOptions, string restric
121117
}
122118
}
123119

124-
private DBConnectionString(DBConnectionString connectionString, string[] restrictionValues, KeyRestrictionBehavior behavior)
120+
private DbConnectionString(DbConnectionString connectionString, string[] restrictionValues, KeyRestrictionBehavior behavior)
125121
{
126122
// used by intersect for two equal connection strings with different restrictions
127123
_encryptedUsersConnectionString = connectionString._encryptedUsersConnectionString;
@@ -198,7 +194,7 @@ internal bool ContainsKey(string keyword)
198194
return _parsetable.ContainsKey(keyword);
199195
}
200196

201-
internal DBConnectionString Intersect(DBConnectionString entry)
197+
internal DbConnectionString Intersect(DbConnectionString entry)
202198
{
203199
KeyRestrictionBehavior behavior = _behavior;
204200
string[] restrictionValues = null;
@@ -287,18 +283,18 @@ internal DBConnectionString Intersect(DBConnectionString entry)
287283
}
288284

289285
// verify _hasPassword & _parsetable are in sync between Everett/Whidbey
290-
Debug.Assert(!_hasPassword || ContainsKey(KEY.Password) || ContainsKey(KEY.Pwd), "OnDeserialized password mismatch this");
291-
Debug.Assert(entry == null || !entry._hasPassword || entry.ContainsKey(KEY.Password) || entry.ContainsKey(KEY.Pwd), "OnDeserialized password mismatch entry");
286+
Debug.Assert(!_hasPassword || ContainsKey(DbConnectionStringKeywords.Password) || ContainsKey(DbConnectionStringSynonyms.Pwd), "OnDeserialized password mismatch this");
287+
Debug.Assert(entry == null || !entry._hasPassword || entry.ContainsKey(DbConnectionStringKeywords.Password) || entry.ContainsKey(DbConnectionStringSynonyms.Pwd), "OnDeserialized password mismatch entry");
292288

293-
DBConnectionString value = new DBConnectionString(this, restrictionValues, behavior);
289+
DbConnectionString value = new DbConnectionString(this, restrictionValues, behavior);
294290
ValidateCombinedSet(this, value);
295291
ValidateCombinedSet(entry, value);
296292

297293
return value;
298294
}
299295

300296
[Conditional("DEBUG")]
301-
private void ValidateCombinedSet(DBConnectionString componentSet, DBConnectionString combinedSet)
297+
private void ValidateCombinedSet(DbConnectionString componentSet, DbConnectionString combinedSet)
302298
{
303299
Debug.Assert(combinedSet != null, "The combined connection string should not be null");
304300
if ((componentSet != null) && (combinedSet._restrictionValues != null) && (componentSet._restrictionValues != null))
@@ -371,10 +367,10 @@ private bool IsRestrictedKeyword(string key)
371367
return (_restrictionValues == null || (0 > Array.BinarySearch(_restrictionValues, key, StringComparer.Ordinal)));
372368
}
373369

374-
internal bool IsSupersetOf(DBConnectionString entry)
370+
internal bool IsSupersetOf(DbConnectionString entry)
375371
{
376-
Debug.Assert(!_hasPassword || ContainsKey(KEY.Password) || ContainsKey(KEY.Pwd), "OnDeserialized password mismatch this");
377-
Debug.Assert(!entry._hasPassword || entry.ContainsKey(KEY.Password) || entry.ContainsKey(KEY.Pwd), "OnDeserialized password mismatch entry");
372+
Debug.Assert(!_hasPassword || ContainsKey(DbConnectionStringKeywords.Password) || ContainsKey(DbConnectionStringSynonyms.Pwd), "OnDeserialized password mismatch this");
373+
Debug.Assert(!entry._hasPassword || entry.ContainsKey(DbConnectionStringKeywords.Password) || entry.ContainsKey(DbConnectionStringSynonyms.Pwd), "OnDeserialized password mismatch entry");
378374

379375
switch (_behavior)
380376
{
@@ -481,10 +477,10 @@ static private string[] NoDuplicateUnion(string[] a, string[] b)
481477
return restrictionValues;
482478
}
483479

484-
private static string[] ParseRestrictions(string restrictions, Dictionary<string, string> synonyms)
480+
private static string[] ParseRestrictions(string restrictions, IReadOnlyDictionary<string, string> synonyms)
485481
{
486482
#if DEBUG
487-
SqlClientEventSource.Log.TryAdvancedTraceEvent("<comm.DBConnectionString|INFO|ADV> Restrictions='{0}'", restrictions);
483+
SqlClientEventSource.Log.TryAdvancedTraceEvent("<comm.DbConnectionString|INFO|ADV> Restrictions='{0}'", restrictions);
488484
#endif
489485
List<string> restrictionValues = new List<string>();
490486
StringBuilder buffer = new StringBuilder(restrictions.Length);
@@ -500,7 +496,7 @@ private static string[] ParseRestrictions(string restrictions, Dictionary<string
500496
if (!string.IsNullOrEmpty(keyname))
501497
{
502498
#if DEBUG
503-
SqlClientEventSource.Log.TryAdvancedTraceEvent("<comm.DBConnectionString|INFO|ADV> KeyName='{0}'", keyname);
499+
SqlClientEventSource.Log.TryAdvancedTraceEvent("<comm.DbConnectionString|INFO|ADV> KeyName='{0}'", keyname);
504500
#endif
505501
string realkeyname = synonyms != null ? (string)synonyms[keyname] : keyname; // MDAC 85144
506502
if (string.IsNullOrEmpty(realkeyname))
@@ -568,3 +564,5 @@ private static void Verify(string[] restrictionValues)
568564
}
569565
}
570566
}
567+
568+
#endif

src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlClientPermission.netfx.cs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ internal SqlClientPermission(SqlConnectionString constr) : base(PermissionState.
6262
if (constr != null)
6363
{
6464
AllowBlankPassword = constr.HasBlankPassword; // MDAC 84563
65-
AddPermissionEntry(new DBConnectionString(constr));
65+
AddPermissionEntry(new DbConnectionString(constr));
6666
}
6767

6868
if (constr == null || constr.IsEmpty)
@@ -106,7 +106,7 @@ private bool _IsUnrestricted
106106
/// <include file='../../../../../../doc/snippets/Microsoft.Data.SqlClient/SqlClientPermission.xml' path='docs/members[@name="SqlClientPermission"]/Add[@name="connectionStringAndrestrictionsStringAndBehavior"]/*' />
107107
public override void Add(string connectionString, string restrictions, KeyRestrictionBehavior behavior)
108108
{
109-
DBConnectionString constr = new DBConnectionString(connectionString, restrictions, behavior, SqlConnectionString.GetParseSynonyms(), false);
109+
DbConnectionString constr = new DbConnectionString(connectionString, restrictions, behavior, SqlConnectionString.GetParseSynonyms(), false);
110110
AddPermissionEntry(constr);
111111
}
112112

@@ -254,7 +254,7 @@ public override bool IsSubsetOf(IPermission target)
254254
subset = true;
255255
if (_keyvalues != null)
256256
{
257-
foreach (DBConnectionString kventry in _keyvalues)
257+
foreach (DbConnectionString kventry in _keyvalues)
258258
{
259259
if (!superset._keyvaluetree.CheckValueForKeyPermit(kventry))
260260
{
@@ -293,7 +293,7 @@ public override SecurityElement ToXml()
293293

294294
if (_keyvalues != null)
295295
{
296-
foreach (DBConnectionString value in _keyvalues)
296+
foreach (DbConnectionString value in _keyvalues)
297297
{
298298
SecurityElement valueElement = new SecurityElement(XmlStr._add);
299299
string tmp;
@@ -342,7 +342,7 @@ public override IPermission Union(IPermission target)
342342

343343
if (_keyvalues != null)
344344
{
345-
foreach (DBConnectionString entry in _keyvalues)
345+
foreach (DbConnectionString entry in _keyvalues)
346346
{
347347
newPermission.AddPermissionEntry(entry);
348348
}
@@ -352,7 +352,7 @@ public override IPermission Union(IPermission target)
352352
return newPermission.IsEmpty() ? null : newPermission;
353353
}
354354

355-
internal void AddPermissionEntry(DBConnectionString entry)
355+
internal void AddPermissionEntry(DbConnectionString entry)
356356
{
357357
if (_keyvaluetree == null)
358358
{
@@ -407,7 +407,7 @@ private sealed class NameValuePermission : IComparable
407407
private readonly string _value;
408408

409409
// value node with (_restrictions != null) are allowed to match connection strings
410-
private DBConnectionString _entry;
410+
private DbConnectionString _entry;
411411

412412
private NameValuePermission[] _tree; // with branches
413413

@@ -442,7 +442,7 @@ private NameValuePermission(string keyword)
442442
_value = keyword;
443443
}
444444

445-
private NameValuePermission(string value, DBConnectionString entry)
445+
private NameValuePermission(string value, DbConnectionString entry)
446446
{
447447
_value = value;
448448
_entry = entry;
@@ -451,9 +451,9 @@ private NameValuePermission(string value, DBConnectionString entry)
451451
int IComparable.CompareTo(object other) =>
452452
string.CompareOrdinal(_value, ((NameValuePermission)other)._value);
453453

454-
internal static void AddEntry(NameValuePermission kvtree, ArrayList entries, DBConnectionString entry)
454+
internal static void AddEntry(NameValuePermission kvtree, ArrayList entries, DbConnectionString entry)
455455
{
456-
Debug.Assert(entry != null, "null DBConnectionString");
456+
Debug.Assert(entry != null, "null DbConnectionString");
457457

458458
if (entry.KeyChain != null)
459459
{
@@ -471,7 +471,7 @@ internal static void AddEntry(NameValuePermission kvtree, ArrayList entries, DBC
471471
kv = kvtree.CheckKeyForValue(keychain.Value);
472472
if (kv == null)
473473
{
474-
DBConnectionString insertValue = keychain.Next != null ? null : entry;
474+
DbConnectionString insertValue = keychain.Next != null ? null : entry;
475475
kv = new NameValuePermission(keychain.Value, insertValue);
476476
kvtree.Add(kv); // add directly into live tree
477477
if (insertValue != null)
@@ -500,7 +500,7 @@ internal static void AddEntry(NameValuePermission kvtree, ArrayList entries, DBC
500500
else
501501
{
502502
// global restrictions
503-
DBConnectionString kentry = kvtree._entry;
503+
DbConnectionString kentry = kvtree._entry;
504504
if (kentry != null)
505505
{
506506
Debug.Assert(entries.Contains(kentry), "entries doesn't contain entry");
@@ -516,7 +516,7 @@ internal static void AddEntry(NameValuePermission kvtree, ArrayList entries, DBC
516516
}
517517
}
518518

519-
internal bool CheckValueForKeyPermit(DBConnectionString parsetable)
519+
internal bool CheckValueForKeyPermit(DbConnectionString parsetable)
520520
{
521521
if (parsetable == null)
522522
{
@@ -571,7 +571,7 @@ internal bool CheckValueForKeyPermit(DBConnectionString parsetable)
571571
// partial chain match, either leaf-node by shorter chain or fail mid-chain if ( _restrictions == null)
572572
}
573573

574-
DBConnectionString entry = _entry;
574+
DbConnectionString entry = _entry;
575575
if (entry != null)
576576
{
577577
// also checking !hasMatch is tempting, but wrong

0 commit comments

Comments
 (0)