00001
00024
package org.objectweb.cjdbc.driver;
00025
00026
import java.util.Hashtable;
00027
00028
import javax.naming.Context;
00029
import javax.naming.Name;
00030
import javax.naming.Reference;
00031
import javax.naming.spi.ObjectFactory;
00032
00041 public class DataSourceFactory implements ObjectFactory
00042 {
00044 protected final String
dataSourceClassName =
"org.objectweb.cjdbc.driver.DataSource";
00045 protected final String
poolDataSourceName =
"org.objectweb.cjdbc.driver.PoolDataSource";
00046 protected final String
xaDataSourceName =
"org.objectweb.cjdbc.driver.XADataSource";
00047
00062 public Object
getObjectInstance(Object objRef, Name name, Context nameCtx,
00063 Hashtable env)
throws Exception
00064 {
00065
00066 Reference ref = (Reference) objRef;
00067 String className = ref.getClassName();
00068
if ((className == null)
00069 || !(className.equals(
dataSourceClassName)
00070 | className.equals(
poolDataSourceName) | className
00071 .equals(
xaDataSourceName)))
00072 {
00073
00074
return null;
00075 }
00076
DataSource ds = null;
00077
try
00078 {
00079 ds = (
DataSource) Class.forName(className).newInstance();
00080 }
00081
catch (Exception e)
00082 {
00083
throw new RuntimeException(
"Error when creating C-JDBC" + className
00084 +
" instance: " + e);
00085 }
00086
00087 ds.
setUrl((String) ref.get(
DataSource.URL_PROPERTY).getContent());
00088 ds.
setUser((String) ref.get(
DataSource.USER_PROPERTY).getContent());
00089 ds.
setPassword((String) ref.get(
DataSource.PASSWORD_PROPERTY).getContent());
00090
return ds;
00091 }
00092 }