class YarnApplicationFileUploader implements AutoCloseable {

	List<String> registerProvidedLocalResources() {
		checkNotNull(localResources);

		final ArrayList<String> classPaths = new ArrayList<>();
		providedSharedLibs.forEach(
				(fileName, fileStatus) -> {
					final Path filePath = fileStatus.getPath();
					LOG.debug("Using remote file {} to register local resource", filePath);

					final YarnLocalResourceDescriptor descriptor = YarnLocalResourceDescriptor
							.fromFileStatus(fileName, fileStatus, LocalResourceVisibility.PUBLIC, LocalResourceType.FILE);
					localResources.put(fileName, descriptor.toLocalResource());
					remotePaths.add(filePath);
					envShipResourceList.add(descriptor);

					if (!isFlinkDistJar(filePath.getName()) && !isPlugin(filePath)) {
						classPaths.add(fileName);
					} else if (isFlinkDistJar(filePath.getName())) {
						flinkDist = descriptor;
					}
				});
		return classPaths;
	}

	private  YarnApplicationFileUploader(
			final FileSystem fileSystem,
			final Path homeDir,
			final List<Path> providedLibDirs,
			final ApplicationId applicationId,
			final int fileReplication);

}