final String recoveryUsername = getStringIfSetOrGetDefault(dataSourceNode, RECOVERY_USERNAME, null);
final String recoveryPassword = getStringIfSetOrGetDefault(dataSourceNode, RECOVERY_PASSWORD, null);
final String recoverySecurityDomain = getStringIfSetOrGetDefault(dataSourceNode, RECOVERY_SECURITY_DOMAIN, null);
final Credential credential = new CredentialImpl(recoveryUsername, recoveryPassword, recoverySecurityDomain);
final Extension recoverPlugin = extractExtension(dataSourceNode, RECOVERLUGIN_CLASSNAME, RECOVERLUGIN_PROPERTIES);
final boolean noRecovery = getBooleanIfSetOrGetDefault(dataSourceNode, NO_RECOVERY, false);
Recovery recovery = new Recovery(credential, recoverPlugin, noRecovery);
return new XADataSourceImpl(transactionIsolation, timeOut, security, statement, validation, urlDelimiter,