package com.idega.transaction;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* @author <a href="mailto:civilis@idega.com">Vytautas Čivilis</a>
* @version $Revision: 1.3 $ Last modified: $Date: 2009/03/23 14:14:37 $ by $Author: civilis $
*/
@Service
@Scope("singleton")
public class TransactionContextImpl implements TransactionContext {
@SuppressWarnings("unchecked")
@Transactional
public <T> T executeInTransaction(TransactionalCallback callback) {
Object result = callback.execute();
return (T) result;
}
@SuppressWarnings("unchecked")
@Transactional(readOnly = true)
public <T> T executeInReadonlyTransaction(TransactionalCallback callback) {
Object result = callback.execute();
return (T) result;
}
}