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