Skip to content

Commit f4d4764

Browse files
committed
Refactoring (removed some 'static' and pushed out the responsibility of creation of ILinqToHqlGeneratorsRegistry)
SVN: trunk@5070
1 parent b5be333 commit f4d4764

File tree

9 files changed

+20
-11
lines changed

9 files changed

+20
-11
lines changed

src/NHibernate/Cfg/Settings.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using NHibernate.Connection;
77
using NHibernate.Exceptions;
88
using NHibernate.Hql;
9+
using NHibernate.Linq.Functions;
910
using NHibernate.Transaction;
1011

1112
namespace NHibernate.Cfg
@@ -119,6 +120,11 @@ public Settings()
119120

120121
public bool IsOuterJoinFetchEnabled { get; internal set; }
121122

123+
/// <summary>
124+
/// Get the registry to provide Hql-Generators for known properties/methods.
125+
/// </summary>
126+
public ILinqToHqlGeneratorsRegistry LinqToHqlGeneratorsRegistry { get; internal set; }
127+
122128
#endregion
123129
}
124130
}

src/NHibernate/Cfg/SettingsFactory.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using NHibernate.Dialect;
1111
using NHibernate.Exceptions;
1212
using NHibernate.Hql;
13+
using NHibernate.Linq.Functions;
1314
using NHibernate.Transaction;
1415
using NHibernate.Util;
1516

@@ -51,6 +52,8 @@ public Settings BuildSettings(IDictionary<string, string> properties)
5152
}
5253
settings.Dialect = dialect;
5354

55+
settings.LinqToHqlGeneratorsRegistry = new FunctionRegistry();
56+
5457
#region SQL Exception converter
5558

5659
ISQLExceptionConverter sqlExceptionConverter;

src/NHibernate/IQueryExpression.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
using System.Collections.Generic;
2+
using NHibernate.Engine;
23
using NHibernate.Engine.Query;
34
using NHibernate.Hql.Ast.ANTLR.Tree;
4-
using NHibernate.Impl;
55

66
namespace NHibernate
77
{
88
public interface IQueryExpression
99
{
10-
IASTNode Translate(ISessionFactory sessionFactory);
10+
IASTNode Translate(ISessionFactoryImplementor sessionFactory);
1111
string Key { get; }
1212
System.Type Type { get; }
1313
IList<NamedParameterDescriptor> ParameterDescriptors { get; }

src/NHibernate/Impl/ExpressionQueryImpl.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ public ExpandedQueryExpression(IQueryExpression queryExpression, IASTNode tree,
150150
ParameterDescriptors = queryExpression.ParameterDescriptors;
151151
}
152152

153-
public IASTNode Translate(ISessionFactory sessionFactory)
153+
public IASTNode Translate(ISessionFactoryImplementor sessionFactory)
154154
{
155155
return _tree;
156156
}

src/NHibernate/Linq/Functions/FunctionRegistry.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,11 @@ namespace NHibernate.Linq.Functions
1010
{
1111
public class FunctionRegistry : ILinqToHqlGeneratorsRegistry
1212
{
13-
public static readonly ILinqToHqlGeneratorsRegistry Instance = new FunctionRegistry();
14-
1513
private readonly Dictionary<MethodInfo, IHqlGeneratorForMethod> registeredMethods = new Dictionary<MethodInfo, IHqlGeneratorForMethod>();
1614
private readonly Dictionary<MemberInfo, IHqlGeneratorForProperty> registeredProperties = new Dictionary<MemberInfo, IHqlGeneratorForProperty>();
1715
private readonly List<IHqlGeneratorForType> typeGenerators = new List<IHqlGeneratorForType>();
1816

19-
private FunctionRegistry()
17+
public FunctionRegistry()
2018
{
2119
// TODO - could use reflection here
2220
Register(new QueryableGenerator());

src/NHibernate/Linq/NhLinqExpression.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System.Collections.Generic;
22
using System.Linq;
33
using System.Linq.Expressions;
4+
using NHibernate.Engine;
45
using NHibernate.Engine.Query;
56
using NHibernate.Hql.Ast.ANTLR.Tree;
67
using NHibernate.Linq.Visitors;
@@ -54,7 +55,7 @@ public NhLinqExpression(Expression expression)
5455
}
5556
}
5657

57-
public IASTNode Translate(ISessionFactory sessionFactory)
58+
public IASTNode Translate(ISessionFactoryImplementor sessionFactory)
5859
{
5960
//if (_astNode == null)
6061
{

src/NHibernate/Linq/Visitors/HqlGeneratorExpressionTreeVisitor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public static HqlTreeNode Visit(Expression expression, VisitorParameters paramet
2323

2424
public HqlGeneratorExpressionTreeVisitor(VisitorParameters parameters)
2525
{
26-
functionRegistry = FunctionRegistry.Instance;
26+
functionRegistry = parameters.SessionFactory.Settings.LinqToHqlGeneratorsRegistry;
2727
_parameters = parameters;
2828
_hqlTreeBuilder = new HqlTreeBuilder();
2929
}

src/NHibernate/Linq/Visitors/SelectClauseVisitor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class SelectClauseVisitor : ExpressionTreeVisitor
2020

2121
public SelectClauseVisitor(System.Type inputType, VisitorParameters parameters)
2222
{
23-
functionRegistry = FunctionRegistry.Instance;
23+
functionRegistry = parameters.SessionFactory.Settings.LinqToHqlGeneratorsRegistry;
2424
_inputParameter = Expression.Parameter(inputType, "input");
2525
_parameters = parameters;
2626
}

src/NHibernate/Linq/Visitors/VisitorParameters.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
using System.Collections.Generic;
22
using System.Linq.Expressions;
3+
using NHibernate.Engine;
34
using NHibernate.Engine.Query;
45

56
namespace NHibernate.Linq.Visitors
67
{
78
public class VisitorParameters
89
{
9-
public ISessionFactory SessionFactory { get; private set; }
10+
public ISessionFactoryImplementor SessionFactory { get; private set; }
1011
public IDictionary<ConstantExpression, NamedParameter> ConstantToParameterMap { get; private set; }
1112
public List<NamedParameterDescriptor> RequiredHqlParameters { get; private set; }
1213

13-
public VisitorParameters(ISessionFactory sessionFactory, IDictionary<ConstantExpression, NamedParameter> constantToParameterMap, List<NamedParameterDescriptor> requiredHqlParameters)
14+
public VisitorParameters(ISessionFactoryImplementor sessionFactory, IDictionary<ConstantExpression, NamedParameter> constantToParameterMap, List<NamedParameterDescriptor> requiredHqlParameters)
1415
{
1516
SessionFactory = sessionFactory;
1617
ConstantToParameterMap = constantToParameterMap;

0 commit comments

Comments
 (0)