fixing broken unit test related to SPR-5429

This commit is contained in:
Scott Andrews 2009-01-23 22:32:26 +00:00
parent 300e4d7284
commit 7dcb3b5841
5 changed files with 39 additions and 8 deletions

View File

@ -62,6 +62,8 @@ public class DbcpDataSourceFactory implements FactoryBean<DataSource>, Disposabl
private Resource dataLocation; private Resource dataLocation;
private Resource dropLocation;
/** /**
* The object created by this factory. * The object created by this factory.
*/ */
@ -115,6 +117,14 @@ public class DbcpDataSourceFactory implements FactoryBean<DataSource>, Disposabl
this.dataLocation = testDataLocation; this.dataLocation = testDataLocation;
} }
/**
* Sets the location of the file containing the drop scripts for the database.
* @param testDataLocation the location of the data file
*/
public void setDropLocation(Resource testDropLocation) {
this.dropLocation = testDropLocation;
}
// implementing FactoryBean // implementing FactoryBean
// this method is called by Spring to expose the DataSource as a bean // this method is called by Spring to expose the DataSource as a bean
@ -163,6 +173,14 @@ public class DbcpDataSourceFactory implements FactoryBean<DataSource>, Disposabl
private void populateDataSource() { private void populateDataSource() {
DatabasePopulator populator = new DatabasePopulator(dataSource); DatabasePopulator populator = new DatabasePopulator(dataSource);
if (dropLocation != null) {
try {
populator.populate(this.dropLocation);
}
catch (Exception e) {
// ignore
}
}
populator.populate(this.schemaLocation); populator.populate(this.schemaLocation);
populator.populate(this.dataLocation); populator.populate(this.dataLocation);
} }

View File

@ -0,0 +1,7 @@
DROP TABLE visits;
DROP TABLE pets;
DROP TABLE owners;
DROP TABLE types;
DROP TABLE vet_specialties;
DROP TABLE specialties;
DROP TABLE vets;

View File

@ -25,6 +25,7 @@ jdbc.password=
jdbc.populate=true jdbc.populate=true
jdbc.schemaLocation=classpath:/META-INF/hsqldb/initDB.txt jdbc.schemaLocation=classpath:/META-INF/hsqldb/initDB.txt
jdbc.dataLocation=classpath:/META-INF/hsqldb/populateDB.txt jdbc.dataLocation=classpath:/META-INF/hsqldb/populateDB.txt
jdbc.dropLocation=classpath:/META-INF/hsqldb/dropTables.txt
# Property that determines which Hibernate dialect to use # Property that determines which Hibernate dialect to use
# (only applied with "applicationContext-hibernate.xml") # (only applied with "applicationContext-hibernate.xml")
@ -49,6 +50,7 @@ jpa.database=HSQL
#jdbc.populate=false #jdbc.populate=false
#jdbc.schemaLocation= #jdbc.schemaLocation=
#jdbc.dataLocation= #jdbc.dataLocation=
#jdbc.dropLocation=
# Property that determines which Hibernate dialect to use # Property that determines which Hibernate dialect to use
# (only applied with "applicationContext-hibernate.xml") # (only applied with "applicationContext-hibernate.xml")

View File

@ -13,8 +13,10 @@
<tx:annotation-driven/> <tx:annotation-driven/>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" <bean id="dataSource" class="org.springframework.samples.petclinic.config.DbcpDataSourceFactory"
p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}" p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}"
p:username="${jdbc.username}" p:password="${jdbc.password}" /> p:username="${jdbc.username}" p:password="${jdbc.password}" p:populate="${jdbc.populate}"
p:schemaLocation="${jdbc.schemaLocation}" p:dataLocation="${jdbc.dataLocation}"
p:dropLocation="${jdbc.dropLocation}"/>
</beans> </beans>

View File

@ -11,10 +11,12 @@
<tx:annotation-driven /> <tx:annotation-driven />
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" <bean id="dataSource" class="org.springframework.samples.petclinic.config.DbcpDataSourceFactory"
p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}" p:username="${jdbc.username}" p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}"
p:password="${jdbc.password}" /> p:username="${jdbc.username}" p:password="${jdbc.password}" p:populate="${jdbc.populate}"
p:schemaLocation="${jdbc.schemaLocation}" p:dataLocation="${jdbc.dataLocation}"
p:dropLocation="${jdbc.dropLocation}"/>
<!-- Note: the specific "jpaAdapter" bean sits in adapter context file --> <!-- Note: the specific "jpaAdapter" bean sits in adapter context file -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:dataSource-ref="dataSource" p:jpaVendorAdapter-ref="jpaAdapter"> p:dataSource-ref="dataSource" p:jpaVendorAdapter-ref="jpaAdapter">