Skip to content

Commit d10d51b

Browse files
committed
Reorder constructor parameters: IJsonApiOptions before IResourceGraph
1 parent 5454188 commit d10d51b

File tree

8 files changed

+40
-41
lines changed

8 files changed

+40
-41
lines changed

src/JsonApiDotNetCore.OpenApi.Swashbuckle/ConfigureSwaggerGenOptions.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,22 @@ internal sealed class ConfigureSwaggerGenOptions : IConfigureOptions<SwaggerGenO
2424
typeof(RemoveFromRelationshipOperation<>)
2525
];
2626

27-
private readonly IControllerResourceMapping _controllerResourceMapping;
28-
private readonly OpenApiOperationIdSelector _openApiOperationIdSelector;
27+
private readonly OpenApiOperationIdSelector _operationIdSelector;
2928
private readonly JsonApiSchemaIdSelector _schemaIdSelector;
29+
private readonly IControllerResourceMapping _controllerResourceMapping;
3030
private readonly IResourceGraph _resourceGraph;
3131

32-
public ConfigureSwaggerGenOptions(IControllerResourceMapping controllerResourceMapping, OpenApiOperationIdSelector openApiOperationIdSelector,
33-
JsonApiSchemaIdSelector schemaIdSelector, IResourceGraph resourceGraph)
32+
public ConfigureSwaggerGenOptions(OpenApiOperationIdSelector operationIdSelector, JsonApiSchemaIdSelector schemaIdSelector,
33+
IControllerResourceMapping controllerResourceMapping, IResourceGraph resourceGraph)
3434
{
35-
ArgumentGuard.NotNull(controllerResourceMapping);
36-
ArgumentGuard.NotNull(openApiOperationIdSelector);
35+
ArgumentGuard.NotNull(operationIdSelector);
3736
ArgumentGuard.NotNull(schemaIdSelector);
37+
ArgumentGuard.NotNull(controllerResourceMapping);
3838
ArgumentGuard.NotNull(resourceGraph);
3939

40-
_controllerResourceMapping = controllerResourceMapping;
41-
_openApiOperationIdSelector = openApiOperationIdSelector;
40+
_operationIdSelector = operationIdSelector;
4241
_schemaIdSelector = schemaIdSelector;
42+
_controllerResourceMapping = controllerResourceMapping;
4343
_resourceGraph = resourceGraph;
4444
}
4545

@@ -54,7 +54,7 @@ public void Configure(SwaggerGenOptions options)
5454
options.SelectSubTypesUsing(SelectDerivedTypes);
5555

5656
options.TagActionsBy(description => GetOpenApiOperationTags(description, _controllerResourceMapping));
57-
options.CustomOperationIds(_openApiOperationIdSelector.GetOpenApiOperationId);
57+
options.CustomOperationIds(_operationIdSelector.GetOpenApiOperationId);
5858
options.CustomSchemaIds(_schemaIdSelector.GetSchemaId);
5959

6060
options.DocumentFilter<ServerDocumentFilter>();

src/JsonApiDotNetCore.OpenApi.Swashbuckle/JsonApiSchemaIdSelector.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,16 +64,16 @@ internal sealed class JsonApiSchemaIdSelector
6464
[typeof(RemoveFromRelationshipOperation<>)] = "Temporary Remove From [ResourceName] To Many Relationship Operation"
6565
};
6666

67-
private readonly IResourceGraph _resourceGraph;
6867
private readonly IJsonApiOptions _options;
68+
private readonly IResourceGraph _resourceGraph;
6969

70-
public JsonApiSchemaIdSelector(IResourceGraph resourceGraph, IJsonApiOptions options)
70+
public JsonApiSchemaIdSelector(IJsonApiOptions options, IResourceGraph resourceGraph)
7171
{
72-
ArgumentGuard.NotNull(resourceGraph);
7372
ArgumentGuard.NotNull(options);
73+
ArgumentGuard.NotNull(resourceGraph);
7474

75-
_resourceGraph = resourceGraph;
7675
_options = options;
76+
_resourceGraph = resourceGraph;
7777
}
7878

7979
public string GetSchemaId(Type type)

