//[email protected]
hi,
i´m trying use "org.springframework.jdbc.datasource.DriverManagerDataSource"
to around my problem of connect with distinct users in my datasource.
reource.xml
<bean id="myDriverManagerDataSourceUrl"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.UserCredentialsDataSourceAdapter">
<property name="targetDataSource"
ref="myDriverManagerDataSourceUrl"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
dao.xml
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation"
value="classpath:hibernate.cfg.xml"/>
<property name="hibernateProperties">
<value>
hibernate.dialect=${hibernate.dialect}
hibernate.query.substitutions=true 'Y', false 'N'
hibernate.cache.use_second_level_cache=true
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
</value>
<!-- Turn batching off for better error messages under
PostgreSQL -->
<!-- hibernate.jdbc.batch_size=0 -->
</property>
</bean>
now, my principal problem is when i try to pass the test.
public void testGetTesquemasByTuser() throws Exception {
UserCredentialsDataSourceAdapter userCredentialsDataSourceAdapter =
(UserCredentialsDataSourceAdapter)applicationContext.getBean("dataSource");
userCredentialsDataSourceAdapter.setCredentialsForCurrentThread("tuser",
"tuser");
setDataSource(userCredentialsDataSourceAdapter);
List<Tesquema> ltesquema =
tesquemaUniversalDao.getAll(Tesquema.class);
log.debug("tusers obtenidos =" + ltesquema.size());
assertNotNull(ltesquema);
log.debug("esquema 0 =" + ltesquema.get(0));
//assertTrue(ltesquema.get(0).getUsername().equals("tuser"));
assertTrue(ltesquema.size() == 1 );
userCredentialsDataSourceAdapter.removeCredentialsFromCurrentThread();
}
I try to change the dataSource
"setDataSource(userCredentialsDataSourceAdapter);" but it doesn`t work me.
only works if i invoke toTearDown and SetUp before of getAll
how can i change the actua datasource in my transacction ? or better, how
can i start a new transaction with a new datasource before of a unit test?
thanks!