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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to