Skip to content

Commit 17b8bf5

Browse files
authored
Obsolete StringHelper.Replace
All occurrences of StringHelper.Replace were replaced with matching String.Replace or Regex.Replace methods
1 parent 92d9b07 commit 17b8bf5

File tree

14 files changed

+48
-40
lines changed

14 files changed

+48
-40
lines changed

src/NHibernate/Criterion/SQLProjection.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,12 @@ public SqlString ToSqlString(ICriteria criteria, int loc, ICriteriaQuery criteri
4040
//SqlString result = new SqlString(criteriaQuery.GetSQLAlias(criteria));
4141
//result.Replace(sql, "{alias}");
4242
//return result;
43-
return new SqlString(StringHelper.Replace(sql, "{alias}", criteriaQuery.GetSQLAlias(criteria)));
43+
return new SqlString(sql?.Replace("{alias}", criteriaQuery.GetSQLAlias(criteria)));
4444
}
4545

4646
public SqlString ToGroupSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery)
4747
{
48-
return new SqlString(StringHelper.Replace(groupBy, "{alias}", criteriaQuery.GetSQLAlias(criteria)));
48+
return new SqlString(groupBy?.Replace("{alias}", criteriaQuery.GetSQLAlias(criteria)));
4949
}
5050

5151
public override string ToString()

src/NHibernate/Driver/FirebirdClientDriver.cs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,19 @@ public override DbCommand GenerateCommand(CommandType type, SqlString sqlString,
9494
var candidates = GetCastCandidates(expWithParams);
9595

9696
var index = 0;
97+
9798
foreach (DbParameter p in command.Parameters)
9899
{
99100
if (candidates.Contains(p.ParameterName))
100-
TypeCastParam(p, command, parameterTypes[index]);
101+
{
102+
var castType = GetFbTypeForParam(parameterTypes[index]);
103+
104+
command.CommandText = Regex.Replace(
105+
command.CommandText,
106+
Regex.Escape(p.ParameterName) + @"\b",
107+
$"cast({p.ParameterName} as {castType})");
108+
}
109+
101110
index++;
102111
}
103112
}
@@ -120,14 +129,6 @@ private static HashSet<string> GetCastCandidates(string statement)
120129
return new HashSet<string>(candidates);
121130
}
122131

