Skip to content

Commit 6a26049

Browse files
committed
Strongly typed management of enabledFilters and filtersDefinition (using generic Dictionary).
BREAKING CHANGE: see ICriterion, ICollectionPersister, IJoinable, IAssociationType SVN: trunk@3048
1 parent 2c34e42 commit 6a26049

File tree

83 files changed

+246
-273
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+246
-273
lines changed

src/NHibernate.Test/ExpressionTest/BetweenExpressionFixture.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using System;
21
using NHibernate.DomainModel;
32
using NHibernate.Expression;
43
using NHibernate.SqlCommand;
@@ -17,7 +16,7 @@ public void BetweenSqlStringTest()
1716

1817
CreateObjects(typeof(Simple), session);
1918
ICriterion betweenExpression = Expression.Expression.Between("Count", 5, 10);
20-
SqlString sqlString = betweenExpression.ToSqlString(criteria, criteriaQuery, CollectionHelper.EmptyMap);
19+
SqlString sqlString = betweenExpression.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass<string, IFilter>());
2120

2221
string expectedSql = "sql_alias.count_ between ? and ?";
2322
CompareSqlStrings(sqlString, expectedSql, 2);

src/NHibernate.Test/ExpressionTest/InExpressionFixture.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public void InSqlStringTest()
2222
ICriterion inExpression = Expression.Expression.In("Count", new int[] {3, 4, 5});
2323

2424
CreateObjects(typeof(Simple), session);
25-
SqlString sqlString = inExpression.ToSqlString(criteria, criteriaQuery, CollectionHelper.EmptyMap);
25+
SqlString sqlString = inExpression.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass<string, IFilter>());
2626

2727
string expectedSql = "sql_alias.count_ in (?, ?, ?)";
2828

@@ -37,7 +37,7 @@ public void InEmptyList()
3737
ISession session = factory.OpenSession();
3838
InExpression expression = new InExpression("Count", new object[0]);
3939
CreateObjects(typeof(Simple), session);
40-
SqlString sql = expression.ToSqlString(criteria, criteriaQuery, CollectionHelper.EmptyMap);
40+
SqlString sql = expression.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass<string, IFilter>());
4141
Assert.AreEqual("1=0", sql.ToString());
4242
session.Close();
4343
}

src/NHibernate.Test/ExpressionTest/InsensitiveLikeExpressionFixture.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public void InsentitiveLikeSqlStringTest()
2424
ICriterion expression = Expression.Expression.InsensitiveLike("Address", "12 Adress");
2525

2626
CreateObjects(typeof(Simple), session);
27-
SqlString sqlString = expression.ToSqlString(criteria, criteriaQuery, CollectionHelper.EmptyMap);
27+
SqlString sqlString = expression.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass<string, IFilter>());
2828

2929
string expectedSql = "lower(sql_alias.address) like ?";
3030
if ((factory as ISessionFactoryImplementor).Dialect is PostgreSQLDialect)

src/NHibernate.Test/ExpressionTest/JunctionFixture.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public void SqlString()
3737
using (ISession session = factory.OpenSession())
3838
{
3939
CreateObjects(typeof(Simple), session);
40-
sqlString = _conjunction.ToSqlString(criteria, criteriaQuery, CollectionHelper.EmptyMap);
40+
sqlString = _conjunction.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass<string, IFilter>());
4141
}
4242

4343
string expectedSql = "(sql_alias.address is null and sql_alias.count_ between ? and ?)";

src/NHibernate.Test/ExpressionTest/LogicalExpressionFixture.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public void LogicalSqlStringTest()
2727
Expression.Expression.Or(Expression.Expression.IsNull("Address"), Expression.Expression.Between("Count", 5, 10));
2828

2929
CreateObjects(typeof(Simple), session);
30-
SqlString sqlString = orExpression.ToSqlString(criteria, criteriaQuery, CollectionHelper.EmptyMap);
30+
SqlString sqlString = orExpression.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass<string, IFilter>());
3131

3232
string expectedSql = "(sql_alias.address is null or sql_alias.count_ between ? and ?)";
3333

src/NHibernate.Test/ExpressionTest/NotExpressionFixture.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using System;
21
using NHibernate.Dialect;
32
using NHibernate.DomainModel;
43
using NHibernate.Expression;
@@ -23,7 +22,7 @@ public void NotSqlStringTest()
2322
ICriterion notExpression = Expression.Expression.Not(Expression.Expression.Eq("Address", "12 Adress"));
2423

2524
CreateObjects(typeof(Simple), session);
26-
SqlString sqlString = notExpression.ToSqlString(criteria, criteriaQuery, CollectionHelper.EmptyMap);
25+
SqlString sqlString = notExpression.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass<string, IFilter>());
2726

