Skip to content

Commit 5fd3e48

Browse files
committed
use same strategy as AutoConfigurationCustomizerProvider
1 parent 6e304de commit 5fd3e48

File tree

5 files changed

+82
-28
lines changed

5 files changed

+82
-28
lines changed

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfiguration.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,12 +109,18 @@ public static OpenTelemetrySdk create(OpenTelemetryConfigurationModel configurat
109109
public static OpenTelemetrySdk create(
110110
OpenTelemetryConfigurationModel configurationModel, ComponentLoader componentLoader) {
111111
SpiHelper spiHelper = SpiHelper.create(componentLoader);
112+
113+
DeclarativeConfigurationBuilder builder = new DeclarativeConfigurationBuilder();
114+
112115
for (DeclarativeConfigurationCustomizerProvider provider :
113116
spiHelper.loadOrdered(DeclarativeConfigurationCustomizerProvider.class)) {
114-
configurationModel = provider.customize(configurationModel);
117+
provider.customize(builder);
115118
}
119+
116120
return createAndMaybeCleanup(
117-
OpenTelemetryConfigurationFactory.getInstance(), spiHelper, configurationModel);
121+
OpenTelemetryConfigurationFactory.getInstance(),
122+
spiHelper,
123+
builder.customizeModel(configurationModel));
118124
}
119125

120126
/**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.sdk.extension.incubator.fileconfig;
7+
8+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
9+
import java.util.function.Function;
10+
11+
public class DeclarativeConfigurationBuilder implements DeclarativeConfigurationCustomizer {
12+
private Function<OpenTelemetryConfigurationModel, OpenTelemetryConfigurationModel>
13+
modelCustomizer = Function.identity();
14+
15+
@Override
16+
public void addModelCustomizer(
17+
Function<OpenTelemetryConfigurationModel, OpenTelemetryConfigurationModel> customizer) {
18+
modelCustomizer = mergeCustomizer(modelCustomizer, customizer);
19+
}
20+
21+
private static <I, O1, O2> Function<I, O2> mergeCustomizer(
22+
Function<? super I, ? extends O1> first, Function<? super O1, ? extends O2> second) {
23+
return (I configured) -> {
24+
O1 firstResult = first.apply(configured);
25+
return second.apply(firstResult);
26+
};
27+
}
28+
29+
public OpenTelemetryConfigurationModel customizeModel(
30+
OpenTelemetryConfigurationModel configurationModel) {
31+
return modelCustomizer.apply(configurationModel);
32+
}
33+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.sdk.extension.incubator.fileconfig;
7+
8+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
9+
import java.util.function.Function;
10+
11+
public interface DeclarativeConfigurationCustomizer {
12+
void addModelCustomizer(
13+
Function<OpenTelemetryConfigurationModel, OpenTelemetryConfigurationModel> customizer);
14+
}

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfigurationCustomizerProvider.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@
66
package io.opentelemetry.sdk.extension.incubator.fileconfig;
77

88
import io.opentelemetry.sdk.autoconfigure.spi.Ordered;
9-
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
109

1110
public interface DeclarativeConfigurationCustomizerProvider extends Ordered {
12-
OpenTelemetryConfigurationModel customize(OpenTelemetryConfigurationModel model);
11+
void customize(DeclarativeConfigurationCustomizer customizer);
1312
}

sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfigurationCreateTest.java

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -197,32 +197,34 @@ public <T> Iterable<T> load(Class<T> spiClass) {
197197
+ "shape=\"square\", "
198198
+ "telemetry.sdk.language=\"java\", "
199199
+ "telemetry.sdk.name=\"opentelemetry\", "
200-
+ "telemetry.sdk.version=\"1.48.0-SNAPSHOT\"}}");
200+
+ "telemetry.sdk.version=\"");
201201
}
202202

203203
private static DeclarativeConfigurationCustomizerProvider getCustomizerProvider() {
204-
return model -> {
205-
ResourceModel resource = model.getResource();
206-
if (resource == null) {
207-
resource = new ResourceModel();
208-
model.withResource(resource);
209-
}
210-
List<AttributeNameValueModel> attributes = resource.getAttributes();
211-
if (attributes == null) {
212-
attributes = new ArrayList<>();
213-
resource.withAttributes(attributes);
214-
}
215-
attributes.add(
216-
new AttributeNameValueModel()
217-
.withName("foo")
218-
.withType(AttributeNameValueModel.Type.STRING)
219-
.withValue("bar"));
220-
attributes.add(
221-
new AttributeNameValueModel()
222-
.withName("color")
223-
.withType(AttributeNameValueModel.Type.STRING)
224-
.withValue("blue"));
225-
return model;
226-
};
204+
return provider ->
205+
provider.addModelCustomizer(
206+
model -> {
207+
ResourceModel resource = model.getResource();
208+
if (resource == null) {
209+
resource = new ResourceModel();
210+
model.withResource(resource);
211+
}
212+
List<AttributeNameValueModel> attributes = resource.getAttributes();
213+
if (attributes == null) {
214+
attributes = new ArrayList<>();
215+
resource.withAttributes(attributes);
216+
}
217+
attributes.add(
218+
new AttributeNameValueModel()
219+
.withName("foo")
220+
.withType(AttributeNameValueModel.Type.STRING)
221+
.withValue("bar"));
222+
attributes.add(
223+
new AttributeNameValueModel()
224+
.withName("color")
225+
.withType(AttributeNameValueModel.Type.STRING)
226+
.withValue("blue"));
227+
return model;
228+
});
227229
}
228230
}

0 commit comments

Comments
 (0)