Skip to content

Commit f151078

Browse files
authored
Allow customization of VisitorCollection IVisitors; Add a UriTypeVisitor (#104)
1 parent c53adaf commit f151078

File tree

50 files changed

+451
-69
lines changed

Some content is hidden

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

50 files changed

+451
-69
lines changed

src/Aliencube.AzureFunctions.Extensions.OpenApi.CLI/Program.cs

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public void Generate(
8484
var filter = new RouteConstraintFilter();
8585
var acceptor = new OpenApiSchemaAcceptor();
8686
var namingStrategy = new CamelCaseNamingStrategy();
87-
var collection = this.GetVisitorCollection();
87+
var collection = VisitorCollection.CreateInstance();
8888
var helper = new DocumentHelper(filter, acceptor);
8989
var document = new Document(helper);
9090

@@ -136,17 +136,5 @@ public void Generate(
136136

137137
File.WriteAllText($"{outputpath}{directorySeparator}swagger.{format.ToDisplayName()}", swagger, Encoding.UTF8);
138138
}
139-
140-
private VisitorCollection GetVisitorCollection()
141-
{
142-
var visitors = typeof(IVisitor).Assembly
143-
.GetTypes()
144-
.Where(p => p.Name.EndsWith("Visitor") && p.IsClass && !p.IsAbstract)
145-
.Select(p => (IVisitor)Activator.CreateInstance(p))
146-
.ToList();
147-
var collection = new VisitorCollection(visitors);
148-
149-
return collection;
150-
}
151139
}
152140
}

