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);