Author: dblevins
Date: Tue Sep 6 23:10:50 2011
New Revision: 1165924
URL: http://svn.apache.org/viewvc?rev=1165924&view=rev
Log:
use reflection to avoid direct dependency on hsqldb
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java?rev=1165924&r1=1165923&r2=1165924&view=diff
==============================================================================
---
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
(original)
+++
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
Tue Sep 6 23:10:50 2011
@@ -24,14 +24,13 @@ import org.apache.commons.dbcp.managed.T
import org.apache.commons.dbcp.managed.XAConnectionFactory;
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.resource.XAResourceWrapper;
-import org.apache.xbean.recipe.ObjectRecipe;
-import org.apache.xbean.recipe.Option;
import javax.sql.DataSource;
import javax.sql.XADataSource;
import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.sql.SQLException;
-import java.util.Map;
/**
* @version $Rev$ $Date$
@@ -88,8 +87,13 @@ public class DataSourceFactory {
@Override
public void setJdbcUrl(String string) {
// TODO This is a big whole and we will need to rework this
- if (dataSource instanceof org.hsqldb.jdbc.jdbcDataSource) {
-
((org.hsqldb.jdbc.jdbcDataSource)dataSource).setDatabase(string);
+ try {
+ final Class<?> hsql =
this.getClass().getClassLoader().loadClass("org.hsqldb.jdbc.jdbcDataSource");
+ final Method setDatabase = hsql.getMethod("setDatabase",
String.class);
+ setDatabase.setAccessible(true);
+ setDatabase.invoke(dataSource, string);
+ } catch (Exception e) {
+ // only works if hsql is available and datasource is an HSQL
jdbcDataSource
}
}
}