Skip to content

Commit 7840f5c

Browse files
committed
Remove remaining argument checks in providers hierarchy
1 parent 0835f37 commit 7840f5c

21 files changed

Lines changed: 32 additions & 110 deletions

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
<NoLogo>true</NoLogo>
4242
<SuppressNETCoreSdkPreviewMessage>true</SuppressNETCoreSdkPreviewMessage>
4343
<TargetFramework>net6.0</TargetFramework>
44-
<LangVersion>9.0</LangVersion>
44+
<LangVersion>10.0</LangVersion>
4545
<SolutionDir Condition="$(SolutionDir) == ''">$([MSBuild]::EnsureTrailingSlash(
4646
$([MSBuild]::GetDirectoryNameOfFileAbove('$(MSBuildThisFileDirectory)', 'Orm.sln'))))</SolutionDir>
4747
<Configuration Condition="$(Configuration) == ''">Debug</Configuration>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using System;
2+
using System.Diagnostics.CodeAnalysis;
3+
using System.Runtime.CompilerServices;
4+
5+
internal static class PreconditionValidator
6+
{
7+
[return: NotNull]
8+
public static T NotNull<T>(
9+
[NotNull] this T obj,
10+
string message = default,
11+
[CallerArgumentExpression("obj")]
12+
string parameterName = default)
13+
where T : class
14+
{
15+
return obj ?? throw new ArgumentNullException(parameterName, message);
16+
}
17+
18+
}

Orm/Xtensive.Orm/Orm/Providers/SqlProvider.cs

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
// Created by: Alexey Kochetov
55
// Created: 2008.07.11
66

