TransactionStatus status = null;
try {
status = getPlatformTransactionManager().getTransaction(getTransactionDefinition());
logger.trace("start: new = {}", status.isNewTransaction() ? "yes" : "no");
Context context = new ContextImpl();
R retval = runner.apply(context);
if (status.isRollbackOnly()) {
getPlatformTransactionManager().rollback(status);