jmx allow boolean and enum for metric attributes (#12231)
This commit is contained in:
parent
19ae57b4c7
commit
32fd44ebf2
|
@ -272,6 +272,12 @@ public class BeanAttributeExtractor implements MetricAttributeExtractor {
|
|||
if (value instanceof String) {
|
||||
return (String) value;
|
||||
}
|
||||
if (value instanceof Boolean) {
|
||||
return value.toString();
|
||||
}
|
||||
if (value instanceof Enum) {
|
||||
return ((Enum<?>) value).name();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,9 +28,7 @@ public interface MetricAttributeExtractor {
|
|||
String extractValue(@Nullable MBeanServer server, @Nullable ObjectName objectName);
|
||||
|
||||
static MetricAttributeExtractor fromConstant(String constantValue) {
|
||||
return (a, b) -> {
|
||||
return constantValue;
|
||||
};
|
||||
return (a, b) -> constantValue;
|
||||
}
|
||||
|
||||
static MetricAttributeExtractor fromObjectNameParameter(String parameterKey) {
|
||||
|
|
|
@ -34,6 +34,10 @@ class AttributeExtractorTest {
|
|||
double getDoubleAttribute();
|
||||
|
||||
String getStringAttribute();
|
||||
|
||||
boolean getBooleanAttribute();
|
||||
|
||||
Enum<?> getEnumAttribute();
|
||||
}
|
||||
|
||||
private static class Test1 implements Test1MBean {
|
||||
|
@ -71,6 +75,20 @@ class AttributeExtractorTest {
|
|||
public String getStringAttribute() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getBooleanAttribute() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Enum<?> getEnumAttribute() {
|
||||
return DummyEnum.ENUM_VALUE;
|
||||
}
|
||||
|
||||
private enum DummyEnum {
|
||||
ENUM_VALUE
|
||||
}
|
||||
}
|
||||
|
||||
private static final String DOMAIN = "otel.jmx.test";
|
||||
|
@ -202,4 +220,20 @@ class AttributeExtractorTest {
|
|||
AttributeInfo info = extractor.getAttributeInfo(theServer, objectName);
|
||||
assertThat(info == null).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testBooleanAttribute() throws Exception {
|
||||
BeanAttributeExtractor extractor = BeanAttributeExtractor.fromName("BooleanAttribute");
|
||||
AttributeInfo info = extractor.getAttributeInfo(theServer, objectName);
|
||||
assertThat(info).isNull();
|
||||
assertThat(extractor.extractValue(theServer, objectName)).isEqualTo("true");
|
||||
}
|
||||
|
||||
@Test
|
||||
void testEnumAttribute() throws Exception {
|
||||
BeanAttributeExtractor extractor = BeanAttributeExtractor.fromName("EnumAttribute");
|
||||
AttributeInfo info = extractor.getAttributeInfo(theServer, objectName);
|
||||
assertThat(info).isNull();
|
||||
assertThat(extractor.extractValue(theServer, objectName)).isEqualTo("ENUM_VALUE");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue