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);
}