summaryrefslogtreecommitdiff
path: root/spring-framework/07-user-jdbc-ds-transaction/src/main/java/com/example/fp/tx
diff options
context:
space:
mode:
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.java88
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);
+ }
+ });
+ }
+}