stephenh 2002/09/12 19:25:03
Modified: src/java/org/apache/torque Torque.java
src/java/org/apache/torque/adapter DBFactory.java
src/test/org/apache/torque/util CriteriaTest.java
Log:
Refactored how the DBFactory stores adaptor classes. Removed the need to init and
register drivers.
Revision Changes Path
1.71 +1 -2 jakarta-turbine-torque/src/java/org/apache/torque/Torque.java
Index: Torque.java
===================================================================
RCS file: /home/cvs/jakarta-turbine-torque/src/java/org/apache/torque/Torque.java,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -r1.70 -r1.71
--- Torque.java 7 Aug 2002 06:34:03 -0000 1.70
+++ Torque.java 13 Sep 2002 02:25:03 -0000 1.71
@@ -237,7 +237,6 @@
}
dbMaps = new HashMap();
- DBFactory.init(configuration);
initAdapters(configuration);
initDataSourceFactories(configuration);
1.32 +52 -128
jakarta-turbine-torque/src/java/org/apache/torque/adapter/DBFactory.java
Index: DBFactory.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-torque/src/java/org/apache/torque/adapter/DBFactory.java,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- DBFactory.java 13 Sep 2002 00:56:45 -0000 1.31
+++ DBFactory.java 13 Sep 2002 02:25:03 -0000 1.32
@@ -54,10 +54,10 @@
* <http://www.apache.org/>.
*/
-import java.util.Hashtable;
-import java.util.Iterator;
+import java.util.HashMap;
+import java.util.Map;
+
import org.apache.log4j.Category;
-import org.apache.commons.configuration.Configuration;
/**
@@ -74,13 +74,6 @@
public class DBFactory
{
/**
- * A table of <code>Class</code> objects for registered adapters,
- * keyed by the fully qualified class name of their associated
- * JDBC driver.
- */
- private static Hashtable adapters;
-
- /**
* The package name in which known adapters are stored.
*/
private static String adapterPackage = "org.apache.torque.adapter";
@@ -94,123 +87,53 @@
/**
* JDBC driver to Torque Adapter map.
*/
- private static Hashtable driverToAdapterMap;
-
- /**
- * This static code creates the list of possible adapters and adds
- * the "NO DATABASE" adapter to this list. After all the
- * configuration is queried to get a list of JDBC drivers and
- * their associated adapters.
- *
- * @param configuration the configuration
- */
- public static void init(Configuration configuration)
- {
- adapters = new Hashtable();
- initializeDriverToAdapterMap();
-
- // Add the null database adapter.
- registerAdapter("", DBNone.class);
- Iterator i = configuration.getKeys();
-
- while (i.hasNext())
- {
- String key = (String) i.next();
- if (key.endsWith("driver") || key.endsWith("adapter"))
- {
- String mapKey = configuration.getString(key);
- Class adapterClass = null;
- String adapterClassName = (String) adapterPackage + "." +
- driverToAdapterMap.get(mapKey);
-
- category.debug("Using " + adapterClassName);
-
- try
- {
- adapterClass = Class.forName(adapterClassName);
- }
- catch (ClassNotFoundException e)
- {
- category.error(e);
- }
-
- if (adapterClass != null && mapKey != null)
- {
- registerAdapter(mapKey, adapterClass);
- }
- }
- }
- }
+ private static Map adapters = new HashMap(40);
/**
* Initialize the JDBC driver to Torque Adapter map.
*/
- private static void initializeDriverToAdapterMap()
+ static
{
- driverToAdapterMap = new Hashtable();
-
- driverToAdapterMap.put("com.ibm.as400.access.AS400JDBCDriver",
- "DBDB2400");
- driverToAdapterMap.put("COM.ibm.db2.jdbc.app.DB2Driver", "DBDB2App");
- driverToAdapterMap.put("COM.ibm.db2.jdbc.net.DB2Driver", "DBDB2Net");
- driverToAdapterMap.put("COM.cloudscape.core.JDBCDriver",
- "DBCloudscape");
- driverToAdapterMap.put("org.hsql.jdbcDriver", "DBHypersonicSQL");
- driverToAdapterMap.put("org.hsqldb.jdbcDriver", "DBHypersonicSQL");
- driverToAdapterMap.put("interbase.interclient.Driver", "DBInterbase");
- driverToAdapterMap.put("org.enhydra.instantdb.jdbc.idbDriver",
- "DBInstantDB");
- driverToAdapterMap.put("com.microsoft.jdbc.sqlserver.SQLServerDriver",
- "DBMSSQL");
- driverToAdapterMap.put("com.jnetdirect.jsql.JSQLDriver", "DBMSSQL");
- driverToAdapterMap.put("org.gjt.mm.mysql.Driver", "DBMM");
- driverToAdapterMap.put("com.mysql.jdbc.Driver", "DBMM");
- driverToAdapterMap.put("oracle.jdbc.driver.OracleDriver", "DBOracle");
- driverToAdapterMap.put("org.postgresql.Driver", "DBPostgres");
- driverToAdapterMap.put("com.sap.dbtech.jdbc.DriverSapDB", "DBSapDB");
- driverToAdapterMap.put("com.sybase.jdbc.SybDriver", "DBSybase");
- driverToAdapterMap.put("com.sybase.jdbc2.jdbc.SybDriver", "DBSybase");
- driverToAdapterMap.put("weblogic.jdbc.pool.Driver", "DBWeblogic");
- driverToAdapterMap.put("org.axiondb.jdbc.AxionDriver", "DBAxion");
- driverToAdapterMap.put("com.informix.jdbc.IfxDriver", "DBInformix");
+ adapters.put("com.ibm.as400.access.AS400JDBCDriver", DBDB2400.class);
+ adapters.put("COM.ibm.db2.jdbc.app.DB2Driver", DBDB2App.class);
+ adapters.put("COM.ibm.db2.jdbc.net.DB2Driver", DBDB2Net.class);
+ adapters.put("COM.cloudscape.core.JDBCDriver", DBCloudscape.class);
+ adapters.put("org.hsql.jdbcDriver", DBHypersonicSQL.class);
+ adapters.put("org.hsqldb.jdbcDriver", DBHypersonicSQL.class);
+ adapters.put("interbase.interclient.Driver", DBInterbase.class);
+ adapters.put("org.enhydra.instantdb.jdbc.idbDriver", DBInstantDB.class);
+ adapters.put("com.microsoft.jdbc.sqlserver.SQLServerDriver",
+ DBMSSQL.class);
+ adapters.put("com.jnetdirect.jsql.JSQLDriver", DBMSSQL.class);
+ adapters.put("org.gjt.mm.mysql.Driver", DBMM.class);
+ adapters.put("oracle.jdbc.driver.OracleDriver", DBOracle.class);
+ adapters.put("org.postgresql.Driver", DBPostgres.class);
+ adapters.put("com.sap.dbtech.jdbc.DriverSapDB", DBSapDB.class);
+ adapters.put("com.sybase.jdbc.SybDriver", DBSybase.class);
+ adapters.put("com.sybase.jdbc2.jdbc.SybDriver", DBSybase.class);
+ adapters.put("weblogic.jdbc.pool.Driver", DBWeblogic.class);
+ adapters.put("org.axiondb.jdbc.AxionDriver", DBAxion.class);
+ adapters.put("com.informix.jdbc.IfxDriver", DBInformix.class);
// add some short names to be used when drivers are not used
- driverToAdapterMap.put("as400", "DBDB2400");
- driverToAdapterMap.put("db2app", "DBDB2App");
- driverToAdapterMap.put("db2net", "DBDB2Net");
- driverToAdapterMap.put("cloudscape", "DBCloudscape");
- driverToAdapterMap.put("hypersonic", "DBHypersonicSQL");
- driverToAdapterMap.put("interbase", "DBInterbase");
- driverToAdapterMap.put("instantdb", "DBInstantDB");
- driverToAdapterMap.put("mssql", "DBMSSQL");
- driverToAdapterMap.put("mysql", "DBMM");
- driverToAdapterMap.put("oracle", "DBOracle");
- driverToAdapterMap.put("postgresql", "DBPostgres");
- driverToAdapterMap.put("sapdb", "DBSapDB");
- driverToAdapterMap.put("sybase", "DBSybase");
- driverToAdapterMap.put("weblogic", "DBWeblogic");
- driverToAdapterMap.put("axion", "DBAxion");
- driverToAdapterMap.put("informix", "DBInformix");
- }
-
- /**
- * Registers the <code>Class</code> of a database adapter at the
- * factory. This concept allows for dynamically adding new
- * database adapters using the configuration files instead of
- * changing the codebase.
- *
- * @param driver The fully-qualified class name of the JDBC driver
- * to associate with an adapter.
- * @param adapterClass The <code>Class</code> of the database
- * adapter associated with <code>driver</code>.
- */
- private static void registerAdapter(String driver, Class adapterClass)
- {
- if (!adapters.containsKey(driver))
- {
- // Add this new adapter class to the list of known adapters.
- adapters.put(driver, adapterClass);
- }
+ adapters.put("as400", DBDB2400.class);
+ adapters.put("db2app", DBDB2App.class);
+ adapters.put("db2net", DBDB2Net.class);
+ adapters.put("cloudscape", DBCloudscape.class);
+ adapters.put("hypersonic", DBHypersonicSQL.class);
+ adapters.put("interbase", DBInterbase.class);
+ adapters.put("instantdb", DBInstantDB.class);
+ adapters.put("mssql", DBMSSQL.class);
+ adapters.put("mysql", DBMM.class);
+ adapters.put("oracle", DBOracle.class);
+ adapters.put("postgresql", DBPostgres.class);
+ adapters.put("sapdb", DBSapDB.class);
+ adapters.put("sybase", DBSybase.class);
+ adapters.put("weblogic", DBWeblogic.class);
+ adapters.put("axion", DBAxion.class);
+ adapters.put("informix", DBInformix.class);
+
+ adapters.put("", DBNone.class);
}
/**
@@ -238,17 +161,18 @@
}
catch (IllegalAccessException e)
{
- throw new InstantiationException
- ("Could not instantiate adapter for JDBC driver: " +
- driver + ": Assure that adapter bytecodes are in your " +
- "classpath");
+ throw new InstantiationException(
+ "Could not instantiate adapter for JDBC driver: "
+ + driver
+ + ": Assure that adapter bytecodes are in your classpath");
}
}
else
{
- throw new InstantiationException
- ("Unknown JDBC driver: " + driver + ": Check your " +
- "configuration file");
+ throw new InstantiationException(
+ "Unknown JDBC driver: "
+ + driver
+ + ": Check your configuration file");
}
}
}
1.10 +1 -2
jakarta-turbine-torque/src/test/org/apache/torque/util/CriteriaTest.java
Index: CriteriaTest.java
===================================================================
RCS file:
/home/cvs/jakarta-turbine-torque/src/test/org/apache/torque/util/CriteriaTest.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- CriteriaTest.java 4 Sep 2002 23:40:26 -0000 1.9
+++ CriteriaTest.java 13 Sep 2002 02:25:03 -0000 1.10
@@ -272,7 +272,6 @@
Configuration conf = new BaseConfiguration();
conf.addProperty("driver", "org.postgresql.Driver");
- DBFactory.init(conf);
try
{
cc.setDB(DBFactory.create("org.postgresql.Driver"));
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>