Commit f021c227 authored by Stephane Nicoll's avatar Stephane Nicoll

Polish

parent 45915d08
...@@ -23,6 +23,7 @@ import org.apache.commons.logging.LogFactory; ...@@ -23,6 +23,7 @@ import org.apache.commons.logging.LogFactory;
import org.neo4j.ogm.session.SessionFactory; import org.neo4j.ogm.session.SessionFactory;
import org.neo4j.ogm.session.event.EventListener; import org.neo4j.ogm.session.event.EventListener;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.AutoConfigurationPackages; import org.springframework.boot.autoconfigure.AutoConfigurationPackages;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
...@@ -34,7 +35,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplicat ...@@ -34,7 +35,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplicat
import org.springframework.boot.autoconfigure.domain.EntityScanPackages; import org.springframework.boot.autoconfigure.domain.EntityScanPackages;
import org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizers; import org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizers;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
...@@ -66,39 +66,33 @@ public class Neo4jDataAutoConfiguration { ...@@ -66,39 +66,33 @@ public class Neo4jDataAutoConfiguration {
@ConditionalOnMissingBean(PlatformTransactionManager.class) @ConditionalOnMissingBean(PlatformTransactionManager.class)
public Neo4jTransactionManager transactionManager(SessionFactory sessionFactory, public Neo4jTransactionManager transactionManager(SessionFactory sessionFactory,
ObjectProvider<TransactionManagerCustomizers> transactionManagerCustomizers) { ObjectProvider<TransactionManagerCustomizers> transactionManagerCustomizers) {
return customize(new Neo4jTransactionManager(sessionFactory), transactionManagerCustomizers.getIfAvailable()); Neo4jTransactionManager transactionManager = new Neo4jTransactionManager(sessionFactory);
} transactionManagerCustomizers.ifAvailable((customizers) -> customizers.customize(transactionManager));
private Neo4jTransactionManager customize(Neo4jTransactionManager transactionManager,
TransactionManagerCustomizers customizers) {
if (customizers != null) {
customizers.customize(transactionManager);
}
return transactionManager; return transactionManager;
} }
@Configuration(proxyBeanMethods = false) @Configuration(proxyBeanMethods = false)
@ConditionalOnMissingBean(SessionFactory.class) @ConditionalOnMissingBean(SessionFactory.class)
protected static class Neo4jOgmSessionFactoryConfiguration { static class Neo4jOgmSessionFactoryConfiguration {
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
public org.neo4j.ogm.config.Configuration configuration(Neo4jProperties properties) { org.neo4j.ogm.config.Configuration configuration(Neo4jProperties properties) {
return properties.createConfiguration(); return properties.createConfiguration();
} }
@Bean @Bean
public SessionFactory sessionFactory(org.neo4j.ogm.config.Configuration configuration, SessionFactory sessionFactory(org.neo4j.ogm.config.Configuration configuration, BeanFactory beanFactory,
ApplicationContext applicationContext, ObjectProvider<EventListener> eventListeners) { ObjectProvider<EventListener> eventListeners) {
SessionFactory sessionFactory = new SessionFactory(configuration, getPackagesToScan(applicationContext)); SessionFactory sessionFactory = new SessionFactory(configuration, getPackagesToScan(beanFactory));
eventListeners.stream().forEach(sessionFactory::register); eventListeners.orderedStream().forEach(sessionFactory::register);
return sessionFactory; return sessionFactory;
} }
private String[] getPackagesToScan(ApplicationContext applicationContext) { private String[] getPackagesToScan(BeanFactory beanFactory) {
List<String> packages = EntityScanPackages.get(applicationContext).getPackageNames(); List<String> packages = EntityScanPackages.get(beanFactory).getPackageNames();
if (packages.isEmpty() && AutoConfigurationPackages.has(applicationContext)) { if (packages.isEmpty() && AutoConfigurationPackages.has(beanFactory)) {
packages = AutoConfigurationPackages.get(applicationContext); packages = AutoConfigurationPackages.get(beanFactory);
} }
return StringUtils.toStringArray(packages); return StringUtils.toStringArray(packages);
} }
...@@ -111,19 +105,13 @@ public class Neo4jDataAutoConfiguration { ...@@ -111,19 +105,13 @@ public class Neo4jDataAutoConfiguration {
@ConditionalOnMissingBean(OpenSessionInViewInterceptor.class) @ConditionalOnMissingBean(OpenSessionInViewInterceptor.class)
@ConditionalOnProperty(prefix = "spring.data.neo4j", name = "open-in-view", havingValue = "true", @ConditionalOnProperty(prefix = "spring.data.neo4j", name = "open-in-view", havingValue = "true",
matchIfMissing = true) matchIfMissing = true)
protected static class Neo4jWebConfiguration { static class Neo4jWebConfiguration {
private static final Log logger = LogFactory.getLog(Neo4jWebConfiguration.class); private static final Log logger = LogFactory.getLog(Neo4jWebConfiguration.class);
private final Neo4jProperties neo4jProperties;
protected Neo4jWebConfiguration(Neo4jProperties neo4jProperties) {
this.neo4jProperties = neo4jProperties;
}
@Bean @Bean
public OpenSessionInViewInterceptor neo4jOpenSessionInViewInterceptor() { OpenSessionInViewInterceptor neo4jOpenSessionInViewInterceptor(Neo4jProperties properties) {
if (this.neo4jProperties.getOpenInView() == null) { if (properties.getOpenInView() == null) {
logger.warn("spring.data.neo4j.open-in-view is enabled by default." logger.warn("spring.data.neo4j.open-in-view is enabled by default."
+ "Therefore, database queries may be performed during view " + "Therefore, database queries may be performed during view "
+ "rendering. Explicitly configure " + "rendering. Explicitly configure "
...@@ -133,7 +121,7 @@ public class Neo4jDataAutoConfiguration { ...@@ -133,7 +121,7 @@ public class Neo4jDataAutoConfiguration {
} }
@Bean @Bean
public WebMvcConfigurer neo4jOpenSessionInViewInterceptorConfigurer(OpenSessionInViewInterceptor interceptor) { WebMvcConfigurer neo4jOpenSessionInViewInterceptorConfigurer(OpenSessionInViewInterceptor interceptor) {
return new WebMvcConfigurer() { return new WebMvcConfigurer() {
@Override @Override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment