Skip to content

Commit a6e11be

Browse files
committed
- Renamed ExpansibleEndpointMetadata to NonPrimaryEndpointMetadata
- Made constructors of document type factories private and exposed a static instance
1 parent a1b0a7b commit a6e11be

9 files changed

+36
-27
lines changed

src/JsonApiDotNetCore.OpenApi/JsonApiActionDescriptorCollectionProvider.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,12 @@ private static IEnumerable<ActionDescriptor> AddJsonApiMetadataToAction(ActionDe
7979
UpdateBodyParameterDescriptor(endpoint, primaryMetadata.DocumentType);
8080
return Array.Empty<ActionDescriptor>();
8181
}
82-
case ExpansibleEndpointMetadata expansibleMetadata and (RelationshipResponseMetadata or SecondaryResponseMetadata):
82+
case NonPrimaryEndpointMetadata expansibleMetadata and (RelationshipResponseMetadata or SecondaryResponseMetadata):
8383
{
8484
return Expand(endpoint, expansibleMetadata,
8585
(expandedEndpoint, documentType, _) => UpdateProducesResponseTypeAttribute(expandedEndpoint, documentType));
8686
}
87-
case ExpansibleEndpointMetadata expansibleMetadata and RelationshipRequestMetadata:
87+
case NonPrimaryEndpointMetadata expansibleMetadata and RelationshipRequestMetadata:
8888
{
8989
return Expand(endpoint, expansibleMetadata, UpdateBodyParameterDescriptor);
9090
}
@@ -118,7 +118,7 @@ private static bool ProducesJsonApiResponseDocument(ActionDescriptor endpoint)
118118
return produces != null && produces.ContentTypes.Any(contentType => contentType == HeaderConstants.MediaType);
119119
}
120120

