Skip to content

Commit 8f06295

Browse files
committed
wip: prepare namespace for apiGroupName template/location
1 parent 111c43c commit 8f06295

File tree

37 files changed

+1339
-185
lines changed

37 files changed

+1339
-185
lines changed

src/Atc.Rest.ApiGenerator.CLI/Commands/GenerateClientCSharpCommand.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ private async Task<int> ExecuteInternalAsync(
6060
{
6161
if (!openApiDocumentValidator.IsValid(
6262
apiOptions.Validation,
63-
apiOptions.IncludeDeprecated,
63+
apiOptions.IncludeDeprecatedOperations,
6464
apiDocumentContainer))
6565
{
6666
return ConsoleExitStatusCodes.Failure;

src/Atc.Rest.ApiGenerator.CLI/Commands/GenerateServerAllCommand.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ private async Task<int> ExecuteInternalAsync(
7575
{
7676
if (!openApiDocumentValidator.IsValid(
7777
apiOptions.Validation,
78-
apiOptions.IncludeDeprecated,
78+
apiOptions.IncludeDeprecatedOperations,
7979
apiDocumentContainer))
8080
{
8181
return ConsoleExitStatusCodes.Failure;

src/Atc.Rest.ApiGenerator.CLI/Commands/GenerateServerApiCommand.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ private async Task<int> ExecuteInternalAsync(
6868
{
6969
if (!openApiDocumentValidator.IsValid(
7070
apiOptions.Validation,
71-
apiOptions.IncludeDeprecated,
71+
apiOptions.IncludeDeprecatedOperations,
7272
apiDocumentContainer))
7373
{
7474
return ConsoleExitStatusCodes.Failure;

src/Atc.Rest.ApiGenerator.CLI/Commands/GenerateServerDomainCommand.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ private async Task<int> ExecuteInternalAsync(
6868
{
6969
if (!openApiDocumentValidator.IsValid(
7070
apiOptions.Validation,
71-
apiOptions.IncludeDeprecated,
71+
apiOptions.IncludeDeprecatedOperations,
7272
apiDocumentContainer))
7373
{
7474
return ConsoleExitStatusCodes.Failure;

src/Atc.Rest.ApiGenerator.CLI/Commands/GenerateServerHostCommand.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ private async Task<int> ExecuteInternalAsync(
6868
{
6969
if (!openApiDocumentValidator.IsValid(
7070
apiOptions.Validation,
71-
apiOptions.IncludeDeprecated,
71+
apiOptions.IncludeDeprecatedOperations,
7272
apiDocumentContainer))
7373
{
7474
return ConsoleExitStatusCodes.Failure;

src/Atc.Rest.ApiGenerator.CLI/Commands/ValidateSchemaCommand.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ private async Task<int> ExecuteInternalAsync(
4141
{
4242
if (!openApiDocumentValidator.IsValid(
4343
apiOptions.Validation,
44-
apiOptions.IncludeDeprecated,
44+
apiOptions.IncludeDeprecatedOperations,
4545
apiDocumentContainer))
4646
{
4747
return ConsoleExitStatusCodes.Failure;

src/Atc.Rest.ApiGenerator.Client.CSharp/ProjectGenerator/ClientCSharpApiGenerator.cs

+50-26
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,9 @@ public void GenerateParameters()
128128
{
129129
var apiGroupName = openApiPath.GetApiGroupName();
130130

131-
var fullNamespace = NamespaceFactory.CreateFull(settings.ProjectName, settings.ContractsLocation, apiGroupName);
131+
var contractsLocation = LocationFactory.CreateWithApiGroupName(apiGroupName, settings.ContractsLocation);
132+
133+
var fullNamespace = NamespaceFactory.Create(settings.ProjectName, contractsLocation);
132134

133135
foreach (var openApiOperation in openApiPath.Value.Operations)
134136
{
@@ -159,7 +161,7 @@ public void GenerateParameters()
159161
var contentWriter = new ContentWriter(logger);
160162
contentWriter.Write(
161163
settings.ProjectPath,
162-
FileInfoFactory.Create(settings.ProjectPath, settings.ContractsLocation, apiGroupName, ContentGeneratorConstants.RequestParameters, $"{parameterParameters.ParameterName}.cs"),
164+
FileInfoFactory.Create(settings.ProjectPath, contractsLocation, ContentGeneratorConstants.RequestParameters, $"{parameterParameters.ParameterName}.cs"),
163165
ContentWriterArea.Src,
164166
content);
165167
}
@@ -172,7 +174,9 @@ public void GenerateEndpointInterfaces()
172174
{
173175
var apiGroupName = openApiPath.GetApiGroupName();
174176

175-
var fullNamespace = NamespaceFactory.CreateFull(settings.ProjectName, settings.EndpointsLocation, apiGroupName, ContentGeneratorConstants.Interfaces);
177+
var endpointsLocation = LocationFactory.CreateWithApiGroupName(apiGroupName, settings.EndpointsLocation);
178+
179+
var fullNamespace = NamespaceFactory.Create(settings.ProjectName, endpointsLocation) + $".{ContentGeneratorConstants.Interfaces}";
176180

177181
foreach (var openApiOperation in openApiPath.Value.Operations)
178182
{
@@ -199,7 +203,7 @@ public void GenerateEndpointInterfaces()
199203
var contentWriter = new ContentWriter(logger);
200204
contentWriter.Write(
201205
settings.ProjectPath,
202-
FileInfoFactory.Create(settings.ProjectPath, settings.EndpointsLocation, apiGroupName, ContentGeneratorConstants.Interfaces, $"{interfaceParameters.TypeName}.cs"),
206+
FileInfoFactory.Create(settings.ProjectPath, endpointsLocation, ContentGeneratorConstants.Interfaces, $"{interfaceParameters.TypeName}.cs"),
203207
ContentWriterArea.Src,
204208
content);
205209
}
@@ -212,7 +216,10 @@ public void GenerateEndpoints()
212216
{
213217
var apiGroupName = openApiPath.GetApiGroupName();
214218

215-
var fullNamespace = NamespaceFactory.CreateFull(settings.ProjectName, settings.EndpointsLocation, apiGroupName);
219+
var endpointsLocation = LocationFactory.CreateWithApiGroupName(apiGroupName, settings.EndpointsLocation);
220+
var contractsLocation = LocationFactory.CreateWithApiGroupName(apiGroupName, settings.ContractsLocation);
221+
222+
var fullNamespace = NamespaceFactory.Create(settings.ProjectName, endpointsLocation);
216223

217224
foreach (var openApiOperation in openApiPath.Value.Operations)
218225
{
@@ -225,7 +232,7 @@ public void GenerateEndpoints()
225232
settings.ProjectName,
226233
apiGroupName,
227234
fullNamespace,
228-
settings.ContractsLocation,
235+
contractsLocation,
229236
openApiPath.Value,
230237
openApiOperation.Key,
231238
openApiOperation.Value,
@@ -246,7 +253,7 @@ public void GenerateEndpoints()
246253
var contentWriter = new ContentWriter(logger);
247254
contentWriter.Write(
248255
settings.ProjectPath,
249-
FileInfoFactory.Create(settings.ProjectPath, settings.EndpointsLocation, apiGroupName, $"{endpointParameters.EndpointName}.cs"),
256+
FileInfoFactory.Create(settings.ProjectPath, endpointsLocation, $"{endpointParameters.EndpointName}.cs"),
250257
ContentWriterArea.Src,
251258
content);
252259
}
@@ -259,7 +266,10 @@ public void GenerateEndpointResultInterfaces()
259266
{
260267
var apiGroupName = openApiPath.GetApiGroupName();
261268

262-
var fullNamespace = NamespaceFactory.CreateFull(settings.ProjectName, settings.EndpointsLocation, apiGroupName, ContentGeneratorConstants.Interfaces);
269+
var endpointsLocation = LocationFactory.CreateWithApiGroupName(apiGroupName, settings.EndpointsLocation);
270+
var contractsLocation = LocationFactory.CreateWithApiGroupName(apiGroupName, settings.ContractsLocation);
271+
272+
var fullNamespace = NamespaceFactory.Create(settings.ProjectName, endpointsLocation) + $".{ContentGeneratorConstants.Interfaces}";
263273

264274
foreach (var openApiOperation in openApiPath.Value.Operations)
265275
{
@@ -272,7 +282,7 @@ public void GenerateEndpointResultInterfaces()
272282
settings.ProjectName,
273283
apiGroupName,
274284
fullNamespace,
275-
settings.ContractsLocation,
285+
contractsLocation,
276286
openApiPath.Value,
277287
openApiOperation.Value,
278288
settings.UsePartialClassForContracts);
@@ -289,7 +299,7 @@ public void GenerateEndpointResultInterfaces()
289299
var contentWriter = new ContentWriter(logger);
290300
contentWriter.Write(
291301
settings.ProjectPath,
292-
FileInfoFactory.Create(settings.ProjectPath, settings.EndpointsLocation, apiGroupName, ContentGeneratorConstants.Interfaces, $"{endpointResultInterfaceParameters.InterfaceName}.cs"),
302+
FileInfoFactory.Create(settings.ProjectPath, endpointsLocation, ContentGeneratorConstants.Interfaces, $"{endpointResultInterfaceParameters.InterfaceName}.cs"),
293303
ContentWriterArea.Src,
294304
content);
295305
}
@@ -302,7 +312,10 @@ public void GenerateEndpointResults()
302312
{
303313
var apiGroupName = openApiPath.GetApiGroupName();
304314

305-
var fullNamespace = NamespaceFactory.CreateFull(settings.ProjectName, settings.EndpointsLocation, apiGroupName);
315+
var endpointsLocation = LocationFactory.CreateWithApiGroupName(apiGroupName, settings.EndpointsLocation);
316+
var contractsLocation = LocationFactory.CreateWithApiGroupName(apiGroupName, settings.ContractsLocation);
317+
318+
var fullNamespace = NamespaceFactory.Create(settings.ProjectName, endpointsLocation);
306319

307320
foreach (var openApiOperation in openApiPath.Value.Operations)
308321
{
@@ -315,7 +328,7 @@ public void GenerateEndpointResults()
315328
settings.ProjectName,
316329
apiGroupName,
317330
fullNamespace,
318-
settings.ContractsLocation,
331+
contractsLocation,
319332
openApiPath.Value,
320333
openApiOperation.Value,
321334
settings.UsePartialClassForContracts);
@@ -332,7 +345,7 @@ public void GenerateEndpointResults()
332345
var contentWriter = new ContentWriter(logger);
333346
contentWriter.Write(
334347
settings.ProjectPath,
335-
FileInfoFactory.Create(settings.ProjectPath, settings.EndpointsLocation, apiGroupName, $"{endpointResultParameters.EndpointResultName}.cs"),
348+
FileInfoFactory.Create(settings.ProjectPath, endpointsLocation, $"{endpointResultParameters.EndpointResultName}.cs"),
336349
ContentWriterArea.Src,
337350
content);
338351
}
@@ -384,13 +397,16 @@ public void MaintainGlobalUsings(
384397

385398
if (operationSchemaMappings.Any(apiOperation => apiOperation.Model.IsShared))
386399
{
387-
requiredUsings.Add(NamespaceFactory.CreateFull(settings.ProjectName, settings.ContractsLocation));
400+
requiredUsings.Add(NamespaceFactory.Create(settings.ProjectName, LocationFactory.CreateWithoutTemplateForApiGroupName(settings.ContractsLocation)));
388401
}
389402

390403
var apiGroupNames = openApiDocument.GetApiGroupNames();
391404
foreach (var openApiPath in openApiDocument.Paths)
392405
{
393406
var apiGroupName = openApiPath.GetApiGroupName();
407+
408+
var contractsLocation = LocationFactory.CreateWithApiGroupName(apiGroupName, settings.ContractsLocation);
409+
394410
foreach (var openApiOperation in openApiPath.Value.Operations)
395411
{
396412
if (openApiOperation.Value.Deprecated && !settings.IncludeDeprecatedOperations)
@@ -404,7 +420,7 @@ public void MaintainGlobalUsings(
404420
continue;
405421
}
406422

407-
var requiredUsing = NamespaceFactory.CreateFull(settings.ProjectName, settings.ContractsLocation, apiGroupName);
423+
var requiredUsing = LocationFactory.Create(settings.ProjectName, contractsLocation);
408424
if (!requiredUsings.Contains(requiredUsing, StringComparer.CurrentCulture))
409425
{
410426
requiredUsings.Add(requiredUsing);
@@ -420,6 +436,8 @@ public void MaintainGlobalUsings(
420436

421437
var apiOperationModels = GetDistinctApiOperationModels(apiOperations);
422438

439+
var contractsLocation = LocationFactory.CreateWithApiGroupName(apiGroupName, settings.ContractsLocation);
440+
423441
foreach (var apiOperationModel in apiOperationModels)
424442
{
425443
if (apiOperationModel.IsEnum ||
@@ -433,15 +451,15 @@ public void MaintainGlobalUsings(
433451
continue;
434452
}
435453

436-
var requiredUsing = NamespaceFactory.CreateFull(settings.ProjectName, settings.ContractsLocation, apiGroupName);
454+
var requiredUsing = LocationFactory.Create(settings.ProjectName, contractsLocation);
437455
if (!requiredUsings.Contains(requiredUsing, StringComparer.CurrentCulture))
438456
{
439457
requiredUsings.Add(requiredUsing);
440458
}
441459
}
442460
}
443461

444-
requiredUsings.AddRange(apiGroupNames.Select(x => NamespaceFactory.CreateFull(settings.ProjectName, settings.EndpointsLocation, x, ContentGeneratorConstants.Interfaces)));
462+
requiredUsings.AddRange(apiGroupNames.Select(x => LocationFactory.Create(settings.ProjectName, LocationFactory.CreateWithApiGroupName(x, settings.EndpointsLocation), ContentGeneratorConstants.Interfaces)));
445463

446464
GlobalUsingsHelper.CreateOrUpdate(
447465
logger,
@@ -455,7 +473,9 @@ private void GenerateEnumerationType(
455473
string enumerationName,
456474
OpenApiSchema openApiSchemaEnumeration)
457475
{
458-
var fullNamespace = NamespaceFactory.CreateFull(settings.ProjectName, settings.ContractsLocation);
476+
var contractsLocation = LocationFactory.CreateWithoutTemplateForApiGroupName(settings.ContractsLocation);
477+
478+
var fullNamespace = NamespaceFactory.Create(settings.ProjectName, contractsLocation);
459479

460480
var enumParameters = ContentGeneratorServerClientEnumParametersFactory.Create(
461481
codeGeneratorContentHeader,
@@ -473,7 +493,7 @@ private void GenerateEnumerationType(
473493
var contentWriter = new ContentWriter(logger);
474494
contentWriter.Write(
475495
settings.ProjectPath,
476-
FileInfoFactory.Create(settings.ProjectPath, settings.ContractsLocation, ContentGeneratorConstants.SpecialFolderEnumerationTypes, $"{enumerationName}.cs"),
496+
FileInfoFactory.Create(settings.ProjectPath, contractsLocation, ContentGeneratorConstants.SpecialFolderEnumerationTypes, $"{enumerationName}.cs"),
477497
ContentWriterArea.Src,
478498
content);
479499
}
@@ -484,9 +504,11 @@ private void GenerateModel(
484504
string apiGroupName,
485505
bool isSharedContract)
486506
{
487-
var fullNamespace = isSharedContract
488-
? NamespaceFactory.CreateFull(settings.ProjectName, settings.ContractsLocation)
489-
: NamespaceFactory.CreateFull(settings.ProjectName, settings.ContractsLocation, apiGroupName);
507+
var contractsLocation = isSharedContract
508+
? LocationFactory.CreateWithoutTemplateForApiGroupName(settings.ContractsLocation)
509+
: LocationFactory.CreateWithApiGroupName(apiGroupName, settings.ContractsLocation);
510+
511+
var fullNamespace = NamespaceFactory.Create(settings.ProjectName, contractsLocation);
490512

491513
var parameters = ContentGeneratorServerClientModelParametersFactory.CreateForClass(
492514
codeGeneratorContentHeader,
@@ -507,8 +529,8 @@ private void GenerateModel(
507529
contentWriter.Write(
508530
settings.ProjectPath,
509531
isSharedContract
510-
? FileInfoFactory.Create(settings.ProjectPath, settings.ContractsLocation, ContentGeneratorConstants.SpecialFolderSharedModels, $"{modelName}.cs")
511-
: FileInfoFactory.Create(settings.ProjectPath, settings.ContractsLocation, apiGroupName, $"{modelName}.cs"),
532+
? FileInfoFactory.Create(settings.ProjectPath, contractsLocation, ContentGeneratorConstants.SpecialFolderSharedModels, $"{modelName}.cs")
533+
: FileInfoFactory.Create(settings.ProjectPath, contractsLocation, $"{modelName}.cs"),
512534
ContentWriterArea.Src,
513535
content);
514536
}
@@ -521,7 +543,9 @@ private void GenerateCustomErrorResponseModel()
521543
return;
522544
}
523545

524-
var fullNamespace = NamespaceFactory.CreateFull(settings.ProjectName, settings.ContractsLocation);
546+
var contractsLocation = LocationFactory.CreateWithoutTemplateForApiGroupName(settings.ContractsLocation);
547+
548+
var fullNamespace = NamespaceFactory.Create(settings.ProjectName, contractsLocation);
525549

526550
var parameters = ContentGeneratorServerClientModelParametersFactory.CreateForCustomErrorResponseModel(
527551
codeGeneratorContentHeader,
@@ -539,7 +563,7 @@ private void GenerateCustomErrorResponseModel()
539563
var contentWriter = new ContentWriter(logger);
540564
contentWriter.Write(
541565
settings.ProjectPath,
542-
FileInfoFactory.Create(settings.ProjectPath, settings.ContractsLocation, ContentGeneratorConstants.SpecialFolderSharedModels, $"{customErrorResponseModel.Name.EnsureFirstCharacterToUpper()}.cs"),
566+
FileInfoFactory.Create(settings.ProjectPath, contractsLocation, ContentGeneratorConstants.SpecialFolderSharedModels, $"{customErrorResponseModel.Name.EnsureFirstCharacterToUpper()}.cs"),
543567
ContentWriterArea.Src,
544568
content);
545569
}

src/Atc.Rest.ApiGenerator.Contracts/ContentGeneratorConstants.cs

+2
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,6 @@ public static class ContentGeneratorConstants
2727
public const string UndefinedDescription = "Undefined description.";
2828
public const string DefaultHttpClientName = "ApiClient";
2929
public const string DefaultHttpClient = "DefaultHttpClient";
30+
public const string TemplateKeyForApiGroupName = "apiGroupName";
31+
public const string TemplateForApiGroupName = "[[apiGroupName]]";
3032
}

0 commit comments

Comments
 (0)