Skip to content

Commit e481492

Browse files
Moving IDeferredTracerProviderBuilder to API (#2100)
* Moved IDeferredTracerProviderBuilder to API project. Co-authored-by: Cijo Thomas <cithomas@microsoft.com>
1 parent b6d4e88 commit e481492

File tree

14 files changed

+58
-29
lines changed

14 files changed

+58
-29
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
abstract OpenTelemetry.Trace.TracerProviderBuilder.AddLegacySource(string operationName) -> OpenTelemetry.Trace.TracerProviderBuilder
2+
OpenTelemetry.Trace.IDeferredTracerProviderBuilder
3+
OpenTelemetry.Trace.IDeferredTracerProviderBuilder.Configure(System.Action<System.IServiceProvider, OpenTelemetry.Trace.TracerProviderBuilder> configure) -> OpenTelemetry.Trace.TracerProviderBuilder
24
OpenTelemetry.Trace.TracerProviderBuilder.TracerProviderBuilder() -> void
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
abstract OpenTelemetry.Trace.TracerProviderBuilder.AddLegacySource(string operationName) -> OpenTelemetry.Trace.TracerProviderBuilder
2+
OpenTelemetry.Trace.IDeferredTracerProviderBuilder
3+
OpenTelemetry.Trace.IDeferredTracerProviderBuilder.Configure(System.Action<System.IServiceProvider, OpenTelemetry.Trace.TracerProviderBuilder> configure) -> OpenTelemetry.Trace.TracerProviderBuilder
24
OpenTelemetry.Trace.TracerProviderBuilder.TracerProviderBuilder() -> void

src/OpenTelemetry.Api/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ please check the latest changes
99

1010
## Unreleased
1111

12+
* Added `IDeferredTracerProviderBuilder`.
13+
([#2058](https://github.com/open-telemetry/opentelemetry-dotnet/pull/2100))
14+
1215
## 1.1.0-beta4
1316

1417
Released 2021-Jun-09

src/OpenTelemetry/Trace/IDeferredTracerProviderBuilder.cs renamed to src/OpenTelemetry.Api/Trace/IDeferredTracerProviderBuilder.cs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,6 @@
1515
// </copyright>
1616

1717
using System;
18-
#if NET461_OR_GREATER || NETSTANDARD2_0
19-
using Microsoft.Extensions.DependencyInjection;
20-
#endif
2118

2219
namespace OpenTelemetry.Trace
2320
{
@@ -28,13 +25,6 @@ namespace OpenTelemetry.Trace
2825
/// </summary>
2926
public interface IDeferredTracerProviderBuilder
3027
{
31-
#if NET461_OR_GREATER || NETSTANDARD2_0
32-
/// <summary>
33-
/// Gets the application <see cref="IServiceCollection"/>.
34-
/// </summary>
35-
IServiceCollection Services { get; }
36-
#endif
37-
3828
/// <summary>
3929
/// Register a callback action to configure the <see
4030
/// cref="TracerProviderBuilder"/> once the application <see

src/OpenTelemetry.Extensions.Hosting/.publicApi/netstandard2.0/PublicAPI.Unshipped.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddInstrumentation<T>
66
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.AddProcessor<T>(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder) -> OpenTelemetry.Trace.TracerProviderBuilder
77
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.Build(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, System.IServiceProvider serviceProvider) -> OpenTelemetry.Trace.TracerProvider
88
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.Configure(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder, System.Action<System.IServiceProvider, OpenTelemetry.Trace.TracerProviderBuilder> configure) -> OpenTelemetry.Trace.TracerProviderBuilder
9+
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.GetServices(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder) -> Microsoft.Extensions.DependencyInjection.IServiceCollection
910
static OpenTelemetry.Trace.TracerProviderBuilderExtensions.SetSampler<T>(this OpenTelemetry.Trace.TracerProviderBuilder tracerProviderBuilder) -> OpenTelemetry.Trace.TracerProviderBuilder

src/OpenTelemetry.Extensions.Hosting/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
## Unreleased
44

5+
* Added `GetServices` extension.
6+
([#2058](https://github.com/open-telemetry/opentelemetry-dotnet/pull/2100))
7+
58
## 1.0.0-rc5
69

710
Released 2021-Jun-09

src/OpenTelemetry.Extensions.Hosting/README.md

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -65,21 +65,18 @@ from the application `IServiceCollection` so any services registered in the
6565

6666
Library authors may want to configure the OpenTelemetry `TracerProvider` and
6767
register application services to provide more complex features. This can be
68-
accomplished concisely by casting the `TracerProviderBuilder` into an
69-
`IDeferredTracerProviderBuilder` instance in an extension method like this:
68+
accomplished concisely by using the `TracerProviderBuilder.GetServices`
69+
extension method inside of a more general `TracerProviderBuilder` configuration
70+
extension like this:
7071

7172
```csharp
7273
public static class MyLibraryExtensions
7374
{
7475
public static TracerProviderBuilder AddMyFeature(this TracerProviderBuilder tracerProviderBuilder)
7576
{
76-
if (!(tracerProviderBuilder is IDeferredTracerProviderBuilder deferredTracerProviderBuilder))
77-
{
78-
throw new NotSupportedException(
79-
"MyFeature requires an IDeferredTracerProviderBuilder instance.");
80-
}
81-
82-
deferredTracerProviderBuilder.Services
77+
(tracerProviderBuilder.GetServices()
78+
?? throw new NotSupportedException(
79+
"MyFeature requires a hosting TracerProviderBuilder instance."))
8380
.AddHostedService<MyHostedService>()
8481
.AddSingleton<MyService>()
8582
.AddSingleton<MyProcessor>()

src/OpenTelemetry.Extensions.Hosting/Trace/TracerProviderBuilderExtensions.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,23 @@ public static TracerProviderBuilder Configure(this TracerProviderBuilder tracerP
9797
return tracerProviderBuilder;
9898
}
9999

100+
/// <summary>
101+
/// Gets the application <see cref="IServiceCollection"/> attached to
102+
/// the <see cref="TracerProviderBuilder"/>.
103+
/// </summary>
104+
/// <param name="tracerProviderBuilder"><see cref="TracerProviderBuilder"/>.</param>
105+
/// <returns><see cref="IServiceCollection"/> or <see langword="null"/>
106+
/// if services are unavailable.</returns>
107+
public static IServiceCollection GetServices(this TracerProviderBuilder tracerProviderBuilder)
108+
{
109+
if (tracerProviderBuilder is TracerProviderBuilderHosting tracerProviderBuilderHosting)
110+
{
111+
return tracerProviderBuilderHosting.Services;
112+
}
113+
114+
return null;
115+
}
116+
100117
/// <summary>
101118
/// Run the configured actions to initialize the <see cref="TracerProvider"/>.
102119
/// </summary>

src/OpenTelemetry/.publicApi/net452/PublicAPI.Unshipped.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
OpenTelemetry.Trace.IDeferredTracerProviderBuilder
2-
OpenTelemetry.Trace.IDeferredTracerProviderBuilder.Configure(System.Action<System.IServiceProvider, OpenTelemetry.Trace.TracerProviderBuilder> configure) -> OpenTelemetry.Trace.TracerProviderBuilder
31
OpenTelemetry.Trace.ParentBasedSampler.ParentBasedSampler(OpenTelemetry.Trace.Sampler rootSampler, OpenTelemetry.Trace.Sampler remoteParentSampled = null, OpenTelemetry.Trace.Sampler remoteParentNotSampled = null, OpenTelemetry.Trace.Sampler localParentSampled = null, OpenTelemetry.Trace.Sampler localParentNotSampled = null) -> void
42
OpenTelemetry.Trace.TracerProviderBuilderBase
53
OpenTelemetry.Trace.TracerProviderBuilderBase.AddInstrumentation(string instrumentationName, string instrumentationVersion, System.Func<object> instrumentationFactory) -> OpenTelemetry.Trace.TracerProviderBuilder

src/OpenTelemetry/.publicApi/net46/PublicAPI.Unshipped.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
OpenTelemetry.Trace.IDeferredTracerProviderBuilder
2-
OpenTelemetry.Trace.IDeferredTracerProviderBuilder.Configure(System.Action<System.IServiceProvider, OpenTelemetry.Trace.TracerProviderBuilder> configure) -> OpenTelemetry.Trace.TracerProviderBuilder
31
OpenTelemetry.Trace.ParentBasedSampler.ParentBasedSampler(OpenTelemetry.Trace.Sampler rootSampler, OpenTelemetry.Trace.Sampler remoteParentSampled = null, OpenTelemetry.Trace.Sampler remoteParentNotSampled = null, OpenTelemetry.Trace.Sampler localParentSampled = null, OpenTelemetry.Trace.Sampler localParentNotSampled = null) -> void
42
OpenTelemetry.Trace.TracerProviderBuilderBase
53
OpenTelemetry.Trace.TracerProviderBuilderBase.AddInstrumentation(string instrumentationName, string instrumentationVersion, System.Func<object> instrumentationFactory) -> OpenTelemetry.Trace.TracerProviderBuilder

0 commit comments

Comments
 (0)