commit
71cf0a3ec8
|
@ -466,8 +466,8 @@ public abstract class EndpointDiscoverer<E extends ExposableEndpoint<O>, O exten
|
||||||
ExtensionBean(String beanName, Object bean) {
|
ExtensionBean(String beanName, Object bean) {
|
||||||
this.bean = bean;
|
this.bean = bean;
|
||||||
this.beanName = beanName;
|
this.beanName = beanName;
|
||||||
MergedAnnotation<EndpointExtension> extensionAnnotation = MergedAnnotations.from(bean.getClass())
|
MergedAnnotation<EndpointExtension> extensionAnnotation = MergedAnnotations
|
||||||
.get(EndpointExtension.class);
|
.from(bean.getClass(), SearchStrategy.TYPE_HIERARCHY).get(EndpointExtension.class);
|
||||||
Class<?> endpointType = extensionAnnotation.getClass("endpoint");
|
Class<?> endpointType = extensionAnnotation.getClass("endpoint");
|
||||||
MergedAnnotation<Endpoint> endpointAnnotation = MergedAnnotations
|
MergedAnnotation<Endpoint> endpointAnnotation = MergedAnnotations
|
||||||
.from(endpointType, SearchStrategy.TYPE_HIERARCHY).get(Endpoint.class);
|
.from(endpointType, SearchStrategy.TYPE_HIERARCHY).get(Endpoint.class);
|
||||||
|
|
|
@ -44,6 +44,8 @@ import org.springframework.boot.actuate.endpoint.invoke.ParameterValueMapper;
|
||||||
import org.springframework.boot.actuate.endpoint.invoke.convert.ConversionServiceParameterValueMapper;
|
import org.springframework.boot.actuate.endpoint.invoke.convert.ConversionServiceParameterValueMapper;
|
||||||
import org.springframework.boot.actuate.endpoint.invoker.cache.CachingOperationInvoker;
|
import org.springframework.boot.actuate.endpoint.invoker.cache.CachingOperationInvoker;
|
||||||
import org.springframework.boot.actuate.endpoint.invoker.cache.CachingOperationInvokerAdvisor;
|
import org.springframework.boot.actuate.endpoint.invoker.cache.CachingOperationInvokerAdvisor;
|
||||||
|
import org.springframework.cglib.proxy.Enhancer;
|
||||||
|
import org.springframework.cglib.proxy.FixedValue;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
|
@ -236,6 +238,15 @@ class EndpointDiscovererTests {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getEndpointsWhenHasProxiedEndpointShouldReturnEndpoint() {
|
||||||
|
load(ProxiedSpecializedEndpointsConfiguration.class, (context) -> {
|
||||||
|
SpecializedEndpointDiscoverer discoverer = new SpecializedEndpointDiscoverer(context);
|
||||||
|
Map<EndpointId, SpecializedExposableEndpoint> endpoints = mapEndpoints(discoverer.getEndpoints());
|
||||||
|
assertThat(endpoints).containsOnlyKeys(EndpointId.of("test"), EndpointId.of("specialized"));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void getEndpointsShouldApplyFilters() {
|
void getEndpointsShouldApplyFilters() {
|
||||||
load(SpecializedEndpointsConfiguration.class, (context) -> {
|
load(SpecializedEndpointsConfiguration.class, (context) -> {
|
||||||
|
@ -327,6 +338,19 @@ class EndpointDiscovererTests {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Configuration(proxyBeanMethods = false)
|
||||||
|
static class ProxiedSpecializedTestEndpointConfiguration {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
SpecializedExtension specializedExtension() {
|
||||||
|
Enhancer enhancer = new Enhancer();
|
||||||
|
enhancer.setSuperclass(SpecializedExtension.class);
|
||||||
|
enhancer.setCallback((FixedValue) () -> null);
|
||||||
|
return (SpecializedExtension) enhancer.create();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Configuration(proxyBeanMethods = false)
|
@Configuration(proxyBeanMethods = false)
|
||||||
static class TestEndpointConfiguration {
|
static class TestEndpointConfiguration {
|
||||||
|
|
||||||
|
@ -387,6 +411,11 @@ class EndpointDiscovererTests {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Import({ TestEndpoint.class, SpecializedTestEndpoint.class, ProxiedSpecializedTestEndpointConfiguration.class })
|
||||||
|
static class ProxiedSpecializedEndpointsConfiguration {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Endpoint(id = "test")
|
@Endpoint(id = "test")
|
||||||
static class TestEndpoint {
|
static class TestEndpoint {
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue