Skip to content

Commit 64cc4e2

Browse files
author
Bart Koelman
committed
Refactor: removed OperationContainer.Kind because IJsonApiRequest.WriteOperation is now populated consistently; applied c# pattern usage
1 parent 5198265 commit 64cc4e2

File tree

15 files changed

+18
-22
lines changed

15 files changed

+18
-22
lines changed

src/JsonApiDotNetCore/AtomicOperations/LocalIdValidator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public void Validate(IEnumerable<OperationContainer> operations)
5757

5858
private void ValidateOperation(OperationContainer operation)
5959
{
60-
if (operation.Kind == WriteOperationKind.CreateResource)
60+
if (operation.Request.WriteOperation == WriteOperationKind.CreateResource)
6161
{
6262
DeclareLocalId(operation.Resource);
6363
}
@@ -71,7 +71,7 @@ private void ValidateOperation(OperationContainer operation)
7171
AssertLocalIdIsAssigned(secondaryResource);
7272
}
7373

74-
if (operation.Kind == WriteOperationKind.CreateResource)
74+
if (operation.Request.WriteOperation == WriteOperationKind.CreateResource)
7575
{
7676
AssignLocalId(operation);
7777
}

src/JsonApiDotNetCore/AtomicOperations/OperationProcessorAccessor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public Task<OperationContainer> ProcessAsync(OperationContainer operation, Cance
3737

3838
protected virtual IOperationProcessor ResolveProcessor(OperationContainer operation)
3939
{
40-
Type processorInterface = GetProcessorInterface(operation.Kind);
40+
Type processorInterface = GetProcessorInterface(operation.Request.WriteOperation.GetValueOrDefault());
4141
ResourceContext resourceContext = _resourceGraph.GetResourceContext(operation.Resource.GetType());
4242

4343
Type processorType = processorInterface.MakeGenericType(resourceContext.ResourceType, resourceContext.IdentityType);

src/JsonApiDotNetCore/AtomicOperations/OperationsProcessor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ protected virtual async Task<OperationContainer> ProcessOperationAsync(Operation
115115

116116
protected void TrackLocalIdsForOperation(OperationContainer operation)
117117
{
118-
if (operation.Kind == WriteOperationKind.CreateResource)
118+
if (operation.Request.WriteOperation == WriteOperationKind.CreateResource)
119119
{
120120
DeclareLocalId(operation.Resource);
121121
}

src/JsonApiDotNetCore/Configuration/JsonApiValidationFilter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ private static bool IsId(string key)
5757

5858
private static bool IsAtPrimaryEndpoint(IJsonApiRequest request)
5959
{
60-
return request.Kind == EndpointKind.Primary || request.Kind == EndpointKind.AtomicOperations;
60+
return request.Kind is EndpointKind.Primary or EndpointKind.AtomicOperations;
6161
}
6262

6363
private static bool IsFieldTargeted(ValidationEntry entry, ITargetedFields targetedFields)

src/JsonApiDotNetCore/Controllers/BaseJsonApiOperationsController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ protected virtual void ValidateModelState(IEnumerable<OperationContainer> operat
133133

134134
foreach (OperationContainer operation in operations)
135135
{
136-
if (operation.Kind == WriteOperationKind.CreateResource || operation.Kind == WriteOperationKind.UpdateResource)
136+
if (operation.Request.WriteOperation is WriteOperationKind.CreateResource or WriteOperationKind.UpdateResource)
137137
{
138138
_targetedFields.CopyFrom(operation.TargetedFields);
139139
_request.CopyFrom(operation.Request);

src/JsonApiDotNetCore/Queries/Internal/QueryableBuilding/QueryClauseBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ private static Expression TryGetCollectionCount(Expression collectionExpression)
4949

5050
foreach (PropertyInfo property in properties)
5151
{
52-
if (property.Name == "Count" || property.Name == "Length")
52+
if (property.Name is "Count" or "Length")
5353
{
5454
return Expression.Property(collectionExpression, property);
5555
}

src/JsonApiDotNetCore/QueryStrings/Internal/PaginationQueryStringParameterReader.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public virtual bool IsEnabled(DisableQueryStringAttribute disableQueryStringAttr
4545
/// <inheritdoc />
4646
public virtual bool CanRead(string parameterName)
4747
{
48-
return parameterName == PageSizeParameterName || parameterName == PageNumberParameterName;
48+
return parameterName is PageSizeParameterName or PageNumberParameterName;
4949
}
5050

5151
/// <inheritdoc />

src/JsonApiDotNetCore/Repositories/EntityFrameworkCoreRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,7 @@ protected virtual async Task SaveChangesAsync(CancellationToken cancellationToke
570570

571571
await _dbContext.SaveChangesAsync(cancellationToken);
572572
}
573-
catch (Exception exception) when (exception is DbUpdateException || exception is InvalidOperationException)
573+
catch (Exception exception) when (exception is DbUpdateException or InvalidOperationException)
574574
{
575575
if (_dbContext.Database.CurrentTransaction != null)
576576
{

src/JsonApiDotNetCore/Resources/Internal/RuntimeTypeConverter.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,7 @@ public static object ConvertType(object value, Type type)
7171
// https://bradwilson.typepad.com/blog/2008/07/creating-nullab.html
7272
return Convert.ChangeType(stringValue, nonNullableType);
7373
}
74-
catch (Exception exception) when (exception is FormatException || exception is OverflowException || exception is InvalidCastException ||
75-
exception is ArgumentException)
74+
catch (Exception exception) when (exception is FormatException or OverflowException or InvalidCastException or ArgumentException)
7675
{
7776
string runtimeTypeName = runtimeType.GetFriendlyTypeName();
7877
string targetTypeName = type.GetFriendlyTypeName();

src/JsonApiDotNetCore/Resources/OperationContainer.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,16 @@ public sealed class OperationContainer
1313
{
1414
private static readonly CollectionConverter CollectionConverter = new();
1515

16-
public WriteOperationKind Kind { get; }
1716
public IIdentifiable Resource { get; }
1817
public ITargetedFields TargetedFields { get; }
1918
public IJsonApiRequest Request { get; }
2019

21-
public OperationContainer(WriteOperationKind kind, IIdentifiable resource, ITargetedFields targetedFields, IJsonApiRequest request)
20+
public OperationContainer(IIdentifiable resource, ITargetedFields targetedFields, IJsonApiRequest request)
2221
{
2322
ArgumentGuard.NotNull(resource, nameof(resource));
2423
ArgumentGuard.NotNull(targetedFields, nameof(targetedFields));
2524
ArgumentGuard.NotNull(request, nameof(request));
2625

27-
Kind = kind;
2826
Resource = resource;
2927
TargetedFields = targetedFields;
3028
Request = request;
@@ -39,7 +37,7 @@ public OperationContainer WithResource(IIdentifiable resource)
3937
{
4038
ArgumentGuard.NotNull(resource, nameof(resource));
4139

42-
return new OperationContainer(Kind, resource, TargetedFields, Request);
40+
return new OperationContainer(resource, TargetedFields, Request);
4341
}
4442

4543
public ISet<IIdentifiable> GetSecondaryResources()

src/JsonApiDotNetCore/Serialization/JsonApiWriter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ private string SerializeResponse(object contextObject, HttpStatusCode statusCode
105105
throw new UnsuccessfulActionResultException(statusCode);
106106
}
107107

108-
if (statusCode == HttpStatusCode.NoContent || statusCode == HttpStatusCode.ResetContent || statusCode == HttpStatusCode.NotModified)
108+
if (statusCode is HttpStatusCode.NoContent or HttpStatusCode.ResetContent or HttpStatusCode.NotModified)
109109
{
110110
// Prevent exception from Kestrel server, caused by writing data:null json response.
111111
return null;

src/JsonApiDotNetCore/Serialization/RequestAdapters/AtomicOperationObjectAdapter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,12 @@ public OperationContainer Convert(AtomicOperationObject atomicOperationObject, R
4949

5050
(ResourceIdentityRequirements requirements, IIdentifiable primaryResource) = ConvertRef(atomicOperationObject, state);
5151

52-
if (writeOperation == WriteOperationKind.CreateResource || writeOperation == WriteOperationKind.UpdateResource)
52+
if (writeOperation is WriteOperationKind.CreateResource or WriteOperationKind.UpdateResource)
5353
{
5454
primaryResource = _resourceDataInOperationsRequestAdapter.Convert(atomicOperationObject.Data, requirements, state);
5555
}
5656

57-
return new OperationContainer(writeOperation, primaryResource, state.WritableTargetedFields, state.Request);
57+
return new OperationContainer(primaryResource, state.WritableTargetedFields, state.Request);
5858
}
5959

6060
private static void AssertNoHref(AtomicOperationObject atomicOperationObject, RequestAdapterState state)

src/JsonApiDotNetCore/Serialization/RequestAdapters/ResourceIdentityAdapter.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,7 @@ protected static void AssertIsKnownRelationship(RelationshipAttribute relationsh
206206

207207
protected internal static void AssertToManyInAddOrRemoveRelationship(RelationshipAttribute relationship, RequestAdapterState state)
208208
{
209-
bool requireToManyRelationship = state.Request.WriteOperation == WriteOperationKind.AddToRelationship ||
210-
state.Request.WriteOperation == WriteOperationKind.RemoveFromRelationship;
209+
bool requireToManyRelationship = state.Request.WriteOperation is WriteOperationKind.AddToRelationship or WriteOperationKind.RemoveFromRelationship;
211210

212211
if (requireToManyRelationship && relationship is not HasManyAttribute)
213212
{

src/JsonApiDotNetCore/Serialization/ResponseSerializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public string Serialize(object content)
6767
{
6868
_sparseFieldSetCache.Reset();
6969

70-
if (content == null || content is IIdentifiable)
70+
if (content is null or IIdentifiable)
7171
{
7272
return SerializeSingle((IIdentifiable)content);
7373
}

test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Controllers/CreateMusicTrackOperationsController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ private static void AssertOnlyCreatingMusicTracks(IEnumerable<OperationContainer
3838

3939
foreach (OperationContainer operation in operations)
4040
{
41-
if (operation.Kind != WriteOperationKind.CreateResource || operation.Resource.GetType() != typeof(MusicTrack))
41+
if (operation.Request.WriteOperation != WriteOperationKind.CreateResource || operation.Resource.GetType() != typeof(MusicTrack))
4242
{
4343
throw new JsonApiException(new ErrorObject(HttpStatusCode.UnprocessableEntity)
4444
{

0 commit comments

Comments
 (0)