diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jRepositoriesAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jRepositoriesAutoConfiguration.java index 8eb7e4751b..d9131d5059 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jRepositoriesAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jRepositoriesAutoConfiguration.java @@ -55,7 +55,8 @@ import org.springframework.data.neo4j.repository.support.GraphRepositoryFactoryB */ @Configuration @ConditionalOnClass({ Neo4jSession.class, GraphRepository.class }) -@ConditionalOnMissingBean({ GraphRepositoryFactoryBean.class, Neo4jRepositoryConfigurationExtension.class }) +@ConditionalOnMissingBean({ GraphRepositoryFactoryBean.class, + Neo4jRepositoryConfigurationExtension.class }) @ConditionalOnProperty(prefix = "spring.data.neo4j.repositories", name = "enabled", havingValue = "true", matchIfMissing = true) @Import(Neo4jRepositoriesAutoConfigureRegistrar.class) @AutoConfigureAfter(Neo4jAutoConfiguration.class) diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jRepositoriesAutoConfigureRegistrar.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jRepositoriesAutoConfigureRegistrar.java index 5793b10072..fcf261b39c 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jRepositoriesAutoConfigureRegistrar.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jRepositoriesAutoConfigureRegistrar.java @@ -30,8 +30,8 @@ import org.springframework.data.repository.config.RepositoryConfigurationExtensi * * @author Michael Hunger */ -class Neo4jRepositoriesAutoConfigureRegistrar extends - AbstractRepositoryConfigurationSourceSupport { +class Neo4jRepositoriesAutoConfigureRegistrar + extends AbstractRepositoryConfigurationSourceSupport { @Override protected Class getAnnotation() { diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/neo4j/Neo4jAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/neo4j/Neo4jAutoConfiguration.java index e8d2a814f3..925e9561e7 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/neo4j/Neo4jAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/neo4j/Neo4jAutoConfiguration.java @@ -45,8 +45,7 @@ import org.springframework.data.neo4j.template.Neo4jTemplate; /** * {@link EnableAutoConfiguration Auto-configuration} for Spring Data's Neo4j support. *

- * Registers a {@link Neo4jTemplate} bean if no other bean of - * the same type is configured. + * Registers a {@link Neo4jTemplate} bean if no other bean of the same type is configured. * * @author Michael Hunger * @author Josh Long @@ -55,7 +54,7 @@ import org.springframework.data.neo4j.template.Neo4jTemplate; * @since 1.4.0 */ @Configuration -@ConditionalOnClass({Neo4jSession.class, Neo4jOperations.class}) +@ConditionalOnClass({ Neo4jSession.class, Neo4jOperations.class }) @ConditionalOnMissingBean(Neo4jOperations.class) @EnableConfigurationProperties(Neo4jProperties.class) public class Neo4jAutoConfiguration { @@ -66,7 +65,8 @@ public class Neo4jAutoConfiguration { private final ObjectProvider sessionFactoryProvider; - public SpringBootNeo4jConfiguration(ObjectProvider sessionFactoryProvider) { + public SpringBootNeo4jConfiguration( + ObjectProvider sessionFactoryProvider) { this.sessionFactoryProvider = sessionFactoryProvider; } @@ -77,8 +77,7 @@ public class Neo4jAutoConfiguration { } @Bean - @Scope(scopeName = "${spring.data.neo4j.session.scope:singleton}", - proxyMode = ScopedProxyMode.TARGET_CLASS) + @Scope(scopeName = "${spring.data.neo4j.session.scope:singleton}", proxyMode = ScopedProxyMode.TARGET_CLASS) @Override public Session getSession() throws Exception { return getSessionFactory().openSession(); @@ -94,7 +93,8 @@ public class Neo4jAutoConfiguration { private ConfigurableListableBeanFactory beanFactory; - SessionFactoryProviderConfiguration(org.neo4j.ogm.config.Configuration configuration) { + SessionFactoryProviderConfiguration( + org.neo4j.ogm.config.Configuration configuration) { this.configuration = configuration; } @@ -114,7 +114,8 @@ public class Neo4jAutoConfiguration { protected String[] getPackagesToScan() { if (AutoConfigurationPackages.has(this.beanFactory)) { - List basePackages = AutoConfigurationPackages.get(this.beanFactory); + List basePackages = AutoConfigurationPackages + .get(this.beanFactory); return basePackages.toArray(new String[basePackages.size()]); } return new String[0]; diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/neo4j/Neo4jProperties.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/neo4j/Neo4jProperties.java index 1331310ac4..56b2adc861 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/neo4j/Neo4jProperties.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/neo4j/Neo4jProperties.java @@ -131,7 +131,8 @@ public class Neo4jProperties implements ApplicationContextAware { } if (this.username != null && this.password != null) { - configuration.driverConfiguration().setCredentials(this.username, this.password); + configuration.driverConfiguration().setCredentials(this.username, + this.password); } if (this.compiler != null) { configuration.compilerConfiguration().setCompilerClassName(this.compiler); @@ -150,15 +151,16 @@ public class Neo4jProperties implements ApplicationContextAware { return HTTP_DRIVER; } else { - throw new IllegalArgumentException("Could not deduce driver to use based on URI '" + uri + "'"); + throw new IllegalArgumentException( + "Could not deduce driver to use based on URI '" + uri + "'"); } } catch (URISyntaxException ex) { - throw new IllegalArgumentException("Invalid URI for spring.data.neo4j.uri '" + this.uri + "'", ex); + throw new IllegalArgumentException( + "Invalid URI for spring.data.neo4j.uri '" + this.uri + "'", ex); } } - public static class Embedded { /** diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/alt/neo4j/CityNeo4jRepository.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/alt/neo4j/CityNeo4jRepository.java index 30fc7667ca..a4acf364e3 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/alt/neo4j/CityNeo4jRepository.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/alt/neo4j/CityNeo4jRepository.java @@ -20,4 +20,5 @@ import org.springframework.boot.autoconfigure.data.neo4j.city.City; import org.springframework.data.neo4j.repository.GraphRepository; public interface CityNeo4jRepository extends GraphRepository { + } diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/neo4j/MixedNeo4jRepositoriesAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/neo4j/MixedNeo4jRepositoriesAutoConfigurationTests.java index 7f774d1b4f..f3cd0c4712 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/neo4j/MixedNeo4jRepositoriesAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/neo4j/MixedNeo4jRepositoriesAutoConfigurationTests.java @@ -56,8 +56,7 @@ import static org.assertj.core.api.Assertions.assertThat; */ public class MixedNeo4jRepositoriesAutoConfigurationTests { - private AnnotationConfigApplicationContext context = - new AnnotationConfigApplicationContext(); + private AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); @After public void close() { @@ -66,7 +65,8 @@ public class MixedNeo4jRepositoriesAutoConfigurationTests { @Test public void testDefaultRepositoryConfiguration() throws Exception { - EnvironmentTestUtils.addEnvironment(this.context, "spring.datasource.initialize:false"); + EnvironmentTestUtils.addEnvironment(this.context, + "spring.datasource.initialize:false"); this.context.register(TestConfiguration.class, BaseConfiguration.class); this.context.refresh(); assertThat(this.context.getBean(CountryRepository.class)).isNotNull(); @@ -74,7 +74,8 @@ public class MixedNeo4jRepositoriesAutoConfigurationTests { @Test public void testMixedRepositoryConfiguration() throws Exception { - EnvironmentTestUtils.addEnvironment(this.context, "spring.datasource.initialize:false"); + EnvironmentTestUtils.addEnvironment(this.context, + "spring.datasource.initialize:false"); this.context.register(MixedConfiguration.class, BaseConfiguration.class); this.context.refresh(); assertThat(this.context.getBean(CountryRepository.class)).isNotNull(); @@ -83,7 +84,8 @@ public class MixedNeo4jRepositoriesAutoConfigurationTests { @Test public void testJpaRepositoryConfigurationWithNeo4jTemplate() throws Exception { - EnvironmentTestUtils.addEnvironment(this.context, "spring.datasource.initialize:false"); + EnvironmentTestUtils.addEnvironment(this.context, + "spring.datasource.initialize:false"); this.context.register(JpaConfiguration.class, BaseConfiguration.class); this.context.refresh(); assertThat(this.context.getBean(CityRepository.class)).isNotNull(); @@ -92,14 +94,16 @@ public class MixedNeo4jRepositoriesAutoConfigurationTests { @Test @Ignore public void testJpaRepositoryConfigurationWithNeo4jOverlap() throws Exception { - EnvironmentTestUtils.addEnvironment(this.context, "spring.datasource.initialize:false"); + EnvironmentTestUtils.addEnvironment(this.context, + "spring.datasource.initialize:false"); this.context.register(OverlapConfiguration.class, BaseConfiguration.class); this.context.refresh(); assertThat(this.context.getBean(CityRepository.class)).isNotNull(); } @Test - public void testJpaRepositoryConfigurationWithNeo4jOverlapDisabled() throws Exception { + public void testJpaRepositoryConfigurationWithNeo4jOverlapDisabled() + throws Exception { EnvironmentTestUtils.addEnvironment(this.context, "spring.datasource.initialize:false", "spring.data.neo4j.repositories.enabled:false"); @@ -153,11 +157,10 @@ public class MixedNeo4jRepositoriesAutoConfigurationTests { @Override public String[] selectImports(AnnotationMetadata importingClassMetadata) { List names = new ArrayList(); - for (Class type : new Class[] {DataSourceAutoConfiguration.class, + for (Class type : new Class[] { DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class, - JpaRepositoriesAutoConfiguration.class, - Neo4jAutoConfiguration.class, - Neo4jRepositoriesAutoConfiguration.class}) { + JpaRepositoriesAutoConfiguration.class, Neo4jAutoConfiguration.class, + Neo4jRepositoriesAutoConfiguration.class }) { names.add(type.getName()); } return names.toArray(new String[names.size()]); diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jDataAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jDataAutoConfigurationTests.java index 7b8fa27709..a0f94b0a6f 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jDataAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jDataAutoConfigurationTests.java @@ -57,8 +57,7 @@ public class Neo4jDataAutoConfigurationTests { City.class); } - - @SuppressWarnings({"unchecked", "rawtypes"}) + @SuppressWarnings({ "unchecked", "rawtypes" }) private static void assertDomainTypesDiscovered(Neo4jMappingContext mappingContext, Class... types) { for (Class type : types) { diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jRepositoriesAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jRepositoriesAutoConfigurationTests.java index a1a514f831..80e46f0f64 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jRepositoriesAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/neo4j/Neo4jRepositoriesAutoConfigurationTests.java @@ -59,7 +59,8 @@ public class Neo4jRepositoriesAutoConfigurationTests { prepareApplicationContext(TestConfiguration.class); assertThat(this.context.getBean(CityRepository.class)).isNotNull(); - Neo4jMappingContext mappingContext = this.context.getBean(Neo4jMappingContext.class); + Neo4jMappingContext mappingContext = this.context + .getBean(Neo4jMappingContext.class); assertThat(mappingContext.getPersistentEntity(City.class)).isNotNull(); } diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/neo4j/Neo4jAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/neo4j/Neo4jAutoConfigurationTests.java index a00bbf59b9..990fe6f64a 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/neo4j/Neo4jAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/neo4j/Neo4jAutoConfigurationTests.java @@ -33,8 +33,8 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; /** - * Tests for {@link Neo4jAutoConfiguration}. Tests can't use the embedded driver - * as we use lucene 4 and Neo4j still requires 3. + * Tests for {@link Neo4jAutoConfiguration}. Tests can't use the embedded driver as we use + * lucene 4 and Neo4j still requires 3. * * @author Stephane Nicoll * @author Michael Hunger @@ -55,16 +55,19 @@ public class Neo4jAutoConfigurationTests { public void defaultConfiguration() { load(null, "spring.data.neo4j.uri=http://localhost:8989"); assertThat(this.context.getBeansOfType(Neo4jOperations.class)).hasSize(1); - assertThat(this.context.getBeansOfType(org.neo4j.ogm.config.Configuration.class)).hasSize(1); + assertThat(this.context.getBeansOfType(org.neo4j.ogm.config.Configuration.class)) + .hasSize(1); assertThat(this.context.getBeansOfType(SessionFactory.class)).hasSize(1); - assertThat(this.context.getBeanDefinition("scopedTarget.getSession").getScope()).isEqualTo("singleton"); + assertThat(this.context.getBeanDefinition("scopedTarget.getSession").getScope()) + .isEqualTo("singleton"); } @Test public void customScope() { load(null, "spring.data.neo4j.uri=http://localhost:8989", "spring.data.neo4j.session.scope=prototype"); - assertThat(this.context.getBeanDefinition("scopedTarget.getSession").getScope()).isEqualTo("prototype"); + assertThat(this.context.getBeanDefinition("scopedTarget.getSession").getScope()) + .isEqualTo("prototype"); } @Test @@ -72,7 +75,8 @@ public class Neo4jAutoConfigurationTests { load(CustomNeo4jOperations.class); assertThat(this.context.getBean(Neo4jOperations.class)) .isSameAs(this.context.getBean("myNeo4jOperations")); - assertThat(this.context.getBeansOfType(org.neo4j.ogm.config.Configuration.class)).hasSize(0); + assertThat(this.context.getBeansOfType(org.neo4j.ogm.config.Configuration.class)) + .hasSize(0); assertThat(this.context.getBeansOfType(SessionFactory.class)).hasSize(0); assertThat(this.context.getBeansOfType(Session.class)).hasSize(0); } @@ -83,7 +87,8 @@ public class Neo4jAutoConfigurationTests { assertThat(this.context.getBean(org.neo4j.ogm.config.Configuration.class)) .isSameAs(this.context.getBean("myConfiguration")); assertThat(this.context.getBeansOfType(Neo4jOperations.class)).hasSize(1); - assertThat(this.context.getBeansOfType(org.neo4j.ogm.config.Configuration.class)).hasSize(1); + assertThat(this.context.getBeansOfType(org.neo4j.ogm.config.Configuration.class)) + .hasSize(1); assertThat(this.context.getBeansOfType(SessionFactory.class)).hasSize(1); } @@ -109,14 +114,14 @@ public class Neo4jAutoConfigurationTests { } - @Configuration static class CustomConfiguration { @Bean public org.neo4j.ogm.config.Configuration myConfiguration() { org.neo4j.ogm.config.Configuration configuration = new org.neo4j.ogm.config.Configuration(); - configuration.driverConfiguration().setDriverClassName(HttpDriver.class.getName()); + configuration.driverConfiguration() + .setDriverClassName(HttpDriver.class.getName()); return configuration; } diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/neo4j/Neo4jPropertiesTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/neo4j/Neo4jPropertiesTests.java index be38fab978..14715bd16e 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/neo4j/Neo4jPropertiesTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/neo4j/Neo4jPropertiesTests.java @@ -68,8 +68,7 @@ public class Neo4jPropertiesTests { Neo4jProperties properties = load(true, "spring.data.neo4j.uri=http://localhost:7474"); Configuration configuration = properties.createConfiguration(); - assertDriver(configuration, Neo4jProperties.HTTP_DRIVER, - "http://localhost:7474"); + assertDriver(configuration, Neo4jProperties.HTTP_DRIVER, "http://localhost:7474"); } @Test @@ -85,11 +84,9 @@ public class Neo4jPropertiesTests { public void credentialsAreSet() { Neo4jProperties properties = load(true, "spring.data.neo4j.uri=http://localhost:7474", - "spring.data.neo4j.username=user", - "spring.data.neo4j.password=secret"); + "spring.data.neo4j.username=user", "spring.data.neo4j.password=secret"); Configuration configuration = properties.createConfiguration(); - assertDriver(configuration, Neo4jProperties.HTTP_DRIVER, - "http://localhost:7474"); + assertDriver(configuration, Neo4jProperties.HTTP_DRIVER, "http://localhost:7474"); assertCredentials(configuration, "user", "secret"); } @@ -121,15 +118,15 @@ public class Neo4jPropertiesTests { "target/neo4j/my.db"); } - private static void assertDriver(Configuration actual, String driver, - String uri) { + private static void assertDriver(Configuration actual, String driver, String uri) { assertThat(actual).isNotNull(); DriverConfiguration driverConfig = actual.driverConfiguration(); assertThat(driverConfig.getDriverClassName()).isEqualTo(driver); assertThat(driverConfig.getURI()).isEqualTo(uri); } - private static void assertCredentials(Configuration actual, String username, String password) { + private static void assertCredentials(Configuration actual, String username, + String password) { Credentials credentials = actual.driverConfiguration().getCredentials(); if (username == null & password == null) { assertThat(credentials).isNull(); @@ -138,8 +135,8 @@ public class Neo4jPropertiesTests { assertThat(credentials).isNotNull(); Object content = credentials.credentials(); assertThat(content).isInstanceOf(String.class); - String[] auth = new String(Base64.decode(((String) content) - .getBytes())).split(":"); + String[] auth = new String(Base64.decode(((String) content).getBytes())) + .split(":"); assertThat(auth[0]).isEqualTo(username); assertThat(auth[1]).isEqualTo(password); assertThat(auth).hasSize(2); @@ -148,24 +145,23 @@ public class Neo4jPropertiesTests { public Neo4jProperties load(final boolean embeddedAvailable, String... environment) { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); - ctx.setClassLoader( - new URLClassLoader(new URL[0], getClass().getClassLoader()) { + ctx.setClassLoader(new URLClassLoader(new URL[0], getClass().getClassLoader()) { - @Override - protected Class loadClass(String name, boolean resolve) - throws ClassNotFoundException { - if (name.equals(Neo4jProperties.EMBEDDED_DRIVER)) { - if (embeddedAvailable) { - return TestEmbeddedDriver.class; - } - else { - throw new ClassNotFoundException(); - } - } - return super.loadClass(name, resolve); + @Override + protected Class loadClass(String name, boolean resolve) + throws ClassNotFoundException { + if (name.equals(Neo4jProperties.EMBEDDED_DRIVER)) { + if (embeddedAvailable) { + return TestEmbeddedDriver.class; } + else { + throw new ClassNotFoundException(); + } + } + return super.loadClass(name, resolve); + } - }); + }); EnvironmentTestUtils.addEnvironment(ctx, environment); ctx.register(TestConfiguration.class); ctx.refresh(); diff --git a/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc b/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc index 9871bbba53..ec6deea9ac 100644 --- a/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc +++ b/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc @@ -3055,6 +3055,8 @@ properties: spring.data.neo4j.password=secret ---- + + [[boot-features-connecting-to-neo4j-embedded]] ==== Using the embedded mode @@ -3071,6 +3073,8 @@ persistence for the embedded mode: spring.data.neo4j.uri=file://var/tmp/graph.db ---- + + [[boot-features-neo4j-ogm-session]] ==== Neo4jSession