public BatchResult execute(BatchAction action, ExecutionContext context) throws ActionException { OnException onException = action.getOnException(); List<Result> results = new java.util.ArrayList<Result>(); for (Action<?> a : action.getActions()) { Result result = null; try { result = context.execute(a); } catch (Exception e) { if (onException == OnException.ROLLBACK) { if (e instanceof ActionException) { throw (ActionException) e; } if (e instanceof RuntimeException) { throw (RuntimeException) e; } else { throw new ActionException(e); } } } results.add(result); } return new BatchResult(results); }