@@ -48,15 +48,16 @@ static AutoConfiguredOpenTelemetrySdk configureFromFile(
4848 declarativeConfiguration .getMethod (
4949 "create" , openTelemetryConfiguration , ComponentLoader .class );
5050 OpenTelemetrySdk sdk = (OpenTelemetrySdk ) create .invoke (null , model , componentLoader );
51+
5152 Class <?> sdkConfigProvider =
5253 Class .forName ("io.opentelemetry.sdk.extension.incubator.fileconfig.SdkConfigProvider" );
5354 Method createFileConfigProvider =
5455 sdkConfigProvider .getMethod ("create" , openTelemetryConfiguration );
5556 ConfigProvider configProvider = (ConfigProvider ) createFileConfigProvider .invoke (null , model );
56- // Note: can't access file configuration resource without reflection so setting a dummy
57- // resource
58- return AutoConfiguredOpenTelemetrySdk . create (
59- sdk , Resource . getDefault () , null , configProvider );
57+
58+ Resource configuredResource = createResourceFromModel ( model , componentLoader );
59+
60+ return AutoConfiguredOpenTelemetrySdk . create ( sdk , configuredResource , null , configProvider );
6061 } catch (FileNotFoundException e ) {
6162 throw new ConfigurationException ("Configuration file not found" , e );
6263 } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException e ) {
@@ -76,6 +77,25 @@ static AutoConfiguredOpenTelemetrySdk configureFromFile(
7677 }
7778 }
7879
80+ private static Resource createResourceFromModel (
81+ Object openTelemetryConfigurationModel , ComponentLoader componentLoader )
82+ throws NoSuchMethodException ,
83+ InvocationTargetException ,
84+ IllegalAccessException ,
85+ ClassNotFoundException {
86+ Class <?> declarativeConfigurationClass =
87+ Class .forName (
88+ "io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration" );
89+ Class <?> configurationModelClass =
90+ Class .forName (
91+ "io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel" );
92+
93+ Method createResource =
94+ declarativeConfigurationClass .getMethod (
95+ "createResource" , configurationModelClass , ComponentLoader .class );
96+ return (Resource ) createResource .invoke (null , openTelemetryConfigurationModel , componentLoader );
97+ }
98+
7999 private static ConfigurationException toConfigurationException (
80100 DeclarativeConfigException exception ) {
81101 String message = Objects .requireNonNull (exception .getMessage ());
0 commit comments