Overriding onSetUpBeforeTransaction might be what you're looking for.

http://static.springframework.org/spring/docs/2.0.x/api/org/springframework/test/AbstractTransactionalSpringContextTests.html

Matt

On Mon, Jul 28, 2008 at 5:15 AM, Miguel Romero <[EMAIL PROTECTED]> wrote:
> //users@appfuse.dev.java.net
>
> 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!
>

Reply via email to