code: public static URI buildUriInClientFormat(ConfigKeyPath configKeyPath, ConfigStore cs,
        boolean returnURIWithAuthority) {
  
      try {
        if (!returnURIWithAuthority) {
          return new URI(cs.getStoreURI().getScheme(), null, configKeyPath.getAbsolutePathString(), null, null);
        }
        URI storeRoot = cs.getStoreURI();
        // if configKeyPath is root, the configKeyPath.getAbsolutePathString().substring(1) will return "" and
        // will cause the Path creation failure if not handled here
        if (configKeyPath.isRootPath()) {
          return storeRoot;
        }
  
        Path absPath = new Path(storeRoot.getPath(), configKeyPath.getAbsolutePathString().substring(1)); // remote the first "/";
        return new URI(storeRoot.getScheme(), storeRoot.getAuthority(), absPath.toString(), null, null);
      } catch (URISyntaxException e) {
        // should not come here
        throw new RuntimeException("Can not build URI based on " + configKeyPath);
      }
    }
docs: Build the URI based on the {@link ConfigStore} or input cnofigKeyURI
  
  @param configKeyPath : relative path to the input config store cs
  @param returnURIWithAuthority  : return the URI with input config store's authority and absolute path
  @param cs            : the config store of the input configKeyURI
  @return              : return the URI of the same format with the input configKeyURI
  
  for example, configKeyPath is /tags/retention,
  with returnURIWithAuthority as true, return "etl-hdfs:///tags/retention
  with returnURIWithAuthority as false , then return
  etl-hdfs://eat1-nertznn01.grid.linkedin.com:9000/user/mitu/HdfsBasedConfigTest/tags/retention