private static BreadcrumbList standardBreadcrumbs(Node node, Input input, Extractor extractor) {
    BreadcrumbList bc = new BreadcrumbList();
    bc.addCrumb("System", controllers.routes.SystemController.index(0));
    bc.addCrumb("Nodes", controllers.routes.NodesController.nodes());
    bc.addCrumb(node.getShortNodeId(), controllers.routes.NodesController.node(node.getNodeId()));
    bc.addCrumb("Input: " + input.getTitle(), null);
    bc.addCrumb(
        "Extractors",
        controllers.routes.ExtractorsController.manage(node.getNodeId(), input.getId()));
    if (extractor != null) {
      bc.addCrumb("Extractor: " + extractor.getTitle(), null);
    }

    return bc;
  }
  public Result editExtractor(String nodeId, String inputId, String extractorId) {
    if (!Permissions.isPermitted(RestPermissions.INPUTS_EDIT, inputId)) {
      return redirect(routes.StartpageController.redirect());
    }
    try {
      final Node node = nodeService.loadNode(nodeId);
      final Input input = node.getInput(inputId);
      final Extractor extractor = extractorService.load(node, input, extractorId);
      final String sourceField = extractor.getSourceField();
      String example;
      try {
        final MessageResult exampleMessage = input.getRecentlyReceivedMessage(nodeId);
        example = exampleMessage.getFields().get(sourceField).toString();
      } catch (Exception e) {
        example = null;
      }

      return ok(
          views.html.system.inputs.extractors.edit_extractor.render(
              currentUser(),
              standardBreadcrumbs(node, input, extractor),
              node,
              input,
              extractor,
              example));
    } catch (IOException e) {
      return status(500, views.html.errors.error.render(ApiClient.ERROR_MSG_IO, e, request()));
    } catch (APIException e) {
      String message =
          "Could not fetch system information. We expected HTTP 200, but got a HTTP "
              + e.getHttpCode()
              + ".";
      return status(500, views.html.errors.error.render(message, e, request()));
    } catch (NodeService.NodeNotFoundException e) {
      return status(
          404, views.html.errors.error.render(ApiClient.ERROR_MSG_NODE_NOT_FOUND, e, request()));
    }
  }