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) {
|
if (value instanceof String) {
|
||||||
return (String) value;
|
return (String) value;
|
||||||
}
|
}
|
||||||
|
if (value instanceof Boolean) {
|
||||||
|
return value.toString();
|
||||||
|
}
|
||||||
|
if (value instanceof Enum) {
|
||||||
|
return ((Enum<?>) value).name();
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,9 +28,7 @@ public interface MetricAttributeExtractor {
|
||||||
String extractValue(@Nullable MBeanServer server, @Nullable ObjectName objectName);
|
String extractValue(@Nullable MBeanServer server, @Nullable ObjectName objectName);
|
||||||
|
|
||||||
static MetricAttributeExtractor fromConstant(String constantValue) {
|
static MetricAttributeExtractor fromConstant(String constantValue) {
|
||||||
return (a, b) -> {
|
return (a, b) -> constantValue;
|
||||||
return constantValue;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static MetricAttributeExtractor fromObjectNameParameter(String parameterKey) {
|
static MetricAttributeExtractor fromObjectNameParameter(String parameterKey) {
|
||||||
|
|
|
@ -34,6 +34,10 @@ class AttributeExtractorTest {
|
||||||
double getDoubleAttribute();
|
double getDoubleAttribute();
|
||||||
|
|
||||||
String getStringAttribute();
|
String getStringAttribute();
|
||||||
|
|
||||||
|
boolean getBooleanAttribute();
|
||||||
|
|
||||||
|
Enum<?> getEnumAttribute();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class Test1 implements Test1MBean {
|
private static class Test1 implements Test1MBean {
|
||||||
|
@ -71,6 +75,20 @@ class AttributeExtractorTest {
|
||||||
public String getStringAttribute() {
|
public String getStringAttribute() {
|
||||||
return "";
|
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";
|
private static final String DOMAIN = "otel.jmx.test";
|
||||||
|
@ -202,4 +220,20 @@ class AttributeExtractorTest {
|
||||||
AttributeInfo info = extractor.getAttributeInfo(theServer, objectName);
|
AttributeInfo info = extractor.getAttributeInfo(theServer, objectName);
|
||||||
assertThat(info == null).isTrue();
|
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