Skip to content

Commit 8867113

Browse files
committed
PR feedback
1 parent 8b3402b commit 8867113

File tree

12 files changed

+124
-132
lines changed

12 files changed

+124
-132
lines changed

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

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,7 @@
99

1010
import io.opentelemetry.api.incubator.config.DeclarativeConfigException;
1111
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
12-
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ConsoleExporterModel;
13-
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalOtlpFileExporterModel;
1412
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LogRecordExporterModel;
15-
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OtlpGrpcExporterModel;
16-
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OtlpHttpExporterModel;
1713
import io.opentelemetry.sdk.logs.export.LogRecordExporter;
1814
import java.io.Closeable;
1915
import java.util.List;
@@ -32,23 +28,13 @@ static LogRecordExporterFactory getInstance() {
3228
@Override
3329
public LogRecordExporter create(
3430
LogRecordExporterModel model, SpiHelper spiHelper, List<Closeable> closeables) {
35-
OtlpHttpExporterModel otlpHttpModel = model.getOtlpHttp();
36-
if (otlpHttpModel != null) {
37-
model.getAdditionalProperties().put("otlp_http", otlpHttpModel);
38-
}
39-
OtlpGrpcExporterModel otlpGrpcModel = model.getOtlpGrpc();
40-
if (otlpGrpcModel != null) {
41-
model.getAdditionalProperties().put("otlp_grpc", otlpGrpcModel);
42-
}
43-
ExperimentalOtlpFileExporterModel otlpFileExporterModel = model.getOtlpFileDevelopment();
44-
if (otlpFileExporterModel != null) {
45-
model.getAdditionalProperties().put("otlp_file/development", otlpFileExporterModel);
46-
}
4731

48-
ConsoleExporterModel consoleModel = model.getConsole();
49-
if (consoleModel != null) {
50-
model.getAdditionalProperties().put("console", consoleModel);
51-
}
32+
model.getAdditionalProperties().compute("otlp_http", (v1, v2) -> model.getOtlpHttp());
33+
model.getAdditionalProperties().compute("otlp_grpc", (v1, v2) -> model.getOtlpGrpc());
34+
model
35+
.getAdditionalProperties()
36+
.compute("otlp_file/development", (v1, v2) -> model.getOtlpFileDevelopment());
37+
model.getAdditionalProperties().compute("console", (v1, v2) -> model.getConsole());
5238

5339
if (!model.getAdditionalProperties().isEmpty()) {
5440
Map<String, Object> additionalProperties = model.getAdditionalProperties();

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

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@
99

1010
import io.opentelemetry.api.incubator.config.DeclarativeConfigException;
1111
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
12-
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalOtlpFileMetricExporterModel;
13-
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OtlpGrpcMetricExporterModel;
14-
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OtlpHttpMetricExporterModel;
1512
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.PushMetricExporterModel;
1613
import io.opentelemetry.sdk.metrics.export.MetricExporter;
1714
import java.io.Closeable;
@@ -31,22 +28,13 @@ static MetricExporterFactory getInstance() {
3128
@Override
3229
public MetricExporter create(
3330
PushMetricExporterModel model, SpiHelper spiHelper, List<Closeable> closeables) {
34-
OtlpHttpMetricExporterModel otlpHttpModel = model.getOtlpHttp();
35-
if (otlpHttpModel != null) {
36-
model.getAdditionalProperties().put("otlp_http", otlpHttpModel);
37-
}
38-
OtlpGrpcMetricExporterModel otlpGrpcModel = model.getOtlpGrpc();
39-
if (otlpGrpcModel != null) {
40-
model.getAdditionalProperties().put("otlp_grpc", otlpGrpcModel);
41-
}
42-
ExperimentalOtlpFileMetricExporterModel otlpFileExporterModel = model.getOtlpFileDevelopment();
43-
if (otlpFileExporterModel != null) {
44-
model.getAdditionalProperties().put("otlp_file/development", otlpFileExporterModel);
45-
}
4631

47-
if (model.getConsole() != null) {
48-
model.getAdditionalProperties().put("console", model.getConsole());
49-
}
32+
model.getAdditionalProperties().compute("otlp_http", (v1, v2) -> model.getOtlpHttp());
33+
model.getAdditionalProperties().compute("otlp_grpc", (v1, v2) -> model.getOtlpGrpc());
34+
model
35+
.getAdditionalProperties()
36+
.compute("otlp_file/development", (v1, v2) -> model.getOtlpFileDevelopment());
37+
model.getAdditionalProperties().compute("console", (v1, v2) -> model.getConsole());
5038

5139
if (!model.getAdditionalProperties().isEmpty()) {
5240
Map<String, Object> additionalProperties = model.getAdditionalProperties();

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

Lines changed: 46 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,42 +40,78 @@ public MetricReaderAndCardinalityLimits create(
4040
MetricReaderModel model, SpiHelper spiHelper, List<Closeable> closeables) {
4141
PeriodicMetricReaderModel periodicModel = model.getPeriodic();
4242
if (periodicModel != null) {
43+
return PeriodicMetricReaderFactory.INSTANCE.create(periodicModel, spiHelper, closeables);
44+
}
45+
46+
PullMetricReaderModel pullModel = model.getPull();
47+
if (pullModel != null) {
48+
return PullMetricReaderFactory.INSTANCE.create(pullModel, spiHelper, closeables);
49+
}
50+
51+
throw new DeclarativeConfigException("reader must be set");
52+
}
53+
54+
private static class PeriodicMetricReaderFactory
55+
implements Factory<PeriodicMetricReaderModel, MetricReaderAndCardinalityLimits> {
56+
57+
private static final PeriodicMetricReaderFactory INSTANCE = new PeriodicMetricReaderFactory();
58+
59+
private PeriodicMetricReaderFactory() {}
60+
61+
@Override
62+
public MetricReaderAndCardinalityLimits create(
63+
PeriodicMetricReaderModel model, SpiHelper spiHelper, List<Closeable> closeables) {
4364
PushMetricExporterModel exporterModel =
44-
requireNonNull(periodicModel.getExporter(), "periodic metric reader exporter");
65+
requireNonNull(model.getExporter(), "periodic metric reader exporter");
4566
MetricExporter metricExporter =
4667
MetricExporterFactory.getInstance().create(exporterModel, spiHelper, closeables);
68+
4769
PeriodicMetricReaderBuilder builder =
4870
PeriodicMetricReader.builder(FileConfigUtil.addAndReturn(closeables, metricExporter));
49-
if (periodicModel.getInterval() != null) {
50-
builder.setInterval(Duration.ofMillis(periodicModel.getInterval()));
71+
72+
if (model.getInterval() != null) {
73+
builder.setInterval(Duration.ofMillis(model.getInterval()));
5174
}
5275
CardinalityLimitSelector cardinalityLimitSelector = null;
53-
if (periodicModel.getCardinalityLimits() != null) {
76+
if (model.getCardinalityLimits() != null) {
5477
cardinalityLimitSelector =
5578
CardinalityLimitsFactory.getInstance()
56-
.create(periodicModel.getCardinalityLimits(), spiHelper, closeables);
79+
.create(model.getCardinalityLimits(), spiHelper, closeables);
5780
}
81+
5882
MetricReaderAndCardinalityLimits readerAndCardinalityLimits =
5983
MetricReaderAndCardinalityLimits.create(builder.build(), cardinalityLimitSelector);
6084
return FileConfigUtil.addAndReturn(closeables, readerAndCardinalityLimits);
6185
}
86+
}
6287

63-
PullMetricReaderModel pullModel = model.getPull();
64-
if (pullModel != null) {
88+
private static class PullMetricReaderFactory
89+
implements Factory<PullMetricReaderModel, MetricReaderAndCardinalityLimits> {
90+
91+
private static final PullMetricReaderFactory INSTANCE = new PullMetricReaderFactory();
92+
93+
private PullMetricReaderFactory() {}
94+
95+
@Override
96+
public MetricReaderAndCardinalityLimits create(
97+
PullMetricReaderModel model, SpiHelper spiHelper, List<Closeable> closeables) {
6598
PullMetricExporterModel exporterModel =
66-
requireNonNull(pullModel.getExporter(), "pull metric reader exporter");
99+
requireNonNull(model.getExporter(), "pull metric reader exporter");
100+
67101
ExperimentalPrometheusMetricExporterModel prometheusModel =
68102
exporterModel.getPrometheusDevelopment();
103+
69104
if (prometheusModel != null) {
70105
MetricReader metricReader =
71106
FileConfigUtil.loadComponent(
72107
spiHelper, MetricReader.class, "prometheus", prometheusModel);
73108
CardinalityLimitSelector cardinalityLimitSelector = null;
74-
if (pullModel.getCardinalityLimits() != null) {
109+
if (model.getCardinalityLimits() != null) {
75110
cardinalityLimitSelector =
76111
CardinalityLimitsFactory.getInstance()
77-
.create(pullModel.getCardinalityLimits(), spiHelper, closeables);
112+
.create(model.getCardinalityLimits(), spiHelper, closeables);
78113
}
114+
79115
MetricReaderAndCardinalityLimits readerAndCardinalityLimits =
80116
MetricReaderAndCardinalityLimits.create(metricReader, cardinalityLimitSelector);
81117
return FileConfigUtil.addAndReturn(closeables, readerAndCardinalityLimits);
@@ -84,7 +120,5 @@ public MetricReaderAndCardinalityLimits create(
84120
throw new DeclarativeConfigException(
85121
"prometheus is the only currently supported pull reader");
86122
}
87-
88-
throw new DeclarativeConfigException("reader must be set");
89123
}
90124
}

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
final class OpenTelemetryConfigurationFactory
1919
implements Factory<OpenTelemetryConfigurationModel, OpenTelemetrySdk> {
2020

21+
private static final String CURRENT_SUPPORTED_FILE_FORMAT = "0.4";
22+
2123
private static final OpenTelemetryConfigurationFactory INSTANCE =
2224
new OpenTelemetryConfigurationFactory();
2325

@@ -31,9 +33,9 @@ static OpenTelemetryConfigurationFactory getInstance() {
3133
public OpenTelemetrySdk create(
3234
OpenTelemetryConfigurationModel model, SpiHelper spiHelper, List<Closeable> closeables) {
3335
OpenTelemetrySdkBuilder builder = OpenTelemetrySdk.builder();
34-
if (!"0.4".equals(model.getFileFormat())) {
36+
if (!CURRENT_SUPPORTED_FILE_FORMAT.equals(model.getFileFormat())) {
3537
throw new DeclarativeConfigException(
36-
"Unsupported file format. Supported formats include: 0.4");
38+
"Unsupported file format. Supported formats include: " + CURRENT_SUPPORTED_FILE_FORMAT);
3739
}
3840

3941
if (Objects.equals(Boolean.TRUE, model.getDisabled())) {

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,9 @@ public Resource create(
4242
.orElseThrow(
4343
() ->
4444
new IllegalStateException("Missing detector. This is a programming error."));
45-
Resource resource =
46-
FileConfigUtil.loadComponent(
47-
spiHelper, Resource.class, detectorKeyValue.getKey(), detectorKeyValue.getValue());
48-
return resource;
45+
46+
return FileConfigUtil.loadComponent(
47+
spiHelper, Resource.class, detectorKeyValue.getKey(), detectorKeyValue.getValue());
4948
} else {
5049
throw new DeclarativeConfigException("resource detector must be set");
5150
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
package io.opentelemetry.sdk.extension.incubator.fileconfig;
77

8-
import static io.opentelemetry.sdk.internal.GlobUtil.toGlobPatternPredicate;
8+
import static io.opentelemetry.sdk.internal.GlobUtil.createGlobPatternPredicate;
99

1010
import io.opentelemetry.api.common.Attributes;
1111
import io.opentelemetry.sdk.autoconfigure.ResourceConfiguration;
@@ -109,7 +109,7 @@ private static Predicate<String> detectorAttributeFilter(
109109
private static Predicate<String> includedPredicate(List<String> included) {
110110
Predicate<String> result = attributeKey -> false;
111111
for (String include : included) {
112-
result = result.or(toGlobPatternPredicate(include));
112+
result = result.or(createGlobPatternPredicate(include));
113113
}
114114
return result;
115115
}
@@ -121,7 +121,7 @@ private static Predicate<String> includedPredicate(List<String> included) {
121121
private static Predicate<String> excludedPredicate(List<String> excluded) {
122122
Predicate<String> result = attributeKey -> true;
123123
for (String exclude : excluded) {
124-
result = result.and(toGlobPatternPredicate(exclude).negate());
124+
result = result.and(createGlobPatternPredicate(exclude).negate());
125125
}
126126
return result;
127127
}

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

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
import io.opentelemetry.api.incubator.config.DeclarativeConfigException;
1111
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
12-
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.JaegerRemoteSamplerModel;
1312
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ParentBasedSamplerModel;
1413
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SamplerModel;
1514
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.TraceIdRatioBasedSamplerModel;
@@ -73,10 +72,7 @@ public Sampler create(SamplerModel model, SpiHelper spiHelper, List<Closeable> c
7372
return builder.build();
7473
}
7574

76-
JaegerRemoteSamplerModel jaegerRemoteModel = model.getJaegerRemote();
77-
if (jaegerRemoteModel != null) {
78-
model.getAdditionalProperties().put("jaeger_remote", jaegerRemoteModel);
79-
}
75+
model.getAdditionalProperties().compute("jaeger_remote", (v1, v2) -> model.getJaegerRemote());
8076

8177
if (!model.getAdditionalProperties().isEmpty()) {
8278
Map<String, Object> additionalProperties = model.getAdditionalProperties();

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

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,7 @@
99

1010
import io.opentelemetry.api.incubator.config.DeclarativeConfigException;
1111
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
12-
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalOtlpFileExporterModel;
13-
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OtlpGrpcExporterModel;
14-
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OtlpHttpExporterModel;
1512
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SpanExporterModel;
16-
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ZipkinSpanExporterModel;
1713
import io.opentelemetry.sdk.trace.export.SpanExporter;
1814
import java.io.Closeable;
1915
import java.util.List;
@@ -32,27 +28,14 @@ static SpanExporterFactory getInstance() {
3228
@Override
3329
public SpanExporter create(
3430
SpanExporterModel model, SpiHelper spiHelper, List<Closeable> closeables) {
35-
OtlpHttpExporterModel otlpHttpModel = model.getOtlpHttp();
36-
if (otlpHttpModel != null) {
37-
model.getAdditionalProperties().put("otlp_http", otlpHttpModel);
38-
}
39-
OtlpGrpcExporterModel otlpGrpcModel = model.getOtlpGrpc();
40-
if (otlpGrpcModel != null) {
41-
model.getAdditionalProperties().put("otlp_grpc", otlpGrpcModel);
42-
}
43-
ExperimentalOtlpFileExporterModel otlpFileExporterModel = model.getOtlpFileDevelopment();
44-
if (otlpFileExporterModel != null) {
45-
model.getAdditionalProperties().put("otlp_file/development", otlpFileExporterModel);
46-
}
4731

48-
if (model.getConsole() != null) {
49-
model.getAdditionalProperties().put("console", model.getConsole());
50-
}
51-
52-
ZipkinSpanExporterModel zipkinModel = model.getZipkin();
53-
if (zipkinModel != null) {
54-
model.getAdditionalProperties().put("zipkin", model.getZipkin());
55-
}
32+
model.getAdditionalProperties().compute("otlp_http", (v1, v2) -> model.getOtlpHttp());
33+
model.getAdditionalProperties().compute("otlp_grpc", (v1, v2) -> model.getOtlpGrpc());
34+
model
35+
.getAdditionalProperties()
36+
.compute("otlp_file/development", (v1, v2) -> model.getOtlpFileDevelopment());
37+
model.getAdditionalProperties().compute("console", (v1, v2) -> model.getConsole());
38+
model.getAdditionalProperties().compute("zipkin", (v1, v2) -> model.getZipkin());
5639

5740
if (!model.getAdditionalProperties().isEmpty()) {
5841
Map<String, Object> additionalProperties = model.getAdditionalProperties();

sdk/common/src/main/java/io/opentelemetry/sdk/internal/GlobUtil.java

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,18 @@ private GlobUtil() {}
3030
* <li>{@code ?} matches exactly one instance of any character
3131
* </ul>
3232
*/
33-
public static Predicate<String> toGlobPatternPredicate(String globPattern) {
34-
return new GlobPatternPredicate(globPattern);
33+
public static Predicate<String> createGlobPatternPredicate(String globPattern) {
34+
// If globPattern contains '*' or '?', convert it to a regex and return corresponding
35+
// predicate
36+
Pattern pattern = null;
37+
for (int i = 0; i < globPattern.length(); i++) {
38+
char c = globPattern.charAt(i);
39+
if (c == '*' || c == '?') {
40+
pattern = toRegexPattern(globPattern);
41+
break;
42+
}
43+
}
44+
return new GlobPatternPredicate(globPattern, pattern);
3545
}
3646

3747
/**
@@ -66,22 +76,16 @@ private static Pattern toRegexPattern(String globPattern) {
6676
return Pattern.compile(patternBuilder.toString());
6777
}
6878

79+
/**
80+
* A predicate which evaluates if a test string matches the {@link #globPattern}, and which has a
81+
* valid {@link #toString()} implementation.
82+
*/
6983
private static class GlobPatternPredicate implements Predicate<String> {
7084
private final String globPattern;
7185
@Nullable private final Pattern pattern;
7286

73-
private GlobPatternPredicate(String globPattern) {
87+
private GlobPatternPredicate(String globPattern, @Nullable Pattern pattern) {
7488
this.globPattern = globPattern;
75-
// If globPattern contains '*' or '?', convert it to a regex and return corresponding
76-
// predicate
77-
Pattern pattern = null;
78-
for (int i = 0; i < globPattern.length(); i++) {
79-
char c = globPattern.charAt(i);
80-
if (c == '*' || c == '?') {
81-
pattern = toRegexPattern(globPattern);
82-
break;
83-
}
84-
}
8589
this.pattern = pattern;
8690
}
8791

sdk/common/src/main/java/io/opentelemetry/sdk/internal/ScopeConfiguratorBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public ScopeConfiguratorBuilder<T> addCondition(
7474
* @see #addCondition(Predicate, Object)
7575
*/
7676
public static Predicate<InstrumentationScopeInfo> nameMatchesGlob(String globPattern) {
77-
return new ScopeNameMatcher(GlobUtil.toGlobPatternPredicate(globPattern));
77+
return new ScopeNameMatcher(GlobUtil.createGlobPatternPredicate(globPattern));
7878
}
7979

8080
/**

0 commit comments

Comments
 (0)