You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2009/10/16 14:10:56 UTC

svn commit: r825859 - /labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/CheckJPAManager.aj

Author: simoneg
Date: Fri Oct 16 12:10:56 2009
New Revision: 825859

URL: http://svn.apache.org/viewvc?rev=825859&view=rev
Log:
LABS-472: Added a mutex to avoid concurrent initialization of non-provided JPA manager

Modified:
    labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/CheckJPAManager.aj

Modified: labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/CheckJPAManager.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/CheckJPAManager.aj?rev=825859&r1=825858&r2=825859&view=diff
==============================================================================
--- labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/CheckJPAManager.aj (original)
+++ labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/CheckJPAManager.aj Fri Oct 16 12:10:56 2009
@@ -28,16 +28,20 @@
  */
 public aspect CheckJPAManager {
 
+	private String mutex = "CheckJPAManager_mutex";
+	
 	pointcut jpaDBmethod(JPADatabase db) : execution(* JPADatabase+.*(..)) && target(db);
 	
 	before(JPADatabase db) : jpaDBmethod(db) {
 		if (db.manager == null) {
-			EntityManagerFactory f = createFactory();
-			db.manager = f.createEntityManager();
-			db.manualManager = true;
-			EntityTransaction tx = db.manager.getTransaction();
-			tx.begin();
-			db.transaction = tx;
+			synchronized(mutex) {
+				EntityManagerFactory f = createFactory();
+				db.manager = f.createEntityManager();
+				db.manualManager = true;
+				EntityTransaction tx = db.manager.getTransaction();
+				tx.begin();
+				db.transaction = tx;
+			}
 		}
 	}
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org