示例#1
0
  /** Convert a Json map to a HdfsFileStatus object. */
  public static HdfsFileStatus toFileStatus(final Map<?, ?> json, boolean includesType) {
    if (json == null) {
      return null;
    }

    final Map<?, ?> m =
        includesType ? (Map<?, ?>) json.get(FileStatus.class.getSimpleName()) : json;
    final String localName = (String) m.get("pathSuffix");
    final PathType type = PathType.valueOf((String) m.get("type"));
    final byte[] symlink =
        type != PathType.SYMLINK ? null : DFSUtil.string2Bytes((String) m.get("symlink"));

    final long len = (Long) m.get("length");
    final String owner = (String) m.get("owner");
    final String group = (String) m.get("group");
    final FsPermission permission =
        toFsPermission(
            (String) m.get("permission"), (Boolean) m.get("aclBit"), (Boolean) m.get("encBit"));
    final long aTime = (Long) m.get("accessTime");
    final long mTime = (Long) m.get("modificationTime");
    final long blockSize = (Long) m.get("blockSize");
    final short replication = (short) (long) (Long) m.get("replication");
    final long fileId =
        m.containsKey("fileId") ? (Long) m.get("fileId") : INodeId.GRANDFATHER_INODE_ID;
    Long childrenNumLong = (Long) m.get("childrenNum");
    final int childrenNum = (childrenNumLong == null) ? -1 : childrenNumLong.intValue();
    final byte storagePolicy =
        m.containsKey("storagePolicy")
            ? (byte) (long) (Long) m.get("storagePolicy")
            : BlockStoragePolicySuite.ID_UNSPECIFIED;
    return new HdfsFileStatus(
        len,
        type == PathType.DIRECTORY,
        replication,
        blockSize,
        mTime,
        aTime,
        permission,
        owner,
        group,
        symlink,
        DFSUtil.string2Bytes(localName),
        fileId,
        childrenNum,
        null,
        storagePolicy);
  }