7-
using System.Linq;
87
using Xtensive.Core;
98
using Xtensive.Sql;
109
using Xtensive.Sql.Dml;
@@ -21,30 +20,17 @@ public class SqlProvider : ExecutableProvider
2120
{
2221
protected readonly HandlerAccessor handlers;
2322

24-
private const string ParameterNamePrefix = "@p";
25-
private const string ToStringFormat = "[Command: \"{0}\"]";
2623
private SqlTable permanentReference;
2724

2825
/// <summary>
2926
/// Gets <see cref="QueryRequest"/> associated with this provider.
3027
/// </summary>
31-
public QueryRequest Request { get; private set; }
28+
public QueryRequest Request { get; }
3229

3330
/// <summary>
3431
/// Gets the permanent reference (<see cref="SqlQueryRef"/>) for <see cref="SqlSelect"/> associated with this provider.
3532
/// </summary>
36-
public SqlTable PermanentReference {
37-
get {
38-
if (ReferenceEquals(null, permanentReference))
39-
permanentReference = SqlDml.QueryRef(Request.Statement);
40-
return permanentReference;
41-
}
42-
}
43-
44-
/// <summary>
45-
/// Gets the domain handler this provider is bound to.
46-
/// </summary>
47-
protected Providers.DomainHandler DomainHandler { get { return handlers.DomainHandler; } }
33+
public SqlTable PermanentReference => permanentReference ??= SqlDml.QueryRef(Request.Statement);
4834

4935
/// <inheritdoc/>
5036
protected internal override DataReader OnEnumerate(Rse.Providers.EnumerationContext context)

Orm/Xtensive.Orm/Orm/Providers/SqlTemporaryDataProvider.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
using System;
88
using Xtensive.Core;
99
using System.Collections.Generic;
10-
using Xtensive.Tuples;
1110
using Tuple = Xtensive.Tuples.Tuple;
1211
using Xtensive.Orm.Rse.Providers;
1312

@@ -25,7 +24,7 @@ public abstract class SqlTemporaryDataProvider : SqlProvider
2524
protected void LockAndStore(Rse.Providers.EnumerationContext context, IEnumerable<Tuple> data)
2625
{
2726
var storageContext = (EnumerationContext) context;
28-
var tableLock = DomainHandler.TemporaryTableManager.Acquire(storageContext, tableDescriptor);
27+
var tableLock = handlers.DomainHandler.TemporaryTableManager.Acquire(storageContext, tableDescriptor);
2928
if (tableLock == null)
3029
return;
3130
storageContext.SetValue(this, TemporaryTableLockName, tableLock);

Orm/Xtensive.Orm/Orm/Rse/Providers/Compilable/BinaryProvider.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,6 @@ protected BinaryProvider(ProviderType type, CompilableProvider left, CompilableP
5151
protected BinaryProvider(ProviderType type, RecordSetHeader header, CompilableProvider left, CompilableProvider right)
5252
: base(type, header, left, right)
5353
{
54-
ArgumentValidator.EnsureArgumentNotNull(header, nameof(header));
55-
ArgumentValidator.EnsureArgumentNotNull(left, nameof(left));
56-
ArgumentValidator.EnsureArgumentNotNull(right, nameof(right));
5754
Left = left;
5855
Right = right;
5956
}

Orm/Xtensive.Orm/Orm/Rse/Providers/Compilable/ExceptProvider.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,6 @@ public sealed class ExceptProvider : BinaryProvider
2222

2323
private static RecordSetHeader BuildHeader(CompilableProvider left, CompilableProvider right)
2424
{
25-
ArgumentValidator.EnsureArgumentNotNull(left, nameof(left));
26-
ArgumentValidator.EnsureArgumentNotNull(right, nameof(right));
27-
2825
var leftHeader = left.Header;
2926
var leftDescriptor = leftHeader.TupleDescriptor;
3027
var rightDescriptor = right.Header.TupleDescriptor;

Orm/Xtensive.Orm/Orm/Rse/Providers/Compilable/FilterProvider.cs

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,31 +20,17 @@ namespace Xtensive.Orm.Rse.Providers
2020
[Serializable]
2121
public sealed class FilterProvider : UnaryProvider
2222
{
23-
private Func<Tuple, bool> compiledPredicate;
24-
2523
/// <summary>
2624
/// Filtering predicate expression.
2725
/// </summary>
28-
public Expression<Func<Tuple, bool>> Predicate { get; private set; }
29-
30-
/// <summary>
31-
/// Gets the compiled <see cref="Predicate"/>.
32-
/// </summary>
33-
public Func<Tuple, bool> CompiledPredicate {
34-
get {
35-
if (compiledPredicate==null)
36-
compiledPredicate = Predicate.CachingCompile();
37-
return compiledPredicate;
38-
}
39-
}
26+
public Expression<Func<Tuple, bool>> Predicate { get; }
4027

4128
/// <inheritdoc/>
4229
protected override string ParametersToString()
4330
{
4431
return Predicate.ToString(true);
4532
}
4633

47-
4834
// Constructors
4935

5036
/// <summary>

Orm/Xtensive.Orm/Orm/Rse/Providers/Compilable/IncludeProvider.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,6 @@ public sealed class IncludeProvider: UnaryProvider,
5858
private static RecordSetHeader BuildHeaderAndFilteredTupleDescriptor(
5959
CompilableProvider source, IReadOnlyList<int> filteredColumns, string resultColumnName, out TupleDescriptor filteredTupleDescriptor)
6060
{
61-
ArgumentValidator.EnsureArgumentNotNull(source, nameof(source));
62-
ArgumentValidator.EnsureArgumentNotNull(filteredColumns, nameof(filteredColumns));
63-
ArgumentValidator.EnsureArgumentNotNullOrEmpty(resultColumnName, nameof(resultColumnName));
64-
6561
var header = source.Header.Add(new SystemColumn(resultColumnName, 0, WellKnownTypes.Bool));
6662
var columnCount = filteredColumns.Count;
6763
var fieldTypes = new Type[columnCount];
@@ -85,7 +81,6 @@ public IncludeProvider(CompilableProvider source, IncludeAlgorithm algorithm, bo
8581
Expression<Func<ParameterContext, IEnumerable<Tuple>>> filterDataSource, string resultColumnName, IReadOnlyList<int> filteredColumns)
8682
: base(ProviderType.Include, BuildHeaderAndFilteredTupleDescriptor(source, filteredColumns, resultColumnName, out var filteredTupleDescriptor), source)
8783
{
88-
ArgumentValidator.EnsureArgumentNotNull(filterDataSource, nameof(FilterDataSource));
8984
Algorithm = algorithm;
9085
IsInlined = isInlined;
9186
FilterDataSource = filterDataSource;

Orm/Xtensive.Orm/Orm/Rse/Providers/Compilable/IntersectProvider.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,10 @@ namespace Xtensive.Orm.Rse.Providers
1717
public sealed class IntersectProvider : BinaryProvider
1818
{
1919

20-
2120
// Constructors
2221

2322
private static RecordSetHeader BuildHeader(CompilableProvider left, CompilableProvider right)
2423
{
25-
ArgumentValidator.EnsureArgumentNotNull(left, nameof(left));
26-
ArgumentValidator.EnsureArgumentNotNull(right, nameof(right));
27-
2824
var leftHeader = left.Header;
2925
var leftDescriptor = leftHeader.TupleDescriptor;
3026
var rightDescriptor = right.Header.TupleDescriptor;

Orm/Xtensive.Orm/Orm/Rse/Providers/Compilable/RawProvider.cs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,12 @@ public sealed class RawProvider : CompilableProvider
2525
/// <summary>
2626
/// Raw data source - an array of tuples.
2727
/// </summary>
28-
public Expression<Func<ParameterContext, IEnumerable<Tuple>>> Source { get; private set; }
28+
public Expression<Func<ParameterContext, IEnumerable<Tuple>>> Source { get; }
2929

3030
/// <summary>
3131
/// Gets the compiled <see cref="Source"/>.
3232
/// </summary>
33-
public Func<ParameterContext, IEnumerable<Tuple>> CompiledSource {
34-
get {
35-
if (compiledSource==null)
36-
compiledSource = Source.CachingCompile();
37-
return compiledSource;
38-
}
39-
}
33+
public Func<ParameterContext, IEnumerable<Tuple>> CompiledSource => compiledSource ??= Source.CachingCompile();
4034

4135
/// <inheritdoc/>
4236
protected override string ParametersToString()

0 commit comments

Comments
 (0)