Author: eric
Date: Fri Sep 17 12:59:24 2010
New Revision: 998106

URL: http://svn.apache.org/viewvc?rev=998106&view=rev
Log:
Always start/commit(/rollback) transactions.

Modified:
    
james/server/trunk/core-function/src/main/java/org/apache/james/domain/JPADomainList.java
    
james/server/trunk/user-function/src/main/java/org/apache/james/vut/JPAVirtualUserTable.java

Modified: 
james/server/trunk/core-function/src/main/java/org/apache/james/domain/JPADomainList.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/core-function/src/main/java/org/apache/james/domain/JPADomainList.java?rev=998106&r1=998105&r2=998106&view=diff
==============================================================================
--- 
james/server/trunk/core-function/src/main/java/org/apache/james/domain/JPADomainList.java
 (original)
+++ 
james/server/trunk/core-function/src/main/java/org/apache/james/domain/JPADomainList.java
 Fri Sep 17 12:59:24 2010
@@ -44,6 +44,16 @@ public class JPADomainList extends Abstr
      */
     private EntityManagerFactory entityManagerFactory;
 
+    /**
+     * Set the entity manager to use.
+     * 
+     * @param entityManagerFactory
+     */
+    @PersistenceUnit
+    public void setEntityManagerFactory(EntityManagerFactory 
entityManagerFactory) {
+        this.entityManagerFactory = entityManagerFactory;
+    }
+
     /*
      * (non-Javadoc)
      * @see 
org.apache.james.lifecycle.Configurable#configure(org.apache.commons.configuration.HierarchicalConfiguration)
@@ -61,11 +71,17 @@ public class JPADomainList extends Abstr
     protected List<String> getDomainListInternal() {
         List<String> domains = new ArrayList<String>();
         EntityManager entityManager = 
entityManagerFactory.createEntityManager();
+        final EntityTransaction transaction = entityManager.getTransaction();
         try {
+            transaction.begin();
             domains = 
entityManager.createNamedQuery("listDomainNames").getResultList();
         } catch (PersistenceException e) {
             getLogger().debug("Failed to list domains", e);
+            if (transaction.isActive()) {
+                transaction.rollback();
+            }
         } finally {
+            transaction.commit();
             entityManager.close();
         }
         if (domains.size() == 0) {
@@ -80,12 +96,18 @@ public class JPADomainList extends Abstr
      */
     public boolean containsDomain(String domain) {
         EntityManager entityManager = 
entityManagerFactory.createEntityManager();
+        final EntityTransaction transaction = entityManager.getTransaction();
         try {
+            transaction.begin();
             JPADomain jpaDomain = (JPADomain) 
entityManager.createNamedQuery("findDomainByName").setParameter("name", 
domain).getSingleResult();
             return (jpaDomain != null) ? true : false;
         } catch (PersistenceException e) {
             getLogger().debug("Failed to find domain", e);
+            if (transaction.isActive()) {
+                transaction.rollback();
+            }
         } finally {
+            transaction.commit();
             entityManager.close();
         }    
         return false;
@@ -101,7 +123,6 @@ public class JPADomainList extends Abstr
             transaction.begin();
             JPADomain jpaDomain = new JPADomain(domain);
             entityManager.persist(jpaDomain);
-            transaction.commit();
             return true;
         } catch (PersistenceException e) {
             getLogger().debug("Failed to save domain", e);
@@ -109,6 +130,7 @@ public class JPADomainList extends Abstr
                 transaction.rollback();
             }
         } finally {
+            transaction.commit();
             entityManager.close();
         }
         return false;
@@ -123,7 +145,6 @@ public class JPADomainList extends Abstr
         try {
             transaction.begin();
             
entityManager.createNamedQuery("deleteDomainByName").setParameter("name", 
domain).executeUpdate();
-            transaction.commit();
             return true;
         } catch (PersistenceException e) {
             getLogger().debug("Failed to remove domain", e);
@@ -131,19 +152,10 @@ public class JPADomainList extends Abstr
                 transaction.rollback();
             }
         } finally {
+            transaction.commit();
             entityManager.close();
         }
         return false;
     }
 
-    /**
-     * Set the entity manager to use.
-     * 
-     * @param entityManagerFactory
-     */
-    @PersistenceUnit
-    public void setEntityManagerFactory(EntityManagerFactory 
entityManagerFactory) {
-        this.entityManagerFactory = entityManagerFactory;
-    }
-
 }

Modified: 
james/server/trunk/user-function/src/main/java/org/apache/james/vut/JPAVirtualUserTable.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/user-function/src/main/java/org/apache/james/vut/JPAVirtualUserTable.java?rev=998106&r1=998105&r2=998106&view=diff
==============================================================================
--- 
james/server/trunk/user-function/src/main/java/org/apache/james/vut/JPAVirtualUserTable.java
 (original)
+++ 
james/server/trunk/user-function/src/main/java/org/apache/james/vut/JPAVirtualUserTable.java
 Fri Sep 17 12:59:24 2010
@@ -83,7 +83,6 @@ public class JPAVirtualUserTable extends
             List<JPAVirtualUser> virtualUsers = 
entityManager.createNamedQuery("selectMappings")
                 .setParameter("user", user)
                 .setParameter("domain", domain).getResultList();
-            transaction.commit();
             if(virtualUsers.size() > 0) {
                 return virtualUsers.get(0).getTargetAddress();
             }
@@ -93,6 +92,7 @@ public class JPAVirtualUserTable extends
                 transaction.rollback();
             }
         } finally {
+            transaction.commit();
             entityManager.close();
         }
         return null;
@@ -103,7 +103,9 @@ public class JPAVirtualUserTable extends
      */
     protected Collection<String> getUserDomainMappingsInternal(String user, 
String domain) {
         EntityManager entityManager = 
entityManagerFactory.createEntityManager();
+        final EntityTransaction transaction = entityManager.getTransaction();
         try {
+            transaction.begin();
             List<JPAVirtualUser> virtualUsers = 
entityManager.createNamedQuery("selectUserDomainMapping")
                 .setParameter("user", user)
                 .setParameter("domain", domain).getResultList();
@@ -112,7 +114,11 @@ public class JPAVirtualUserTable extends
             }
         } catch (PersistenceException e) {
             getLogger().debug("Failed to get user domain mappings", e);
+            if (transaction.isActive()) {
+                transaction.rollback();
+            }
         } finally {
+            transaction.commit();
             entityManager.close();
         }
         return null;
@@ -123,8 +129,10 @@ public class JPAVirtualUserTable extends
      */
     protected Map<String,Collection<String>> getAllMappingsInternal() {
         EntityManager entityManager = 
entityManagerFactory.createEntityManager();
+        final EntityTransaction transaction = entityManager.getTransaction();
         Map<String,Collection<String>> mapping = new 
HashMap<String,Collection<String>>();
         try {
+            transaction.begin();
             List<JPAVirtualUser> virtualUsers = 
entityManager.createNamedQuery("selectAllMappings").getResultList();
             for (JPAVirtualUser virtualUser: virtualUsers) {
                 mapping.put(virtualUser.getUser()+ "@" + 
virtualUser.getDomain(), 
VirtualUserTableUtil.mappingToCollection(virtualUser.getTargetAddress()));
@@ -132,7 +140,11 @@ public class JPAVirtualUserTable extends
             if (mapping.size() > 0) return mapping;
         } catch (PersistenceException e) {
             getLogger().debug("Failed to get all mappings", e);
+            if (transaction.isActive()) {
+                transaction.rollback();
+            }
         } finally {
+            transaction.commit();
             entityManager.close();
         }
         return null;
@@ -170,7 +182,6 @@ public class JPAVirtualUserTable extends
                 .setParameter("targetAddress", mapping)
                 .setParameter("user", user)
                 .setParameter("domain", domain).executeUpdate();
-            transaction.commit();
             if (updated > 0) {
                 return true;
             }
@@ -180,6 +191,7 @@ public class JPAVirtualUserTable extends
                 transaction.rollback();
             }
         } finally {
+            transaction.commit();
             entityManager.close();
         }
         return false;
@@ -203,7 +215,6 @@ public class JPAVirtualUserTable extends
                 .setParameter("user", user)
                 .setParameter("domain", domain)
                 .setParameter("targetAddress", mapping).executeUpdate();
-            transaction.commit();
             if (deleted > 0) {
                 return true;
             }
@@ -213,6 +224,7 @@ public class JPAVirtualUserTable extends
                 transaction.rollback();
             }
         } finally {
+            transaction.commit();
             entityManager.close();
         }
         return false;
@@ -233,7 +245,6 @@ public class JPAVirtualUserTable extends
             transaction.begin();
             JPAVirtualUser jpaVirtualUser = new JPAVirtualUser(user, domain, 
mapping);
             entityManager.persist(jpaVirtualUser);
-            transaction.commit();
             return true;
         } catch (PersistenceException e) {
             getLogger().debug("Failed to save virtual user", e);
@@ -241,6 +252,7 @@ public class JPAVirtualUserTable extends
                 transaction.rollback();
             }
         } finally {
+            transaction.commit();
             entityManager.close();
         }
         return false;



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to