You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jg...@apache.org on 2015/05/17 22:20:13 UTC

[8/8] tomee git commit: TOMEE-1580 issue with p.xml root url when p.mlx is in a jar + trying to fix datasource url in p.xml properties + TOMEE-1585 fix concurrency in live registry of base ejb proxy handler (all are backport from master)

TOMEE-1580 issue with p.xml root url when p.mlx is in a jar + trying to fix datasource url in p.xml properties + TOMEE-1585 fix concurrency in live registry of base ejb proxy handler (all are backport from master)


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/6d718816
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/6d718816
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/6d718816

Branch: refs/heads/release-tomee-1.7.2
Commit: 6d7188165520384b25bd3975e68805484a7d36ce
Parents: e4b29d0
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri May 15 15:30:29 2015 +0200
Committer: Jonathan Gallimore <jo...@jrg.me.uk>
Committed: Sun May 17 21:19:35 2015 +0100

----------------------------------------------------------------------
 .../apache/openejb/config/AppInfoBuilder.java   | 16 +++++++++++
 .../apache/openejb/config/ReadDescriptors.java  |  7 +++--
 .../openejb/core/ivm/BaseEjbProxyHandler.java   | 30 +++++++++++---------
 3 files changed, 37 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/6d718816/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java b/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
index c2517cd..3b9c86f 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
@@ -97,6 +97,8 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
 
+import static java.util.Arrays.asList;
+import static java.util.Collections.singletonList;
 import static org.apache.openejb.util.URLs.toFile;
 
 /**
@@ -845,6 +847,13 @@ class AppInfoBuilder {
                         info.properties.setProperty(ECLIPSELINK_SESSION_CUSTOMIZER, PREFIX_SESSION_CUSTOMIZER);
                     }
                 }
+
+                for (final String key : singletonList("eclipselink.jdbc.sequence-connection-pool.non-jta-data-source")) {
+                    final String ds = info.properties.getProperty(key);
+                    if (ds != null && !ds.contains(":") /* java:, openejb:, other: namespace */) {
+                        info.properties.setProperty(key, "java:openejb/Resource/" + ds);
+                    }
+                }
             } else if (info.provider == null || "org.apache.openjpa.persistence.PersistenceProviderImpl".equals(info.provider)) {
 
                 // Apply the overrides that apply to all persistence units of this provider
@@ -895,6 +904,13 @@ class AppInfoBuilder {
 
             // Apply the overrides that apply to just this persistence unit
             override(appModule.getProperties(), info);
+
+            for (final String key : asList("javax.persistence.jtaDataSource", "javax.persistence.nonJtaDataSource")) {
+                final String ds = info.properties.getProperty(key);
+                if (ds != null && !ds.contains(":") /* java:, openejb:, other: namespace */) {
+                    info.properties.setProperty(key, "java:openejb/Resource/" + ds);
+                }
+            }
         }
 
         private static void overrideFromSystemProp(final PersistenceUnitInfo info) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/6d718816/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java b/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
index aaf31ed..5cd9f84 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/ReadDescriptors.java
@@ -146,9 +146,12 @@ public class ReadDescriptors implements DynamicDeployer {
                     path = file.getAbsolutePath();
 
                     if (file.getName().endsWith("persistence.xml")) {
-                        final String parent = file.getParentFile().getName();
+                        final File parentFile = file.getParentFile();
+                        final String parent = parentFile.getName();
                         if (parent.equalsIgnoreCase("WEB-INF") || parent.equalsIgnoreCase("META-INF")) {
-                            file = file.getParentFile().getParentFile();
+                            file = parentFile.getParentFile();
+                        } else if (parent.equalsIgnoreCase("lib") && "WEB-INF".equals(parentFile.getParentFile().getName())) {
+                            file = parentFile.getParentFile().getParentFile();
                         } else { // we don't really know so simply go back (users will often put persistence.xml in root resource folder with arquillian)
                             file = file.getParentFile();
                         }

http://git-wip-us.apache.org/repos/asf/tomee/blob/6d718816/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java b/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java
index 2a01773..34f9ef7 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/BaseEjbProxyHandler.java
@@ -52,6 +52,8 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.WeakHashMap;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.locks.ReentrantLock;
 import javax.ejb.AccessLocalException;
 import javax.ejb.EJBException;
@@ -608,20 +610,20 @@ public abstract class BaseEjbProxyHandler implements InvocationHandler, Serializ
     protected abstract Object _writeReplace(Object proxy) throws ObjectStreamException;
 
     protected void registerHandler(final Object key, final BaseEjbProxyHandler handler) {
-        HashSet set = (HashSet) getLiveHandleRegistry().get(key);
-        if (set != null) {
-            final ReentrantLock l = lock;
-            l.lock();
-
-            try {
-                set.add(handler);
-            } finally {
-                l.unlock();
-            }
-        } else {
+        Set set = (Set) getLiveHandleRegistry().get(key);
+        if (set == null) {
             set = new HashSet();
+            final Object existing = getLiveHandleRegistry().putIfAbsent(key, set);
+            if (existing != null) {
+                set = Set.class.cast(existing);
+            }
+        }
+        final ReentrantLock l = lock;
+        l.lock();
+        try {
             set.add(handler);
-            getLiveHandleRegistry().put(key, set);
+        } finally {
+            l.unlock();
         }
     }
 
@@ -640,7 +642,7 @@ public abstract class BaseEjbProxyHandler implements InvocationHandler, Serializ
         this.beanContextRef = new WeakReference<BeanContext>(beanContext);
     }
 
-    public HashMap getLiveHandleRegistry() {
+    public ConcurrentMap getLiveHandleRegistry() {
         final BeanContext beanContext = getBeanContext();
         ProxyRegistry proxyRegistry = beanContext.get(ProxyRegistry.class);
         if (proxyRegistry == null) {
@@ -675,6 +677,6 @@ public abstract class BaseEjbProxyHandler implements InvocationHandler, Serializ
 
     private static class ProxyRegistry {
 
-        protected final HashMap liveHandleRegistry = new HashMap();
+        protected final ConcurrentMap liveHandleRegistry = new ConcurrentHashMap();
     }
 }