Github user tillrohrmann commented on a diff in the pull request:

    https://github.com/apache/flink/pull/6178#discussion_r197049400
  
    --- Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/rest/handler/FileUploads.java
 ---
    @@ -45,27 +45,26 @@
        @SuppressWarnings("resource")
        public static final FileUploads EMPTY = new FileUploads();
     
    +   public static FileUploads forDirectory(Path directory) throws 
IOException {
    +           final Collection<Path> files = new ArrayList<>(4);
    +           Preconditions.checkArgument(directory.isAbsolute(), "Path must 
be absolute.");
    +           Preconditions.checkArgument(Files.isDirectory(directory), "Path 
must be a directory.");
    +
    +           FileAdderVisitor visitor = new FileAdderVisitor();
    +           Files.walkFileTree(directory, visitor);
    +           files.addAll(visitor.getContainedFiles());
    +           
    +           return new FileUploads(Collections.singleton(directory), files);
    +   }
    +
        private FileUploads() {
                this.directoriesToClean = Collections.emptyList();
                this.uploadedFiles = Collections.emptyList();
        }
     
    -   public FileUploads(Collection<Path> uploadedFilesOrDirectory) throws 
IOException {
    -           final Collection<Path> files = new ArrayList<>(4);
    -           final Collection<Path> directories = new ArrayList<>(1);
    -           for (Path fileOrDirectory : uploadedFilesOrDirectory) {
    -                   
Preconditions.checkArgument(fileOrDirectory.isAbsolute(), "Path must be 
absolute.");
    -                   if (Files.isDirectory(fileOrDirectory)) {
    -                           directories.add(fileOrDirectory);
    -                           FileAdderVisitor visitor = new 
FileAdderVisitor();
    -                           Files.walkFileTree(fileOrDirectory, visitor);
    -                           files.addAll(visitor.getContainedFiles());
    -                   } else {
    -                           files.add(fileOrDirectory);
    -                   }
    -           }
    -           directoriesToClean = 
Collections.unmodifiableCollection(directories);
    -           uploadedFiles = Collections.unmodifiableCollection(files);
    +   public FileUploads(Collection<Path> directoriesToClean, 
Collection<Path> uploadedFiles) {
    +           this.directoriesToClean = 
Preconditions.checkNotNull(directoriesToClean);
    +           this.uploadedFiles = Preconditions.checkNotNull(uploadedFiles);
    --- End diff --
    
    I know it's really nitpicking what I'm doing here, but I think it would be 
slightly better to let `FileUploads` only represent the upload directories and 
add a method `FileUploads#getFiles` which returns a `Collection<File>` which 
are all files being found in the upload directory. The difference is that we 
don't initialize `FileUploads` with it. That would effectively enforce that all 
files reside in the given upload directories. What we could do now is to 
initialize this class with directories `/web/upload/a, /web/upload/b` and files 
`/web/different/path/file` where the files are somewhere else located. Due to 
this, we not only need to delete the directories but also all files.


---

Reply via email to