diff --git a/connector/src/main/java/org/jboss/as/connector/subsystems/datasources/DataSourceModelNodeUtil.java b/connector/src/main/java/org/jboss/as/connector/subsystems/datasources/DataSourceModelNodeUtil.java index 1862fb5..3ca38c2 100644 --- a/connector/src/main/java/org/jboss/as/connector/subsystems/datasources/DataSourceModelNodeUtil.java +++ b/connector/src/main/java/org/jboss/as/connector/subsystems/datasources/DataSourceModelNodeUtil.java @@ -171,8 +171,7 @@ class DataSourceModelNodeUtil { final boolean setTxQueryTimeout = getBooleanIfSetOrGetDefault(operationContext, dataSourceNode, SETTXQUERYTIMEOUT, Defaults.SET_TX_QUERY_TIMEOUT); final TimeOut timeOut = new TimeOutImpl(blockingTimeoutMillis, idleTimeoutMinutes, allocationRetry, allocationRetryWaitMillis, xaResourceTimeout, setTxQueryTimeout, queryTimeout, useTryLock); - final TransactionIsolation transactionIsolation = dataSourceNode.hasDefined(TRANSACTION_ISOLATION.getName()) ? TransactionIsolation - .forName(dataSourceNode.get(TRANSACTION_ISOLATION.getName()).asString()) : null; + final TransactionIsolation transactionIsolation = getTransactionIsolationIfSetOrGetDefault(operationContext, dataSourceNode, TRANSACTION_ISOLATION, null); final String checkValidConnectionSql = getResolvedStringIfSetOrGetDefault(operationContext, dataSourceNode, CHECKVALIDCONNECTIONSQL, null); final Extension exceptionSorter = extractExtension(operationContext, dataSourceNode, EXCEPTIONSORTERCLASSNAME, EXCEPTIONSORTER_PROPERTIES); @@ -252,8 +251,7 @@ class DataSourceModelNodeUtil { final Boolean setTxQueryTimeout = getBooleanIfSetOrGetDefault(operationContext, dataSourceNode, SETTXQUERYTIMEOUT, Defaults.SET_TX_QUERY_TIMEOUT); final TimeOut timeOut = new TimeOutImpl(blockingTimeoutMillis, idleTimeoutMinutes, allocationRetry, allocationRetryWaitMillis, xaResourceTimeout, setTxQueryTimeout, queryTimeout, useTryLock); - final TransactionIsolation transactionIsolation = dataSourceNode.hasDefined(TRANSACTION_ISOLATION.getName()) ? TransactionIsolation - .forName(dataSourceNode.get(TRANSACTION_ISOLATION.getName()).asString()) : null; + final TransactionIsolation transactionIsolation = getTransactionIsolationIfSetOrGetDefault(operationContext, dataSourceNode, TRANSACTION_ISOLATION, null); final String checkValidConnectionSql = getResolvedStringIfSetOrGetDefault(operationContext, dataSourceNode, CHECKVALIDCONNECTIONSQL, null); final Extension exceptionSorter = extractExtension(operationContext, dataSourceNode, EXCEPTIONSORTERCLASSNAME, EXCEPTIONSORTER_PROPERTIES); @@ -365,4 +363,17 @@ class DataSourceModelNodeUtil { return null; } } + + private static TransactionIsolation getTransactionIsolationIfSetOrGetDefault(final OperationContext context, final ModelNode dataSourceNode, final SimpleAttributeDefinition key, final TransactionIsolation defaultValue) + throws OperationFailedException { + String value = getResolvedStringIfSetOrGetDefault(context, dataSourceNode, key, null); + if (value != null) { + TransactionIsolation transactionIsolation = TransactionIsolation.forName(value); + if (transactionIsolation == null) { + transactionIsolation = TransactionIsolation.customLevel(value); + } + return transactionIsolation; + } + return defaultValue; + } }