You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ja...@apache.org on 2014/08/23 09:56:09 UTC
svn commit: r1619981 -
/ofbiz/branches/framework-api-cleanup/framework/entity/src/org/ofbiz/entity/jdbc/ConnectionFactory.java
Author: jacopoc
Date: Sat Aug 23 07:56:08 2014
New Revision: 1619981
URL: http://svn.apache.org/r1619981
Log:
Small simplification: thread safety is now implemented using a static initialization rather than an AtomicReference.
Modified:
ofbiz/branches/framework-api-cleanup/framework/entity/src/org/ofbiz/entity/jdbc/ConnectionFactory.java
Modified: ofbiz/branches/framework-api-cleanup/framework/entity/src/org/ofbiz/entity/jdbc/ConnectionFactory.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/framework-api-cleanup/framework/entity/src/org/ofbiz/entity/jdbc/ConnectionFactory.java?rev=1619981&r1=1619980&r2=1619981&view=diff
==============================================================================
--- ofbiz/branches/framework-api-cleanup/framework/entity/src/org/ofbiz/entity/jdbc/ConnectionFactory.java (original)
+++ ofbiz/branches/framework-api-cleanup/framework/entity/src/org/ofbiz/entity/jdbc/ConnectionFactory.java Sat Aug 23 07:56:08 2014
@@ -41,18 +41,32 @@ import org.ofbiz.entity.transaction.Tran
public class ConnectionFactory {
// Debug module name
public static final String module = ConnectionFactory.class.getName();
- private static final AtomicReference<ConnectionFactoryInterface> connFactoryRef = new AtomicReference<ConnectionFactoryInterface>(null);
+ private static final ConnectionFactoryInterface connFactory = createConnectionFactoryInterface();
- private static ConnectionFactoryInterface createConnectionFactoryInterface() throws Exception {
- String className = EntityConfig.getInstance().getConnectionFactory().getClassName();
- if (className == null) {
- throw new IllegalStateException("Could not find connection factory class name definition");
+ private static ConnectionFactoryInterface createConnectionFactoryInterface() {
+ ConnectionFactoryInterface instance = null;
+ try {
+ String className = EntityConfig.getInstance().getConnectionFactory().getClassName();
+ if (className == null) {
+ throw new IllegalStateException("Could not find connection factory class name definition");
+ }
+ ClassLoader loader = Thread.currentThread().getContextClassLoader();
+ Class<?> tfClass = loader.loadClass(className);
+ instance = (ConnectionFactoryInterface) tfClass.newInstance();
+ } catch (ClassNotFoundException cnfe) {
+ Debug.logError(cnfe, "Could not find connection factory class", module);
+ } catch (Exception e) {
+ Debug.logError(e, "Unable to instantiate the connection factory", module);
}
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
- Class<?> tfClass = loader.loadClass(className);
- return (ConnectionFactoryInterface) tfClass.newInstance();
+ return instance;
}
+ public static ConnectionFactoryInterface getInstance() {
+ if (connFactory == null) {
+ throw new IllegalStateException("The Connection Factory is not initialized.");
+ }
+ return connFactory;
+ }
public static Connection getConnection(String driverName, String connectionUrl, Properties props, String userName, String password) throws SQLException {
// first register the JDBC driver with the DriverManager
@@ -81,28 +95,12 @@ public class ConnectionFactory {
return getConnection(null, connectionUrl, props, null, null);
}
- private static ConnectionFactoryInterface getManagedConnectionFactory() {
- ConnectionFactoryInterface instance = connFactoryRef.get();
- if (instance == null) {
- try {
- instance = createConnectionFactoryInterface();
- if (!connFactoryRef.compareAndSet(null, instance)) {
- instance = connFactoryRef.get();
- }
- } catch (Exception e) {
- Debug.logError(e, "Exception thrown while creating ConnectionFactoryInterface instance: ", module);
- throw new IllegalStateException("Error loading ConnectionFactoryInterface class: " + e);
- }
- }
- return instance;
- }
-
public static Connection getManagedConnection(GenericHelperInfo helperInfo, JdbcElement jdbcElement) throws SQLException, GenericEntityException {
- return getManagedConnectionFactory().getConnection(helperInfo, jdbcElement);
+ return getInstance().getConnection(helperInfo, jdbcElement);
}
public static void closeAllManagedConnections() {
- getManagedConnectionFactory().closeAll();
+ getInstance().closeAll();
}
public static void loadDriver(String driverName) throws SQLException {