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