Commit cea00f22 authored by Andy Wilkinson's avatar Andy Wilkinson

Merge branch '1.5.x'

parents e75eaf99 149f19cd
...@@ -19,7 +19,9 @@ package org.springframework.boot.autoconfigure.data.neo4j; ...@@ -19,7 +19,9 @@ package org.springframework.boot.autoconfigure.data.neo4j;
import java.util.List; import java.util.List;
import org.neo4j.ogm.session.SessionFactory; import org.neo4j.ogm.session.SessionFactory;
import org.neo4j.ogm.session.event.EventListener;
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;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
...@@ -63,8 +65,18 @@ public class Neo4jDataAutoConfiguration { ...@@ -63,8 +65,18 @@ public class Neo4jDataAutoConfiguration {
@Bean @Bean
public SessionFactory sessionFactory(org.neo4j.ogm.config.Configuration configuration, public SessionFactory sessionFactory(org.neo4j.ogm.config.Configuration configuration,
ApplicationContext applicationContext) { ApplicationContext applicationContext,
return new SessionFactory(configuration, getPackagesToScan(applicationContext)); ObjectProvider<List<EventListener>> eventListenersProvider) {
SessionFactory sessionFactory = new SessionFactory(configuration,
getPackagesToScan(applicationContext));
List<EventListener> providedEventListeners = eventListenersProvider
.getIfAvailable();
if (providedEventListeners != null) {
for (EventListener eventListener : providedEventListeners) {
sessionFactory.register(eventListener);
}
}
return sessionFactory;
} }
@Bean @Bean
......
...@@ -20,7 +20,11 @@ import org.assertj.core.api.Assertions; ...@@ -20,7 +20,11 @@ import org.assertj.core.api.Assertions;
import org.junit.After; import org.junit.After;
import org.junit.Test; import org.junit.Test;
import org.neo4j.ogm.drivers.http.driver.HttpDriver; import org.neo4j.ogm.drivers.http.driver.HttpDriver;
import org.neo4j.ogm.session.Session;
import org.neo4j.ogm.session.SessionFactory; import org.neo4j.ogm.session.SessionFactory;
import org.neo4j.ogm.session.event.Event;
import org.neo4j.ogm.session.event.EventListener;
import org.neo4j.ogm.session.event.PersistenceEvent;
import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.boot.autoconfigure.AutoConfigurationPackages; import org.springframework.boot.autoconfigure.AutoConfigurationPackages;
...@@ -37,7 +41,9 @@ import org.springframework.data.neo4j.web.support.OpenSessionInViewInterceptor; ...@@ -37,7 +41,9 @@ import org.springframework.data.neo4j.web.support.OpenSessionInViewInterceptor;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
/** /**
* Tests for {@link Neo4jDataAutoConfiguration}. Tests can't use the embedded driver as we * Tests for {@link Neo4jDataAutoConfiguration}. Tests can't use the embedded driver as we
...@@ -117,6 +123,17 @@ public class Neo4jDataAutoConfigurationTests { ...@@ -117,6 +123,17 @@ public class Neo4jDataAutoConfigurationTests {
.hasSize(1); .hasSize(1);
} }
@Test
public void eventListenersAreAutoRegistered() {
load(EventListenerConfiguration.class);
Session session = this.context.getBean(SessionFactory.class).openSession();
session.notifyListeners(new PersistenceEvent(null, Event.TYPE.PRE_SAVE));
verify(this.context.getBean("eventListenerOne", EventListener.class))
.onPreSave(any(Event.class));
verify(this.context.getBean("eventListenerTwo", EventListener.class))
.onPreSave(any(Event.class));
}
private void load(Class<?> config, String... environment) { private void load(Class<?> config, String... environment) {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
EnvironmentTestUtils.addEnvironment(ctx, environment); EnvironmentTestUtils.addEnvironment(ctx, environment);
...@@ -169,4 +186,19 @@ public class Neo4jDataAutoConfigurationTests { ...@@ -169,4 +186,19 @@ public class Neo4jDataAutoConfigurationTests {
} }
@Configuration
static class EventListenerConfiguration {
@Bean
public EventListener eventListenerOne() {
return mock(EventListener.class);
}
@Bean
public EventListener eventListenerTwo() {
return mock(EventListener.class);
}
}
} }
...@@ -131,7 +131,7 @@ ...@@ -131,7 +131,7 @@
<mysql.version>5.1.40</mysql.version> <mysql.version>5.1.40</mysql.version>
<narayana.version>5.3.5.Final</narayana.version> <narayana.version>5.3.5.Final</narayana.version>
<nekohtml.version>1.9.22</nekohtml.version> <nekohtml.version>1.9.22</nekohtml.version>
<neo4j-ogm.version>2.1.0-M01</neo4j-ogm.version> <neo4j-ogm.version>2.1.0</neo4j-ogm.version>
<postgresql.version>9.4.1212.jre7</postgresql.version> <postgresql.version>9.4.1212.jre7</postgresql.version>
<querydsl.version>4.1.4</querydsl.version> <querydsl.version>4.1.4</querydsl.version>
<reactor.version>3.0.3.RELEASE</reactor.version> <reactor.version>3.0.3.RELEASE</reactor.version>
......
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