@ -58,7 +58,9 @@ import org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebAppl
import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer ;
import org.springframework.boot.context.embedded.EmbeddedServletContainer ;
import org.springframework.boot.context.embedded.EmbeddedServletContainerException ;
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory ;
import org.springframework.boot.context.embedded.EmbeddedServletContainerInitializedEvent ;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory ;
import org.springframework.boot.context.web.ServerPortInfoApplicationContextInitializer ;
import org.springframework.boot.test.EnvironmentTestUtils ;
import org.springframework.context.ApplicationContext ;
@ -85,6 +87,7 @@ import static org.hamcrest.Matchers.instanceOf;
import static org.hamcrest.Matchers.is ;
import static org.hamcrest.Matchers.not ;
import static org.hamcrest.Matchers.notNullValue ;
import static org.hamcrest.Matchers.sameInstance ;
import static org.hamcrest.Matchers.startsWith ;
import static org.junit.Assert.assertEquals ;
import static org.junit.Assert.assertFalse ;
@ -177,6 +180,35 @@ public class EndpointWebMvcAutoConfigurationTests {
assertAllClosed ( ) ;
}
@Test
public void onDifferentPortWithSpecificContainer ( ) throws Exception {
this . applicationContext . register ( SpecificContainerConfig . class , RootConfig . class ,
DifferentPortConfig . class , EndpointConfig . class , BaseConfiguration . class ,
EndpointWebMvcAutoConfiguration . class , ErrorMvcAutoConfiguration . class ) ;
this . applicationContext . refresh ( ) ;
assertContent ( "/controller" , ports . get ( ) . server , "controlleroutput" ) ;
assertContent ( "/endpoint" , ports . get ( ) . server , null ) ;
assertContent ( "/controller" , ports . get ( ) . management , null ) ;
assertContent ( "/endpoint" , ports . get ( ) . management , "endpointoutput" ) ;
assertContent ( "/error" , ports . get ( ) . management , startsWith ( "{" ) ) ;
ApplicationContext managementContext = this . applicationContext
. getBean ( ManagementContextResolver . class ) . getApplicationContext ( ) ;
List < ? > interceptors = ( List < ? > ) ReflectionTestUtils . getField (
managementContext . getBean ( EndpointHandlerMapping . class ) , "interceptors" ) ;
assertEquals ( 1 , interceptors . size ( ) ) ;
EmbeddedServletContainerFactory parentContainerFactory = this . applicationContext
. getBean ( EmbeddedServletContainerFactory . class ) ;
EmbeddedServletContainerFactory managementContainerFactory = managementContext
. getBean ( EmbeddedServletContainerFactory . class ) ;
assertThat ( parentContainerFactory ,
instanceOf ( SpecificEmbeddedServletContainerFactory . class ) ) ;
assertThat ( managementContainerFactory ,
instanceOf ( SpecificEmbeddedServletContainerFactory . class ) ) ;
assertThat ( managementContainerFactory , not ( sameInstance ( parentContainerFactory ) ) ) ;
this . applicationContext . close ( ) ;
assertAllClosed ( ) ;
}
@Test
public void onDifferentPortAndContext ( ) throws Exception {
this . applicationContext . register ( RootConfig . class , EndpointConfig . class ,
@ -611,6 +643,16 @@ public class EndpointWebMvcAutoConfigurationTests {
}
@Configuration
public static class SpecificContainerConfig {
@Bean
public SpecificEmbeddedServletContainerFactory embeddedServletContainerFactory ( ) {
return new SpecificEmbeddedServletContainerFactory ( ) ;
}
}
@Configuration
@Import ( ServerPortConfig . class )
public static class DifferentPortConfig {
@ -638,6 +680,7 @@ public class EndpointWebMvcAutoConfigurationTests {
}
protected static class TestInterceptor extends HandlerInterceptorAdapter {
private int count = 0 ;
@Override
@ -650,6 +693,7 @@ public class EndpointWebMvcAutoConfigurationTests {
public int getCount ( ) {
return this . count ;
}
}
}
@ -730,4 +774,9 @@ public class EndpointWebMvcAutoConfigurationTests {
}
private static class SpecificEmbeddedServletContainerFactory
extends TomcatEmbeddedServletContainerFactory {
}
}