Skip to content

Commit

Permalink
Do not auto-configure OEMIV filter when user defines registration bean
Browse files Browse the repository at this point in the history
  • Loading branch information
Jeffrey van der Laan authored and wilkinsona committed Feb 11, 2019
1 parent 88fd84a commit 4f86233
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 2 deletions.
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2018 the original author or authors.
* Copyright 2012-2019 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.
Expand Down Expand Up @@ -39,6 +39,7 @@
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
import org.springframework.boot.autoconfigure.domain.EntityScanPackages;
import org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizers;
import org.springframework.boot.autoconfigure.web.servlet.ConditionalOnMissingFilterBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
import org.springframework.context.annotation.Bean;
Expand Down Expand Up @@ -211,6 +212,7 @@ public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
@ConditionalOnClass(WebMvcConfigurer.class)
@ConditionalOnMissingBean({ OpenEntityManagerInViewInterceptor.class,
OpenEntityManagerInViewFilter.class })
@ConditionalOnMissingFilterBean(OpenEntityManagerInViewFilter.class)
@ConditionalOnProperty(prefix = "spring.jpa", name = "open-in-view", havingValue = "true", matchIfMissing = true)
protected static class JpaWebConfiguration {

Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2017 the original author or authors.
* Copyright 2012-2019 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.
Expand Down Expand Up @@ -38,6 +38,7 @@
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.boot.test.context.runner.ContextConsumer;
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
Expand Down Expand Up @@ -159,6 +160,32 @@ public void openEntityManagerInViewInterceptorIsNotRegisteredWhenFilterPresent()
.doesNotHaveBean(OpenEntityManagerInViewInterceptor.class));
}

@Test
public void openEntityManagerInViewInterceptorIsNotRegisteredWhenFilterRegistrationPresent() {
new WebApplicationContextRunner()
.withPropertyValues("spring.datasource.generate-unique-name=true")
.withUserConfiguration(TestFilterRegistrationConfiguration.class)
.withConfiguration(AutoConfigurations.of(
DataSourceAutoConfiguration.class,
TransactionAutoConfiguration.class, this.autoConfiguredClass))
.run((context) -> assertThat(context)
.doesNotHaveBean(OpenEntityManagerInViewInterceptor.class));
}

@Test
public void openEntityManagerInViewInterceptorAutoConfigurationBacksOffWhenManuallyRegistered() {
new WebApplicationContextRunner()
.withPropertyValues("spring.datasource.generate-unique-name=true")
.withUserConfiguration(TestInterceptorManualConfiguration.class)
.withConfiguration(AutoConfigurations.of(
DataSourceAutoConfiguration.class,
TransactionAutoConfiguration.class, this.autoConfiguredClass))
.run((context) -> assertThat(context)
.getBean(OpenEntityManagerInViewInterceptor.class)
.isExactlyInstanceOf(
TestInterceptorManualConfiguration.ManualOpenEntityManagerInViewInterceptor.class));
}

@Test
public void openEntityManagerInViewInterceptorISNotRegisteredWhenExplicitlyOff() {
new WebApplicationContextRunner()
Expand Down Expand Up @@ -298,6 +325,33 @@ public OpenEntityManagerInViewFilter openEntityManagerInViewFilter() {

}

@Configuration
@TestAutoConfigurationPackage(City.class)
protected static class TestFilterRegistrationConfiguration {

@Bean
public FilterRegistrationBean<OpenEntityManagerInViewFilter> OpenEntityManagerInViewFilterFilterRegistrationBean() {
return new FilterRegistrationBean<>();
}

}

@Configuration
@TestAutoConfigurationPackage(City.class)
protected static class TestInterceptorManualConfiguration {

@Bean
public OpenEntityManagerInViewInterceptor openEntityManagerInViewInterceptor() {
return new ManualOpenEntityManagerInViewInterceptor();
}

protected static class ManualOpenEntityManagerInViewInterceptor
extends OpenEntityManagerInViewInterceptor {

}

}

@Configuration
protected static class TestConfigurationWithLocalContainerEntityManagerFactoryBean
extends TestConfiguration {
Expand Down

0 comments on commit 4f86233

Please sign in to comment.