Skip to content

Commit bc11574

Browse files
committed
Fix exporter factory, resource detector factory validation
1 parent 032795e commit bc11574

File tree

5 files changed

+46
-110
lines changed

5 files changed

+46
-110
lines changed

sdk-extensions/incubator/build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ dependencies {
3838
testImplementation(project(":exporters:logging-otlp"))
3939
testImplementation(project(":exporters:otlp:all"))
4040
testImplementation(project(":exporters:prometheus"))
41-
testImplementation(project(":exporters:zipkin"))
4241
testImplementation(project(":sdk-extensions:jaeger-remote-sampler"))
4342
testImplementation(project(":extensions:trace-propagators"))
4443
testImplementation("edu.berkeley.cs.jqf:jqf-fuzz")
@@ -199,9 +198,11 @@ val buildGraalVmReflectionJson = tasks.register("buildGraalVmReflectionJson") {
199198
tasks.getByName("compileJava").dependsOn(deleteJs2pTmp)
200199
tasks.getByName("sourcesJar").dependsOn(deleteJs2pTmp, buildGraalVmReflectionJson)
201200
tasks.getByName("jar").dependsOn(deleteJs2pTmp, buildGraalVmReflectionJson)
201+
tasks.getByName("javadoc").dependsOn(buildGraalVmReflectionJson)
202202

203203
// Exclude jsonschema2pojo generated sources from checkstyle
204204
tasks.named<Checkstyle>("checkstyleMain") {
205+
dependsOn(buildGraalVmReflectionJson)
205206
exclude("**/fileconfig/internal/model/**")
206207
}
207208

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

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,12 @@
55

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

8-
import static io.opentelemetry.sdk.extension.incubator.fileconfig.FileConfigUtil.requireNullResource;
9-
108
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LogRecordExporterModel;
119
import io.opentelemetry.sdk.logs.export.LogRecordExporter;
10+
import java.util.LinkedHashMap;
1211
import java.util.Map;
1312

1413
final class LogRecordExporterFactory implements Factory<LogRecordExporterModel, LogRecordExporter> {
15-
16-
private static final String RESOURCE_NAME = "log record exporter";
17-
1814
private static final LogRecordExporterFactory INSTANCE = new LogRecordExporterFactory();
1915

2016
private LogRecordExporterFactory() {}
@@ -25,38 +21,26 @@ static LogRecordExporterFactory getInstance() {
2521

2622
@Override
2723
public LogRecordExporter create(LogRecordExporterModel model, DeclarativeConfigContext context) {
28-
29-
String key = null;
30-
Object resource = null;
24+
Map<String, Object> exporterResourceByName = new LinkedHashMap<>();
3125

3226
if (model.getOtlpHttp() != null) {
33-
key = "otlp_http";
34-
resource = model.getOtlpHttp();
27+
exporterResourceByName.put("otlp_http", model.getOtlpHttp());
3528
}
3629
if (model.getOtlpGrpc() != null) {
37-
requireNullResource(resource, RESOURCE_NAME, model.getAdditionalProperties());
38-
key = "otlp_grpc";
39-
resource = model.getOtlpGrpc();
30+
exporterResourceByName.put("otlp_grpc", model.getOtlpGrpc());
4031
}
4132
if (model.getOtlpFileDevelopment() != null) {
42-
requireNullResource(resource, RESOURCE_NAME, model.getAdditionalProperties());
43-
key = "otlp_file/development";
44-
resource = model.getOtlpFileDevelopment();
33+
exporterResourceByName.put("otlp_file/development", model.getOtlpFileDevelopment());
4534
}
4635
if (model.getConsole() != null) {
47-
requireNullResource(resource, RESOURCE_NAME, model.getAdditionalProperties());
48-
key = "console";
49-
resource = model.getConsole();
50-
}
51-
if (key == null || resource == null) {
52-
Map.Entry<String, ?> keyValue =
53-
FileConfigUtil.getSingletonMapEntry(model.getAdditionalProperties(), RESOURCE_NAME);
54-
key = keyValue.getKey();
55-
resource = keyValue.getValue();
36+
exporterResourceByName.put("console", model.getConsole());
5637
}
38+
exporterResourceByName.putAll(model.getAdditionalProperties());
5739

58-
LogRecordExporter logRecordExporter =
59-
context.loadComponent(LogRecordExporter.class, key, resource);
60-
return context.addCloseable(logRecordExporter);
40+
Map.Entry<String, ?> keyValue =
41+
FileConfigUtil.getSingletonMapEntry(exporterResourceByName, "log record exporter");
42+
LogRecordExporter metricExporter =
43+
context.loadComponent(LogRecordExporter.class, keyValue.getKey(), keyValue.getValue());
44+
return context.addCloseable(metricExporter);
6145
}
6246
}

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

Lines changed: 11 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,12 @@
55

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

8-
import static io.opentelemetry.sdk.extension.incubator.fileconfig.FileConfigUtil.requireNullResource;
9-
108
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.PushMetricExporterModel;
119
import io.opentelemetry.sdk.metrics.export.MetricExporter;
10+
import java.util.LinkedHashMap;
1211
import java.util.Map;
1312

1413
final class MetricExporterFactory implements Factory<PushMetricExporterModel, MetricExporter> {
15-
16-
private static final String RESOURCE_NAME = "metric exporter";
17-
1814
private static final MetricExporterFactory INSTANCE = new MetricExporterFactory();
1915

2016
private MetricExporterFactory() {}
@@ -25,37 +21,26 @@ static MetricExporterFactory getInstance() {
2521

2622
@Override
2723
public MetricExporter create(PushMetricExporterModel model, DeclarativeConfigContext context) {
28-
29-
String key = null;
30-
Object resource = null;
24+
Map<String, Object> exporterResourceByName = new LinkedHashMap<>();
3125

3226
if (model.getOtlpHttp() != null) {
33-
key = "otlp_http";
34-
resource = model.getOtlpHttp();
27+
exporterResourceByName.put("otlp_http", model.getOtlpHttp());
3528
}
3629
if (model.getOtlpGrpc() != null) {
37-
requireNullResource(resource, RESOURCE_NAME, model.getAdditionalProperties());
38-
key = "otlp_grpc";
39-
resource = model.getOtlpGrpc();
30+
exporterResourceByName.put("otlp_grpc", model.getOtlpGrpc());
4031
}
4132
if (model.getOtlpFileDevelopment() != null) {
42-
requireNullResource(resource, RESOURCE_NAME, model.getAdditionalProperties());
43-
key = "otlp_file/development";
44-
resource = model.getOtlpFileDevelopment();
33+
exporterResourceByName.put("otlp_file/development", model.getOtlpFileDevelopment());
4534
}
4635
if (model.getConsole() != null) {
47-
requireNullResource(resource, RESOURCE_NAME, model.getAdditionalProperties());
48-
key = "console";
49-
resource = model.getConsole();
50-
}
51-
if (key == null || resource == null) {
52-
Map.Entry<String, ?> keyValue =
53-
FileConfigUtil.getSingletonMapEntry(model.getAdditionalProperties(), RESOURCE_NAME);
54-
key = keyValue.getKey();
55-
resource = keyValue.getValue();
36+
exporterResourceByName.put("console", model.getConsole());
5637
}
38+
exporterResourceByName.putAll(model.getAdditionalProperties());
5739

58-
MetricExporter metricExporter = context.loadComponent(MetricExporter.class, key, resource);
40+
Map.Entry<String, ?> keyValue =
41+
FileConfigUtil.getSingletonMapEntry(exporterResourceByName, "metric exporter");
42+
MetricExporter metricExporter =
43+
context.loadComponent(MetricExporter.class, keyValue.getKey(), keyValue.getValue());
5944
return context.addCloseable(metricExporter);
6045
}
6146
}

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

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,13 @@
55

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

8-
import static io.opentelemetry.sdk.extension.incubator.fileconfig.FileConfigUtil.requireNullResource;
9-
108
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalResourceDetectorModel;
11-
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalResourceDetectorPropertyModel;
129
import io.opentelemetry.sdk.resources.Resource;
10+
import java.util.LinkedHashMap;
1311
import java.util.Map;
1412

1513
final class ResourceDetectorFactory
1614
implements Factory<ExperimentalResourceDetectorModel, Resource> {
17-
private static final String RESOURCE_NAME = "resource detector";
18-
1915
private static final ResourceDetectorFactory INSTANCE = new ResourceDetectorFactory();
2016

2117
private ResourceDetectorFactory() {}
@@ -27,35 +23,24 @@ static ResourceDetectorFactory getInstance() {
2723
@Override
2824
public Resource create(
2925
ExperimentalResourceDetectorModel model, DeclarativeConfigContext context) {
30-
String key = null;
31-
Object value = null;
26+
Map<String, Object> detectorResourceByName = new LinkedHashMap<>();
3227

3328
if (model.getContainer() != null) {
34-
key = "container";
35-
value = model.getContainer();
29+
detectorResourceByName.put("container", model.getContainer());
3630
}
3731
if (model.getHost() != null) {
38-
requireNullResource(value, RESOURCE_NAME, model.getAdditionalProperties());
39-
key = "host";
40-
value = model.getHost();
32+
detectorResourceByName.put("host", model.getHost());
4133
}
4234
if (model.getProcess() != null) {
43-
requireNullResource(value, RESOURCE_NAME, model.getAdditionalProperties());
44-
key = "process";
45-
value = model.getProcess();
35+
detectorResourceByName.put("process", model.getProcess());
4636
}
4737
if (model.getService() != null) {
48-
requireNullResource(value, RESOURCE_NAME, model.getAdditionalProperties());
49-
key = "service";
50-
value = model.getService();
51-
}
52-
if (key == null || value == null) {
53-
Map.Entry<String, ExperimentalResourceDetectorPropertyModel> keyValue =
54-
FileConfigUtil.getSingletonMapEntry(model.getAdditionalProperties(), "resource detector");
55-
key = keyValue.getKey();
56-
value = keyValue.getValue();
38+
detectorResourceByName.put("service", model.getService());
5739
}
40+
detectorResourceByName.putAll(model.getAdditionalProperties());
5841

59-
return context.loadComponent(Resource.class, key, value);
42+
Map.Entry<String, Object> keyValue =
43+
FileConfigUtil.getSingletonMapEntry(detectorResourceByName, "resource detector");
44+
return context.loadComponent(Resource.class, keyValue.getKey(), keyValue.getValue());
6045
}
6146
}

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

Lines changed: 11 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,13 @@
55

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

8-
import static io.opentelemetry.sdk.extension.incubator.fileconfig.FileConfigUtil.requireNullResource;
9-
108
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SpanExporterModel;
119
import io.opentelemetry.sdk.trace.export.SpanExporter;
10+
import java.util.LinkedHashMap;
1211
import java.util.Map;
1312

1413
final class SpanExporterFactory implements Factory<SpanExporterModel, SpanExporter> {
1514

16-
private static final String RESOURCE_NAME = "span exporter";
17-
1815
private static final SpanExporterFactory INSTANCE = new SpanExporterFactory();
1916

2017
private SpanExporterFactory() {}
@@ -25,42 +22,26 @@ static SpanExporterFactory getInstance() {
2522

2623
@Override
2724
public SpanExporter create(SpanExporterModel model, DeclarativeConfigContext context) {
28-
29-
String key = null;
30-
Object resource = null;
25+
Map<String, Object> exporterResourceByName = new LinkedHashMap<>();
3126

3227
if (model.getOtlpHttp() != null) {
33-
key = "otlp_http";
34-
resource = model.getOtlpHttp();
28+
exporterResourceByName.put("otlp_http", model.getOtlpHttp());
3529
}
3630
if (model.getOtlpGrpc() != null) {
37-
requireNullResource(resource, RESOURCE_NAME, model.getAdditionalProperties());
38-
key = "otlp_grpc";
39-
resource = model.getOtlpGrpc();
31+
exporterResourceByName.put("otlp_grpc", model.getOtlpGrpc());
4032
}
4133
if (model.getOtlpFileDevelopment() != null) {
42-
requireNullResource(resource, RESOURCE_NAME, model.getAdditionalProperties());
43-
key = "otlp_file/development";
44-
resource = model.getOtlpFileDevelopment();
34+
exporterResourceByName.put("otlp_file/development", model.getOtlpFileDevelopment());
4535
}
4636
if (model.getConsole() != null) {
47-
requireNullResource(resource, RESOURCE_NAME, model.getAdditionalProperties());
48-
key = "console";
49-
resource = model.getConsole();
50-
}
51-
if (key == null || resource == null) {
52-
Map.Entry<String, ?> keyValue =
53-
FileConfigUtil.getSingletonMapEntry(model.getAdditionalProperties(), RESOURCE_NAME);
54-
key = keyValue.getKey();
55-
resource = keyValue.getValue();
56-
}
57-
// TODO: remove after merging
58-
// https://github.com/open-telemetry/opentelemetry-configuration/pull/460
59-
if ("zipkin".equals(key)) {
60-
return SpanExporter.composite();
37+
exporterResourceByName.put("console", model.getConsole());
6138
}
39+
exporterResourceByName.putAll(model.getAdditionalProperties());
6240

63-
SpanExporter spanExporter = context.loadComponent(SpanExporter.class, key, resource);
41+
Map.Entry<String, Object> keyValue =
42+
FileConfigUtil.getSingletonMapEntry(exporterResourceByName, "span exporter");
43+
SpanExporter spanExporter =
44+
context.loadComponent(SpanExporter.class, keyValue.getKey(), keyValue.getValue());
6445
return context.addCloseable(spanExporter);
6546
}
6647
}

0 commit comments

Comments
 (0)