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