src/Aliencube.AzureFunctions.Extensions.OpenApi.Core/Visitors/BooleanTypeVisitor.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ namespace Aliencube.AzureFunctions.Extensions.OpenApi.Core.Visitors
1414
/// </summary>
1515
public class BooleanTypeVisitor : TypeVisitor
1616
{
17+
/// <inheritdoc />
18+
public BooleanTypeVisitor(VisitorCollection visitorCollection)
19+
: base(visitorCollection)
20+
{
21+
}
22+
1723
/// <inheritdoc />
1824
public override bool IsVisitable(Type type)
1925
{

src/Aliencube.AzureFunctions.Extensions.OpenApi.Core/Visitors/DateTimeObjectTypeVisitor.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ namespace Aliencube.AzureFunctions.Extensions.OpenApi.Core.Visitors
1414
/// </summary>
1515
public class DateTimeObjectTypeVisitor : TypeVisitor
1616
{
17+
/// <inheritdoc />
18+
public DateTimeObjectTypeVisitor(VisitorCollection visitorCollection)
19+
: base(visitorCollection)
20+
{
21+
}
22+
1723
/// <inheritdoc />
1824
public override bool IsVisitable(Type type)
1925
{

src/Aliencube.AzureFunctions.Extensions.OpenApi.Core/Visitors/DateTimeOffsetObjectTypeVisitor.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ namespace Aliencube.AzureFunctions.Extensions.OpenApi.Core.Visitors
1414
/// </summary>
1515
public class DateTimeOffsetObjectTypeVisitor : TypeVisitor
1616
{
17+
/// <inheritdoc />
18+
public DateTimeOffsetObjectTypeVisitor(VisitorCollection visitorCollection)
19+
: base(visitorCollection)
20+
{
21+
}
22+
1723
/// <inheritdoc />
1824
public override bool IsVisitable(Type type)
1925
{

src/Aliencube.AzureFunctions.Extensions.OpenApi.Core/Visitors/DateTimeTypeVisitor.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ namespace Aliencube.AzureFunctions.Extensions.OpenApi.Core.Visitors
1414
/// </summary>
1515
public class DateTimeTypeVisitor : TypeVisitor
1616
{
17+
/// <inheritdoc />
18+
public DateTimeTypeVisitor(VisitorCollection visitorCollection)
19+
: base(visitorCollection)
20+
{
21+
}
22+
1723
/// <inheritdoc />
1824
public override bool IsVisitable(Type type)
1925
{

src/Aliencube.AzureFunctions.Extensions.OpenApi.Core/Visitors/DecimalTypeVisitor.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ namespace Aliencube.AzureFunctions.Extensions.OpenApi.Core.Visitors
1414
/// </summary>
1515
public class DecimalTypeVisitor : TypeVisitor
1616
{
17+
/// <inheritdoc />
18+
public DecimalTypeVisitor(VisitorCollection visitorCollection)
19+
: base(visitorCollection)
20+
{
21+
}
22+
1723
/// <inheritdoc />
1824
public override bool IsVisitable(Type type)
1925
{

src/Aliencube.AzureFunctions.Extensions.OpenApi.Core/Visitors/DictionaryObjectTypeVisitor.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@ namespace Aliencube.AzureFunctions.Extensions.OpenApi.Core.Visitors
1616
/// </summary>
1717
public class DictionaryObjectTypeVisitor : TypeVisitor
1818
{
19+
/// <inheritdoc />
20+
public DictionaryObjectTypeVisitor(VisitorCollection visitorCollection)
21+
: base(visitorCollection)
22+
{
23+
}
24+
1925
/// <inheritdoc />
2026
public override bool IsVisitable(Type type)
2127
{
@@ -55,8 +61,7 @@ public override void Visit(IAcceptor acceptor, KeyValuePair<string, Type> type,
5561
Schemas = schemas,
5662
};
5763

58-
var collection = VisitorCollection.CreateInstance();
59-
subAcceptor.Accept(collection, namingStrategy);
64+
subAcceptor.Accept(this.VisitorCollection, namingStrategy);
6065

6166
var properties = subAcceptor.Schemas.First().Value;
6267

@@ -120,8 +125,7 @@ public override OpenApiSchema PayloadVisit(Type type, NamingStrategy namingStrat
120125

121126
// Gets the schema for the underlying type.
122127
var underlyingType = type.GetGenericArguments()[1];
123-
var collection = VisitorCollection.CreateInstance();
124-
var properties = collection.PayloadVisit(underlyingType, namingStrategy);
128+
var properties = this.VisitorCollection.PayloadVisit(underlyingType, namingStrategy);
125129

126130
// Adds the reference to the schema for the underlying type.
127131
var reference = new OpenApiReference()

src/Aliencube.AzureFunctions.Extensions.OpenApi.Core/Visitors/DoubleTypeVisitor.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ namespace Aliencube.AzureFunctions.Extensions.OpenApi.Core.Visitors
1414
/// </summary>
1515
public class DoubleTypeVisitor : TypeVisitor
1616
{
17+
/// <inheritdoc />
18+
public DoubleTypeVisitor(VisitorCollection visitorCollection)
19+
: base(visitorCollection)
20+
{
21+
}
22+
1723
/// <inheritdoc />
1824
public override bool IsVisitable(Type type)
1925
{

src/Aliencube.AzureFunctions.Extensions.OpenApi.Core/Visitors/GuidObjectTypeVisitor.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ namespace Aliencube.AzureFunctions.Extensions.OpenApi.Core.Visitors
1414
/// </summary>
1515
public class GuidObjectTypeVisitor : TypeVisitor
1616
{
17+
/// <inheritdoc />
18+
public GuidObjectTypeVisitor(VisitorCollection visitorCollection)
19+
: base(visitorCollection)
20+
{
21+
}
22+
1723
/// <inheritdoc />
1824
public override bool IsVisitable(Type type)
1925
{

src/Aliencube.AzureFunctions.Extensions.OpenApi.Core/Visitors/Int16EnumTypeVisitor.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ namespace Aliencube.AzureFunctions.Extensions.OpenApi.Core.Visitors
1919
/// </summary>
2020
public class Int16EnumTypeVisitor : TypeVisitor
2121
{
22+
/// <inheritdoc />
23+
public Int16EnumTypeVisitor(VisitorCollection visitorCollection)
24+
: base(visitorCollection)
25+
{
26+
}
27+
2228
/// <inheritdoc />
2329
public override bool IsVisitable(Type type)
2430
{

0 commit comments

Comments
 (0)