code: @Execute
      public ActionResponse index(final ThumbnailForm form) {
          validate(form, messages -> {}, () -> asHtml(virtualHost(path_Error_ErrorJsp)));
          if (isLoginRequired()) {
              return redirectToLogin();
          }
  
          final Map<String, Object> doc =
                  searchService.getDocumentByDocId(form.docId, queryHelper.getResponseFields(), getUserBean()).orElse(null);
          final String url = DocumentUtil.getValue(doc, fessConfig.getIndexFieldThumbnail(), String.class);
          if (StringUtil.isBlank(form.queryId) || StringUtil.isBlank(url) || !thumbnailSupport) {
              // 404
              throw responseManager.new404("Thumbnail for " + form.docId + " is not found.");
          }
  
          final File thumbnailFile = thumbnailManager.getThumbnailFile(doc);
          if (thumbnailFile == null) {
              if (fessConfig.isThumbnailEnabled()) {
                  thumbnailManager.offer(doc);
              }
              // 404
              throw responseManager.new404("Thumbnail for " + form.docId + " is under generating.");
          }
  
          return asStream(form.docId).contentType(getImageMimeType(thumbnailFile)).stream(out -> {
              try (BufferedInputStream in = new BufferedInputStream(new FileInputStream(thumbnailFile))) {
                  out.write(in);
              }
          });
      }
docs: ==============