Skip to content

Commit 46df7d2

Browse files
committed
Merged vnext
1 parent a09875d commit 46df7d2

File tree

386 files changed

+21225
-1663
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

386 files changed

+21225
-1663
lines changed

.editorconfig

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
# To learn more about .editorconfig see https://aka.ms/editorconfigdocs
2+
###############################
3+
# Core EditorConfig Options #
4+
###############################
5+
# All files
6+
[*]
7+
indent_style = space
8+
# Code files
9+
[*.{cs,csx,vb,vbx}]
10+
indent_size = 4
11+
insert_final_newline = true
12+
charset = utf-8-bom
13+
###############################
14+
# .NET Coding Conventions #
15+
###############################
16+
[*.{cs,vb}]
17+
# Organize usings
18+
dotnet_sort_system_directives_first = true
19+
# this. preferences
20+
dotnet_style_qualification_for_field = false:silent
21+
dotnet_style_qualification_for_property = false:silent
22+
dotnet_style_qualification_for_method = false:silent
23+
dotnet_style_qualification_for_event = false:silent
24+
# Language keywords vs BCL types preferences
25+
dotnet_style_predefined_type_for_locals_parameters_members = true:silent
26+
dotnet_style_predefined_type_for_member_access = true:silent
27+
# Parentheses preferences
28+
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent
29+
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent
30+
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent
31+
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent
32+
# Modifier preferences
33+
dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent
34+
dotnet_style_readonly_field = true:suggestion
35+
# Expression-level preferences
36+
dotnet_style_object_initializer = true:suggestion
37+
dotnet_style_collection_initializer = true:suggestion
38+
dotnet_style_explicit_tuple_names = true:suggestion
39+
dotnet_style_null_propagation = true:suggestion
40+
dotnet_style_coalesce_expression = true:suggestion
41+
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:silent
42+
dotnet_style_prefer_inferred_tuple_names = true:suggestion
43+
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
44+
dotnet_style_prefer_auto_properties = true:silent
45+
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
46+
dotnet_style_prefer_conditional_expression_over_return = true:silent
47+
###############################
48+
# Naming Conventions #
49+
###############################
50+
# Style Definitions
51+
dotnet_naming_style.pascal_case_style.capitalization = pascal_case
52+
# Use PascalCase for constant fields
53+
dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion
54+
dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields
55+
dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style
56+
dotnet_naming_symbols.constant_fields.applicable_kinds = field
57+
dotnet_naming_symbols.constant_fields.applicable_accessibilities = *
58+
dotnet_naming_symbols.constant_fields.required_modifiers = const
59+
###############################
60+
# C# Coding Conventions #
61+
###############################
62+
[*.cs]
63+
# var preferences
64+
csharp_style_var_for_built_in_types = true:silent
65+
csharp_style_var_when_type_is_apparent = true:silent
66+
csharp_style_var_elsewhere = true:silent
67+
# Expression-bodied members
68+
csharp_style_expression_bodied_methods = false:silent
69+
csharp_style_expression_bodied_constructors = false:silent
70+
csharp_style_expression_bodied_operators = false:silent
71+
csharp_style_expression_bodied_properties = true:silent
72+
csharp_style_expression_bodied_indexers = true:silent
73+
csharp_style_expression_bodied_accessors = true:silent
74+
# Pattern matching preferences
75+
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
76+
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
77+
# Null-checking preferences
78+
csharp_style_throw_expression = true:suggestion
79+
csharp_style_conditional_delegate_call = true:suggestion
80+
# Modifier preferences
81+
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion
82+
# Expression-level preferences
83+
csharp_prefer_braces = true:silent
84+
csharp_style_deconstructed_variable_declaration = true:suggestion
85+
csharp_prefer_simple_default_expression = true:suggestion
86+
csharp_style_pattern_local_over_anonymous_function = true:suggestion
87+
csharp_style_inlined_variable_declaration = true:suggestion
88+
###############################
89+
# C# Formatting Rules #
90+
###############################
91+
# New line preferences
92+
csharp_new_line_before_open_brace = all
93+
csharp_new_line_before_else = true
94+
csharp_new_line_before_catch = true
95+
csharp_new_line_before_finally = true
96+
csharp_new_line_before_members_in_object_initializers = true
97+
csharp_new_line_before_members_in_anonymous_types = true
98+
csharp_new_line_between_query_expression_clauses = true
99+
# Indentation preferences
100+
csharp_indent_case_contents = true
101+
csharp_indent_switch_labels = true
102+
csharp_indent_labels = flush_left
103+
# Space preferences
104+
csharp_space_after_cast = false
105+
csharp_space_after_keywords_in_control_flow_statements = true
106+
csharp_space_between_method_call_parameter_list_parentheses = false
107+
csharp_space_between_method_declaration_parameter_list_parentheses = false
108+
csharp_space_between_parentheses = false
109+
csharp_space_before_colon_in_inheritance_clause = true
110+
csharp_space_after_colon_in_inheritance_clause = true
111+
csharp_space_around_binary_operators = before_and_after
112+
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
113+
csharp_space_between_method_call_name_and_opening_parenthesis = false
114+
csharp_space_between_method_call_empty_parameter_list_parentheses = false
115+
# Wrapping preferences
116+
csharp_preserve_single_line_statements = true
117+
csharp_preserve_single_line_blocks = true
118+
###############################
119+
# VB Coding Conventions #
120+
###############################
121+
[*.vb]
122+
# Modifier preferences
123+
visual_basic_preferred_modifier_order = Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async:suggestion

