Bug 401267 - [enterprise] Provide support for persistence provider provided by the application
diff --git a/build.versions b/build.versions
index 2e00c16..cd54280 100644
--- a/build.versions
+++ b/build.versions
@@ -51,7 +51,7 @@
 org.apache.juli.extras=7.0.35.v201302120746
 org.apache.mina.core=2.0.2.v201108120515
 org.apache.openejb.api=4.0.0.beta-2_v201205041047
-org.apache.openejb.core=4.0.0.beta-2_v201205260545-virgo-1
+org.apache.openejb.core=4.0.0.beta-2_v201205260545-virgo-4
 org.apache.openejb.javaagent=4.0.0.beta-2_v201205041047
 org.apache.openejb.jee=4.0.0.beta-2_v201205041336
 org.apache.openejb.loader=4.0.0.beta-2_v201205041336
@@ -128,6 +128,7 @@
 org.eclipse.persistence.core=2.4.1.v20121003-ad44345
 org.eclipse.persistence.jpa.jpql=2.0.1.v20121003-ad44345
 org.eclipse.persistence.jpa=2.4.1.v20121003-ad44345
+org.eclipse.virgo.openejb.jpa.integration=4.0.0.beta-2_v201205260545
 org.glassfish.com.sun.faces=2.1.6.v201205171319-virgo-2
 org.glassfish.javax.faces=2.1.6.v201210041257
 org.ow2.jotm.jotm-core=2.1.9.v201204271116
diff --git a/hotfix/plugins/org.apache.openejb.core_4.0.0.beta-2_v201205260545-virgo-3.jar b/hotfix/plugins/org.apache.openejb.core_4.0.0.beta-2_v201205260545-virgo-4.jar
similarity index 77%
rename from hotfix/plugins/org.apache.openejb.core_4.0.0.beta-2_v201205260545-virgo-3.jar
rename to hotfix/plugins/org.apache.openejb.core_4.0.0.beta-2_v201205260545-virgo-4.jar
index ae6fb5e..f73b56c 100755
--- a/hotfix/plugins/org.apache.openejb.core_4.0.0.beta-2_v201205260545-virgo-3.jar
+++ b/hotfix/plugins/org.apache.openejb.core_4.0.0.beta-2_v201205260545-virgo-4.jar
Binary files differ
diff --git a/hotfix/plugins/org.eclipse.virgo.openejb.jpa.integration_4.0.0.beta-2_v201205260545.jar b/hotfix/plugins/org.eclipse.virgo.openejb.jpa.integration_4.0.0.beta-2_v201205260545.jar
new file mode 100755
index 0000000..3ce30a8
--- /dev/null
+++ b/hotfix/plugins/org.eclipse.virgo.openejb.jpa.integration_4.0.0.beta-2_v201205260545.jar
Binary files differ
diff --git a/hotfix/source/openejb-core/README.txt b/hotfix/source/openejb-core/README.txt
index 83111c0..8f25f1f 100755
--- a/hotfix/source/openejb-core/README.txt
+++ b/hotfix/source/openejb-core/README.txt
@@ -5,7 +5,10 @@
 After successful build patch the Bundle-Version and jar name to something like this increasing the current version at the back:

 org.apache.openejb.core_4.0.0.beta-2_v201205260545-virgo-2

 

-Add "Exposed-ContentType: Implementation" and "DynamicImport-Package: *" to the manifest of the newly built openejb-core jar or better yet copy the entire manifest from the old hot fix jar into the new one.
+Add "Exposed-ContentType: Implementation" to the manifest of the newly built openejb-core jar or better yet copy the entire manifest from the old hot fix jar into the new one.
 
 Original code is submitted in src.original and can also be found at:
-http://svn.apache.org/repos/asf/openejb/tags/openejb-4.0.0-beta-2/
\ No newline at end of file
+http://svn.apache.org/repos/asf/openejb/tags/openejb-4.0.0-beta-2/

+

+Remove from org/apache/openejb subfolder in the jar the folders eclipselink, hibernate and toplink - the classes from these folders are placed in

+a separate jar, org.eclipse.virgo.openejb.jpa.integration_4.0.0.beta-2_v201205260545.jar
\ No newline at end of file
diff --git a/hotfix/source/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java b/hotfix/source/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
index 40be8af..fa5b385 100755
--- a/hotfix/source/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
+++ b/hotfix/source/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
@@ -16,6 +16,22 @@
  */
 package org.apache.openejb.config;
 
+import static org.apache.openejb.util.URLs.toFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+
+import javax.xml.bind.JAXBException;
+
 import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.assembler.classic.AppInfo;
 import org.apache.openejb.assembler.classic.ClientInfo;
@@ -65,21 +81,6 @@
 import org.apache.openejb.util.Messages;
 import org.apache.openejb.util.References;
 
-import javax.xml.bind.JAXBException;
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-
-import static org.apache.openejb.util.URLs.toFile;
-
 /**
  * @version $Rev: 1214977 $ $Date: 2011-12-15 14:40:42 -0800 (Thu, 15 Dec 2011) $
  */
@@ -571,17 +572,22 @@
         public static final String JTADATASOURCE_PROP = "javax.persistence.jtaDataSource";
         public static final String NON_JTADATASOURCE_PROP = "javax.persistence.nonJtaDataSource";
         private static final String DEFAULT_PERSISTENCE_PROVIDER = "org.apache.openjpa.persistence.PersistenceProviderImpl";
+		public static final String FORCE_PROVIDER_ENV = "openejb.jpa.force."
+				+ PROVIDER_PROP;
 
         public static final String HIBERNATE_TRANSACTION_MANAGER_LOOKUP_CLASS = "hibernate.transaction.manager_lookup_class";
         public static final String HIBERNATE_JTA_PLATFORM = "hibernate.transaction.jta.platform";
 
         private static String providerEnv;
+		private static boolean forceProviderEnv;
         private static String transactionTypeEnv;
         private static String jtaDataSourceEnv;
         private static String nonJtaDataSourceEnv;
 
         static {
             providerEnv = System.getProperty(PROVIDER_PROP);
+			forceProviderEnv = Boolean.valueOf(System.getProperty(
+					FORCE_PROVIDER_ENV, "true"));
             transactionTypeEnv = System.getProperty(TRANSACTIONTYPE_PROP);
             jtaDataSourceEnv = System.getProperty(JTADATASOURCE_PROP);
             nonJtaDataSourceEnv = System.getProperty(NON_JTADATASOURCE_PROP);
@@ -693,7 +699,8 @@
         }
 
         private static void overrideFromSystemProp(PersistenceUnitInfo info) {
-            if (providerEnv != null) {
+			if (providerEnv != null
+					&& (info.provider == null || forceProviderEnv)) {
                 info.provider = providerEnv;
             }
             if (info.provider == null) {