Honor the endpoint.enabled property when registering MBeans
Fixes gh-2873 Closes gh-2890
This commit is contained in:
		
							parent
							
								
									ef49ced12a
								
							
						
					
					
						commit
						b16a973d6a
					
				| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2013-2014 the original author or authors.
 | 
			
		||||
 * Copyright 2013-2015 the original author or authors.
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
| 
						 | 
				
			
			@ -138,7 +138,8 @@ public class EndpointMBeanExporter extends MBeanExporter implements SmartLifecyc
 | 
			
		|||
	protected void locateAndRegisterEndpoints() {
 | 
			
		||||
		Map<String, Endpoint> endpoints = this.beanFactory.getBeansOfType(Endpoint.class);
 | 
			
		||||
		for (Map.Entry<String, Endpoint> endpointEntry : endpoints.entrySet()) {
 | 
			
		||||
			if (!this.registeredEndpoints.contains(endpointEntry.getValue())) {
 | 
			
		||||
			if (!this.registeredEndpoints.contains(endpointEntry.getValue())
 | 
			
		||||
					&& endpointEntry.getValue().isEnabled()) {
 | 
			
		||||
				registerEndpoint(endpointEntry.getKey(), endpointEntry.getValue());
 | 
			
		||||
				this.registeredEndpoints.add(endpointEntry.getValue());
 | 
			
		||||
			}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright 2013 the original author or authors.
 | 
			
		||||
 * Copyright 2013-2015 the original author or authors.
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
| 
						 | 
				
			
			@ -37,7 +37,9 @@ import org.springframework.jmx.support.ObjectNameManager;
 | 
			
		|||
import org.springframework.util.ObjectUtils;
 | 
			
		||||
 | 
			
		||||
import static org.junit.Assert.assertEquals;
 | 
			
		||||
import static org.junit.Assert.assertFalse;
 | 
			
		||||
import static org.junit.Assert.assertNotNull;
 | 
			
		||||
import static org.junit.Assert.assertTrue;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Tests for {@link EndpointMBeanExporter}
 | 
			
		||||
| 
						 | 
				
			
			@ -73,6 +75,36 @@ public class EndpointMBeanExporterTests {
 | 
			
		|||
		assertEquals(3, mbeanInfo.getAttributes().length);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Test
 | 
			
		||||
	public void testSkipRegistrationOfDisabledEndpoint() throws Exception {
 | 
			
		||||
		this.context = new GenericApplicationContext();
 | 
			
		||||
		this.context.registerBeanDefinition("endpointMbeanExporter",
 | 
			
		||||
				new RootBeanDefinition(EndpointMBeanExporter.class));
 | 
			
		||||
		MutablePropertyValues mvp = new MutablePropertyValues();
 | 
			
		||||
		mvp.add("enabled", Boolean.FALSE);
 | 
			
		||||
		this.context.registerBeanDefinition("endpoint1", new RootBeanDefinition(
 | 
			
		||||
				TestEndpoint.class, null, mvp));
 | 
			
		||||
		this.context.refresh();
 | 
			
		||||
		MBeanExporter mbeanExporter = this.context.getBean(EndpointMBeanExporter.class);
 | 
			
		||||
		assertFalse(mbeanExporter.getServer().isRegistered(
 | 
			
		||||
				getObjectName("endpoint1", this.context)));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Test
 | 
			
		||||
	public void testRegistrationOfEnabledEndpoint() throws Exception {
 | 
			
		||||
		this.context = new GenericApplicationContext();
 | 
			
		||||
		this.context.registerBeanDefinition("endpointMbeanExporter",
 | 
			
		||||
				new RootBeanDefinition(EndpointMBeanExporter.class));
 | 
			
		||||
		MutablePropertyValues mvp = new MutablePropertyValues();
 | 
			
		||||
		mvp.add("enabled", Boolean.TRUE);
 | 
			
		||||
		this.context.registerBeanDefinition("endpoint1", new RootBeanDefinition(
 | 
			
		||||
				TestEndpoint.class, null, mvp));
 | 
			
		||||
		this.context.refresh();
 | 
			
		||||
		MBeanExporter mbeanExporter = this.context.getBean(EndpointMBeanExporter.class);
 | 
			
		||||
		assertTrue(mbeanExporter.getServer().isRegistered(
 | 
			
		||||
				getObjectName("endpoint1", this.context)));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Test
 | 
			
		||||
	public void testRegistrationTwoEndpoints() throws Exception {
 | 
			
		||||
		this.context = new GenericApplicationContext();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue