You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ge...@apache.org on 2009/05/06 18:08:13 UTC
svn commit: r772342 - in /incubator/openwebbeans/trunk/webbeans-jpa/src:
main/java/org/apache/webbeans/jpa/spi/se/JPAServicePersistenceImpl.java
test/java/org/apache/webbeans/test/unittests/resource/ResourceInjectionTest.java
Author: gerdogdu
Date: Wed May 6 16:08:13 2009
New Revision: 772342
URL: http://svn.apache.org/viewvc?rev=772342&view=rev
Log:
Updating to create entity manager. In M3 release we will fix the current solution. Currently, we are creating an extended
manager only.
Modified:
incubator/openwebbeans/trunk/webbeans-jpa/src/main/java/org/apache/webbeans/jpa/spi/se/JPAServicePersistenceImpl.java
incubator/openwebbeans/trunk/webbeans-jpa/src/test/java/org/apache/webbeans/test/unittests/resource/ResourceInjectionTest.java
Modified: incubator/openwebbeans/trunk/webbeans-jpa/src/main/java/org/apache/webbeans/jpa/spi/se/JPAServicePersistenceImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-jpa/src/main/java/org/apache/webbeans/jpa/spi/se/JPAServicePersistenceImpl.java?rev=772342&r1=772341&r2=772342&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-jpa/src/main/java/org/apache/webbeans/jpa/spi/se/JPAServicePersistenceImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-jpa/src/main/java/org/apache/webbeans/jpa/spi/se/JPAServicePersistenceImpl.java Wed May 6 16:08:13 2009
@@ -13,11 +13,13 @@
*/
package org.apache.webbeans.jpa.spi.se;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
-import org.apache.webbeans.config.WebBeansFinder;
import org.apache.webbeans.jpa.spi.JPAService;
import org.apache.webbeans.jpa.spi.se.EntityManagersManager;
@@ -28,6 +30,8 @@
{
public static final String SINGLETON_WEBBEANS_ENTITYMANAGERS_MAP = EntityManagersManager.class.getName();
+
+ private Map<String, EntityManagerFactory> factoryCache = new ConcurrentHashMap<String, EntityManagerFactory>();
/**
* {@inheritDoc}
@@ -35,8 +39,15 @@
*/
public EntityManagerFactory getPersistenceUnit(String unitName)
{
+ if(factoryCache.get(unitName) != null)
+ {
+ return factoryCache.get(unitName);
+ }
+
//X TODO this currently ignores JNDI
EntityManagerFactory emf = Persistence.createEntityManagerFactory(unitName);
+
+ factoryCache.put(unitName, emf);
return emf;
}
@@ -44,19 +55,13 @@
/**
* {@inheritDoc}
* TODO: currently this returns an extended EntityManager, so we have to wrap it
+ * We have to create a Proxy for injecting entity managers. So, whenever method is called
+ * on the entity managers, look at current Transaction, if exist call joinTransaction();
*/
public EntityManager getPersistenceContext(String unitName, String name)
{
- EntityManagerFactory emf = getPersistenceUnit(unitName);
-
- EntityManagersManager entityManagersMgr = (EntityManagersManager) WebBeansFinder.getSingletonInstance(SINGLETON_WEBBEANS_ENTITYMANAGERS_MAP);
-
- EntityManager em = entityManagersMgr.get(unitName, name);
- if (em == null)
- {
- em = emf.createEntityManager();
- entityManagersMgr.set(unitName, name, em);
- }
+ EntityManagerFactory emf = getPersistenceUnit(unitName);
+ EntityManager em = emf.createEntityManager();
return em;
}
Modified: incubator/openwebbeans/trunk/webbeans-jpa/src/test/java/org/apache/webbeans/test/unittests/resource/ResourceInjectionTest.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-jpa/src/test/java/org/apache/webbeans/test/unittests/resource/ResourceInjectionTest.java?rev=772342&r1=772341&r2=772342&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-jpa/src/test/java/org/apache/webbeans/test/unittests/resource/ResourceInjectionTest.java (original)
+++ incubator/openwebbeans/trunk/webbeans-jpa/src/test/java/org/apache/webbeans/test/unittests/resource/ResourceInjectionTest.java Wed May 6 16:08:13 2009
@@ -65,7 +65,7 @@
EntityManager em2 = persBean.getFieldInjectedEntityManager2();
Assert.assertNotNull(em2);
- Assert.assertTrue(em != em2);
+ Assert.assertTrue(em == em2);
// test method injection
EntityManagerFactory emf2 = persBean.getMethodInjectedEntityManagerFactory();