File tree 3 files changed +17
-4
lines changed
docs/apidiffs/current_vs_latest
sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure
3 files changed +17
-4
lines changed Original file line number Diff line number Diff line change @@ -2,12 +2,14 @@ Comparing source compatibility of against
2
2
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdkBuilder (not serializable)
3
3
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
4
4
+++ 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)
6
6
+++ CLASS FILE FORMAT VERSION: 52.0 <- n.a.
7
7
+++ 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>)
9
9
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>)
11
11
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>)
13
15
GENERIC TEMPLATES: +++ T:io.opentelemetry.sdk.autoconfigure.spi.Ordered
Original file line number Diff line number Diff line change 11
11
import java .util .HashMap ;
12
12
import java .util .List ;
13
13
import java .util .Map ;
14
+ import java .util .Optional ;
14
15
import java .util .stream .Collectors ;
15
16
import java .util .stream .StreamSupport ;
16
17
17
18
/** A loader for components that are discovered via SPI. */
18
19
public interface ComponentLoader {
19
20
<T > Iterable <T > load (Class <T > spiClass );
20
21
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
+
21
27
/**
22
28
* Load implementations of an ordered SPI (i.e. implements {@link Ordered}).
23
29
*
Original file line number Diff line number Diff line change 16
16
import java .util .IdentityHashMap ;
17
17
import java .util .List ;
18
18
import java .util .Map ;
19
+ import java .util .Optional ;
19
20
import java .util .ServiceLoader ;
20
21
import java .util .Set ;
21
22
import java .util .function .BiFunction ;
@@ -109,6 +110,10 @@ private <T> List<T> init(Iterable<T> components) {
109
110
return result ;
110
111
}
111
112
113
+ public <T > Optional <T > loadOptional (Class <T > spiClass ) {
114
+ return componentLoader .loadOptional (spiClass ).map (this ::maybeAddListener );
115
+ }
116
+
112
117
private <T > T maybeAddListener (T object ) {
113
118
if (object instanceof AutoConfigureListener ) {
114
119
listeners .add ((AutoConfigureListener ) object );
You can’t perform that action at this time.
0 commit comments