Skip to content

Commit 09105bf

Browse files
committed
use spring conditions
1 parent 8823ffc commit 09105bf

File tree

6 files changed

+30
-21
lines changed

6 files changed

+30
-21
lines changed
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,18 @@
1111
import java.util.function.Consumer;
1212
import org.slf4j.Logger;
1313
import org.slf4j.LoggerFactory;
14+
import org.springframework.boot.autoconfigure.condition.ConditionalOnJava;
15+
import org.springframework.boot.system.JavaVersion;
1416

1517
/**
1618
* Configures runtime metrics collection for Java 17+.
1719
*
1820
* <p>This class is internal and is hence not for public use. Its APIs are unstable and can change
1921
* at any time.
2022
*/
21-
public class Java17RuntimeMetricsProvider implements RuntimeMetricsProvider {
22-
private static final Logger logger = LoggerFactory.getLogger(Java17RuntimeMetricsProvider.class);
23-
24-
@Override
25-
public int minJavaVersion() {
26-
return 17;
27-
}
23+
@ConditionalOnJava(value = JavaVersion.SEVENTEEN)
24+
public class Java17RuntimeMetricsAutoConfiguration implements RuntimeMetricsProvider {
25+
private static final Logger logger = LoggerFactory.getLogger(Java17RuntimeMetricsAutoConfiguration.class);
2826

2927
@Override
3028
public void start(
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,20 @@
1111
import java.util.function.Consumer;
1212
import org.slf4j.Logger;
1313
import org.slf4j.LoggerFactory;
14+
import org.springframework.boot.autoconfigure.condition.AnyNestedCondition;
15+
import org.springframework.boot.autoconfigure.condition.ConditionalOnJava;
16+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
17+
import org.springframework.boot.system.JavaVersion;
1418

1519
/**
1620
* Configures runtime metrics collection for Java 8.
1721
*
1822
* <p>This class is internal and is hence not for public use. Its APIs are unstable and can change
1923
* at any time.
2024
*/
21-
public class Java8RuntimeMetricsProvider implements RuntimeMetricsProvider {
22-
private static final Logger logger = LoggerFactory.getLogger(Java8RuntimeMetricsProvider.class);
23-
24-
@Override
25-
public int minJavaVersion() {
26-
return 1;
27-
}
25+
@ConditionalOnJava(value = JavaVersion.SEVENTEEN, range = ConditionalOnJava.Range.OLDER_THAN)
26+
public class Java8RuntimeMetricsAutoConfiguration implements RuntimeMetricsProvider {
27+
private static final Logger logger = LoggerFactory.getLogger(Java8RuntimeMetricsAutoConfiguration.class);
2828

2929
@Override
3030
public void start(
@@ -34,4 +34,17 @@ public void start(
3434
.setShutdownHook(shutdownHook)
3535
.startFromInstrumentationConfig(config);
3636
}
37+
38+
public class Java8MetricsCondition extends AnyNestedCondition {
39+
public Java8MetricsCondition() {
40+
super(ConfigurationPhase.PARSE_CONFIGURATION);
41+
}
42+
43+
@ConditionalOnJava(value = JavaVersion.SEVENTEEN, range = ConditionalOnJava.Range.OLDER_THAN)
44+
class OlderThanJava17 {}
45+
46+
// GraalVM native image does not support Java 17 metrics yet
47+
@ConditionalOnProperty("org.graalvm.nativeimage.imagecode")
48+
class GraalVM {}
49+
}
3750
}

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/runtimemetrics/RuntimeMetricsProvider.java

-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
* at any time.
1717
*/
1818
public interface RuntimeMetricsProvider {
19-
int minJavaVersion();
2019

2120
void start(
2221
OpenTelemetry openTelemetry, Consumer<Runnable> shutdownHook, InstrumentationConfig config);

instrumentation/spring/spring-boot-autoconfigure/src/main/javaSpring3/io/opentelemetry/instrumentation/spring/autoconfigure/internal/instrumentation/runtimemetrics/RuntimeMetricsBeanRegistrationExcludeFilter.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@ public boolean isExcludedFromAotProcessing(RegisteredBean registeredBean) {
2020
// The JFR-based runtime metric code is excluded from the Spring AOT processing step.
2121
// That way, this code is not included in a Spring native image application.
2222

23-
// just checking that this works for @Configuration classes
24-
return "io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.RuntimeMetricsAutoConfiguration"
23+
return "io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java17RuntimeMetricsAutoConfiguration"
2524
.equals(registeredBean.getBeanName());
2625
}
2726
}

instrumentation/spring/spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.w
1212
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.webmvc.SpringWebMvc5InstrumentationAutoConfiguration,\
1313
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.scheduling.SpringSchedulingInstrumentationAutoConfiguration,\
1414
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.RuntimeMetricsAutoConfiguration,\
15-
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java8RuntimeMetricsProvider,\
16-
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java17RuntimeMetricsProvider
15+
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java8RuntimeMetricsAutoConfiguration,\
16+
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java17RuntimeMetricsAutoConfiguration
1717

1818
org.springframework.context.ApplicationListener=\
1919
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.logging.LogbackAppenderApplicationListener

instrumentation/spring/spring-boot-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@ io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.w
1212
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.webmvc.SpringWebMvc6InstrumentationAutoConfiguration
1313
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.scheduling.SpringSchedulingInstrumentationAutoConfiguration
1414
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.RuntimeMetricsAutoConfiguration
15-
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java8RuntimeMetricsProvider
16-
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java17RuntimeMetricsProvider
15+
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java8RuntimeMetricsAutoConfiguration
16+
io.opentelemetry.instrumentation.spring.autoconfigure.internal.instrumentation.runtimemetrics.Java17RuntimeMetricsAutoConfiguration

0 commit comments

Comments
 (0)