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


Reply via email to