@Override public CloseableIterable<O_ITEM> doOperation(final FederatedOperationChain<I, O_ITEM> operation, final Context context, final Store store) throws OperationException { final Collection<Graph> graphs = ((FederatedStore) store).getGraphs(context.getUser(), operation.getOption(KEY_OPERATION_OPTIONS_GRAPH_IDS)); final List<Object> results = new ArrayList<>(graphs.size()); for (final Graph graph : graphs) { final OperationChain opChain = operation.getOperationChain(); OperationHandlerUtil.updateOperationInput(opChain, operation.getInput()); final OperationChain updatedOp = FederatedStoreUtil.updateOperationForGraph(opChain, graph); if (null != updatedOp) { Object result = null; try { result = graph.execute(updatedOp, context); } catch (final Exception e) { if (!Boolean.valueOf(updatedOp.getOption(KEY_SKIP_FAILED_FEDERATED_STORE_EXECUTE))) { throw new OperationException(FederatedStoreUtil.createOperationErrorMsg(operation, graph.getGraphId(), e), e); } } if (null != result) { results.add(result); } } } return mergeResults(results, operation, context, store); }