|
|
|
|
@ -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.event.EventListener; |
|
|
|
|
|
|
|
|
|
import org.springframework.beans.factory.BeanFactory; |
|
|
|
|
import org.springframework.beans.factory.ObjectProvider; |
|
|
|
|
import org.springframework.boot.autoconfigure.AutoConfigurationPackages; |
|
|
|
|
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.transaction.TransactionManagerCustomizers; |
|
|
|
|
import org.springframework.boot.context.properties.EnableConfigurationProperties; |
|
|
|
|
import org.springframework.context.ApplicationContext; |
|
|
|
|
import org.springframework.context.annotation.Bean; |
|
|
|
|
import org.springframework.context.annotation.Configuration; |
|
|
|
|
import org.springframework.context.annotation.Import; |
|
|
|
|
@ -66,39 +66,33 @@ public class Neo4jDataAutoConfiguration {
@@ -66,39 +66,33 @@ public class Neo4jDataAutoConfiguration {
|
|
|
|
|
@ConditionalOnMissingBean(PlatformTransactionManager.class) |
|
|
|
|
public Neo4jTransactionManager transactionManager(SessionFactory sessionFactory, |
|
|
|
|
ObjectProvider<TransactionManagerCustomizers> transactionManagerCustomizers) { |
|
|
|
|
return customize(new Neo4jTransactionManager(sessionFactory), transactionManagerCustomizers.getIfAvailable()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private Neo4jTransactionManager customize(Neo4jTransactionManager transactionManager, |
|
|
|
|
TransactionManagerCustomizers customizers) { |
|
|
|
|
if (customizers != null) { |
|
|
|
|
customizers.customize(transactionManager); |
|
|
|
|
} |
|
|
|
|
Neo4jTransactionManager transactionManager = new Neo4jTransactionManager(sessionFactory); |
|
|
|
|
transactionManagerCustomizers.ifAvailable((customizers) -> customizers.customize(transactionManager)); |
|
|
|
|
return transactionManager; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Configuration(proxyBeanMethods = false) |
|
|
|
|
@ConditionalOnMissingBean(SessionFactory.class) |
|
|
|
|
protected static class Neo4jOgmSessionFactoryConfiguration { |
|
|
|
|
static class Neo4jOgmSessionFactoryConfiguration { |
|
|
|
|
|
|
|
|
|
@Bean |
|
|
|
|
@ConditionalOnMissingBean |
|
|
|
|
public org.neo4j.ogm.config.Configuration configuration(Neo4jProperties properties) { |
|
|
|
|
org.neo4j.ogm.config.Configuration configuration(Neo4jProperties properties) { |
|
|
|
|
return properties.createConfiguration(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Bean |
|
|
|
|
public SessionFactory sessionFactory(org.neo4j.ogm.config.Configuration configuration, |
|
|
|
|
ApplicationContext applicationContext, ObjectProvider<EventListener> eventListeners) { |
|
|
|
|
SessionFactory sessionFactory = new SessionFactory(configuration, getPackagesToScan(applicationContext)); |
|
|
|
|
eventListeners.stream().forEach(sessionFactory::register); |
|
|
|
|
SessionFactory sessionFactory(org.neo4j.ogm.config.Configuration configuration, BeanFactory beanFactory, |
|
|
|
|
ObjectProvider<EventListener> eventListeners) { |
|
|
|
|
SessionFactory sessionFactory = new SessionFactory(configuration, getPackagesToScan(beanFactory)); |
|
|
|
|
eventListeners.orderedStream().forEach(sessionFactory::register); |
|
|
|
|
return sessionFactory; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private String[] getPackagesToScan(ApplicationContext applicationContext) { |
|
|
|
|
List<String> packages = EntityScanPackages.get(applicationContext).getPackageNames(); |
|
|
|
|
if (packages.isEmpty() && AutoConfigurationPackages.has(applicationContext)) { |
|
|
|
|
packages = AutoConfigurationPackages.get(applicationContext); |
|
|
|
|
private String[] getPackagesToScan(BeanFactory beanFactory) { |
|
|
|
|
List<String> packages = EntityScanPackages.get(beanFactory).getPackageNames(); |
|
|
|
|
if (packages.isEmpty() && AutoConfigurationPackages.has(beanFactory)) { |
|
|
|
|
packages = AutoConfigurationPackages.get(beanFactory); |
|
|
|
|
} |
|
|
|
|
return StringUtils.toStringArray(packages); |
|
|
|
|
} |
|
|
|
|
@ -111,19 +105,13 @@ public class Neo4jDataAutoConfiguration {
@@ -111,19 +105,13 @@ public class Neo4jDataAutoConfiguration {
|
|
|
|
|
@ConditionalOnMissingBean(OpenSessionInViewInterceptor.class) |
|
|
|
|
@ConditionalOnProperty(prefix = "spring.data.neo4j", name = "open-in-view", havingValue = "true", |
|
|
|
|
matchIfMissing = true) |
|
|
|
|
protected static class Neo4jWebConfiguration { |
|
|
|
|
static class Neo4jWebConfiguration { |
|
|
|
|
|
|
|
|
|
private static final Log logger = LogFactory.getLog(Neo4jWebConfiguration.class); |
|
|
|
|
|
|
|
|
|
private final Neo4jProperties neo4jProperties; |
|
|
|
|
|
|
|
|
|
protected Neo4jWebConfiguration(Neo4jProperties neo4jProperties) { |
|
|
|
|
this.neo4jProperties = neo4jProperties; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Bean |
|
|
|
|
public OpenSessionInViewInterceptor neo4jOpenSessionInViewInterceptor() { |
|
|
|
|
if (this.neo4jProperties.getOpenInView() == null) { |
|
|
|
|
OpenSessionInViewInterceptor neo4jOpenSessionInViewInterceptor(Neo4jProperties properties) { |
|
|
|
|
if (properties.getOpenInView() == null) { |
|
|
|
|
logger.warn("spring.data.neo4j.open-in-view is enabled by default." |
|
|
|
|
+ "Therefore, database queries may be performed during view " |
|
|
|
|
+ "rendering. Explicitly configure " |
|
|
|
|
@ -133,7 +121,7 @@ public class Neo4jDataAutoConfiguration {
@@ -133,7 +121,7 @@ public class Neo4jDataAutoConfiguration {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Bean |
|
|
|
|
public WebMvcConfigurer neo4jOpenSessionInViewInterceptorConfigurer(OpenSessionInViewInterceptor interceptor) { |
|
|
|
|
WebMvcConfigurer neo4jOpenSessionInViewInterceptorConfigurer(OpenSessionInViewInterceptor interceptor) { |
|
|
|
|
return new WebMvcConfigurer() { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|