2827
string expectedSql = dialect is MySQLDialect ?
2928
"not (sql_alias.address = ?)" :

src/NHibernate.Test/ExpressionTest/NotNullExpressionFixture.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using System;
21
using NHibernate.DomainModel;
32
using NHibernate.Expression;
43
using NHibernate.SqlCommand;
@@ -22,7 +21,7 @@ public void NotNullSqlStringTest()
2221
ICriterion notNullExpression = Expression.Expression.IsNotNull("Address");
2322

2423
CreateObjects(typeof(Simple), session);
25-
SqlString sqlString = notNullExpression.ToSqlString(criteria, criteriaQuery, CollectionHelper.EmptyMap);
24+
SqlString sqlString = notNullExpression.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass<string, IFilter>());
2625

2726
string expectedSql = "sql_alias.address is not null";
2827
CompareSqlStrings(sqlString, expectedSql, 0);

src/NHibernate.Test/ExpressionTest/NullExpressionFixture.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public void NullSqlStringTest()
2222
ICriterion expression = Expression.Expression.IsNull("Address");
2323

2424
CreateObjects(typeof(Simple), session);
25-
SqlString sqlString = expression.ToSqlString(criteria, criteriaQuery, CollectionHelper.EmptyMap);
25+
SqlString sqlString = expression.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass<string, IFilter>());
2626

2727
string expectedSql = "sql_alias.address is null";
2828
CompareSqlStrings(sqlString, expectedSql, 0);

src/NHibernate.Test/ExpressionTest/PropertyExpressionFixture.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public void SqlStringTest()
2727
ICriterion expression = Expression.Expression.EqProperty("Address", "Name");
2828

2929
CreateObjects(typeof(Simple), session);
30-
SqlString sqlString = expression.ToSqlString(criteria, criteriaQuery, CollectionHelper.EmptyMap);
30+
SqlString sqlString = expression.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass<string, IFilter>());
3131

3232
string expectedSql = "sql_alias.address = sql_alias.Name";
3333

src/NHibernate.Test/ExpressionTest/SQLExpressionFixture.cs

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using System;
21
using NHibernate.DomainModel;
32
using NHibernate.Expression;
43
using NHibernate.SqlCommand;
@@ -19,7 +18,7 @@ public void StraightSqlTest()
1918
ICriterion sqlExpression = Expression.Expression.Sql("{alias}.address is not null");
2019

2120
CreateObjects(typeof(Simple), session);
22-
SqlString sqlString = sqlExpression.ToSqlString(criteria, criteriaQuery, CollectionHelper.EmptyMap);
21+
SqlString sqlString = sqlExpression.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass<string, IFilter>());
2322

2423
string expectedSql = "sql_alias.address is not null";
2524

@@ -35,7 +34,7 @@ public void NoParamsSqlStringTest()
3534
ICriterion sqlExpression = Expression.Expression.Sql(new SqlString("{alias}.address is not null"));
3635

3736
CreateObjects(typeof(Simple), session);
38-
SqlString sqlString = sqlExpression.ToSqlString(criteria, criteriaQuery, CollectionHelper.EmptyMap);
37+
SqlString sqlString = sqlExpression.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass<string, IFilter>());
3938

4039
string expectedSql = "sql_alias.address is not null";
4140

@@ -58,7 +57,7 @@ public void WithParameterTest()
5857
ICriterion sqlExpression = Expression.Expression.Sql(builder.ToSqlString(), "some address", NHibernateUtil.String);
5958

6059
CreateObjects(typeof(Simple), session);
61-
SqlString sqlString = sqlExpression.ToSqlString(criteria, criteriaQuery, CollectionHelper.EmptyMap);
60+
SqlString sqlString = sqlExpression.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass<string, IFilter>());
6261

6362
CompareSqlStrings(sqlString, expectedSql, 1);
6463
}

src/NHibernate.Test/ExpressionTest/SimpleExpressionFixture.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public void SimpleSqlStringTest()
2929

3030
ICriterion andExpression = Expression.Expression.Eq("Address", "12 Adress");
3131

32-
SqlString sqlString = andExpression.ToSqlString(criteria, criteriaQuery, CollectionHelper.EmptyMap);
32+
SqlString sqlString = andExpression.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass<string, IFilter>());
3333

3434
string expectedSql = "sql_alias.address = ?";
3535
CompareSqlStrings(sqlString, expectedSql, 1);
@@ -48,7 +48,7 @@ public void TestQuoting()
4848

4949
ICriterion andExpression = Expression.Expression.Eq("Date", now);
5050

51-
SqlString sqlString = andExpression.ToSqlString(criteria, criteriaQuery, CollectionHelper.EmptyMap);
51+
SqlString sqlString = andExpression.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass<string, IFilter>());
5252
string quotedColumn = dialect.QuoteForColumnName("d[at]e_");
5353
string expectedSql = "sql_alias." + quotedColumn + " = ?";
5454

