Skip to content

Commit 59f1178

Browse files
committed
Review/update ArgumentGuard usages:
- Logger category name can consist of whitespace - Assembly/type/member name can NOT consist of whitespace - JSON:API field name can NOT consist of whitespace
1 parent a4c6248 commit 59f1178

File tree

14 files changed

+40
-15
lines changed

14 files changed

+40
-15
lines changed

src/Examples/DapperExample/TranslationToSql/Builders/DeleteOneToOneStatementBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ internal sealed class DeleteOneToOneStatementBuilder(IDataModelService dataModel
1111
public DeleteNode Build(ResourceType resourceType, string whereColumnName, object? whereValue)
1212
{
1313
ArgumentGuard.NotNull(resourceType);
14-
ArgumentGuard.NotNull(whereColumnName);
14+
ArgumentGuard.NotNullNorEmpty(whereColumnName);
1515

1616
ResetState();
1717

src/Examples/DapperExample/TranslationToSql/Builders/UpdateClearOneToOneStatementBuilder.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ internal sealed class UpdateClearOneToOneStatementBuilder(IDataModelService data
1111
public UpdateNode Build(ResourceType resourceType, string setColumnName, string whereColumnName, object? whereValue)
1212
{
1313
ArgumentGuard.NotNull(resourceType);
14-
ArgumentGuard.NotNull(setColumnName);
15-
ArgumentGuard.NotNull(whereColumnName);
14+
ArgumentGuard.NotNullNorEmpty(setColumnName);
15+
ArgumentGuard.NotNullNorEmpty(whereColumnName);
1616

1717
ResetState();
1818

src/Examples/DapperExample/TranslationToSql/TreeNodes/ParameterNode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ internal sealed class ParameterNode : SqlValueNode
1616

1717
public ParameterNode(string name, object? value)
1818
{
19-
ArgumentGuard.NotNull(name);
19+
ArgumentGuard.NotNullNorEmpty(name);
2020

2121
if (!name.StartsWith('@') || name.Length < 2)
2222
{

src/JsonApiDotNetCore.Annotations/ArgumentGuard.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,30 @@ public static void NotNullNorEmpty<T>([SysNotNull] IEnumerable<T>? value, [Calle
3030
[AssertionMethod]
3131
public static void NotNullNorEmpty([SysNotNull] string? value, [CallerArgumentExpression(nameof(value))] string? parameterName = null)
3232
{
33+
#if !NET6_0
34+
ArgumentException.ThrowIfNullOrEmpty(value, parameterName);
35+
#else
3336
ArgumentNullException.ThrowIfNull(value, parameterName);
3437

3538
if (value.Length == 0)
3639
{
3740
throw new ArgumentException("String cannot be null or empty.", parameterName);
3841
}
42+
#endif
43+
}
44+
45+
[AssertionMethod]
46+
public static void NotNullNorWhitespace([SysNotNull] string? value, [CallerArgumentExpression(nameof(value))] string? parameterName = null)
47+
{
48+
#if !NET6_0
49+
ArgumentException.ThrowIfNullOrWhiteSpace(value, parameterName);
50+
#else
51+
ArgumentNullException.ThrowIfNull(value, parameterName);
52+
53+
if (string.IsNullOrWhiteSpace(value))
54+
{
55+
throw new ArgumentException("String cannot be null, empty, or whitespace.", parameterName);
56+
}
57+
#endif
3958
}
4059
}

src/JsonApiDotNetCore.Annotations/Configuration/ResourceType.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public ResourceType(string publicName, ClientIdGenerationMode? clientIdGeneratio
111111
IReadOnlyCollection<EagerLoadAttribute>? eagerLoads, LinkTypes topLevelLinks = LinkTypes.NotConfigured,
112112
LinkTypes resourceLinks = LinkTypes.NotConfigured, LinkTypes relationshipLinks = LinkTypes.NotConfigured)
113113
{
114-
ArgumentGuard.NotNullNorEmpty(publicName);
114+
ArgumentGuard.NotNullNorWhitespace(publicName);
115115
ArgumentGuard.NotNull(clrType);
116116
ArgumentGuard.NotNull(identityClrType);
117117

src/JsonApiDotNetCore/Errors/MissingResourceInRelationship.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ public sealed class MissingResourceInRelationship
1111

1212
public MissingResourceInRelationship(string relationshipName, string resourceType, string resourceId)
1313
{
14-
ArgumentGuard.NotNullNorEmpty(relationshipName);
15-
ArgumentGuard.NotNullNorEmpty(resourceType);
16-
ArgumentGuard.NotNullNorEmpty(resourceId);
14+
ArgumentGuard.NotNull(relationshipName);
15+
ArgumentGuard.NotNull(resourceType);
16+
ArgumentGuard.NotNull(resourceId);
1717

1818
RelationshipName = relationshipName;
1919
ResourceType = resourceType;

src/JsonApiDotNetCore/Queries/Parsing/FilterParser.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ protected virtual NotExpression ParseNot()
179179

180180
protected virtual LogicalExpression ParseLogical(string operatorName)
181181
{
182-
ArgumentGuard.NotNull(operatorName);
182+
ArgumentGuard.NotNullNorEmpty(operatorName);
183183

184184
EatText(operatorName);
185185
EatSingleCharacterToken(TokenKind.OpenParen);
@@ -210,7 +210,7 @@ protected virtual LogicalExpression ParseLogical(string operatorName)
210210

211211
protected virtual ComparisonExpression ParseComparison(string operatorName)
212212
{
213-
ArgumentGuard.NotNull(operatorName);
213+
ArgumentGuard.NotNullNorEmpty(operatorName);
214214

215215
var comparisonOperator = Enum.Parse<ComparisonOperator>(operatorName.Pascalize());
216216

@@ -315,7 +315,7 @@ private QueryExpression ParseTypedComparisonRightTerm(Type leftType, ConstantVal
315315

316316
protected virtual MatchTextExpression ParseTextMatch(string operatorName)
317317
{
318-
ArgumentGuard.NotNull(operatorName);
318+
ArgumentGuard.NotNullNorEmpty(operatorName);
319319

320320
EatText(operatorName);
321321
EatSingleCharacterToken(TokenKind.OpenParen);

src/JsonApiDotNetCore/QueryStrings/IncludeQueryStringParameterReader.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ public virtual bool IsEnabled(DisableQueryStringAttribute disableQueryStringAttr
3939
/// <inheritdoc />
4040
public virtual bool CanRead(string parameterName)
4141
{
42+
ArgumentGuard.NotNullNorEmpty(parameterName);
43+
4244
return parameterName == "include";
4345
}
4446

src/JsonApiDotNetCore/QueryStrings/PaginationQueryStringParameterReader.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ public virtual bool IsEnabled(DisableQueryStringAttribute disableQueryStringAttr
4949
/// <inheritdoc />
5050
public virtual bool CanRead(string parameterName)
5151
{
52+
ArgumentGuard.NotNullNorEmpty(parameterName);
53+
5254
return parameterName is PageSizeParameterName or PageNumberParameterName;
5355
}
5456

src/JsonApiDotNetCore/QueryStrings/ResourceDefinitionQueryableParameterReader.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ public virtual bool IsEnabled(DisableQueryStringAttribute disableQueryStringAttr
3737
/// <inheritdoc />
3838
public virtual bool CanRead(string parameterName)
3939
{
40+
ArgumentGuard.NotNullNorEmpty(parameterName);
41+
4042
if (_request.Kind == EndpointKind.AtomicOperations)
4143
{
4244
return false;

src/JsonApiDotNetCore/Serialization/Request/Adapters/RequestAdapterPosition.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public RequestAdapterPosition()
2121

2222
public IDisposable PushElement(string name)
2323
{
24-
ArgumentGuard.NotNullNorEmpty(name);
24+
ArgumentGuard.NotNullNorWhitespace(name);
2525

2626
_stack.Push($"/{name}");
2727
return _disposable;

src/JsonApiDotNetCore/Serialization/Request/JsonInvalidAttributeInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ internal sealed class JsonInvalidAttributeInfo
1616

1717
public JsonInvalidAttributeInfo(string attributeName, Type attributeType, string? jsonValue, JsonValueKind jsonType)
1818
{
19-
ArgumentGuard.NotNullNorEmpty(attributeName);
19+
ArgumentGuard.NotNull(attributeName);
2020
ArgumentGuard.NotNull(attributeType);
2121

2222
AttributeName = attributeName;

test/TestBuildingBlocks/CapturingLoggerProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public CapturingLoggerProvider(Func<string, LogLevel, bool> filter)
3232

3333
public ILogger CreateLogger(string categoryName)
3434
{
35-
ArgumentGuard.NotNull(categoryName);
35+
ArgumentGuard.NotNullNorEmpty(categoryName);
3636

3737
return new CapturingLogger(this, categoryName, _filter);
3838
}

test/TestBuildingBlocks/XUnitLoggerProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public XUnitLoggerProvider(ITestOutputHelper testOutputHelper, string? categoryP
2424

2525
public ILogger CreateLogger(string categoryName)
2626
{
27-
ArgumentGuard.NotNull(categoryName);
27+
ArgumentGuard.NotNullNorEmpty(categoryName);
2828

2929
if (_categoryPrefixFilter == null || categoryName.StartsWith(_categoryPrefixFilter, StringComparison.Ordinal))
3030
{

0 commit comments

Comments
 (0)