@Override public long getIdleTimeoutDelay() { if (isNotSetTimeout(idleTimeoutDelay)) { // the most often case, if async is not used return transactionTimeout; } else if (isNotSetTimeout(transactionTimeout)) { return idleTimeoutDelay; } if (transactionTimeout >= 0 && idleTimeoutDelay >= 0) { return Math.min(transactionTimeout, idleTimeoutDelay); } else if (idleTimeoutDelay >= 0) { return idleTimeoutDelay; } else { return transactionTimeout; } }