@@ -64,7 +64,7 @@ public void SimpleDateExpression()
6464
CreateObjects(typeof(Simple), session);
6565
ICriterion andExpression = Expression.Expression.Ge("Date", DateTime.Now);
6666

67-
SqlString sqlString = andExpression.ToSqlString(criteria, criteriaQuery, CollectionHelper.EmptyMap);
67+
SqlString sqlString = andExpression.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass<string, IFilter>());
6868

6969
string expectedSql = "sql_alias.date_ >= ?";
7070
CompareSqlStrings(sqlString, expectedSql, 1);
@@ -80,7 +80,7 @@ public void MisspelledPropertyWithNormalizedEntityPersister()
8080
CreateObjects(typeof(Multi), session);
8181

8282
ICriterion expression = Expression.Expression.Eq("MisspelledProperty", DateTime.Now);
83-
expression.ToSqlString(criteria, criteriaQuery, CollectionHelper.EmptyMap);
83+
expression.ToSqlString(criteria, criteriaQuery, new CollectionHelper.EmptyMapClass<string, IFilter>());
8484
}
8585
}
8686
}

src/NHibernate.Test/FilterTest/FilterConfig.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ public void FilterDefinitionsLoadedCorrectly()
1717
cfg.AddResource(mappingCfg, this.GetType().Assembly);
1818
Assert.AreEqual(cfg.FilterDefinitions.Count, 2);
1919

20-
Assert.IsTrue(cfg.FilterDefinitions.Contains("LiveFilter"));
20+
Assert.IsTrue(cfg.FilterDefinitions.ContainsKey("LiveFilter"));
2121

22-
FilterDefinition f = cfg.FilterDefinitions["LiveFilter"] as FilterDefinition;
22+
FilterDefinition f = cfg.FilterDefinitions["LiveFilter"];
2323

2424
Assert.AreEqual(f.ParameterTypes.Count, 1);
2525

src/NHibernate.Test/NHSpecificTest/SetFixture.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using NHibernate.Persister.Entity;
1212
using NHibernate.Type;
1313
using NUnit.Framework;
14+
using System.Collections.Generic;
1415

1516
namespace NHibernate.Test.NHSpecificTest
1617
{
@@ -148,7 +149,7 @@ public bool IsOneToMany
148149
}
149150
}
150151

151-
public string GetManyToManyFilterFragment(string alias, IDictionary enabledFilters)
152+
public string GetManyToManyFilterFragment(string alias, IDictionary<string, IFilter> enabledFilters)
152153
{
153154
throw new NotImplementedException();
154155
}

src/NHibernate/Cache/FilterKey.cs

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using System;
2-
using System.Collections;
2+
using System.Collections.Generic;
33
using Iesi.Collections;
44
using NHibernate.Engine;
55
using NHibernate.Impl;
@@ -11,15 +11,15 @@ namespace NHibernate.Cache
1111
[Serializable]
1212
public class FilterKey
1313
{
14-
private string filterName;
15-
private IDictionary filterParameters = new Hashtable();
14+
private readonly string filterName;
15+
private readonly Dictionary<string, TypedValue> filterParameters = new Dictionary<string, TypedValue>();
1616

17-
public FilterKey(string name, IDictionary @params, IDictionary types)
17+
public FilterKey(string name, IDictionary<string, object> @params, IDictionary<string, IType> types)
1818
{
1919
filterName = name;
20-
foreach (DictionaryEntry me in @params)
20+
foreach (KeyValuePair<string, object> me in @params)
2121
{
22-
IType type = (IType) types[me.Key];
22+
IType type = types[me.Key];
2323
filterParameters[me.Key] = new TypedValue(type, me.Value);
2424
}
2525
}
@@ -28,7 +28,7 @@ public override int GetHashCode()
2828
{
2929
int result = 13;
3030
result = 37 * result + filterName.GetHashCode();
31-
result = 37 * result + CollectionHelper.GetHashCode(filterParameters);
31+
result = 37 * result + CollectionHelper.GetHashCode<KeyValuePair<string, TypedValue>>(filterParameters);
3232
return result;
3333
}
3434

@@ -49,7 +49,7 @@ public override string ToString()
4949
return "FilterKey[" + filterName + filterParameters + ']';
5050
}
5151

