Merge branch '1.3.x'
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2015 the original author or authors.
|
||||
* Copyright 2012-2016 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.
|
||||
@@ -16,15 +16,12 @@
|
||||
|
||||
package org.springframework.boot.autoconfigure.integration;
|
||||
|
||||
import javax.management.MBeanServer;
|
||||
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.autoconfigure.condition.SearchStrategy;
|
||||
import org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.integration.config.EnableIntegration;
|
||||
import org.springframework.integration.jmx.config.EnableIntegrationMBeanExport;
|
||||
@@ -36,19 +33,15 @@ import org.springframework.integration.monitor.IntegrationMBeanExporter;
|
||||
*
|
||||
* @author Artem Bilan
|
||||
* @author Dave Syer
|
||||
* @author Stephane Nicoll
|
||||
* @since 1.1.0
|
||||
*/
|
||||
@Configuration
|
||||
@ConditionalOnClass(EnableIntegration.class)
|
||||
@AutoConfigureAfter(JmxAutoConfiguration.class)
|
||||
@ConditionalOnProperty(prefix = "spring.jmx", name = "enabled", havingValue = "true", matchIfMissing = true)
|
||||
public class IntegrationAutoConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(MBeanServer.class)
|
||||
public MBeanServer mbeanServer() {
|
||||
return new JmxAutoConfiguration().mbeanServer();
|
||||
}
|
||||
|
||||
@Configuration
|
||||
@EnableIntegration
|
||||
protected static class IntegrationConfiguration {
|
||||
@@ -57,7 +50,6 @@ public class IntegrationAutoConfiguration {
|
||||
@Configuration
|
||||
@ConditionalOnClass(EnableIntegrationMBeanExport.class)
|
||||
@ConditionalOnMissingBean(value = IntegrationMBeanExporter.class, search = SearchStrategy.CURRENT)
|
||||
@ConditionalOnProperty(prefix = "spring.jmx", name = "enabled", havingValue = "true", matchIfMissing = true)
|
||||
@EnableIntegrationMBeanExport(defaultDomain = "${spring.jmx.default-domain:}", server = "${spring.jmx.server:mbeanServer}")
|
||||
protected static class IntegrationJmxConfiguration {
|
||||
}
|
||||
|
||||
@@ -16,12 +16,19 @@
|
||||
|
||||
package org.springframework.boot.autoconfigure.integration;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import javax.management.MBeanServer;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
import org.springframework.integration.support.channel.HeaderChannelRegistry;
|
||||
import org.springframework.test.context.support.TestPropertySourceUtils;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@@ -29,40 +36,75 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
* Tests for {@link IntegrationAutoConfiguration}.
|
||||
*
|
||||
* @author Artem Bilan
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
public class IntegrationAutoConfigurationTests {
|
||||
|
||||
private AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
|
||||
private AnnotationConfigApplicationContext context;
|
||||
|
||||
@After
|
||||
public void close() {
|
||||
if (this.context != null) {
|
||||
this.context.close();
|
||||
if (this.context.getParent() != null) {
|
||||
((ConfigurableApplicationContext) this.context.getParent()).close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void integrationIsAvailable() {
|
||||
this.context.register(IntegrationAutoConfiguration.class);
|
||||
this.context.refresh();
|
||||
load();
|
||||
MBeanServer mBeanServer = this.context.getBean(MBeanServer.class);
|
||||
assertDomains(mBeanServer, true, "org.springframework.integration",
|
||||
"org.springframework.integration.monitor");
|
||||
assertThat(this.context.getBean(HeaderChannelRegistry.class)).isNotNull();
|
||||
this.context.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addJmxAuto() {
|
||||
this.context.register(JmxAutoConfiguration.class,
|
||||
IntegrationAutoConfiguration.class);
|
||||
this.context.refresh();
|
||||
assertThat(this.context.getBean(HeaderChannelRegistry.class)).isNotNull();
|
||||
this.context.close();
|
||||
public void disableIntegration() {
|
||||
load("spring.jmx.enabled=false");
|
||||
assertThat(this.context.getBeansOfType(MBeanServer.class)).hasSize(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void customizeDomain() {
|
||||
load("spring.jmx.default-domain=org.foo");
|
||||
MBeanServer mBeanServer = this.context.getBean(MBeanServer.class);
|
||||
assertDomains(mBeanServer, true, "org.foo");
|
||||
assertDomains(mBeanServer, false, "org.springframework.integration",
|
||||
"org.springframework.integration.monitor");
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void parentContext() {
|
||||
this.context.register(IntegrationAutoConfiguration.class);
|
||||
this.context = new AnnotationConfigApplicationContext();
|
||||
this.context.register(JmxAutoConfiguration.class, IntegrationAutoConfiguration.class);
|
||||
this.context.refresh();
|
||||
AnnotationConfigApplicationContext parent = this.context;
|
||||
this.context = new AnnotationConfigApplicationContext();
|
||||
this.context.setParent(parent);
|
||||
this.context.register(IntegrationAutoConfiguration.class);
|
||||
this.context.register(JmxAutoConfiguration.class, IntegrationAutoConfiguration.class);
|
||||
this.context.refresh();
|
||||
assertThat(this.context.getBean(HeaderChannelRegistry.class)).isNotNull();
|
||||
((ConfigurableApplicationContext) this.context.getParent()).close();
|
||||
this.context.close();
|
||||
}
|
||||
|
||||
private static void assertDomains(MBeanServer mBeanServer, boolean expected, String... domains) {
|
||||
List<String> actual = Arrays.asList(mBeanServer.getDomains());
|
||||
for (String domain : domains) {
|
||||
assertThat(actual.contains(domain)).isEqualTo(expected);
|
||||
}
|
||||
}
|
||||
|
||||
private void load(String... environment) {
|
||||
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
|
||||
TestPropertySourceUtils.addInlinedPropertiesToEnvironment(ctx, environment);
|
||||
ctx.register(JmxAutoConfiguration.class, IntegrationAutoConfiguration.class);
|
||||
ctx.refresh();
|
||||
this.context = ctx;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user