Skip to content

Commit b81f213

Browse files
committed
Post-merge fixes
1 parent cbb6cb2 commit b81f213

File tree

11 files changed

+54
-63
lines changed

11 files changed

+54
-63
lines changed

.github/workflows/build.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ name: Build
1010

1111
on:
1212
push:
13-
branches: [ 'master', 'release/**' ]
13+
branches: [ 'master', 'release/**', 'openapi' ]
1414
pull_request:
15-
branches: [ 'master', 'release/**' ]
15+
branches: [ 'master', 'release/**', 'openapi' ]
1616
tags:
1717
- 'v*'
1818

Build.ps1

-9
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,6 @@ function VerifySuccessExitCode {
77
Write-Host "$(pwsh --version)"
88
Write-Host "Active .NET SDK: $(dotnet --version)"
99

10-
# In a PR the base branch needs to be fetched in order for regitlint to work.
11-
function FetchBaseBranchIfNotMaster() {
12-
if ($env:APPVEYOR_PULL_REQUEST_NUMBER -And $env:APPVEYOR_REPO_BRANCH -ne "master") {
13-
git fetch -q origin ${env:APPVEYOR_REPO_BRANCH}:${env:APPVEYOR_REPO_BRANCH}
14-
}
15-
}
16-
17-
FetchBaseBranchIfNotMaster
18-
1910
dotnet tool restore
2011
VerifySuccessExitCode
2112

src/JsonApiDotNetCore.OpenApi.Client/ArgumentGuard.cs

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using SysNotNull = System.Diagnostics.CodeAnalysis.NotNullAttribute;
44

55
#pragma warning disable AV1008 // Class should not be static
6-
#pragma warning disable AV1553 // Do not use optional parameters with default value null for strings, collections or tasks
76

87
namespace JsonApiDotNetCore.OpenApi.Client;
98

src/JsonApiDotNetCore.OpenApi.Client/JsonApiDotNetCore.OpenApi.Client.csproj

-4
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,6 @@
2121
<DebugType>embedded</DebugType>
2222
</PropertyGroup>
2323

24-
<PropertyGroup Condition="'$(APPVEYOR)' != ''">
25-
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
26-
</PropertyGroup>
27-
2824
<ItemGroup>
2925
<None Include="..\..\logo.png" Visible="false" Pack="True" PackagePath="" />
3026
<None Include="..\..\PackageReadme.md" Visible="false" Pack="True" PackagePath="" />

src/JsonApiDotNetCore.OpenApi/JsonApiDotNetCore.OpenApi.csproj

-4
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,6 @@
2121
<DebugType>embedded</DebugType>
2222
</PropertyGroup>
2323

24-
<PropertyGroup Condition="'$(APPVEYOR)' != ''">
25-
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
26-
</PropertyGroup>
27-
2824
<ItemGroup>
2925
<None Include="..\..\logo.png" Visible="false" Pack="True" PackagePath="" />
3026
<None Include="..\..\PackageReadme.md" Visible="false" Pack="True" PackagePath="" />

src/JsonApiDotNetCore.OpenApi/JsonApiOperationIdSelector.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -116,15 +116,15 @@ private string ApplyTemplate(string operationIdTemplate, ResourceType resourceTy
116116
string relationshipName = operationIdTemplate.Contains("[RelationshipName]") ? endpoint.RelativePath.Split("/").Last() : string.Empty;
117117

118118
// @formatter:wrap_chained_method_calls chop_always
119-
// @formatter:keep_existing_linebreaks true
119+
// @formatter:wrap_before_first_method_call true true
120120

121121
string pascalCaseOperationId = operationIdTemplate
122122
.Replace("[Method]", method)
123123
.Replace("[PrimaryResourceName]", resourceType.PublicName.Singularize())
124124
.Replace("[RelationshipName]", relationshipName)
125125
.ToPascalCase();
126126

127-
// @formatter:keep_existing_linebreaks restore
127+
// @formatter:wrap_before_first_method_call true restore
128128
// @formatter:wrap_chained_method_calls restore
129129

130130
return _namingPolicy != null ? _namingPolicy.ConvertName(pascalCaseOperationId) : pascalCaseOperationId;

src/JsonApiDotNetCore.OpenApi/SwaggerComponents/ResourceObjectSchemaGenerator.cs

+16-8
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ internal sealed class ResourceObjectSchemaGenerator
99
{
1010
private readonly SchemaGenerator _defaultSchemaGenerator;
1111
private readonly IResourceGraph _resourceGraph;
12+
private readonly IJsonApiOptions _options;
1213
private readonly ISchemaRepositoryAccessor _schemaRepositoryAccessor;
1314
private readonly ResourceTypeSchemaGenerator _resourceTypeSchemaGenerator;
14-
private readonly bool _allowClientGeneratedIds;
1515
private readonly Func<ResourceTypeInfo, ResourceFieldObjectSchemaBuilder> _resourceFieldObjectSchemaBuilderFactory;
1616

1717
public ResourceObjectSchemaGenerator(SchemaGenerator defaultSchemaGenerator, IResourceGraph resourceGraph, IJsonApiOptions options,
@@ -24,12 +24,11 @@ public ResourceObjectSchemaGenerator(SchemaGenerator defaultSchemaGenerator, IRe
2424

2525
_defaultSchemaGenerator = defaultSchemaGenerator;
2626
_resourceGraph = resourceGraph;
27+
_options = options;
2728
_schemaRepositoryAccessor = schemaRepositoryAccessor;
2829

2930
_resourceTypeSchemaGenerator = new ResourceTypeSchemaGenerator(schemaRepositoryAccessor, resourceGraph, options.SerializerOptions.PropertyNamingPolicy);
3031

31-
_allowClientGeneratedIds = options.AllowClientGeneratedIds;
32-
3332
_resourceFieldObjectSchemaBuilderFactory = resourceTypeInfo => new ResourceFieldObjectSchemaBuilder(resourceTypeInfo, schemaRepositoryAccessor,
3433
defaultSchemaGenerator, _resourceTypeSchemaGenerator, options.SerializerOptions.PropertyNamingPolicy);
3534
}
@@ -43,7 +42,7 @@ public OpenApiSchema GenerateSchema(Type resourceObjectType)
4342
var resourceTypeInfo = ResourceTypeInfo.Create(resourceObjectType, _resourceGraph);
4443
ResourceFieldObjectSchemaBuilder fieldObjectBuilder = _resourceFieldObjectSchemaBuilderFactory(resourceTypeInfo);
4544

46-
RemoveResourceIdIfPostResourceObject(resourceTypeInfo.ResourceObjectOpenType, fullSchemaForResourceObject);
45+
RemoveResourceIdIfPostResourceObject(resourceTypeInfo, fullSchemaForResourceObject);
4746

4847
SetResourceType(fullSchemaForResourceObject, resourceTypeInfo.ResourceType.ClrType);
4948

@@ -76,12 +75,21 @@ public OpenApiSchema GenerateSchema(Type resourceObjectType)
7675
return (fullSchema, referenceSchema);
7776
}
7877

79-
private void RemoveResourceIdIfPostResourceObject(Type resourceObjectOpenType, OpenApiSchema fullSchemaForResourceObject)
78+
private void RemoveResourceIdIfPostResourceObject(ResourceTypeInfo resourceTypeInfo, OpenApiSchema fullSchemaForResourceObject)
8079
{
81-
if (resourceObjectOpenType == typeof(ResourceObjectInPostRequest<>) && !_allowClientGeneratedIds)
80+
if (resourceTypeInfo.ResourceObjectOpenType == typeof(ResourceObjectInPostRequest<>))
8281
{
83-
fullSchemaForResourceObject.Required.Remove(JsonApiObjectPropertyName.Id);
84-
fullSchemaForResourceObject.Properties.Remove(JsonApiObjectPropertyName.Id);
82+
ClientIdGenerationMode clientIdGeneration = resourceTypeInfo.ResourceType.ClientIdGeneration ?? _options.ClientIdGeneration;
83+
84+
if (clientIdGeneration == ClientIdGenerationMode.Forbidden)
85+
{
86+
fullSchemaForResourceObject.Required.Remove(JsonApiObjectPropertyName.Id);
87+
fullSchemaForResourceObject.Properties.Remove(JsonApiObjectPropertyName.Id);
88+
}
89+
else if (clientIdGeneration == ClientIdGenerationMode.Allowed)
90+
{
91+
fullSchemaForResourceObject.Required.Remove(JsonApiObjectPropertyName.Id);
92+
}
8593
}
8694
}
8795

test/OpenApiClientTests/LegacyClient/ResponseTests.cs

+32-32
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ public async Task Getting_resource_translates_response()
153153

154154
const string responseBody = @"{
155155
""links"": {
156-
""self"": """ + HostPrefix + @"flights/" + flightId + @"&fields[flights]=departs-at,arrives-at""
156+
""self"": """ + HostPrefix + "flights/" + flightId + @"&fields[flights]=departs-at,arrives-at""
157157
},
158158
""data"": {
159159
""type"": ""flights"",
@@ -163,7 +163,7 @@ public async Task Getting_resource_translates_response()
163163
""arrives-at"": """ + arrivesAtWithUtcOffset + @"""
164164
},
165165
""links"": {
166-
""self"": """ + HostPrefix + @"flights/" + flightId + @"""
166+
""self"": """ + HostPrefix + "flights/" + flightId + @"""
167167
}
168168
}
169169
}";
@@ -227,16 +227,16 @@ public async Task Posting_resource_translates_response()
227227

228228
const string responseBody = @"{
229229
""links"": {
230-
""self"": """ + HostPrefix + @"flights/" + flightId + @"&fields[flights]&include=purser,cabin-crew-members,passengers""
230+
""self"": """ + HostPrefix + "flights/" + flightId + @"&fields[flights]&include=purser,cabin-crew-members,passengers""
231231
},
232232
""data"": {
233233
""type"": ""flights"",
234234
""id"": """ + flightId + @""",
235235
""relationships"": {
236236
""purser"": {
237237
""links"": {
238-
""self"": """ + HostPrefix + @"flights/" + flightId + @"/relationships/purser"",
239-
""related"": """ + HostPrefix + @"flights/" + flightId + @"/purser""
238+
""self"": """ + HostPrefix + "flights/" + flightId + @"/relationships/purser"",
239+
""related"": """ + HostPrefix + "flights/" + flightId + @"/purser""
240240
},
241241
""data"": {
242242
""type"": ""flight-attendants"",
@@ -245,8 +245,8 @@ public async Task Posting_resource_translates_response()
245245
},
246246
""cabin-crew-members"": {
247247
""links"": {
248-
""self"": """ + HostPrefix + @"flights/" + flightId + @"/relationships/cabin-crew-members"",
249-
""related"": """ + HostPrefix + @"flights/" + flightId + @"/cabin-crew-members""
248+
""self"": """ + HostPrefix + "flights/" + flightId + @"/relationships/cabin-crew-members"",
249+
""related"": """ + HostPrefix + "flights/" + flightId + @"/cabin-crew-members""
250250
},
251251
""data"": [
252252
{
@@ -257,14 +257,14 @@ public async Task Posting_resource_translates_response()
257257
},
258258
""passengers"": {
259259
""links"": {
260-
""self"": """ + HostPrefix + @"flights/" + flightId + @"/relationships/passengers"",
261-
""related"": """ + HostPrefix + @"flights/" + flightId + @"/passengers""
260+
""self"": """ + HostPrefix + "flights/" + flightId + @"/relationships/passengers"",
261+
""related"": """ + HostPrefix + "flights/" + flightId + @"/passengers""
262262
},
263263
""data"": [ ]
264264
}
265265
},
266266
""links"": {
267-
""self"": """ + HostPrefix + @"flights/" + flightId + @"&fields[flights]&include=purser,cabin-crew-members,passengers""
267+
""self"": """ + HostPrefix + "flights/" + flightId + @"&fields[flights]&include=purser,cabin-crew-members,passengers""
268268
}
269269
}
270270
}";
@@ -310,13 +310,13 @@ public async Task Patching_resource_with_side_effects_translates_response()
310310

311311
const string responseBody = @"{
312312
""links"": {
313-
""self"": """ + HostPrefix + @"flights/" + flightId + @"&fields[flights]""
313+
""self"": """ + HostPrefix + "flights/" + flightId + @"&fields[flights]""
314314
},
315315
""data"": {
316316
""type"": ""flights"",
317317
""id"": """ + flightId + @""",
318318
""links"": {
319-
""self"": """ + HostPrefix + @"flights/" + flightId + @"&fields[flights]&include=purser,cabin-crew-members,passengers""
319+
""self"": """ + HostPrefix + "flights/" + flightId + @"&fields[flights]&include=purser,cabin-crew-members,passengers""
320320
}
321321
}
322322
}";
@@ -390,9 +390,9 @@ public async Task Getting_secondary_resource_translates_response()
390390

391391
const string responseBody = @"{
392392
""links"": {
393-
""self"": """ + HostPrefix + @"flights/" + flightId + @"/purser"",
394-
""first"": """ + HostPrefix + @"flights/" + flightId + @"/purser"",
395-
""last"": """ + HostPrefix + @"flights/" + flightId + @"/purser""
393+
""self"": """ + HostPrefix + "flights/" + flightId + @"/purser"",
394+
""first"": """ + HostPrefix + "flights/" + flightId + @"/purser"",
395+
""last"": """ + HostPrefix + "flights/" + flightId + @"/purser""
396396
},
397397
""data"": {
398398
""type"": ""flight-attendants"",
@@ -406,19 +406,19 @@ public async Task Getting_secondary_resource_translates_response()
406406
""relationships"": {
407407
""scheduled-for-flights"": {
408408
""links"": {
409-
""self"": """ + HostPrefix + @"flight-attendants/" + purserId + @"/relationships/scheduled-for-flights"",
410-
""related"": """ + HostPrefix + @"flight-attendants/" + purserId + @"/scheduled-for-flights""
409+
""self"": """ + HostPrefix + "flight-attendants/" + purserId + @"/relationships/scheduled-for-flights"",
410+
""related"": """ + HostPrefix + "flight-attendants/" + purserId + @"/scheduled-for-flights""
411411
}
412412
},
413413
""purser-on-flights"": {
414414
""links"": {
415-
""self"": """ + HostPrefix + @"flight-attendants/" + purserId + @"/relationships/purser-on-flights"",
416-
""related"": """ + HostPrefix + @"flight-attendants/" + purserId + @"/purser-on-flights""
415+
""self"": """ + HostPrefix + "flight-attendants/" + purserId + @"/relationships/purser-on-flights"",
416+
""related"": """ + HostPrefix + "flight-attendants/" + purserId + @"/purser-on-flights""
417417
}
418418
},
419419
},
420420
""links"": {
421-
""self"": """ + HostPrefix + @"flight-attendants/" + purserId + @""",
421+
""self"": """ + HostPrefix + "flight-attendants/" + purserId + @""",
422422
}
423423
}
424424
}";
@@ -446,9 +446,9 @@ public async Task Getting_nullable_secondary_resource_translates_response()
446446

447447
const string responseBody = @"{
448448
""links"": {
449-
""self"": """ + HostPrefix + @"flights/" + flightId + @"/backup-purser"",
450-
""first"": """ + HostPrefix + @"flights/" + flightId + @"/backup-purser"",
451-
""last"": """ + HostPrefix + @"flights/" + flightId + @"/backup-purser""
449+
""self"": """ + HostPrefix + "flights/" + flightId + @"/backup-purser"",
450+
""first"": """ + HostPrefix + "flights/" + flightId + @"/backup-purser"",
451+
""last"": """ + HostPrefix + "flights/" + flightId + @"/backup-purser""
452452
},
453453
""data"": null
454454
}";
@@ -471,8 +471,8 @@ public async Task Getting_secondary_resources_translates_response()
471471

