diff options
Diffstat (limited to 'spring-framework/07-user-jdbc-ds-transaction/src/main/java/com/example/fp/tx')
| -rw-r--r-- | spring-framework/07-user-jdbc-ds-transaction/src/main/java/com/example/fp/tx/TxUserManager.java | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/spring-framework/07-user-jdbc-ds-transaction/src/main/java/com/example/fp/tx/TxUserManager.java b/spring-framework/07-user-jdbc-ds-transaction/src/main/java/com/example/fp/tx/TxUserManager.java new file mode 100644 index 0000000..4bb6d05 --- /dev/null +++ b/spring-framework/07-user-jdbc-ds-transaction/src/main/java/com/example/fp/tx/TxUserManager.java @@ -0,0 +1,88 @@ +package com.example.fp.tx; + +import java.util.List; + +import org.springframework.jdbc.datasource.DataSourceTransactionManager; +import org.springframework.transaction.TransactionStatus; +import org.springframework.transaction.support.TransactionCallbackWithoutResult; +import org.springframework.transaction.support.TransactionTemplate; + +import com.example.fp.User; +import com.example.fp.UserManager; + +/** + * This class decorates a given AccountManager by adding transaction boundaries. + * + * @author kamal + * + */ +public class TxUserManager implements UserManager { + + private UserManager userManager; + + public void setUserManager(UserManager userManager) { + this.userManager = userManager; + } + + private TransactionTemplate txTemplate; + + public void setTxManager(DataSourceTransactionManager txManager) { + txTemplate = new TransactionTemplate(txManager); + } + + + @Override + public User find(int uid) { + return userManager.find(uid); + } + + + @Override + public void delete(int uid) { + txTemplate.execute(new TransactionCallbackWithoutResult() { + + @Override + protected void doInTransactionWithoutResult(TransactionStatus arg0) { + userManager.delete(uid); + } + }); + } + + @Override + public void create(User user) { + txTemplate.execute(new TransactionCallbackWithoutResult() { + + @Override + protected void doInTransactionWithoutResult(TransactionStatus arg0) { + userManager.create(user); + } + }); + } + + @Override + public List<User> findAll() { + return userManager.findAll(); + } + + @Override + public void update(User user) { + txTemplate.execute(new TransactionCallbackWithoutResult() { + + @Override + protected void doInTransactionWithoutResult(TransactionStatus arg0) { + userManager.update(user); + } + }); + } + + @Override + public void setPassword(int uid, String plainTextPassword) { + txTemplate.execute(new TransactionCallbackWithoutResult() { + + @Override + protected void doInTransactionWithoutResult(TransactionStatus arg0) { + userManager.setPassword(uid, plainTextPassword); + } + }); + } +} |
