You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2011/10/07 15:57:32 UTC

svn commit: r1180040 - in /openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb: assembler/classic/PersistenceBuilder.java config/AppInfoBuilder.java

Author: rmannibucau
Date: Fri Oct  7 13:57:31 2011
New Revision: 1180040

URL: http://svn.apache.org/viewvc?rev=1180040&view=rev
Log:
overriding javax.persistence properties earlier since we test it earlier to force some needed values if they are missing

Modified:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceBuilder.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceBuilder.java?rev=1180040&r1=1180039&r2=1180040&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceBuilder.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/PersistenceBuilder.java Fri Oct  7 13:57:31 2011
@@ -38,56 +38,17 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 
 public class PersistenceBuilder {
-
     public static final Logger logger = Logger.getInstance(LogCategory.OPENEJB_STARTUP, PersistenceBuilder.class);
 
-    public static final String PROVIDER_PROP = "javax.persistence.provider";
-
-    public static final String TRANSACTIONTYPE_PROP = "javax.persistence.transactionType";
-
-    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";
-
     /**
      * External handler which handles adding a runtime ClassTransformer to the classloader.
      */
     private final PersistenceClassLoaderHandler persistenceClassLoaderHandler;
 
-    /**
-     * If set, overrides the persistence provider class name in the persistence.xml.
-     */
-    private String providerEnv;
-
-    /**
-     * If set, overrides the transaction type in the persistence.xml.
-     */
-    private String transactionTypeEnv;
-
-    /**
-     * If set, overrides the jta data source class name in the persistence.xml.
-     */
-    private String jtaDataSourceEnv;
-
-    /**
-     * If set, overrides the non-jta data source class name in the persistence.xml.
-     */
-    private String nonJtaDataSourceEnv;
-
     public PersistenceBuilder(PersistenceClassLoaderHandler persistenceClassLoaderHandler) {
-        loadSystemProps();
         this.persistenceClassLoaderHandler = persistenceClassLoaderHandler;
     }
 
-    private void loadSystemProps() {
-        providerEnv = SystemInstance.get().getProperty(PROVIDER_PROP);
-        transactionTypeEnv = SystemInstance.get().getProperty(TRANSACTIONTYPE_PROP);
-        jtaDataSourceEnv = SystemInstance.get().getProperty(JTADATASOURCE_PROP);
-        nonJtaDataSourceEnv = SystemInstance.get().getProperty(NON_JTADATASOURCE_PROP);
-    }
-
     public EntityManagerFactory createEntityManagerFactory(PersistenceUnitInfo info, ClassLoader classLoader) throws Exception {
         PersistenceUnitInfoImpl unitInfo = new PersistenceUnitInfoImpl(persistenceClassLoaderHandler);
 
@@ -98,11 +59,7 @@ public class PersistenceBuilder {
         unitInfo.setPersistenceUnitName(info.name);
 
         // Persistence Provider Class Name
-        if (providerEnv != null) {
-            unitInfo.setPersistenceProviderClassName(providerEnv);
-        } else {
-            unitInfo.setPersistenceProviderClassName(info.provider);
-        }
+        unitInfo.setPersistenceProviderClassName(info.provider);
 
         // ClassLoader
         unitInfo.setClassLoader(classLoader);
@@ -114,7 +71,6 @@ public class PersistenceBuilder {
 
         // JTA Datasource
         String jtaDataSourceId = info.jtaDataSource;
-        if (jtaDataSourceEnv != null) jtaDataSourceId = jtaDataSourceEnv;
         if (jtaDataSourceId != null) {
             if (!SystemInstance.get().hasProperty("openejb.geronimo")) {
 
@@ -151,22 +107,11 @@ public class PersistenceBuilder {
         unitInfo.setValidationMode(validationMode);
         
         // Persistence Unit Transaction Type
-        if (transactionTypeEnv != null) {
-            try {
-                // Override with sys vars
-                PersistenceUnitTransactionType type = Enum.valueOf(PersistenceUnitTransactionType.class, transactionTypeEnv.toUpperCase());
-                unitInfo.setTransactionType(type);
-            } catch (IllegalArgumentException e) {
-                throw (IllegalArgumentException)(new IllegalArgumentException("Unknown " + TRANSACTIONTYPE_PROP + ", valid options are " + PersistenceUnitTransactionType.JTA + " or " + PersistenceUnitTransactionType.RESOURCE_LOCAL).initCause(e));
-            }
-        } else {
-            PersistenceUnitTransactionType type = Enum.valueOf(PersistenceUnitTransactionType.class, info.transactionType);
-            unitInfo.setTransactionType(type);
-        }
+        PersistenceUnitTransactionType type = Enum.valueOf(PersistenceUnitTransactionType.class, info.transactionType);
+        unitInfo.setTransactionType(type);
 
         // Non JTA Datasource
         String nonJtaDataSourceId = info.nonJtaDataSource;
-        if (nonJtaDataSourceEnv != null) nonJtaDataSourceId = nonJtaDataSourceEnv;
         if (nonJtaDataSourceId != null) {
             if (!SystemInstance.get().hasProperty("openejb.geronimo")) {
                 try {
@@ -185,9 +130,6 @@ public class PersistenceBuilder {
 
         // create the persistence provider
         String persistenceProviderClassName = unitInfo.getPersistenceProviderClassName();
-        if (persistenceProviderClassName == null) {
-            persistenceProviderClassName = DEFAULT_PERSISTENCE_PROVIDER;
-        }
         unitInfo.setPersistenceProviderClassName(persistenceProviderClassName);
 
         final long start = System.nanoTime();

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java?rev=1180040&r1=1180039&r2=1180040&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/AppInfoBuilder.java Fri Oct  7 13:57:31 2011
@@ -568,7 +568,27 @@ class AppInfoBuilder {
         public static final String DEFAULT_RUNTIME_UNENHANCED_CLASSES = "supported";
         public static final String REMOVE_DEFAULT_RUNTIME_UNENHANCED_CLASSES = "disable";
 
+        public static final String PROVIDER_PROP = "javax.persistence.provider";
+        public static final String TRANSACTIONTYPE_PROP = "javax.persistence.transactionType";
+        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";
+
+        private static String providerEnv;
+        private static String transactionTypeEnv;
+        private static String jtaDataSourceEnv;
+        private static String nonJtaDataSourceEnv;
+
+        static {
+            providerEnv = System.getProperty(PROVIDER_PROP);
+            transactionTypeEnv = System.getProperty(TRANSACTIONTYPE_PROP);
+            jtaDataSourceEnv = System.getProperty(JTADATASOURCE_PROP);
+            nonJtaDataSourceEnv = System.getProperty(NON_JTADATASOURCE_PROP);
+        }
+
         private static void apply(PersistenceUnitInfo info) {
+            overrideFromSystemProp(info);
+
             // The result is that OpenEJB-specific configuration can be avoided when
             // using OpenEJB + Hibernate or another vendor.  A second benefit is that
             // if another vendor is used in production, the value will automatically
@@ -660,6 +680,24 @@ class AppInfoBuilder {
             override(info);
         }
 
+        private static void overrideFromSystemProp(PersistenceUnitInfo info) {
+            if (providerEnv != null) {
+                info.provider = providerEnv;
+            }
+            if (info.provider == null) {
+                info.provider = DEFAULT_PERSISTENCE_PROVIDER;
+            }
+            if (jtaDataSourceEnv != null) {
+                info.jtaDataSource = jtaDataSourceEnv;
+            }
+            if (transactionTypeEnv != null) {
+                info.transactionType = transactionTypeEnv.toUpperCase();
+            }
+            if (nonJtaDataSourceEnv != null) {
+                info.nonJtaDataSource = nonJtaDataSourceEnv;
+            }
+        }
+
         private static void override(PersistenceUnitInfo info) {
             override(info, info.name);
         }