472472
const string responseBody = @"{
473473
""links"": {
474-
""self"": """ + HostPrefix + @"flights/" + flightId + @"/cabin-crew-members"",
475-
""first"": """ + HostPrefix + @"flights/" + flightId + @"/cabin-crew-members""
474+
""self"": """ + HostPrefix + "flights/" + flightId + @"/cabin-crew-members"",
475+
""first"": """ + HostPrefix + "flights/" + flightId + @"/cabin-crew-members""
476476
},
477477
""data"": [ ]
478478
}";
@@ -495,8 +495,8 @@ public async Task Getting_nullable_ToOne_relationship_translates_response()
495495

496496
const string responseBody = @"{
497497
""links"": {
498-
""self"": """ + HostPrefix + @"flights/" + flightId + @"/relationships/backup-purser"",
499-
""related"": """ + HostPrefix + @"flights/" + flightId + @"/relationships/backup-purser""
498+
""self"": """ + HostPrefix + "flights/" + flightId + @"/relationships/backup-purser"",
499+
""related"": """ + HostPrefix + "flights/" + flightId + @"/relationships/backup-purser""
500500
},
501501
""data"": null
502502
}";
@@ -520,8 +520,8 @@ public async Task Getting_ToOne_relationship_translates_response()
520520

521521
const string responseBody = @"{
522522
""links"": {
523-
""self"": """ + HostPrefix + @"flights/" + flightId + @"/relationships/purser"",
524-
""related"": """ + HostPrefix + @"flights/" + flightId + @"/relationships/purser""
523+
""self"": """ + HostPrefix + "flights/" + flightId + @"/relationships/purser"",
524+
""related"": """ + HostPrefix + "flights/" + flightId + @"/relationships/purser""
525525
},
526526
""data"": {
527527
""type"": ""flight-attendants"",
@@ -569,9 +569,9 @@ public async Task Getting_ToMany_relationship_translates_response()
569569

570570
const string responseBody = @"{
571571
""links"": {
572-
""self"": """ + HostPrefix + @"flights/" + flightId + @"/relationships/cabin-crew-members"",
573-
""related"": """ + HostPrefix + @"flights/" + flightId + @"/relationships/cabin-crew-members"",
574-
""first"": """ + HostPrefix + @"flights/" + flightId + @"/relationships/cabin-crew-members""
572+
""self"": """ + HostPrefix + "flights/" + flightId + @"/relationships/cabin-crew-members"",
573+
""related"": """ + HostPrefix + "flights/" + flightId + @"/relationships/cabin-crew-members"",
574+
""first"": """ + HostPrefix + "flights/" + flightId + @"/relationships/cabin-crew-members""
575575
},
576576
""data"": [{
577577
""type"": ""flight-attendants"",

test/OpenApiClientTests/OpenApiClientTests.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
<ItemGroup>
1212
<PackageReference Include="coverlet.collector" Version="$(CoverletVersion)" PrivateAssets="All" />
13+
<PackageReference Include="GitHubActionsTestLogger" Version="$(GitHubActionsTestLoggerVersion)" PrivateAssets="All" />
1314
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="$(AspNetVersion)" />
1415
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(TestSdkVersion)" />
1516
<PackageReference Include="Newtonsoft.Json" Version="$(NewtonsoftJsonVersion)" />

test/OpenApiTests/LegacyOpenApiIntegration/LegacyIntegrationDbContext.cs

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using TestBuildingBlocks;
44

55
// @formatter:wrap_chained_method_calls chop_always
6-
// @formatter:keep_existing_linebreaks true
76

87
namespace OpenApiTests.LegacyOpenApiIntegration;
98

test/OpenApiTests/OpenApiTests.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
<ItemGroup>
1717
<PackageReference Include="coverlet.collector" Version="$(CoverletVersion)" PrivateAssets="All" />
18+
<PackageReference Include="GitHubActionsTestLogger" Version="$(GitHubActionsTestLoggerVersion)" PrivateAssets="All" />
1819
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="$(AspNetVersion)" />
1920
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="$(TestSdkVersion)" />
2021
<PackageReference Include="BlushingPenguin.JsonPath" Version="1.0.6" />

0 commit comments

Comments
 (0)