code: @Override
    public List<String> ls(String folderId) throws FileBasedHelperException {
      List<String> result = new ArrayList<>();
      if (StringUtils.isEmpty(folderId)) {
        folderId = "/";
      }
  
      Path p = new Path(folderId);
      FileStatus[] statusList = null;
      try {
        statusList = fileSystem.listStatus(p);
      } catch (FileNotFoundException e) {
        return result;
      } catch (IOException e) {
        throw new FileBasedHelperException("Falied to list status on path " + p + ", folderID: " + folderId, e);
      }
  
      for (FileStatus status : statusList) {
        if (status.isDirectory()) {
          result.addAll(ls(GoogleDriveFileSystem.toFileId(status.getPath())));
        } else {
          result.add(GoogleDriveFileSystem.toFileId(status.getPath()));
        }
      }
      return result;
    }
docs: List files under folder ID recursively. Folder won't be included in the result. If there's no files under folder ID, it returns empty list.
  If folder ID is not defined, it will provide files under root directory.
  {@inheritDoc}
  @see org.apache.gobblin.source.extractor.filebased.FileBasedHelper#ls(java.lang.String)