From 44b877cd7dce2f1424f9618faa172c82020fa7c8 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Thu, 20 Feb 2014 09:03:35 +0000 Subject: [PATCH] Remove @ConditionalOnBean(DataSource.class) from JPA config Stacktrace is then obviously about DataSource, not EntityManager. Fixes gh-375 --- .../orm/jpa/HibernateJpaAutoConfiguration.java | 3 --- .../jpa/AbstractJpaAutoConfigurationTests.java | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.java index df3f306b8eb..3a419a5ba7f 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.java @@ -19,13 +19,11 @@ package org.springframework.boot.autoconfigure.orm.jpa; import java.util.Map; import javax.persistence.EntityManager; -import javax.sql.DataSource; import org.springframework.beans.factory.BeanClassLoaderAware; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionOutcome; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.SpringBootCondition; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @@ -53,7 +51,6 @@ import org.springframework.util.ClassUtils; @ConditionalOnClass({ LocalContainerEntityManagerFactoryBean.class, EnableTransactionManagement.class, EntityManager.class }) @Conditional(HibernateEntityManagerCondition.class) -@ConditionalOnBean(DataSource.class) @AutoConfigureAfter(DataSourceAutoConfiguration.class) public class HibernateJpaAutoConfiguration extends JpaBaseConfiguration implements BeanClassLoaderAware { diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/orm/jpa/AbstractJpaAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/orm/jpa/AbstractJpaAutoConfigurationTests.java index c84d40a7416..dfc544e55de 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/orm/jpa/AbstractJpaAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/orm/jpa/AbstractJpaAutoConfigurationTests.java @@ -23,7 +23,10 @@ import java.util.Map; import javax.sql.DataSource; import org.junit.After; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.springframework.beans.factory.BeanCreationException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage; @@ -60,6 +63,9 @@ import static org.junit.Assert.assertTrue; */ public abstract class AbstractJpaAutoConfigurationTests { + @Rule + public ExpectedException expected = ExpectedException.none(); + protected AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); @After @@ -69,6 +75,16 @@ public abstract class AbstractJpaAutoConfigurationTests { protected abstract Class getAutoConfigureClass(); + @Test + public void testNoDataSource() throws Exception { + this.context.register(PropertyPlaceholderAutoConfiguration.class, + getAutoConfigureClass()); + this.expected.expect(BeanCreationException.class); + this.expected.expectMessage("No qualifying bean"); + this.expected.expectMessage("DataSource"); + this.context.refresh(); + } + @Test public void testEntityManagerCreated() throws Exception { setupTestConfiguration();