Author: ggerla
Date: Fri Jan  6 17:47:06 2017
New Revision: 1777668

URL: http://svn.apache.org/viewvc?rev=1777668&view=rev
Log:
[ARIES-1631] Added management of javax.persistence.dataSource in case of no 
non-JTA datasources are specified

Modified:
    
aries/trunk/jpa/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerTest.java
    
aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/AriesEntityManagerFactoryBuilder.java

Modified: 
aries/trunk/jpa/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerTest.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/jpa/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerTest.java?rev=1777668&r1=1777667&r2=1777668&view=diff
==============================================================================
--- 
aries/trunk/jpa/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerTest.java
 (original)
+++ 
aries/trunk/jpa/itests/jpa-container-itest/src/test/java/org/apache/aries/jpa/container/itest/JPAContainerTest.java
 Fri Jan  6 17:47:06 2017
@@ -189,4 +189,24 @@ public abstract class JPAContainerTest e
        EntityManagerFactory emf = emfBuilder.createEntityManagerFactory(props);
        carLifecycleXA(ut, emf.createEntityManager());
     }
+    
+    @Test
+    public void testCarEMFBuilderNoNonJTADataSource() throws Exception {
+        EntityManagerFactoryBuilder emfBuilder = 
getService(EntityManagerFactoryBuilder.class,
+                        "(osgi.unit.name=" + EXTERNAL_TEST_UNIT + ")");
+        
+        
+        Map<String, Object> props = new HashMap<String, Object>();
+        //EclipseLink also needs a non-jta-datasource
+        DataSourceFactory dsf = getService(DataSourceFactory.class, 
+                        "(" + OSGI_JDBC_DRIVER_CLASS + 
"=org.apache.derby.jdbc.EmbeddedDriver)");
+        Properties jdbcProps = new Properties();
+        jdbcProps.setProperty("url", "jdbc:derby:memory:TEST1;create=true");
+        props.put("javax.persistence.dataSource", 
dsf.createDataSource(jdbcProps));
+
+        
+        EntityManagerFactory emf = 
emfBuilder.createEntityManagerFactory(props);
+        carLifecycleRL(emf.createEntityManager());
+    }
+
 }

Modified: 
aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/AriesEntityManagerFactoryBuilder.java
URL: 
http://svn.apache.org/viewvc/aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/AriesEntityManagerFactoryBuilder.java?rev=1777668&r1=1777667&r2=1777668&view=diff
==============================================================================
--- 
aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/AriesEntityManagerFactoryBuilder.java
 (original)
+++ 
aries/trunk/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/impl/AriesEntityManagerFactoryBuilder.java
 Fri Jan  6 17:47:06 2017
@@ -37,6 +37,7 @@ import org.osgi.service.jpa.EntityManage
 public class AriesEntityManagerFactoryBuilder implements 
EntityManagerFactoryBuilder {
     private static final String JAVAX_PERSISTENCE_JDBC_DRIVER = 
"javax.persistence.jdbc.driver";
     private static final String JAVAX_PERSISTENCE_JTA_DATASOURCE = 
"javax.persistence.jtaDataSource";
+    private static final String JAVAX_PERSISTENCE_DATASOURCE = 
"javax.persistence.dataSource";
     private static final String JAVAX_PERSISTENCE_NON_JTA_DATASOURCE = 
"javax.persistence.nonJtaDataSource";
     private static final String JAVAX_PERSISTENCE_TX_TYPE = 
"javax.persistence.transactionType";
 
@@ -75,6 +76,12 @@ public class AriesEntityManagerFactoryBu
         if(o instanceof DataSource) {
                persistenceUnit.setNonJtaDataSource((DataSource) o);
                props.remove(JAVAX_PERSISTENCE_NON_JTA_DATASOURCE);
+        } else {
+            o = props.get(JAVAX_PERSISTENCE_DATASOURCE);
+            if(o != null && o instanceof DataSource) {
+                    persistenceUnit.setNonJtaDataSource((DataSource) o);
+                    props.remove(JAVAX_PERSISTENCE_DATASOURCE);
+            }   
         }
         
         o = props.get(JAVAX_PERSISTENCE_TX_TYPE);


Reply via email to