52-
public static ISet CreateFilterKeys(IDictionary enabledFilters)
52+
public static ISet CreateFilterKeys(IDictionary<string, IFilter> enabledFilters)
5353
{
5454
if (enabledFilters.Count == 0)
5555
return null;

src/NHibernate/Cfg/Configuration.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public class Configuration
5959
private IList<Mappings.UniquePropertyReference> propertyReferences;
6060
private IInterceptor interceptor;
6161
private IDictionary properties;
62-
private IDictionary filterDefinitions;
62+
private IDictionary<string, FilterDefinition> filterDefinitions;
6363
private IList<IAuxiliaryDatabaseObject> auxiliaryDatabaseObjects;
6464
private IDictionary<string, ISQLFunction> sqlFunctions;
6565

@@ -85,7 +85,7 @@ private void Reset()
8585
sqlResultSetMappings = new Dictionary<string, ResultSetMappingDefinition>();
8686
secondPasses = new List<SecondPassCommand>();
8787
propertyReferences = new List<Mappings.UniquePropertyReference>();
88-
filterDefinitions = new Hashtable();
88+
filterDefinitions = new Dictionary<string, FilterDefinition>();
8989
interceptor = emptyInterceptor;
9090
mapping = new Mapping(this);
9191
properties = Environment.Properties;
@@ -1517,7 +1517,7 @@ public IDictionary<string, ResultSetMappingDefinition> SqlResultSetMappings
15171517
get { return sqlResultSetMappings; }
15181518
}
15191519

1520-
public IDictionary FilterDefinitions
1520+
public IDictionary<string, FilterDefinition> FilterDefinitions
15211521
{
15221522
get { return filterDefinitions; }
15231523
}

src/NHibernate/Cfg/Mappings.cs

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
using System.Collections;
21
using System.Collections.Generic;
3-
42
using NHibernate.Engine;
53
using NHibernate.Mapping;
64
using NHibernate.Util;
@@ -29,7 +27,7 @@ public class Mappings
2927
private bool autoImport;
3028
private bool defaultLazy;
3129
private readonly IList<UniquePropertyReference> propertyReferences;
32-
private readonly IDictionary filterDefinitions;
30+
private readonly IDictionary<string, FilterDefinition> filterDefinitions;
3331
private readonly IList<IAuxiliaryDatabaseObject> auxiliaryDatabaseObjects;
3432

3533
private readonly INamingStrategy namingStrategy;
@@ -51,7 +49,7 @@ internal Mappings(
5149
IList<SecondPassCommand> secondPasses,
5250
IList<UniquePropertyReference> propertyReferences,
5351
INamingStrategy namingStrategy,
54-
IDictionary filterDefinitions,
52+
IDictionary<string, FilterDefinition> filterDefinitions,
5553
IList<IAuxiliaryDatabaseObject> auxiliaryDatabaseObjects,
5654
string defaultAssembly,
5755
string defaultNamespace
@@ -300,7 +298,7 @@ public bool DefaultLazy
300298
set { defaultLazy = value; }
301299
}
302300

303-
public IDictionary FilterDefinitions
301+
public IDictionary<string, FilterDefinition> FilterDefinitions
304302
{
305303
get { return filterDefinitions; }
306304
}
@@ -312,7 +310,7 @@ public void AddFilterDefinition(FilterDefinition definition)
312310

313311
public FilterDefinition GetFilterDefinition(string name)
314312
{
315-
return (FilterDefinition) filterDefinitions[name];
313+
return filterDefinitions[name];
316314
}
317315

318316
public void AddAuxiliaryDatabaseObject(IAuxiliaryDatabaseObject auxiliaryDatabaseObject)

src/NHibernate/Cfg/XmlHbmBinding/FilterDefinitionFactory.cs

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
using System.Collections;
2-
1+
using System.Collections.Generic;
32
using log4net;
4-
53
using NHibernate.Cfg.MappingSchema;
64
using NHibernate.Engine;
75
using NHibernate.Type;
@@ -17,16 +15,16 @@ public static FilterDefinition CreateFilterDefinition(HbmFilterDef filterDefSche
1715
log.DebugFormat("Parsing filter-def [{0}]", filterDefSchema.name);
1816

1917
string defaultCondition = filterDefSchema.GetDefaultCondition();
20-
Hashtable parameterTypes = GetFilterParameterTypes(filterDefSchema);
18+
IDictionary<string, IType> parameterTypes = GetFilterParameterTypes(filterDefSchema);
2119

2220
log.DebugFormat("Parsed filter-def [{0}]", filterDefSchema.name);
2321

2422
return new FilterDefinition(filterDefSchema.name, defaultCondition, parameterTypes);
2523
}
2624

27-
private static Hashtable GetFilterParameterTypes(HbmFilterDef filterDefSchema)
25+
private static IDictionary<string, IType> GetFilterParameterTypes(HbmFilterDef filterDefSchema)
2826
{
29-
Hashtable parameterTypes = new Hashtable();
27+
Dictionary<string, IType> parameterTypes = new Dictionary<string, IType>();
3028

3129
foreach (HbmFilterParam paramSchema in filterDefSchema.ListParameters())
3230
{

0 commit comments

Comments
 (0)