From 09f0f86d50933ea11eb3315e5728718e23d37dcf Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Wed, 28 Jan 2015 11:34:27 +0000
Subject: [PATCH] #2283 fix - Changed EntityManager injection to @Context

---
 securis/src/main/java/net/curisit/securis/db/common/SystemParams.java |   52 +++++++++++++++++++++++++++++++++-------------------
 1 files changed, 33 insertions(+), 19 deletions(-)

diff --git a/securis/src/main/java/net/curisit/securis/db/common/SystemParams.java b/securis/src/main/java/net/curisit/securis/db/common/SystemParams.java
index 88899cd..ac97ba0 100644
--- a/securis/src/main/java/net/curisit/securis/db/common/SystemParams.java
+++ b/securis/src/main/java/net/curisit/securis/db/common/SystemParams.java
@@ -3,12 +3,12 @@
 import java.util.Date;
 
 import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
 import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.transaction.Transactional;
 
 import net.curisit.integrity.commons.Utils;
 import net.curisit.securis.db.Settings;
+import net.curisit.securis.ioc.EntityManagerProvider;
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -19,8 +19,8 @@
     @SuppressWarnings("unused")
     private static final Logger LOG = LogManager.getLogger(SystemParams.class);
 
-    @PersistenceContext(unitName = "localdb")
-    private EntityManager em;
+    @Inject
+    private EntityManagerProvider emProvider;
 
     /**
      * Returns the system parameter value for given key
@@ -109,6 +109,7 @@
      * @return
      */
     public String getParam(String key, String defaultValue) {
+        EntityManager em = emProvider.getEntityManager();
         Settings p = em.find(Settings.class, key);
         return p == null ? defaultValue : p.getValue();
     }
@@ -120,19 +121,26 @@
      * @param defaultValue
      * @return
      */
-    @Transactional
     public void setParam(String key, String value) {
-        Settings p = em.find(Settings.class, key);
-        if (p == null) {
-            p = new Settings();
-            p.setKey(key);
-            p.setValue(value);
-            em.persist(p);
-        } else {
-            p.setValue(value);
-            em.merge(p);
+        EntityManager em = emProvider.getEntityManager();
+        em.getTransaction().begin();
+        try {
+            Settings p = em.find(Settings.class, key);
+
+            if (p == null) {
+                p = new Settings();
+                p.setKey(key);
+                p.setValue(value);
+                em.persist(p);
+            } else {
+                p.setValue(value);
+                em.merge(p);
+            }
+            em.flush();
+            em.getTransaction().commit();
+        } finally {
+            em.getTransaction().rollback();
         }
-        em.flush();
     }
 
     /**
@@ -181,11 +189,17 @@
      * @param key
      * @return
      */
-    @Transactional
     public void removeParam(String key) {
-        Settings p = em.find(Settings.class, key);
-        if (p != null) {
-            em.remove(p);
+        EntityManager em = emProvider.getEntityManager();
+        em.getTransaction().begin();
+        try {
+            Settings p = em.find(Settings.class, key);
+            if (p != null) {
+                em.remove(p);
+            }
+            em.getTransaction().commit();
+        } finally {
+            em.getTransaction().rollback();
         }
     }
 

--
Gitblit v1.3.2