Skip to content

Commit 4d775de

Browse files
committed
Update operation tags generation
1 parent 19d58e7 commit 4d775de

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

src/Microsoft.OpenApi.OData.Reader/Operation/EdmOperationOperationHandler.cs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,12 @@ protected override void SetBasicInfo(OpenApiOperation operation)
133133
/// <inheritdoc/>
134134
protected override void SetTags(OpenApiOperation operation)
135135
{
136-
string value = EdmOperation.IsAction() ? "Actions" : "Functions";
136+
string tagName = null;
137+
var secondLastSegment = Path.Segments.Reverse().Skip(1).First();
138+
GenerateTagName(secondLastSegment, out tagName);
137139
OpenApiTag tag = new OpenApiTag
138140
{
139-
Name = NavigationSource.Name + "." + value,
141+
Name = tagName,
140142
};
141143
tag.Extensions.Add(Constants.xMsTocType, new OpenApiString("container"));
142144
operation.Tags.Add(tag);
@@ -146,6 +148,23 @@ protected override void SetTags(OpenApiOperation operation)
146148
base.SetTags(operation);
147149
}
148150

151+
private void GenerateTagName(ODataSegment targetSegment, out string tagName)
152+
{
153+
if (targetSegment is ODataNavigationPropertySegment)
154+
{
155+
tagName = EdmModelHelper.GenerateNavigationPropertyPathTagName(Path, Context);
156+
}
157+
else if (targetSegment is ODataOperationSegment || targetSegment is ODataOperationImportSegment)
158+
{ // Composable function
159+
targetSegment = Path.Segments.Reverse().Skip(2).First();
160+
GenerateTagName(targetSegment, out tagName);
161+
}
162+
else // ODataKeySegment or ODataNavigationSourceSegment
163+
{
164+
tagName = NavigationSource.Name + "." + NavigationSource.EntityType.Name;
165+
}
166+
}
167+
149168
/// <inheritdoc/>
150169
protected override void SetParameters(OpenApiOperation operation)
151170
{

0 commit comments

Comments
 (0)