src/JsonApiDotNetCore.OpenApi.Swashbuckle/SchemaGenerators/Bodies/AtomicOperationsBodySchemaGenerator.cs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,16 @@ internal sealed class AtomicOperationsBodySchemaGenerator : BodySchemaGenerator
2323
private readonly AbstractAtomicOperationSchemaGenerator _abstractAtomicOperationSchemaGenerator;
2424
private readonly DataContainerSchemaGenerator _dataContainerSchemaGenerator;
2525
private readonly IAtomicOperationFilter _atomicOperationFilter;
26-
private readonly JsonApiSchemaIdSelector _jsonApiSchemaIdSelector;
26+
private readonly JsonApiSchemaIdSelector _schemaIdSelector;
2727
private readonly ResourceFieldValidationMetadataProvider _resourceFieldValidationMetadataProvider;
2828
private readonly IResourceGraph _resourceGraph;
2929

3030
public AtomicOperationsBodySchemaGenerator(SchemaGenerator defaultSchemaGenerator, AtomicOperationCodeSchemaGenerator atomicOperationCodeSchemaGenerator,
3131
ResourceIdentifierSchemaGenerator resourceIdentifierSchemaGenerator, RelationshipIdentifierSchemaGenerator relationshipIdentifierSchemaGenerator,
3232
AbstractAtomicOperationSchemaGenerator abstractAtomicOperationSchemaGenerator, DataContainerSchemaGenerator dataContainerSchemaGenerator,
3333
MetaSchemaGenerator metaSchemaGenerator, LinksVisibilitySchemaGenerator linksVisibilitySchemaGenerator, IAtomicOperationFilter atomicOperationFilter,
34-
JsonApiSchemaIdSelector jsonApiSchemaIdSelector, ResourceFieldValidationMetadataProvider resourceFieldValidationMetadataProvider,
35-
IResourceGraph resourceGraph, IJsonApiOptions options)
34+
JsonApiSchemaIdSelector schemaIdSelector, ResourceFieldValidationMetadataProvider resourceFieldValidationMetadataProvider, IJsonApiOptions options,
35+
IResourceGraph resourceGraph)
3636
: base(metaSchemaGenerator, linksVisibilitySchemaGenerator, options)
3737
{
3838
ArgumentGuard.NotNull(defaultSchemaGenerator);
@@ -42,10 +42,9 @@ public AtomicOperationsBodySchemaGenerator(SchemaGenerator defaultSchemaGenerato
4242
ArgumentGuard.NotNull(abstractAtomicOperationSchemaGenerator);
4343
ArgumentGuard.NotNull(dataContainerSchemaGenerator);
4444
ArgumentGuard.NotNull(atomicOperationFilter);
45-
ArgumentGuard.NotNull(jsonApiSchemaIdSelector);
45+
ArgumentGuard.NotNull(schemaIdSelector);
4646
ArgumentGuard.NotNull(resourceFieldValidationMetadataProvider);
4747
ArgumentGuard.NotNull(resourceGraph);
48-
ArgumentGuard.NotNull(options);
4948

5049
_defaultSchemaGenerator = defaultSchemaGenerator;
5150
_atomicOperationCodeSchemaGenerator = atomicOperationCodeSchemaGenerator;
@@ -54,7 +53,7 @@ public AtomicOperationsBodySchemaGenerator(SchemaGenerator defaultSchemaGenerato
5453
_abstractAtomicOperationSchemaGenerator = abstractAtomicOperationSchemaGenerator;
5554
_dataContainerSchemaGenerator = dataContainerSchemaGenerator;
5655
_atomicOperationFilter = atomicOperationFilter;
57-
_jsonApiSchemaIdSelector = jsonApiSchemaIdSelector;
56+
_schemaIdSelector = schemaIdSelector;
5857
_resourceFieldValidationMetadataProvider = resourceFieldValidationMetadataProvider;
5958
_resourceGraph = resourceGraph;
6059
}
@@ -147,7 +146,7 @@ private void GenerateSchemaForResourceOperation(Type operationOpenType, Resource
147146
OpenApiSchema fullSchemaForDerivedType = fullSchemaForOperation.UnwrapLastExtendedSchema();
148147
SetOperationCode(fullSchemaForDerivedType, operationCode, schemaRepository);
149148

150-
string discriminatorValue = _jsonApiSchemaIdSelector.GetAtomicOperationDiscriminatorValue(operationCode, resourceType);
149+
string discriminatorValue = _schemaIdSelector.GetAtomicOperationDiscriminatorValue(operationCode, resourceType);
151150
_abstractAtomicOperationSchemaGenerator.MapDiscriminator(referenceSchemaForOperation, discriminatorValue, schemaRepository);
152151
}
153152

@@ -188,7 +187,7 @@ private void GenerateSchemaForRelationshipOperation(Type operationOpenType, Rela
188187
// This complicated implementation that generates a temporary schema stems from the fact that GetSchemaId takes a Type.
189188
// We could feed it a constructed type with TLeftResource and TRightResource, but there's no way to include
190189
// the relationship name because there's no runtime Type available for it.
191-
string schemaId = _jsonApiSchemaIdSelector.GetRelationshipAtomicOperationSchemaId(relationship, operationCode);
190+
string schemaId = _schemaIdSelector.GetRelationshipAtomicOperationSchemaId(relationship, operationCode);
192191

193192
OpenApiSchema referenceSchemaForOperation = _defaultSchemaGenerator.GenerateSchema(operationConstructedType, schemaRepository);
194193
OpenApiSchema fullSchemaForOperation = schemaRepository.Schemas[referenceSchemaForOperation.Reference.Id];
@@ -203,7 +202,7 @@ private void GenerateSchemaForRelationshipOperation(Type operationOpenType, Rela
203202
schemaRepository.ReplaceSchemaId(operationConstructedType, schemaId);
204203
referenceSchemaForOperation.Reference.Id = schemaId;
205204

206-
string discriminatorValue = _jsonApiSchemaIdSelector.GetAtomicOperationDiscriminatorValue(operationCode, relationship);
205+
string discriminatorValue = _schemaIdSelector.GetAtomicOperationDiscriminatorValue(operationCode, relationship);
207206
_abstractAtomicOperationSchemaGenerator.MapDiscriminator(referenceSchemaForOperation, discriminatorValue, schemaRepository);
208207
}
209208

src/JsonApiDotNetCore.OpenApi.Swashbuckle/SchemaGenerators/Bodies/ResourceOrRelationshipBodySchemaGenerator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ internal sealed class ResourceOrRelationshipBodySchemaGenerator : BodySchemaGene
3838
private readonly IResourceGraph _resourceGraph;
3939

4040
public ResourceOrRelationshipBodySchemaGenerator(SchemaGenerator defaultSchemaGenerator, DataContainerSchemaGenerator dataContainerSchemaGenerator,
41-
MetaSchemaGenerator metaSchemaGenerator, LinksVisibilitySchemaGenerator linksVisibilitySchemaGenerator, IResourceGraph resourceGraph,
42-
IJsonApiOptions options)
41+
MetaSchemaGenerator metaSchemaGenerator, LinksVisibilitySchemaGenerator linksVisibilitySchemaGenerator, IJsonApiOptions options,
42+
IResourceGraph resourceGraph)
4343
: base(metaSchemaGenerator, linksVisibilitySchemaGenerator, options)
4444
{
4545
ArgumentGuard.NotNull(defaultSchemaGenerator);

src/JsonApiDotNetCore.OpenApi.Swashbuckle/SchemaGenerators/Components/DataSchemaGenerator.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,16 @@ internal sealed class DataSchemaGenerator
2727
private readonly ResourceIdSchemaGenerator _resourceIdSchemaGenerator;
2828
private readonly ResourceIdentifierSchemaGenerator _resourceIdentifierSchemaGenerator;
2929
private readonly LinksVisibilitySchemaGenerator _linksVisibilitySchemaGenerator;
30-
private readonly IResourceGraph _resourceGraph;
3130
private readonly IJsonApiOptions _options;
31+
private readonly IResourceGraph _resourceGraph;
3232
private readonly ResourceFieldValidationMetadataProvider _resourceFieldValidationMetadataProvider;
3333
private readonly RelationshipTypeFactory _relationshipTypeFactory;
3434
private readonly ResourceDocumentationReader _resourceDocumentationReader;
3535

3636
public DataSchemaGenerator(SchemaGenerator defaultSchemaGenerator, GenerationCacheSchemaGenerator generationCacheSchemaGenerator,
3737
ResourceTypeSchemaGenerator resourceTypeSchemaGenerator, ResourceIdSchemaGenerator resourceIdSchemaGenerator,
3838
ResourceIdentifierSchemaGenerator resourceIdentifierSchemaGenerator, LinksVisibilitySchemaGenerator linksVisibilitySchemaGenerator,
39-
IResourceGraph resourceGraph, IJsonApiOptions options, ResourceFieldValidationMetadataProvider resourceFieldValidationMetadataProvider,
39+
IJsonApiOptions options, IResourceGraph resourceGraph, ResourceFieldValidationMetadataProvider resourceFieldValidationMetadataProvider,
4040
RelationshipTypeFactory relationshipTypeFactory, ResourceDocumentationReader resourceDocumentationReader)
4141
{
4242
ArgumentGuard.NotNull(defaultSchemaGenerator);
@@ -45,8 +45,8 @@ public DataSchemaGenerator(SchemaGenerator defaultSchemaGenerator, GenerationCac
4545
ArgumentGuard.NotNull(resourceIdSchemaGenerator);
4646
ArgumentGuard.NotNull(resourceIdentifierSchemaGenerator);
4747
ArgumentGuard.NotNull(linksVisibilitySchemaGenerator);
48-
ArgumentGuard.NotNull(resourceGraph);
4948
ArgumentGuard.NotNull(options);
49+
ArgumentGuard.NotNull(resourceGraph);
5050
ArgumentGuard.NotNull(resourceFieldValidationMetadataProvider);
5151
ArgumentGuard.NotNull(relationshipTypeFactory);
5252
ArgumentGuard.NotNull(resourceDocumentationReader);
@@ -57,8 +57,8 @@ public DataSchemaGenerator(SchemaGenerator defaultSchemaGenerator, GenerationCac
5757
_resourceIdSchemaGenerator = resourceIdSchemaGenerator;
5858
_resourceIdentifierSchemaGenerator = resourceIdentifierSchemaGenerator;
5959
_linksVisibilitySchemaGenerator = linksVisibilitySchemaGenerator;
60-
_resourceGraph = resourceGraph;
6160
_options = options;
61+
_resourceGraph = resourceGraph;
6262
_resourceFieldValidationMetadataProvider = resourceFieldValidationMetadataProvider;
6363
_relationshipTypeFactory = relationshipTypeFactory;
6464
_resourceDocumentationReader = resourceDocumentationReader;

src/JsonApiDotNetCore.OpenApi.Swashbuckle/SchemaGenerators/Components/LinksVisibilitySchemaGenerator.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,12 @@ internal sealed class LinksVisibilitySchemaGenerator
6262

6363
private readonly Lazy<LinksVisibility> _lazyLinksVisibility;
6464

65-
public LinksVisibilitySchemaGenerator(IResourceGraph resourceGraph, IJsonApiOptions options)
65+
public LinksVisibilitySchemaGenerator(IJsonApiOptions options, IResourceGraph resourceGraph)
6666
{
67-
ArgumentGuard.NotNull(resourceGraph);
6867
ArgumentGuard.NotNull(options);
68+
ArgumentGuard.NotNull(resourceGraph);
6969

70-
_lazyLinksVisibility = new Lazy<LinksVisibility>(() => new LinksVisibility(resourceGraph, options), LazyThreadSafetyMode.ExecutionAndPublication);
70+
_lazyLinksVisibility = new Lazy<LinksVisibility>(() => new LinksVisibility(options, resourceGraph), LazyThreadSafetyMode.ExecutionAndPublication);
7171
}
7272

7373
public void UpdateSchemaForTopLevel(Type modelType, OpenApiSchema fullSchemaForLinksContainer, SchemaRepository schemaRepository)
@@ -142,10 +142,10 @@ private sealed class LinksVisibility
142142
public LinkTypes ResourceLinks { get; }
143143
public LinkTypes RelationshipLinks { get; }
144144

145-
public LinksVisibility(IResourceGraph resourceGraph, IJsonApiOptions options)
145+
public LinksVisibility(IJsonApiOptions options, IResourceGraph resourceGraph)
146146
{
147-
ArgumentGuard.NotNull(resourceGraph);
148147
ArgumentGuard.NotNull(options);
148+
ArgumentGuard.NotNull(resourceGraph);
149149

150150
var unionTopLevelLinks = LinkTypes.None;
151151
var unionResourceLinks = LinkTypes.None;

src/JsonApiDotNetCore.OpenApi.Swashbuckle/SchemaGenerators/Components/RelationshipIdentifierSchemaGenerator.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,31 +22,31 @@ internal sealed class RelationshipIdentifierSchemaGenerator
2222
private readonly ResourceTypeSchemaGenerator _resourceTypeSchemaGenerator;
2323
private readonly ResourceIdSchemaGenerator _resourceIdSchemaGenerator;
2424
private readonly RelationshipNameSchemaGenerator _relationshipNameSchemaGenerator;
25-
private readonly JsonApiSchemaIdSelector _jsonApiSchemaIdSelector;
25+
private readonly JsonApiSchemaIdSelector _schemaIdSelector;
2626

2727
public RelationshipIdentifierSchemaGenerator(SchemaGenerator defaultSchemaGenerator, ResourceTypeSchemaGenerator resourceTypeSchemaGenerator,
2828
ResourceIdSchemaGenerator resourceIdSchemaGenerator, RelationshipNameSchemaGenerator relationshipNameSchemaGenerator,
29-
JsonApiSchemaIdSelector jsonApiSchemaIdSelector)
29+
JsonApiSchemaIdSelector schemaIdSelector)
3030
{
3131
ArgumentGuard.NotNull(defaultSchemaGenerator);
3232
ArgumentGuard.NotNull(resourceTypeSchemaGenerator);
3333
ArgumentGuard.NotNull(resourceIdSchemaGenerator);
3434
ArgumentGuard.NotNull(relationshipNameSchemaGenerator);
35-
ArgumentGuard.NotNull(jsonApiSchemaIdSelector);
35+
ArgumentGuard.NotNull(schemaIdSelector);
3636

3737
_defaultSchemaGenerator = defaultSchemaGenerator;
3838
_resourceTypeSchemaGenerator = resourceTypeSchemaGenerator;
3939
_resourceIdSchemaGenerator = resourceIdSchemaGenerator;
4040
_relationshipNameSchemaGenerator = relationshipNameSchemaGenerator;
41-
_jsonApiSchemaIdSelector = jsonApiSchemaIdSelector;
41+
_schemaIdSelector = schemaIdSelector;
4242
}
4343

4444
public OpenApiSchema GenerateSchema(RelationshipAttribute relationship, SchemaRepository schemaRepository)
4545
{
4646
ArgumentGuard.NotNull(relationship);
4747
ArgumentGuard.NotNull(schemaRepository);
4848

49-
string schemaId = _jsonApiSchemaIdSelector.GetRelationshipIdentifierSchemaId(relationship);
49+
string schemaId = _schemaIdSelector.GetRelationshipIdentifierSchemaId(relationship);
5050

5151
if (schemaRepository.Schemas.ContainsKey(schemaId))
5252
{

src/JsonApiDotNetCore.OpenApi.Swashbuckle/SwaggerComponents/JsonApiDataContractResolver.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ namespace JsonApiDotNetCore.OpenApi.Swashbuckle.SwaggerComponents;
1111
/// </summary>
1212
internal sealed class JsonApiDataContractResolver : ISerializerDataContractResolver
1313
{
14-
private readonly JsonSerializerDataContractResolver _dataContractResolver;
1514
private readonly IResourceGraph _resourceGraph;
15+
private readonly JsonSerializerDataContractResolver _dataContractResolver;
1616

17-
public JsonApiDataContractResolver(IResourceGraph resourceGraph, IJsonApiOptions options)
17+
public JsonApiDataContractResolver(IJsonApiOptions options, IResourceGraph resourceGraph)
1818
{
19-
ArgumentGuard.NotNull(resourceGraph);
2019
ArgumentGuard.NotNull(options);
20+
ArgumentGuard.NotNull(resourceGraph);
2121

2222
_resourceGraph = resourceGraph;
2323
_dataContractResolver = new JsonSerializerDataContractResolver(options.SerializerOptions);

0 commit comments

Comments
 (0)