121-
private static IEnumerable<ActionDescriptor> Expand(ActionDescriptor genericEndpoint, ExpansibleEndpointMetadata metadata,
121+
private static IEnumerable<ActionDescriptor> Expand(ActionDescriptor genericEndpoint, NonPrimaryEndpointMetadata metadata,
122122
Action<ActionDescriptor, Type, string> expansionCallback)
123123
{
124124
var expansion = new List<ActionDescriptor>();

src/JsonApiDotNetCore.OpenApi/JsonApiMetadata/JsonApiEndpointMetadataProvider.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ internal sealed class JsonApiEndpointMetadataProvider
1818
{
1919
private readonly IControllerResourceMapping _controllerResourceMapping;
2020
private readonly EndpointResolver _endpointResolver = new();
21-
private readonly NonPrimaryDocumentTypeFactory _nonPrimaryDocumentTypeFactory = new();
2221

2322
public JsonApiEndpointMetadataProvider(IControllerResourceMapping controllerResourceMapping)
2423
{
@@ -89,12 +88,13 @@ private static PrimaryRequestMetadata GetPatchRequestMetadata(Type resourceClrTy
8988
return new PrimaryRequestMetadata(documentType);
9089
}
9190

92-
private RelationshipRequestMetadata GetRelationshipRequestMetadata(IEnumerable<RelationshipAttribute> relationships, bool ignoreHasOneRelationships)
91+
private static RelationshipRequestMetadata GetRelationshipRequestMetadata(IEnumerable<RelationshipAttribute> relationships,
92+
bool ignoreHasOneRelationships)
9393
{
9494
IEnumerable<RelationshipAttribute> relationshipsOfEndpoint = ignoreHasOneRelationships ? relationships.OfType<HasManyAttribute>() : relationships;
9595

9696
IDictionary<string, Type> requestDocumentTypesByRelationshipName = relationshipsOfEndpoint.ToDictionary(relationship => relationship.PublicName,
97-
_nonPrimaryDocumentTypeFactory.GetForRelationshipRequest);
97+
NonPrimaryDocumentTypeFactory.Instance.GetForRelationshipRequest);
9898

9999
return new RelationshipRequestMetadata(requestDocumentTypesByRelationshipName);
100100
}
@@ -133,18 +133,18 @@ private static PrimaryResponseMetadata GetPrimaryResponseMetadata(Type resourceC
133133
return new PrimaryResponseMetadata(documentType);
134134
}
135135

136-
private SecondaryResponseMetadata GetSecondaryResponseMetadata(IEnumerable<RelationshipAttribute> relationships)
136+
private static SecondaryResponseMetadata GetSecondaryResponseMetadata(IEnumerable<RelationshipAttribute> relationships)
137137
{
138138
IDictionary<string, Type> responseDocumentTypesByRelationshipName = relationships.ToDictionary(relationship => relationship.PublicName,
139-
_nonPrimaryDocumentTypeFactory.GetForSecondaryResponse);
139+
NonPrimaryDocumentTypeFactory.Instance.GetForSecondaryResponse);
140140

141141
return new SecondaryResponseMetadata(responseDocumentTypesByRelationshipName);
142142
}
143143

144-
private RelationshipResponseMetadata GetRelationshipResponseMetadata(IEnumerable<RelationshipAttribute> relationships)
144+
private static RelationshipResponseMetadata GetRelationshipResponseMetadata(IEnumerable<RelationshipAttribute> relationships)
145145
{
146146
IDictionary<string, Type> responseDocumentTypesByRelationshipName = relationships.ToDictionary(relationship => relationship.PublicName,
147-
_nonPrimaryDocumentTypeFactory.GetForRelationshipResponse);
147+
NonPrimaryDocumentTypeFactory.Instance.GetForRelationshipResponse);
148148

149149
return new RelationshipResponseMetadata(responseDocumentTypesByRelationshipName);
150150
}

src/JsonApiDotNetCore.OpenApi/JsonApiMetadata/ExpansibleEndpointMetadata.cs renamed to src/JsonApiDotNetCore.OpenApi/JsonApiMetadata/NonPrimaryEndpointMetadata.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33

44
namespace JsonApiDotNetCore.OpenApi.JsonApiMetadata
55
{
6-
internal abstract class ExpansibleEndpointMetadata
6+
internal abstract class NonPrimaryEndpointMetadata
77
{
88
public IDictionary<string, Type> DocumentTypesByRelationshipName { get; }
99

10-
protected ExpansibleEndpointMetadata(IDictionary<string, Type> documentTypesByRelationshipName)
10+
protected NonPrimaryEndpointMetadata(IDictionary<string, Type> documentTypesByRelationshipName)
1111
{
1212
ArgumentGuard.NotNull(documentTypesByRelationshipName, nameof(documentTypesByRelationshipName));
1313

src/JsonApiDotNetCore.OpenApi/JsonApiMetadata/RelationshipRequestMetadata.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
namespace JsonApiDotNetCore.OpenApi.JsonApiMetadata
55
{
6-
internal sealed class RelationshipRequestMetadata : ExpansibleEndpointMetadata, IJsonApiRequestMetadata
6+
internal sealed class RelationshipRequestMetadata : NonPrimaryEndpointMetadata, IJsonApiRequestMetadata
77
{
88
public RelationshipRequestMetadata(IDictionary<string, Type> documentTypesByRelationshipName)
99
: base(documentTypesByRelationshipName)

src/JsonApiDotNetCore.OpenApi/JsonApiMetadata/RelationshipResponseMetadata.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
namespace JsonApiDotNetCore.OpenApi.JsonApiMetadata
55
{
6-
internal sealed class RelationshipResponseMetadata : ExpansibleEndpointMetadata, IJsonApiResponseMetadata
6+
internal sealed class RelationshipResponseMetadata : NonPrimaryEndpointMetadata, IJsonApiResponseMetadata
77
{
88
public RelationshipResponseMetadata(IDictionary<string, Type> documentTypesByRelationshipName)
99
: base(documentTypesByRelationshipName)

src/JsonApiDotNetCore.OpenApi/JsonApiMetadata/SecondaryResponseMetadata.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
namespace JsonApiDotNetCore.OpenApi.JsonApiMetadata
55
{
6-
internal sealed class SecondaryResponseMetadata : ExpansibleEndpointMetadata, IJsonApiResponseMetadata
6+
internal sealed class SecondaryResponseMetadata : NonPrimaryEndpointMetadata, IJsonApiResponseMetadata
77
{
88
public SecondaryResponseMetadata(IDictionary<string, Type> documentTypesByRelationshipName)
99
: base(documentTypesByRelationshipName)

src/JsonApiDotNetCore.OpenApi/JsonApiObjects/NonPrimaryDocumentTypeFactory.cs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,34 +7,40 @@ namespace JsonApiDotNetCore.OpenApi.JsonApiObjects
77
{
88
internal sealed class NonPrimaryDocumentTypeFactory
99
{
10-
private readonly DocumentOpenTypeOptions _secondaryResponseDocumentTypeOptions = new(typeof(ResourceCollectionResponseDocument<>),
10+
private static readonly DocumentOpenTypeOptions SecondaryResponseDocumentTypeOptions = new(typeof(ResourceCollectionResponseDocument<>),
1111
typeof(NullableSecondaryResourceResponseDocument<>), typeof(SecondaryResourceResponseDocument<>));
1212

13-
private readonly DocumentOpenTypeOptions _relationshipRequestDocumentTypeOptions = new(typeof(ToManyRelationshipRequestData<>),
13+
private static readonly DocumentOpenTypeOptions RelationshipRequestDocumentTypeOptions = new(typeof(ToManyRelationshipRequestData<>),
1414
typeof(NullableToOneRelationshipRequestData<>), typeof(ToOneRelationshipRequestData<>));
1515

16-
private readonly DocumentOpenTypeOptions _relationshipResponseDocumentTypeOptions = new(typeof(ResourceIdentifierCollectionResponseDocument<>),
16+
private static readonly DocumentOpenTypeOptions RelationshipResponseDocumentTypeOptions = new(typeof(ResourceIdentifierCollectionResponseDocument<>),
1717
typeof(NullableResourceIdentifierResponseDocument<>), typeof(ResourceIdentifierResponseDocument<>));
1818

19+
public static NonPrimaryDocumentTypeFactory Instance { get; } = new();
20+
21+
private NonPrimaryDocumentTypeFactory()
22+
{
23+
}
24+
1925
public Type GetForSecondaryResponse(RelationshipAttribute relationship)
2026
{
2127
ArgumentGuard.NotNull(relationship, nameof(relationship));
2228

23-
return Get(relationship, _secondaryResponseDocumentTypeOptions);
29+
return Get(relationship, SecondaryResponseDocumentTypeOptions);
2430
}
2531

2632
public Type GetForRelationshipRequest(RelationshipAttribute relationship)
2733
{
2834
ArgumentGuard.NotNull(relationship, nameof(relationship));
2935

30-
return Get(relationship, _relationshipRequestDocumentTypeOptions);
36+
return Get(relationship, RelationshipRequestDocumentTypeOptions);
3137
}
3238

3339
public Type GetForRelationshipResponse(RelationshipAttribute relationship)
3440
{
3541
ArgumentGuard.NotNull(relationship, nameof(relationship));
3642

37-
return Get(relationship, _relationshipResponseDocumentTypeOptions);
43+
return Get(relationship, RelationshipResponseDocumentTypeOptions);
3844
}
3945

4046
private static Type Get(RelationshipAttribute relationship, DocumentOpenTypeOptions typeOptions)

src/JsonApiDotNetCore.OpenApi/JsonApiObjects/RelationshipDataTypeFactory.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,17 @@ namespace JsonApiDotNetCore.OpenApi.JsonApiObjects
66
{
77
internal sealed class RelationshipDataTypeFactory
88
{
9-
private readonly NonPrimaryDocumentTypeFactory _nonPrimaryDocumentTypeFactory = new();
9+
public static RelationshipDataTypeFactory Instance { get; } = new();
10+
11+
private RelationshipDataTypeFactory()
12+
{
13+
}
1014

1115
public Type GetForRequest(RelationshipAttribute relationship)
1216
{
1317
ArgumentGuard.NotNull(relationship, nameof(relationship));
1418

15-
return _nonPrimaryDocumentTypeFactory.GetForRelationshipRequest(relationship);
19+
return NonPrimaryDocumentTypeFactory.Instance.GetForRelationshipRequest(relationship);
1620
}
1721

1822
public Type GetForResponse(RelationshipAttribute relationship)

src/JsonApiDotNetCore.OpenApi/SwaggerComponents/ResourceFieldObjectSchemaBuilder.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ internal sealed class ResourceFieldObjectSchemaBuilder
3030
private readonly ResourceTypeSchemaGenerator _resourceTypeSchemaGenerator;
3131
private readonly NullableReferenceSchemaGenerator _nullableReferenceSchemaGenerator;
3232
private readonly IDictionary<string, OpenApiSchema> _schemasForResourceFields;
33-
private readonly RelationshipDataTypeFactory _relationshipDataTypeFactory = new();
3433

3534
public ResourceFieldObjectSchemaBuilder(ResourceTypeInfo resourceTypeInfo, ISchemaRepositoryAccessor schemaRepositoryAccessor,
3635
SchemaGenerator defaultSchemaGenerator, JsonApiSchemaIdSelector jsonApiSchemaIdSelector, ResourceTypeSchemaGenerator resourceTypeSchemaGenerator)
@@ -228,11 +227,11 @@ private void AddRelationshipDataSchemaToResourceObject(RelationshipAttribute rel
228227
}
229228
}
230229

231-
private Type GetRelationshipDataType(RelationshipAttribute relationship, Type resourceObjectType)
230+
private static Type GetRelationshipDataType(RelationshipAttribute relationship, Type resourceObjectType)
232231
{
233232
return resourceObjectType.GetGenericTypeDefinition().IsAssignableTo(typeof(ResourceResponseObject<>))
234-
? _relationshipDataTypeFactory.GetForResponse(relationship)
235-
: _relationshipDataTypeFactory.GetForRequest(relationship);
233+
? RelationshipDataTypeFactory.Instance.GetForResponse(relationship)
234+
: RelationshipDataTypeFactory.Instance.GetForRequest(relationship);
236235
}
237236

238237
private OpenApiSchema? GetReferenceSchemaForRelationshipData(Type relationshipDataType)

0 commit comments

Comments
 (0)