Skip to content

Commit 5d772bd

Browse files
Use Computed annotation in the CSDL to set property as readonly
1 parent a1e77a7 commit 5d772bd

File tree

8 files changed

+23
-14
lines changed

8 files changed

+23
-14
lines changed

src/Microsoft.OpenApi.OData.Reader/Generator/OpenApiSchemaGenerator.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
using System.Linq;
1717
using Microsoft.OpenApi.Interfaces;
1818
using Microsoft.OpenApi.OData.OpenApiExtensions;
19+
using Microsoft.OpenApi.OData.Vocabulary.Core;
1920

2021
namespace Microsoft.OpenApi.OData.Generator
2122
{
@@ -353,6 +354,9 @@ public static OpenApiSchema CreatePropertySchema(this ODataContext context, IEdm
353354
// whose value is the value of the unqualified annotation Core.Description of the property.
354355
schema.Description = context.Model.GetDescriptionAnnotation(property);
355356

357+
// Set property with Computed Annotation in CSDL to readonly
358+
schema.ReadOnly = context.Model.GetBoolean(property, CoreConstants.Computed) ?? false;
359+
356360
return schema;
357361
}
358362

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using Microsoft.OpenApi.OData.Edm;
1212
using Microsoft.OpenApi.OData.Generator;
1313
using Microsoft.OpenApi.OData.Vocabulary.Capabilities;
14+
using Microsoft.OpenApi.OData.Vocabulary.Core;
1415

1516
namespace Microsoft.OpenApi.OData.Operation
1617
{
@@ -124,7 +125,7 @@ private IDictionary<string, OpenApiMediaType> GetContentDescription()
124125
if (EntitySet.EntityType().HasStream)
125126
{
126127
IEnumerable<string> mediaTypes = Context.Model.GetCollection(EntitySet.EntityType(),
127-
CapabilitiesConstants.AcceptableMediaTypes);
128+
CoreConstants.AcceptableMediaTypes);
128129

129130
if (mediaTypes != null)
130131
{

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
using Microsoft.OpenApi.Models;
1010
using Microsoft.OpenApi.OData.Common;
1111
using Microsoft.OpenApi.OData.Edm;
12-
using Microsoft.OpenApi.OData.Vocabulary.Capabilities;
1312
using Microsoft.OpenApi.OData.Vocabulary.Core;
1413
using System.Collections.Generic;
1514
using System.Linq;
@@ -151,7 +150,7 @@ protected IDictionary<string, OpenApiMediaType> GetContentDescription()
151150
if (annotatableElement != null)
152151
{
153152
mediaTypes = Context.Model.GetCollection(annotatableElement,
154-
CapabilitiesConstants.AcceptableMediaTypes);
153+
CoreConstants.AcceptableMediaTypes);
155154
}
156155

157156
if (mediaTypes != null)

src/Microsoft.OpenApi.OData.Reader/Vocabulary/Capabilities/CapabilitiesConstants.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,5 @@ internal class CapabilitiesConstants
9494
/// Org.OData.Capabilities.V1.KeyAsSegmentSupported
9595
/// </summary>
9696
public const string KeyAsSegmentSupported = "Org.OData.Capabilities.V1.KeyAsSegmentSupported";
97-
98-
/// <summary>
99-
/// Org.OData.Core.V1.AcceptableMediaTypes
100-
/// </summary>
101-
public const string AcceptableMediaTypes = "Org.OData.Core.V1.AcceptableMediaTypes";
10297
}
10398
}

src/Microsoft.OpenApi.OData.Reader/Vocabulary/Core/CoreConstants.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,16 @@ internal static class CoreConstants
2020
/// </summary>
2121
public const string Revisions = "Org.OData.Core.V1.Revisions";
2222

23+
/// <summary>
24+
/// Org.OData.Core.V1.AcceptableMediaTypes
25+
/// </summary>
26+
public const string AcceptableMediaTypes = "Org.OData.Core.V1.AcceptableMediaTypes";
27+
28+
/// <summary>
29+
/// Org.OData.Core.V1.Computed
30+
/// </summary>
31+
public const string Computed = "Org.OData.Core.V1.Computed";
32+
2333
/// <summary>
2434
/// External docs description.
2535
/// </summary>

test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/EntitySetPostOperationHandlerTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
using Microsoft.OpenApi.OData.Common;
1111
using Microsoft.OpenApi.OData.Edm;
1212
using Microsoft.OpenApi.OData.Tests;
13-
using Microsoft.OpenApi.OData.Vocabulary.Capabilities;
13+
using Microsoft.OpenApi.OData.Vocabulary.Core;
1414
using System.Xml.Linq;
1515
using Xunit;
1616

@@ -28,7 +28,7 @@ public class EntitySetPostOperationHandlerTests
2828
public void CreateEntitySetPostOperationReturnsCorrectOperation(bool enableOperationId, bool hasStream, bool useHTTPStatusCodeClass2XX)
2929
{
3030
// Arrange
31-
string qualifiedName = CapabilitiesConstants.AcceptableMediaTypes;
31+
string qualifiedName = CoreConstants.AcceptableMediaTypes;
3232
string annotation = $@"
3333
<Annotation Term=""{qualifiedName}"" >
3434
<Collection>

test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/MediaEntityGetOperationHandlerTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
using Microsoft.OData.Edm.Csdl;
88
using Microsoft.OpenApi.OData.Common;
99
using Microsoft.OpenApi.OData.Edm;
10-
using Microsoft.OpenApi.OData.Vocabulary.Capabilities;
10+
using Microsoft.OpenApi.OData.Vocabulary.Core;
1111
using System.Linq;
1212
using System.Xml.Linq;
1313
using Xunit;
@@ -26,7 +26,7 @@ public class MediaEntityGetOperationHandlerTests
2626
public void CreateMediaEntityGetOperationReturnsCorrectOperation(bool enableOperationId, bool useHTTPStatusCodeClass2XX)
2727
{
2828
// Arrange
29-
string qualifiedName = CapabilitiesConstants.AcceptableMediaTypes;
29+
string qualifiedName = CoreConstants.AcceptableMediaTypes;
3030
string annotation = $@"
3131
<Annotation Term=""{qualifiedName}"" >
3232
<Collection>

test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/MediaEntityPutOperationHandlerTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
using Microsoft.OData.Edm;
77
using Microsoft.OpenApi.OData.Common;
88
using Microsoft.OpenApi.OData.Edm;
9-
using Microsoft.OpenApi.OData.Vocabulary.Capabilities;
9+
using Microsoft.OpenApi.OData.Vocabulary.Core;
1010
using System.Linq;
1111
using Xunit;
1212

@@ -22,7 +22,7 @@ public class MediaEntityPutOperationHandlerTests
2222
public void CreateMediaEntityPutOperationReturnsCorrectOperation(bool enableOperationId)
2323
{
2424
// Arrange
25-
string qualifiedName = CapabilitiesConstants.AcceptableMediaTypes;
25+
string qualifiedName = CoreConstants.AcceptableMediaTypes;
2626
string annotation = $@"
2727
<Annotation Term=""{qualifiedName}"" >
2828
<Collection>

0 commit comments

Comments
 (0)