private List <LogKeyValueItem> GenerateContracts(List <ApiOperationSchemaMap> operationSchemaMappings) { if (operationSchemaMappings == null) { throw new ArgumentNullException(nameof(operationSchemaMappings)); } var sgContractModels = new List <SyntaxGeneratorContractModel>(); var sgContractParameters = new List <SyntaxGeneratorContractParameter>(); var sgContractResults = new List <SyntaxGeneratorContractResult>(); var sgContractInterfaces = new List <SyntaxGeneratorContractInterface>(); foreach (var basePathSegmentName in projectOptions.BasePathSegmentNames) { var generatorModels = new SyntaxGeneratorContractModels(projectOptions, operationSchemaMappings, basePathSegmentName); var generatedModels = generatorModels.GenerateSyntaxTrees(); sgContractModels.AddRange(generatedModels); var generatorParameters = new SyntaxGeneratorContractParameters(projectOptions, basePathSegmentName); var generatedParameters = generatorParameters.GenerateSyntaxTrees(); sgContractParameters.AddRange(generatedParameters); var generatorResults = new SyntaxGeneratorContractResults(projectOptions, basePathSegmentName); var generatedResults = generatorResults.GenerateSyntaxTrees(); sgContractResults.AddRange(generatedResults); var generatorInterfaces = new SyntaxGeneratorContractInterfaces(projectOptions, basePathSegmentName); var generatedInterfaces = generatorInterfaces.GenerateSyntaxTrees(); sgContractInterfaces.AddRange(generatedInterfaces); } ApiGeneratorHelper.CollectMissingContractModelFromOperationSchemaMappings( projectOptions, operationSchemaMappings, sgContractModels); var logItems = new List <LogKeyValueItem>(); foreach (var sg in sgContractModels) { logItems.Add(sg.ToFile()); } foreach (var sg in sgContractParameters) { logItems.Add(sg.ToFile()); } foreach (var sg in sgContractResults) { logItems.Add(sg.ToFile()); } foreach (var sg in sgContractInterfaces) { logItems.Add(sg.ToFile()); } return(logItems); }
private void GenerateContracts( List <ApiOperationSchemaMap> operationSchemaMappings) { ArgumentNullException.ThrowIfNull(operationSchemaMappings); var sgContractModels = new List <SyntaxGeneratorContractModel>(); var sgContractParameters = new List <SyntaxGeneratorContractParameter>(); var sgContractResults = new List <SyntaxGeneratorContractResult>(); var sgContractInterfaces = new List <SyntaxGeneratorContractInterface>(); foreach (var basePathSegmentName in projectOptions.BasePathSegmentNames) { var generatorModels = new SyntaxGeneratorContractModels(logger, projectOptions, operationSchemaMappings, basePathSegmentName); var generatedModels = generatorModels.GenerateSyntaxTrees(); sgContractModels.AddRange(generatedModels); var generatorParameters = new SyntaxGeneratorContractParameters(logger, projectOptions, basePathSegmentName); var generatedParameters = generatorParameters.GenerateSyntaxTrees(); sgContractParameters.AddRange(generatedParameters); var generatorResults = new SyntaxGeneratorContractResults(logger, projectOptions, basePathSegmentName); var generatedResults = generatorResults.GenerateSyntaxTrees(); sgContractResults.AddRange(generatedResults); var generatorInterfaces = new SyntaxGeneratorContractInterfaces(logger, projectOptions, basePathSegmentName); var generatedInterfaces = generatorInterfaces.GenerateSyntaxTrees(); sgContractInterfaces.AddRange(generatedInterfaces); } ApiGeneratorHelper.CollectMissingContractModelFromOperationSchemaMappings( logger, projectOptions, operationSchemaMappings, sgContractModels); foreach (var sg in sgContractModels) { sg.ToFile(); } foreach (var sg in sgContractParameters) { sg.ToFile(); } foreach (var sg in sgContractResults) { sg.ToFile(); } foreach (var sg in sgContractInterfaces) { sg.ToFile(); } }
private static List <LogKeyValueItem> GenerateContracts(ApiProjectOptions apiProjectOptions, List <ApiOperationSchemaMap> operationSchemaMappings) { if (apiProjectOptions == null) { throw new ArgumentNullException(nameof(apiProjectOptions)); } if (operationSchemaMappings == null) { throw new ArgumentNullException(nameof(operationSchemaMappings)); } var sgContractModels = new List <SyntaxGeneratorContractModel>(); var sgContractParameters = new List <SyntaxGeneratorContractParameter>(); var sgContractResults = new List <SyntaxGeneratorContractResult>(); var sgContractInterfaces = new List <SyntaxGeneratorContractInterface>(); foreach (var basePathSegmentName in apiProjectOptions.BasePathSegmentNames) { var generatorModels = new SyntaxGeneratorContractModels(apiProjectOptions, operationSchemaMappings, basePathSegmentName); var generatedModels = generatorModels.GenerateSyntaxTrees(); sgContractModels.AddRange(generatedModels); var generatorParameters = new SyntaxGeneratorContractParameters(apiProjectOptions, basePathSegmentName); var generatedParameters = generatorParameters.GenerateSyntaxTrees(); sgContractParameters.AddRange(generatedParameters); var generatorResults = new SyntaxGeneratorContractResults(apiProjectOptions, basePathSegmentName); var generatedResults = generatorResults.GenerateSyntaxTrees(); sgContractResults.AddRange(generatedResults); var generatorInterfaces = new SyntaxGeneratorContractInterfaces(apiProjectOptions, basePathSegmentName); var generatedInterfaces = generatorInterfaces.GenerateSyntaxTrees(); sgContractInterfaces.AddRange(generatedInterfaces); } var missingOperationSchemaMappings = new List <ApiOperationSchemaMap>(); foreach (var map in operationSchemaMappings) { if (sgContractModels.FirstOrDefault(x => x.ApiSchemaKey.Equals(map.SchemaKey, StringComparison.OrdinalIgnoreCase)) == null) { missingOperationSchemaMappings.Add(map); } } foreach (var map in missingOperationSchemaMappings) { if (missingOperationSchemaMappings.Count(x => x.SchemaKey.Equals(map.SchemaKey, StringComparison.OrdinalIgnoreCase)) > 1) { throw new NotImplementedException($"SchemaKey: {map.SchemaKey} is not generated and exist multiple times - location-calculation is missing."); } var generatorModel = new SyntaxGeneratorContractModel( apiProjectOptions, map.SchemaKey, apiProjectOptions.Document.Components.Schemas.First(x => x.Key.Equals(map.SchemaKey, StringComparison.OrdinalIgnoreCase)).Value, map.SegmentName); generatorModel.GenerateCode(); sgContractModels.Add(generatorModel); } var logItems = new List <LogKeyValueItem>(); foreach (var sg in sgContractModels) { logItems.Add(sg.ToFile()); } foreach (var sg in sgContractParameters) { logItems.Add(sg.ToFile()); } foreach (var sg in sgContractResults) { logItems.Add(sg.ToFile()); } foreach (var sg in sgContractInterfaces) { logItems.Add(sg.ToFile()); } return(logItems); }