123-
private void TypeCastParam(DbParameter param, DbCommand command, SqlType sqlType)
124-
{
125-
var castType = GetFbTypeForParam(sqlType);
126-
command.CommandText = command.CommandText.ReplaceWholeWord(
127-
param.ParameterName,
128-
$"cast({param.ParameterName} as {castType})");
129-
}
130-
131132
private string GetFbTypeForParam(SqlType sqlType)
132133
{
133134
if (sqlType.LengthDefined)

src/NHibernate/Hql/Ast/ANTLR/Util/SyntheticAndFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ public virtual void AddDiscriminatorWhereFragment(IRestrictableStatement stateme
159159

160160
// Need to parse off the column qualifiers; this is assuming (which is true as of now)
161161
// that this is only used from update and delete HQL statement parsing
162-
whereFragment = StringHelper.Replace(whereFragment, persister.GenerateFilterConditionAlias(alias) + ".", "");
162+
whereFragment = whereFragment.Replace(persister.GenerateFilterConditionAlias(alias) + ".", "");
163163

164164
// Note: this simply constructs a "raw" SQL_TOKEN representing the
165165
// where fragment and injects this into the tree. This "works";

src/NHibernate/Id/UUIDHexGenerator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,9 @@ public virtual object Generate(ISessionImplementor session, object obj)
6969
{
7070
string guidString = GenerateNewGuid();
7171

72-
if (format != FormatWithDigitsOnly && sep != null)
72+
if (format != FormatWithDigitsOnly && sep != null && guidString != null)
7373
{
74-
return StringHelper.Replace(guidString, "-", sep);
74+
return guidString.Replace("-", sep);
7575
}
7676

7777
return guidString;

src/NHibernate/Impl/AbstractQueryImpl.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using NHibernate.Type;
1111
using NHibernate.Util;
1212
using System.Linq;
13+
using System.Text.RegularExpressions;
1314
using System.Threading;
1415
using System.Threading.Tasks;
1516

@@ -265,7 +266,10 @@ private string ExpandParameterList(string query, string name, TypedValue typedLi
265266

266267
var paramPrefix = isJpaPositionalParam ? StringHelper.SqlParameter : ParserHelper.HqlVariablePrefix;
267268

268-
return StringHelper.Replace(query, paramPrefix + name, string.Join(StringHelper.CommaSpace, aliases), true);
269+
return Regex.Replace(
270+
query,
271+
Regex.Escape(paramPrefix + name) + @"\b",
272+
string.Join(StringHelper.CommaSpace, aliases));
269273
}
270274

271275
#region Parameters

src/NHibernate/Mapping/SimpleAuxiliaryDatabaseObject.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,7 @@ public override string SqlDropString(Dialect.Dialect dialect, string defaultCata
4545

4646
private static string InjectCatalogAndSchema(string ddlString, string defaultCatalog, string defaultSchema)
4747
{
48-
string rtn = StringHelper.Replace(ddlString, "${catalog}", defaultCatalog);
49-
rtn = StringHelper.Replace(rtn, "${schema}", defaultSchema);
50-
return rtn;
48+
return ddlString?.Replace("${catalog}", defaultCatalog).Replace("${schema}", defaultSchema);
5149
}
5250
}
5351
}

src/NHibernate/Mapping/UniqueKey.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,9 @@ public override string SqlConstraintString(Dialect.Dialect dialect, string const
6262
buf.Append(column.GetQuotedName(dialect));
6363
}
6464

65-
return
66-
!nullable || dialect.SupportsNullInUnique
67-
? StringHelper.Replace(buf.Append(StringHelper.ClosedParen).ToString(), "primary key", "unique")
68-
: null;
65+
return !nullable || dialect.SupportsNullInUnique
66+
? buf.Append(StringHelper.ClosedParen).Replace("primary key", "unique").ToString()
67+
: null;
6968
}
7069

7170
public override string SqlCreateString(Dialect.Dialect dialect, IMapping p, string defaultCatalog, string defaultSchema)

src/NHibernate/Persister/Collection/AbstractCollectionPersister.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -638,19 +638,19 @@ public bool HasCache
638638

639639
public string GetSQLWhereString(string alias)
640640
{
641-
return StringHelper.Replace(sqlWhereStringTemplate, Template.Placeholder, alias);
641+
return sqlWhereStringTemplate?.Replace(Template.Placeholder, alias);
642642
}
643643

644644
public string GetSQLOrderByString(string alias)
645645
{
646-
return HasOrdering ? StringHelper.Replace(sqlOrderByStringTemplate, Template.Placeholder, alias) : string.Empty;
646+
return HasOrdering ? sqlOrderByStringTemplate?.Replace(Template.Placeholder, alias) : string.Empty;
647647
}
648648

649649
public string GetManyToManyOrderByString(string alias)
650650
{
651651
if (IsManyToMany && manyToManyOrderByString != null)
652652
{
653-
return StringHelper.Replace(manyToManyOrderByTemplate, Template.Placeholder, alias);
653+
return manyToManyOrderByTemplate?.Replace(Template.Placeholder, alias);
654654
}
655655
else
656656
{
@@ -1020,7 +1020,7 @@ private static string[] Qualify(string alias, string[] columnNames, string[] for
10201020
{
10211021
if (columnNames[i] == null)
10221022
{
1023-
result[i] = StringHelper.Replace(formulaTemplates[i], Template.Placeholder, alias);
1023+
result[i] = formulaTemplates[i]?.Replace(Template.Placeholder, alias);
10241024
}
10251025
else
10261026
{
@@ -1375,7 +1375,7 @@ public string GetManyToManyFilterFragment(string alias, IDictionary<string, IFil
13751375

13761376
if (manyToManyWhereString != null)
13771377
{
1378-
buffer.Append(" and ").Append(StringHelper.Replace(manyToManyWhereTemplate, Template.Placeholder, alias));
1378+
buffer.Append(" and ").Append(manyToManyWhereTemplate?.Replace(Template.Placeholder, alias));
13791379
}
13801380

13811381
return buffer.ToString();

src/NHibernate/Persister/Entity/AbstractEntityPersister.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1934,7 +1934,7 @@ public string[] ToColumns(string name, int i)
19341934
{
19351935
if (cols[j] == null)
19361936
{
1937-
result[j] = StringHelper.Replace(templates[j], Template.Placeholder, alias);
1937+
result[j] = templates[j]?.Replace(Template.Placeholder, alias);
19381938
}
19391939
else
19401940
{
@@ -2197,7 +2197,7 @@ private EntityLoader CreateUniqueKeyLoader(IType uniqueKeyType, string[] columns
21972197

21982198
protected string GetSQLWhereString(string alias)
21992199
{
2200-
return StringHelper.Replace(sqlWhereStringTemplate, Template.Placeholder, alias);
2200+
return sqlWhereStringTemplate?.Replace(Template.Placeholder, alias);
22012201
}
22022202

22032203
protected bool HasWhere

src/NHibernate/Persister/Entity/AbstractPropertyMapping.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public virtual string[] ToColumns(string alias, string propertyName)
5555
for (int i = 0; i < columns.Length; i++)
5656
{
5757
if (columns[i] == null)
58-
result[i] = StringHelper.Replace(templates[i], Template.Placeholder, alias);
58+
result[i] = templates[i]?.Replace(Template.Placeholder, alias);
5959
else
6060
result[i] = StringHelper.Qualify(alias, columns[i]);
6161
}
@@ -81,7 +81,7 @@ public virtual string[] ToColumns(string propertyName)
8181
for (int i = 0; i < columns.Length; i++)
8282
{
8383
if (columns[i] == null)
84-
result[i] = StringHelper.Replace(templates[i], Template.Placeholder, string.Empty);
84+
result[i] = templates[i]?.Replace(Template.Placeholder, string.Empty);
8585
else
8686
result[i] = columns[i];
8787
}

src/NHibernate/SqlCommand/InFragment.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@ public InFragment SetColumn(string colName)
3636
public InFragment SetColumn(string alias, string colName)
3737
{
3838
columnName = alias + StringHelper.Dot + colName;
39-
return SetColumn(columnName);
39+
return this;
4040
}
4141

4242
public InFragment SetFormula(string alias, string formulaTemplate)
4343
{
44-
columnName = StringHelper.Replace(formulaTemplate, Template.Placeholder, alias);
45-
return SetColumn(columnName);
44+
columnName = formulaTemplate?.Replace(Template.Placeholder, alias);
45+
return this;
4646
}
4747

4848
public SqlString ToFragmentString()

src/NHibernate/SqlCommand/SelectFragment.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ public SelectFragment AddFormula(string tableAlias, string formula, string formu
105105
{
106106
AddColumn(
107107
null,
108-
StringHelper.Replace(formula, Template.Placeholder, tableAlias),
108+
formula?.Replace(Template.Placeholder, tableAlias),
109109
formulaAlias);
110110

111111
return this;

src/NHibernate/Util/FilterHelper.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,12 @@ public FilterHelper(IDictionary<string, string> filters, Dialect.Dialect dialect
2020
filterNames = new string[filterCount];
2121
filterConditions = new string[filterCount];
2222
filterCount = 0;
23-
foreach (KeyValuePair<string, string> entry in filters)
23+
foreach (var entry in filters)
2424
{
2525
filterNames[filterCount] = entry.Key;
2626
filterConditions[filterCount] =
27-
Template.RenderWhereStringTemplate(entry.Value, FilterImpl.MARKER, dialect, sqlFunctionRegistry);
28-
filterConditions[filterCount] =
29-
StringHelper.Replace(filterConditions[filterCount], ":", ":" + filterNames[filterCount] + ".");
27+
Template.RenderWhereStringTemplate(entry.Value, FilterImpl.MARKER, dialect, sqlFunctionRegistry)?
28+
.Replace(":", ":" + entry.Key + ".");
3029
filterCount++;
3130
}
3231
}

src/NHibernate/Util/StringHelper.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,16 @@ public static string Repeat(string str, int times)
8383
return buf.ToString();
8484
}
8585

86+
//Since v5.3
87+
[Obsolete("Please use string.Replace or Regex.Replace instead.")]
8688
public static string Replace(string template, string placeholder, string replacement)
8789
{
88-
return Replace(template, placeholder, replacement, false);
90+
// sometimes a null value will get passed in here -> SqlWhereStrings are a good example
91+
return template?.Replace(placeholder, replacement);
8992
}
9093

94+
//Since v5.3
95+
[Obsolete("Please use string.Replace or Regex.Replace instead.")]
9196
public static string Replace(string template, string placeholder, string replacement, bool wholeWords)
9297
{
9398
Predicate<string> isWholeWord = c => WhiteSpace.Contains(c) || ClosedParen.Equals(c) || Comma.Equals(c);
@@ -129,6 +134,8 @@ private static string ReplaceByPredicate(string template, string placeholder, st
129134
}
130135
}
131136

137+
//Since v5.3
138+
[Obsolete("Please use string.Replace or Regex.Replace instead.")]
132139
public static string ReplaceWholeWord(this string template, string placeholder, string replacement)
133140
{
134141
Predicate<string> isWholeWord = s => !Char.IsLetterOrDigit(s[0]);

0 commit comments

Comments
 (0)