@Override public void apply(FlowRuleOperations ops) { AtomicBoolean thisSuccess = new AtomicBoolean(success); ops.stages() .forEach( stage -> stage.forEach( flow -> { if (errorFlow == flow.rule().id().value()) { thisSuccess.set(false); } else { switch (flow.type()) { case ADD: case MODIFY: // TODO is this the right behavior for modify? flows.add(flow.rule()); break; case REMOVE: flows.remove(flow.rule()); break; default: break; } } })); if (thisSuccess.get()) { ops.callback().onSuccess(ops); } else { ops.callback().onError(ops); } }