Skip to content

Commit 655d2e6

Browse files
committed
Revert "customizers are sufficient"
This reverts commit 1a867b1.
1 parent d0c8aba commit 655d2e6

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

docs/apidiffs/current_vs_latest/opentelemetry-sdk-extension-autoconfigure.txt

+6-4
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@ Comparing source compatibility of against
22
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdkBuilder (not serializable)
33
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
44
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdkBuilder setComponentLoader(io.opentelemetry.sdk.autoconfigure.ComponentLoader)
5-
+++ NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.opentelemetry.sdk.autoconfigure.ComponentLoader (not serializable)
5+
+++* NEW INTERFACE: PUBLIC(+) ABSTRACT(+) io.opentelemetry.sdk.autoconfigure.ComponentLoader (not serializable)
66
+++ CLASS FILE FORMAT VERSION: 52.0 <- n.a.
77
+++ NEW SUPERCLASS: java.lang.Object
8-
+++ NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.Iterable<T> load(java.lang.Class<T>)
8+
+++* NEW METHOD: PUBLIC(+) ABSTRACT(+) java.lang.Iterable<T> load(java.lang.Class<T>)
99
GENERIC TEMPLATES: +++ T:java.lang.Object
10-
+++ NEW METHOD: PUBLIC(+) java.util.Map<java.lang.String,T> loadConfigurableProviders(java.lang.Class<T>)
10+
+++* NEW METHOD: PUBLIC(+) java.util.Map<java.lang.String,T> loadConfigurableProviders(java.lang.Class<T>)
1111
GENERIC TEMPLATES: +++ T:io.opentelemetry.sdk.autoconfigure.spi.ConfigurableProvider
12-
+++ NEW METHOD: PUBLIC(+) java.util.List<T> loadOrdered(java.lang.Class<T>)
12+
+++* NEW METHOD: PUBLIC(+) java.util.Optional<T> loadOptional(java.lang.Class<T>)
13+
GENERIC TEMPLATES: +++ T:java.lang.Object
14+
+++* NEW METHOD: PUBLIC(+) java.util.List<T> loadOrdered(java.lang.Class<T>)
1315
GENERIC TEMPLATES: +++ T:io.opentelemetry.sdk.autoconfigure.spi.Ordered

sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/ComponentLoader.java

+6
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,19 @@
1111
import java.util.HashMap;
1212
import java.util.List;
1313
import java.util.Map;
14+
import java.util.Optional;
1415
import java.util.stream.Collectors;
1516
import java.util.stream.StreamSupport;
1617

1718
/** A loader for components that are discovered via SPI. */
1819
public interface ComponentLoader {
1920
<T> Iterable<T> load(Class<T> spiClass);
2021

22+
default <T> Optional<T> loadOptional(Class<T> spiClass) {
23+
Iterable<T> iterable = load(spiClass);
24+
return StreamSupport.stream(iterable.spliterator(), false).findFirst();
25+
}
26+
2127
/**
2228
* Load implementations of an ordered SPI (i.e. implements {@link Ordered}).
2329
*

sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/internal/SpiHelper.java

+5
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import java.util.IdentityHashMap;
1717
import java.util.List;
1818
import java.util.Map;
19+
import java.util.Optional;
1920
import java.util.ServiceLoader;
2021
import java.util.Set;
2122
import java.util.function.BiFunction;
@@ -109,6 +110,10 @@ private <T> List<T> init(Iterable<T> components) {
109110
return result;
110111
}
111112

113+
public <T> Optional<T> loadOptional(Class<T> spiClass) {
114+
return componentLoader.loadOptional(spiClass).map(this::maybeAddListener);
115+
}
116+
112117
private <T> T maybeAddListener(T object) {
113118
if (object instanceof AutoConfigureListener) {
114119
listeners.add((AutoConfigureListener) object);

0 commit comments

Comments
 (0)