/**
   * キー情報から実ファイルデータを取得し、それらからメタデータを生成して返します.
   *
   * @param key ファイルデータのキー情報
   * @return キーから生成したメタデータ
   */
  @Override
  public UrlTreeMetaData<InputStream> generateMetaDataFromReal(String key, UrlTreeContext ctx)
      throws BadContentException {
    if (!this.canLoad(key, ctx)) {
      throw new IllegalArgumentException(
          "Cannot Load it. check before can it load with canLoad(key): " + key);
    }
    Path p = this.generateFileObj(key);
    File f = p.toFile();
    long lastModified = f.lastModified();

    logger.trace("[デバッグ]ファイル名とファイルのlastModified: " + p.toString() + ":" + lastModified);

    UrlTreeMetaData<InputStream> md = new UrlTreeMetaData<>();
    md.setDirectory(Files.isDirectory(p, LinkOption.NOFOLLOW_LINKS));
    md.setFilename(key);
    md.setOwnerId(ctx.getUserName());
    md.setGroupId(ctx.getPrimaryGroup());
    md.setCreatedTime(lastModified);
    md.setUpdatedTime(lastModified);
    md.setPermission(ctx.getDefaultPermission());
    String contentType = new MimetypesFileTypeMap().getContentType(p.getFileName().toString());
    md.setContentType(contentType);

    return md;
  }