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 2012/07/24 16:18:31 UTC

svn commit: r1365073 - in /openejb/branches/openejb-pool/container/openejb-core/src: main/java/org/apache/openejb/config/ main/java/org/apache/openejb/resource/jdbc/ main/java/org/apache/openejb/resource/jdbc/dbcp/ main/java/org/apache/openejb/resource...

Author: rmannibucau
Date: Tue Jul 24 14:18:31 2012
New Revision: 1365073

URL: http://svn.apache.org/viewvc?rev=1365073&view=rev
Log:
some aliases for known datasourcecreators

Added:
    openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSourceCreator.java
      - copied, changed from r1364984, openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/DbcpDataSourceCreator.java
Removed:
    openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/DbcpDataSourceCreator.java
Modified:
    openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
    openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
    openejb/branches/openejb-pool/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/ManagedDataSourceTest.java

Modified: openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java?rev=1365073&r1=1365072&r2=1365073&view=diff
==============================================================================
--- openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java (original)
+++ openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java Tue Jul 24 14:18:31 2012
@@ -93,6 +93,7 @@ import org.apache.openejb.loader.FileUti
 import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.Options;
 import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.resource.jdbc.DataSourceFactory;
 import org.apache.openejb.resource.jdbc.pool.DataSourceCreator;
 import org.apache.openejb.resource.jdbc.pool.DefaultDataSourceCreator;
 import org.apache.openejb.util.EventHelper;
@@ -151,9 +152,7 @@ public class ConfigurationFactory implem
                 SystemInstance.get().setComponent(DataSourceCreator.class, new DefaultDataSourceCreator());
             } else {
                 try {
-                    SystemInstance.get().setComponent(DataSourceCreator.class,
-                            (DataSourceCreator) Thread.currentThread().getContextClassLoader().loadClass(creator)
-                                    .newInstance());
+                    SystemInstance.get().setComponent(DataSourceCreator.class, DataSourceFactory.creator(creator));
                 } catch (Exception e) {
                     logger.error("can't load " + creator + " will use the default creator", e);
                     SystemInstance.get().setComponent(DataSourceCreator.class, new DefaultDataSourceCreator());

Modified: openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java?rev=1365073&r1=1365072&r2=1365073&view=diff
==============================================================================
--- openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java (original)
+++ openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java Tue Jul 24 14:18:31 2012
@@ -30,6 +30,7 @@ import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
+import java.util.TreeMap;
 
 /**
  * @version $Rev$ $Date$
@@ -41,10 +42,15 @@ public class DataSourceFactory {
     public static final String DATA_SOURCE_CREATOR_PROP = "DataSourceCreator";
 
     private static final Map<DataSource, DataSourceCreator> creatorByDataSource = new HashMap<DataSource, DataSourceCreator>();
+    private static final Map<String, String> KNOWN_CREATORS = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER){{
+        put("dbcp", "org.apache.openejb.resource.jdbc.pool.DefaultDataSourceCreator"); // the original one
+        put("dbcp-alternative", "org.apache.openejb.resource.jdbc.dbcp.DbcpDataSourceCreator"); // dbcp for the ds pool only
+        put("tomcat", "org.apache.tomee.jdbc.TomEEDataSourceCreator"); // tomee
+    }};
 
     public static DataSource create(final String name, final boolean managed, final Class impl, final String definition) throws IllegalAccessException, InstantiationException, IOException {
         final Properties properties = asProperties(definition);
-        final DataSourceCreator creator = creator(properties);
+        final DataSourceCreator creator = creator(properties.remove(DATA_SOURCE_CREATOR_PROP));
 
 
         final DataSource ds;
@@ -89,12 +95,16 @@ public class DataSourceFactory {
         return ds;
     }
 
-    private static DataSourceCreator creator(final Properties properties) {
+    public static DataSourceCreator creator(final Object creatorName) {
         final DataSourceCreator defaultCreator = SystemInstance.get().getComponent(DataSourceCreator.class);
-        Object creatorName = properties.remove(DATA_SOURCE_CREATOR_PROP);
-        if (creatorName != null && creatorName instanceof String && !creatorName.equals(defaultCreator.getClass().getName())) {
+        if (creatorName != null && creatorName instanceof String
+                && (defaultCreator == null || !creatorName.equals(defaultCreator.getClass().getName()))) {
+            String clazz = KNOWN_CREATORS.get(creatorName);
+            if (clazz == null) {
+                clazz = (String) creatorName;
+            }
             try {
-                return (DataSourceCreator) Thread.currentThread().getContextClassLoader().loadClass((String) creatorName).newInstance();
+                return (DataSourceCreator) Thread.currentThread().getContextClassLoader().loadClass(clazz).newInstance();
             } catch (Throwable e) {
                 LOGGER.error("can't create '" + creatorName + "', the default one will be used: " + defaultCreator, e);
             }

Copied: openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSourceCreator.java (from r1364984, openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/DbcpDataSourceCreator.java)
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSourceCreator.java?p2=openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSourceCreator.java&p1=openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/DbcpDataSourceCreator.java&r1=1364984&r2=1365073&rev=1365073&view=diff
==============================================================================
--- openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/pool/DbcpDataSourceCreator.java (original)
+++ openejb/branches/openejb-pool/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/dbcp/DbcpDataSourceCreator.java Tue Jul 24 14:18:31 2012
@@ -1,7 +1,6 @@
-package org.apache.openejb.resource.jdbc.pool;
+package org.apache.openejb.resource.jdbc.dbcp;
 
-import org.apache.openejb.resource.jdbc.dbcp.BasicDataSource;
-import org.apache.openejb.resource.jdbc.dbcp.DbcpDataSource;
+import org.apache.openejb.resource.jdbc.pool.PoolDataSourceCreator;
 import org.apache.xbean.recipe.ObjectRecipe;
 import org.apache.xbean.recipe.Option;
 

Modified: openejb/branches/openejb-pool/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/ManagedDataSourceTest.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-pool/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/ManagedDataSourceTest.java?rev=1365073&r1=1365072&r2=1365073&view=diff
==============================================================================
--- openejb/branches/openejb-pool/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/ManagedDataSourceTest.java (original)
+++ openejb/branches/openejb-pool/container/openejb-core/src/test/java/org/apache/openejb/resource/jdbc/ManagedDataSourceTest.java Tue Jul 24 14:18:31 2012
@@ -6,7 +6,6 @@ import org.apache.openejb.junit.Applicat
 import org.apache.openejb.junit.Configuration;
 import org.apache.openejb.junit.Module;
 import org.apache.openejb.resource.jdbc.managed.local.ManagedConnection;
-import org.apache.openejb.resource.jdbc.pool.DbcpDataSourceCreator;
 import org.junit.After;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -58,7 +57,7 @@ public class ManagedDataSourceTest {
     @Configuration
     public Properties config() {
         final Properties p = new Properties();
-        p.put("openejb.jdbc.datasource-creator", DbcpDataSourceCreator.class.getName());
+        p.put("openejb.jdbc.datasource-creator", "dbcp-alternative");
 
         p.put("managed", "new://Resource?type=DataSource");
         p.put("managed.JdbcDriver", "org.hsqldb.jdbcDriver");