Microsoft.OpenApi.sln

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio 15
4-
VisualStudioVersion = 15.0.27130.2027
3+
# Visual Studio Version 16
4+
VisualStudioVersion = 16.0.29613.14
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.OpenApi", "src\Microsoft.OpenApi\Microsoft.OpenApi.csproj", "{A8E50143-69B2-472A-9D45-3F9A05D13202}"
77
EndProject
88
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{4AEDAD90-F854-4940-BFEE-6374CC92CAB0}"
99
ProjectSection(SolutionItems) = preProject
10+
.editorconfig = .editorconfig
1011
build.cmd = build.cmd
1112
readme.md = readme.md
1213
EndProjectSection
@@ -25,6 +26,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{6357D7FD-2
2526
EndProject
2627
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.OpenApi.SmokeTests", "test\Microsoft.OpenApi.SmokeTests\Microsoft.OpenApi.SmokeTests.csproj", "{AD79B61D-88CF-497C-9ED5-41AE3867C5AC}"
2728
EndProject
29+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.OpenApi.Tool", "src\Microsoft.OpenApi.Tool\Microsoft.OpenApi.Tool.csproj", "{254841B5-7DAC-4D1D-A9C5-44FE5CE467BE}"
30+
EndProject
2831
Global
2932
GlobalSection(SolutionConfigurationPlatforms) = preSolution
3033
Debug|Any CPU = Debug|Any CPU
@@ -55,6 +58,10 @@ Global
5558
{AD79B61D-88CF-497C-9ED5-41AE3867C5AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
5659
{AD79B61D-88CF-497C-9ED5-41AE3867C5AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
5760
{AD79B61D-88CF-497C-9ED5-41AE3867C5AC}.Release|Any CPU.Build.0 = Release|Any CPU
61+
{254841B5-7DAC-4D1D-A9C5-44FE5CE467BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
62+
{254841B5-7DAC-4D1D-A9C5-44FE5CE467BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
63+
{254841B5-7DAC-4D1D-A9C5-44FE5CE467BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
64+
{254841B5-7DAC-4D1D-A9C5-44FE5CE467BE}.Release|Any CPU.Build.0 = Release|Any CPU
5865
EndGlobalSection
5966
GlobalSection(SolutionProperties) = preSolution
6067
HideSolutionNode = FALSE
@@ -66,6 +73,7 @@ Global
6673
{AD83F991-DBF3-4251-8613-9CC54C826964} = {6357D7FD-2DE4-4900-ADB9-ABC37052040A}
6774
{1ED3C2C1-E1E7-4925-B4E6-2D969C3F5237} = {6357D7FD-2DE4-4900-ADB9-ABC37052040A}
6875
{AD79B61D-88CF-497C-9ED5-41AE3867C5AC} = {6357D7FD-2DE4-4900-ADB9-ABC37052040A}
76+
{254841B5-7DAC-4D1D-A9C5-44FE5CE467BE} = {E546B92F-20A8-49C3-8323-4B25BB78F3E1}
6977
EndGlobalSection
7078
GlobalSection(ExtensibilityGlobals) = postSolution
7179
SolutionGuid = {9F171EFC-0DB5-4B10-ABFA-AF48D52CC565}

README.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
![Category overview screenshot](docs/images/oainet.png "Microsoft + OpenAPI = Love")
22

3-
# OpenAPI.NET
3+
# OpenAPI.NET
4+
5+
|Package|Nuget|
6+
|--|--|
7+
|Models and Writers|[![nuget](https://img.shields.io/nuget/v/Microsoft.OpenApi.svg)](https://www.nuget.org/packages/Microsoft.OpenApi/) |
8+
|Readers | [![nuget](https://img.shields.io/nuget/v/Microsoft.OpenApi.Readers.svg)](https://www.nuget.org/packages/Microsoft.OpenApi.Readers/) |
9+
410

511
The **OpenAPI.NET** SDK contains a useful object model for OpenAPI documents in .NET along with common serializers to extract raw OpenAPI JSON and YAML documents from the model.
612

@@ -13,13 +19,20 @@ Project Objectives
1319
- Provide OpenAPI description writers for both V2 and V3 specification formats.
1420
- Enable developers to create Readers that translate different data formats into OpenAPI descriptions.
1521

22+
# Installation
23+
24+
- Install core Nuget package `Microsoft.OpenApi`
25+
- Install readers Nuget package `Microsoft.OpenApi.Readers`
26+
1627
# Processors
1728
The OpenAPI.NET project holds the base object model for representing OpenAPI documents as .NET objects. Some developers have found the need to write processors that convert other data formats into this OpenAPI.NET object model. We'd like to curate that list of processors in this section of the readme.
1829

1930
The base JSON and YAML processors are built into this project. Below is the list of the other supported processor projects.
2031

2132
- [**C# Comment / Annotation Processor**](https://github.com/Microsoft/OpenAPI.NET.CSharpAnnotations) : Converts standard .NET annotations ( /// comments ) emitted from your build (MSBuild.exe) into OpenAPI.NET document object.
2233

34+
- [**OData CSDL Processor**](https://github.com/Microsoft/OpenAPI.NET.OData) : Converts the XML representation of the Entity Data Model (EDM) describing an OData Service into OpenAPI.NET document object.
35+
2336
# Example Usage
2437

2538
Creating an OpenAPI Document

build.cmd

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,17 @@
11
@echo off
2-
if "%~1"=="" goto :error
3-
4-
SET %VERSION%=%~1
5-
6-
Echo Building Microsoft.OpenApi
2+
Echo Building Microsoft.OpenApi
73

84
SET PROJ=%~dp0src\Microsoft.OpenApi\Microsoft.OpenApi.csproj
9-
msbuild %PROJ% /t:restore /p:Configuration=Release
10-
msbuild %PROJ% /t:build /p:Configuration=Release
11-
msbuild %PROJ% /t:pack /p:Configuration=Release;PackageOutputPath=%~dp0artifacts;Version=%VERSION%
5+
dotnet build %PROJ% /t:restore /p:Configuration=Release
6+
dotnet build %PROJ% /t:build /p:Configuration=Release
7+
dotnet build %PROJ% /t:pack /p:Configuration=Release;PackageOutputPath=%~dp0artifacts
128

139
Echo Building Microsoft.OpenApi.Readers
1410

1511
SET PROJ=%~dp0src\Microsoft.OpenApi.Readers\Microsoft.OpenApi.Readers.csproj
16-
msbuild %PROJ% /t:restore /p:Configuration=Release
17-
msbuild %PROJ% /t:build /p:Configuration=Release
18-
msbuild %PROJ% /t:pack /p:Configuration=Release;PackageOutputPath=%~dp0artifacts;Version=%VERSION%
12+
dotnet build %PROJ% /t:restore /p:Configuration=Release
13+
dotnet build %PROJ% /t:build /p:Configuration=Release
14+
dotnet build %PROJ% /t:pack /p:Configuration=Release;PackageOutputPath=%~dp0artifacts
1915

2016
goto :end
2117
:error

src/Directory.Build.props

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<Project>
2+
<PropertyGroup>
3+
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
4+
</PropertyGroup>
5+
<ItemGroup>
6+
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0-*" PrivateAssets="All"/>
7+
</ItemGroup>
8+
</Project>

src/Microsoft.OpenApi.Readers/Exceptions/OpenApiReaderException.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,16 @@
22
// Licensed under the MIT license.
33

44
using System;
5+
using Microsoft.OpenApi.Exceptions;
6+
using SharpYaml.Serialization;
57

68
namespace Microsoft.OpenApi.Readers.Exceptions
79
{
810
/// <summary>
911
/// Defines an exception indicating OpenAPI Reader encountered an issue while reading.
1012
/// </summary>
1113
[Serializable]
12-
public class OpenApiReaderException : Exception
14+
public class OpenApiReaderException : OpenApiException
1315
{
1416
/// <summary>
1517
/// Initializes the <see cref="OpenApiReaderException"/> class.
@@ -22,11 +24,23 @@ public OpenApiReaderException() { }
2224
/// <param name="message">Plain text error message for this exception.</param>
2325
public OpenApiReaderException(string message) : base(message) { }
2426

27+
/// <summary>
28+
/// Initializes the <see cref="OpenApiReaderException"/> class with a message and line, column location of error.
29+
/// </summary>
30+
/// <param name="message">Plain text error message for this exception.</param>
31+
/// <param name="node">Parsing node where error occured</param>
32+
public OpenApiReaderException(string message, YamlNode node) : base(message)
33+
{
34+
// This only includes line because using a char range causes tests to break due to CR/LF & LF differences
35+
// See https://tools.ietf.org/html/rfc5147 for syntax
36+
Pointer = $"#line={node.Start.Line}";
37+
}
38+
2539
/// <summary>
2640
/// Initializes the <see cref="OpenApiReaderException"/> class with a custom message and inner exception.
2741
/// </summary>
2842
/// <param name="message">Plain text error message for this exception.</param>
2943
/// <param name="innerException">Inner exception that caused this exception to be thrown.</param>
3044
public OpenApiReaderException(string message, Exception innerException) : base(message, innerException) { }
3145
}
32-
}
46+
}

src/Microsoft.OpenApi.Readers/Exceptions/OpenApiUnsupportedSpecVersionException.cs

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ namespace Microsoft.OpenApi.Readers.Exceptions
1010
/// Defines an exception indicating OpenAPI Reader encountered an unsupported specification version while reading.
1111
/// </summary>
1212
[Serializable]
13-
public class OpenApiUnsupportedSpecVersionException : OpenApiReaderException
13+
public class OpenApiUnsupportedSpecVersionException : Exception
1414
{
15-
const string messagePattern = "OpenAPI specification version {0} is not supported.";
15+
const string messagePattern = "OpenAPI specification version '{0}' is not supported.";
1616

1717
/// <summary>
1818
/// Initializes the <see cref="OpenApiUnsupportedSpecVersionException"/> class with a specification version.
@@ -21,11 +21,6 @@ public class OpenApiUnsupportedSpecVersionException : OpenApiReaderException
2121
public OpenApiUnsupportedSpecVersionException(string specificationVersion)
2222
: base(string.Format(CultureInfo.InvariantCulture, messagePattern, specificationVersion))
2323
{
24-
if (string.IsNullOrWhiteSpace(specificationVersion))
25-
{
26-
throw new ArgumentException("Value cannot be null or white space.", nameof(specificationVersion));
27-
}
28-
2924
this.SpecificationVersion = specificationVersion;
3025
}
3126

@@ -38,11 +33,6 @@ public OpenApiUnsupportedSpecVersionException(string specificationVersion)
3833
public OpenApiUnsupportedSpecVersionException(string specificationVersion, Exception innerException)
3934
: base(string.Format(CultureInfo.InvariantCulture, messagePattern, specificationVersion), innerException)
4035
{
41-
if (string.IsNullOrWhiteSpace(specificationVersion))
42-
{
43-
throw new ArgumentException("Value cannot be null or white space.", nameof(specificationVersion));
44-
}
45-
4636
this.SpecificationVersion = specificationVersion;
4737
}
4838

@@ -51,4 +41,4 @@ public OpenApiUnsupportedSpecVersionException(string specificationVersion, Excep
5141
/// </summary>
5242
public string SpecificationVersion { get; }
5343
}
54-
}
44+
}

src/Microsoft.OpenApi.Readers/Interface/IDiagnostic.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ namespace Microsoft.OpenApi.Readers.Interface
99
public interface IDiagnostic
1010
{
1111
}
12-
}
12+
}

src/Microsoft.OpenApi.Readers/Interface/IOpenApiReader.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@ public interface IOpenApiReader<TInput, TDiagnostic> where TDiagnostic : IDiagno
2020
/// <returns>The Open API document.</returns>
2121
OpenApiDocument Read(TInput input, out TDiagnostic diagnostic);
2222
}
23-
}
23+
}

src/Microsoft.OpenApi.Readers/Interface/IOpenApiVersionService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,4 @@ internal interface IOpenApiVersionService
3737
/// <returns>Instance of OpenApiDocument populated with data from rootNode</returns>
3838
OpenApiDocument LoadDocument(RootNode rootNode);
3939
}
40-
}
40+
}

0 commit comments

Comments
 (0)