TOMEE-1580 persistence.xml root url when p.xml is in a jar + some datasource property adjustment to openejb namespace
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/f286297c Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/f286297c Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/f286297c Branch: refs/heads/fb_tomee2_owb16 Commit: f286297cb4fc5eabd606ade2de40876df6d6ecaf Parents: 7ddafaf Author: Romain Manni-Bucau <rmannibu...@apache.org> Authored: Fri May 15 15:23:27 2015 +0200 Committer: Romain Manni-Bucau <rmannibu...@apache.org> Committed: Fri May 15 15:23:27 2015 +0200 ---------------------------------------------------------------------- .../org/apache/openejb/config/AppInfoBuilder.java | 16 ++++++++++++++++ .../org/apache/openejb/config/ReadDescriptors.java | 7 +++++-- 2 files changed, 21 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/f286297c/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 cc61204..755f017 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 @@ -98,6 +98,8 @@ import java.util.Properties; import java.util.Set; import javax.xml.bind.JAXBException; +import static java.util.Arrays.asList; +import static java.util.Collections.singletonList; import static org.apache.openejb.util.URLs.toFile; /** @@ -870,6 +872,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 @@ -920,6 +929,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/f286297c/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 5f951a1..1d3a978 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 @@ -147,9 +147,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(); }