Skip to content

Commit

Permalink
IDownstreamApi overloads that take JsonTypeInfo<T> as a parameter to …
Browse files Browse the repository at this point in the history
…enable source generated Json deserialization for NativeAOT (#131)

AzureAD/microsoft-identity-web#2930

Adding overloads to IDownstreamApi that accept JsonTypeInfo for inputs / outputs so that source generated Json serialization can work in a NativeAOT context.
  • Loading branch information
dualtagh committed Jul 29, 2024
1 parent b514b48 commit 860d228
Show file tree
Hide file tree
Showing 10 changed files with 1,281 additions and 15 deletions.
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
</PropertyGroup>

<PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;net462</TargetFrameworks>
<TargetFrameworks>netstandard2.0;netstandard2.1;net462;net8.0</TargetFrameworks>
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>../../build/MSAL.snk</AssemblyOriginatorKeyFile>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
Expand Down
5 changes: 5 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
7.0.0
========
## Breaking changes:
- Extends the 'IDownstreamApi' interface to include overrides with `JsonTypeInfo<T>` parameters for source generated JSON serialization. See [PR](https://github.com/AzureAD/microsoft-identity-abstractions-for-dotnet/pull/131) for details.

6.0.0
========
## Breaking changes:
Expand Down
144 changes: 144 additions & 0 deletions src/Microsoft.Identity.Abstractions/CompatibilitySuppressions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,150 @@
<Left>lib/netstandard2.0/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.CallApiForAppAsync``1(System.String,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptions},System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.CallApiForAppAsync``2(System.String,``0,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Text.Json.Serialization.Metadata.JsonTypeInfo{``1},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptions},System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.CallApiForUserAsync``1(System.String,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptions},System.Security.Claims.ClaimsPrincipal,System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.CallApiForUserAsync``2(System.String,``0,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Text.Json.Serialization.Metadata.JsonTypeInfo{``1},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptions},System.Security.Claims.ClaimsPrincipal,System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.DeleteForAppAsync``1(System.String,``0,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptionsReadOnlyHttpMethod},System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.DeleteForAppAsync``2(System.String,``0,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Text.Json.Serialization.Metadata.JsonTypeInfo{``1},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptionsReadOnlyHttpMethod},System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.DeleteForUserAsync``1(System.String,``0,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptionsReadOnlyHttpMethod},System.Security.Claims.ClaimsPrincipal,System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.DeleteForUserAsync``2(System.String,``0,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Text.Json.Serialization.Metadata.JsonTypeInfo{``1},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptionsReadOnlyHttpMethod},System.Security.Claims.ClaimsPrincipal,System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.GetForAppAsync``1(System.String,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptionsReadOnlyHttpMethod},System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.GetForAppAsync``2(System.String,``0,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Text.Json.Serialization.Metadata.JsonTypeInfo{``1},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptionsReadOnlyHttpMethod},System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.GetForUserAsync``1(System.String,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptionsReadOnlyHttpMethod},System.Security.Claims.ClaimsPrincipal,System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.GetForUserAsync``2(System.String,``0,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Text.Json.Serialization.Metadata.JsonTypeInfo{``1},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptionsReadOnlyHttpMethod},System.Security.Claims.ClaimsPrincipal,System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.PatchForAppAsync``1(System.String,``0,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptionsReadOnlyHttpMethod},System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.PatchForAppAsync``2(System.String,``0,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Text.Json.Serialization.Metadata.JsonTypeInfo{``1},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptionsReadOnlyHttpMethod},System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.PatchForUserAsync``1(System.String,``0,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptionsReadOnlyHttpMethod},System.Security.Claims.ClaimsPrincipal,System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.PatchForUserAsync``2(System.String,``0,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Text.Json.Serialization.Metadata.JsonTypeInfo{``1},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptionsReadOnlyHttpMethod},System.Security.Claims.ClaimsPrincipal,System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.PostForAppAsync``1(System.String,``0,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptionsReadOnlyHttpMethod},System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.PostForAppAsync``2(System.String,``0,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Text.Json.Serialization.Metadata.JsonTypeInfo{``1},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptionsReadOnlyHttpMethod},System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.PostForUserAsync``1(System.String,``0,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptionsReadOnlyHttpMethod},System.Security.Claims.ClaimsPrincipal,System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.PostForUserAsync``2(System.String,``0,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Text.Json.Serialization.Metadata.JsonTypeInfo{``1},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptionsReadOnlyHttpMethod},System.Security.Claims.ClaimsPrincipal,System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.PutForAppAsync``1(System.String,``0,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptionsReadOnlyHttpMethod},System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.PutForAppAsync``2(System.String,``0,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Text.Json.Serialization.Metadata.JsonTypeInfo{``1},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptionsReadOnlyHttpMethod},System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.PutForUserAsync``1(System.String,``0,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptionsReadOnlyHttpMethod},System.Security.Claims.ClaimsPrincipal,System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IDownstreamApi.PutForUserAsync``2(System.String,``0,System.Text.Json.Serialization.Metadata.JsonTypeInfo{``0},System.Text.Json.Serialization.Metadata.JsonTypeInfo{``1},System.Action{Microsoft.Identity.Abstractions.DownstreamApiOptionsReadOnlyHttpMethod},System.Security.Claims.ClaimsPrincipal,System.Threading.CancellationToken)</Target>
<Left>lib/netstandard2.1/Microsoft.Identity.Abstractions.dll</Left>
<Right>lib/net8.0/Microsoft.Identity.Abstractions.dll</Right>
</Suppression>
<Suppression>
<DiagnosticId>CP0006</DiagnosticId>
<Target>M:Microsoft.Identity.Abstractions.IAuthorizationHeaderProvider.CreateAuthorizationHeaderAsync(System.Collections.Generic.IEnumerable{System.String},Microsoft.Identity.Abstractions.AuthorizationHeaderProviderOptions,System.Security.Claims.ClaimsPrincipal,System.Threading.CancellationToken)</Target>
Expand Down
Loading

0 comments on commit 860d228

Please sign in to comment.