You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by ti...@apache.org on 2018/01/24 14:00:35 UTC
[aries-tx-control] branch master updated: Tx Control spec
compliance - avoid NPEs when null Maps are passed,
throw thw correct exception from joinTransaction
This is an automated email from the ASF dual-hosted git repository.
timothyjward pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/aries-tx-control.git
The following commit(s) were added to refs/heads/master by this push:
new 2d64bd6 Tx Control spec compliance - avoid NPEs when null Maps are passed, throw thw correct exception from joinTransaction
2d64bd6 is described below
commit 2d64bd67626a5b311dcd2d326532085313ff59dc
Author: Tim Ward <ti...@apache.org>
AuthorDate: Wed Jan 24 08:59:36 2018 -0500
Tx Control spec compliance - avoid NPEs when null Maps are passed, throw thw correct exception from joinTransaction
---
.../apache/aries/tx/control/jpa/common/impl/JPADataSourceHelper.java | 5 ++++-
.../aries/tx/control/jpa/common/impl/ScopedEntityManagerWrapper.java | 5 +++--
.../tx/control/jpa/xa/impl/JPAEntityManagerProviderFactoryImpl.java | 5 +++--
3 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/tx-control-providers/jpa/tx-control-provider-jpa-common/src/main/java/org/apache/aries/tx/control/jpa/common/impl/JPADataSourceHelper.java b/tx-control-providers/jpa/tx-control-provider-jpa-common/src/main/java/org/apache/aries/tx/control/jpa/common/impl/JPADataSourceHelper.java
index d5e335b..779e4ab 100644
--- a/tx-control-providers/jpa/tx-control-provider-jpa-common/src/main/java/org/apache/aries/tx/control/jpa/common/impl/JPADataSourceHelper.java
+++ b/tx-control-providers/jpa/tx-control-provider-jpa-common/src/main/java/org/apache/aries/tx/control/jpa/common/impl/JPADataSourceHelper.java
@@ -38,7 +38,10 @@ public class JPADataSourceHelper {
hcfg.setIdleTimeout(toLong(resourceProviderProperties, IDLE_TIMEOUT, TimeUnit.MINUTES.toMillis(3)));
hcfg.setMaxLifetime(toLong(resourceProviderProperties, CONNECTION_LIFETIME, HOURS.toMillis(3)));
- hcfg.setConnectionTestQuery((String)resourceProviderProperties.get(CONNECTION_TEST_QUERY));
+ ofNullable(resourceProviderProperties)
+ .map(m -> m.get(CONNECTION_TEST_QUERY))
+ .map(String::valueOf)
+ .ifPresent(q -> hcfg.setConnectionTestQuery(q));
toUse = new HikariDataSource(hcfg);
diff --git a/tx-control-providers/jpa/tx-control-provider-jpa-common/src/main/java/org/apache/aries/tx/control/jpa/common/impl/ScopedEntityManagerWrapper.java b/tx-control-providers/jpa/tx-control-provider-jpa-common/src/main/java/org/apache/aries/tx/control/jpa/common/impl/ScopedEntityManagerWrapper.java
index d654bf2..c89fa64 100644
--- a/tx-control-providers/jpa/tx-control-provider-jpa-common/src/main/java/org/apache/aries/tx/control/jpa/common/impl/ScopedEntityManagerWrapper.java
+++ b/tx-control-providers/jpa/tx-control-provider-jpa-common/src/main/java/org/apache/aries/tx/control/jpa/common/impl/ScopedEntityManagerWrapper.java
@@ -19,7 +19,8 @@
package org.apache.aries.tx.control.jpa.common.impl;
import javax.persistence.EntityManager;
-import javax.persistence.TransactionRequiredException;
+
+import org.osgi.service.transaction.control.TransactionException;
public class ScopedEntityManagerWrapper extends EntityManagerWrapper {
@@ -41,7 +42,7 @@ public class ScopedEntityManagerWrapper extends EntityManagerWrapper {
@Override
public void joinTransaction() {
- throw new TransactionRequiredException("This EntityManager is being used in the No Transaction scope. There is no transaction to join.");
+ throw new TransactionException("This EntityManager is being used in the No Transaction scope. There is no transaction to join.");
}
@Override
diff --git a/tx-control-providers/jpa/tx-control-provider-jpa-xa/src/main/java/org/apache/aries/tx/control/jpa/xa/impl/JPAEntityManagerProviderFactoryImpl.java b/tx-control-providers/jpa/tx-control-provider-jpa-xa/src/main/java/org/apache/aries/tx/control/jpa/xa/impl/JPAEntityManagerProviderFactoryImpl.java
index c4ce8f9..fec6bb8 100644
--- a/tx-control-providers/jpa/tx-control-provider-jpa-xa/src/main/java/org/apache/aries/tx/control/jpa/xa/impl/JPAEntityManagerProviderFactoryImpl.java
+++ b/tx-control-providers/jpa/tx-control-provider-jpa-xa/src/main/java/org/apache/aries/tx/control/jpa/xa/impl/JPAEntityManagerProviderFactoryImpl.java
@@ -84,11 +84,12 @@ public class JPAEntityManagerProviderFactoryImpl implements InternalJPAEntityMan
public AbstractJPAEntityManagerProvider getProviderFor(EntityManagerFactoryBuilder emfb, Map<String, Object> jpaProperties,
Map<String, Object> resourceProviderProperties) {
- Map<String, Object> jpaPropsToUse = new HashMap<>(jpaProperties);
+ Map<String, Object> jpaPropsToUse = jpaProperties == null ? new HashMap<>() :
+ new HashMap<>(jpaProperties);
jpaPropsToUse.put(TRANSACTION_TYPE, JTA.name());
Function<ThreadLocal<TransactionControl>, AbstractJPAEntityManagerProvider> create;
- if(jpaProperties.containsKey("osgi.jdbc.provider")) {
+ if(jpaPropsToUse.containsKey("osgi.jdbc.provider")) {
create = handleJDBCResourceProvider(emfb, resourceProviderProperties, jpaPropsToUse);
} else if(toBoolean(jpaPropsToUse, PRE_ENLISTED_DB_CONNECTION, false)) {
create = handlePreEnlistedConnection(emfb, resourceProviderProperties, jpaPropsToUse);
--
To stop receiving notification emails like this one, please contact
timothyjward@apache.org.