public Object getObjectInstance(Object refObj,
Name nm,
Context ctx,
Hashtable env) throws Exception {
Reference ref = (Reference) refObj;
String className = ref.getClassName();
if ((className != null)
&& (className.equals(DATA_SOURCE_CLASS_NAME) || className
.equals(POOL_DATA_SOURCE_CLASS_NAME) ||
className.equals(XA_DATA_SOURCE_CLASS_NAME))) {
MysqlDataSource dataSource = null;
try {
dataSource = (MysqlDataSource) Class.forName(className)
.newInstance();
} catch (Exception ex) {
throw new RuntimeException("Unable to create DataSource of "
+ "class '" + className + "', reason: " + ex.toString());
}
int portNumber = 3306;
String portNumberAsString = nullSafeRefAddrStringGet("port", ref);
if (portNumberAsString != null) {
portNumber = Integer.parseInt(portNumberAsString);
}
dataSource.setPort(portNumber);
String user = nullSafeRefAddrStringGet(NonRegisteringDriver.USER_PROPERTY_KEY, ref);
if (user != null) {
dataSource.setUser(user);
}
String password = nullSafeRefAddrStringGet(NonRegisteringDriver.PASSWORD_PROPERTY_KEY, ref);
if (password != null) {
dataSource.setPassword(password);
}
String serverName = nullSafeRefAddrStringGet("serverName", ref);
if (serverName != null) {
dataSource.setServerName(serverName);
}
String databaseName = nullSafeRefAddrStringGet("databaseName", ref);
if (databaseName != null) {
dataSource.setDatabaseName(databaseName);
}
String explicitUrlAsString = nullSafeRefAddrStringGet("explicitUrl", ref);
if (explicitUrlAsString != null) {
if (Boolean.valueOf(explicitUrlAsString).booleanValue()) {
dataSource.setUrl(nullSafeRefAddrStringGet("url", ref));
}
}
dataSource.setPropertiesViaRef(ref);
return dataSource;
}
// We can't create an instance of the reference
return null;
}
|