瀏覽代碼

Wrap the Files.list returned Stream in a try-with-resources block

Adds a new FileUtils.hasFiles(Path) helper method to correctly handle
the Files.list returned Stream.

These errors were found by compiling the code using JDK11's
javac compiler.

Change-Id: Ie8017fa54eb56afc2e939a2988d8b2c5032cd00f
Signed-off-by: Terry Parker <tparker@google.com>
tags/v5.11.0.202102031030-m2
Terry Parker 3 年之前
父節點
當前提交
b79882586d

+ 1
- 3
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java 查看文件

import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.nio.file.Files;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.text.ParseException; import java.text.ParseException;
import java.util.ArrayList; import java.util.ArrayList;
throws IOException { throws IOException {
File reftableDir = new File(getDirectory(), Constants.REFTABLE); File reftableDir = new File(getDirectory(), Constants.REFTABLE);
File headFile = new File(getDirectory(), Constants.HEAD); File headFile = new File(getDirectory(), Constants.HEAD);
if (reftableDir.exists()
&& Files.list(reftableDir.toPath()).findAny().isPresent()) {
if (reftableDir.exists() && FileUtils.hasFiles(reftableDir.toPath())) {
throw new IOException(JGitText.get().reftableDirExists); throw new IOException(JGitText.get().reftableDirExists);
} }



+ 2
- 2
org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java 查看文件

import java.nio.CharBuffer; import java.nio.CharBuffer;
import java.nio.charset.CharacterCodingException; import java.nio.charset.CharacterCodingException;
import java.nio.charset.CharsetEncoder; import java.nio.charset.CharsetEncoder;
import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.time.Instant; import java.time.Instant;
import org.eclipse.jgit.treewalk.TreeWalk.OperationType; import org.eclipse.jgit.treewalk.TreeWalk.OperationType;
import org.eclipse.jgit.util.FS; import org.eclipse.jgit.util.FS;
import org.eclipse.jgit.util.FS.ExecutionResult; import org.eclipse.jgit.util.FS.ExecutionResult;
import org.eclipse.jgit.util.FileUtils;
import org.eclipse.jgit.util.Holder; import org.eclipse.jgit.util.Holder;
import org.eclipse.jgit.util.IO; import org.eclipse.jgit.util.IO;
import org.eclipse.jgit.util.Paths; import org.eclipse.jgit.util.Paths;
idOffset) == 0) { idOffset) == 0) {
Path p = repository.getWorkTree().toPath() Path p = repository.getWorkTree().toPath()
.resolve(entry.getPathString()); .resolve(entry.getPathString());
return Files.list(p).findAny().isPresent();
return FileUtils.hasFiles(p);
} }
return false; return false;
} else if (mode == FileMode.SYMLINK.getBits()) } else if (mode == FileMode.SYMLINK.getBits())

+ 18
- 0
org.eclipse.jgit/src/org/eclipse/jgit/util/FileUtils.java 查看文件

import java.util.Locale; import java.util.Locale;
import java.util.Random; import java.util.Random;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Stream;


import org.eclipse.jgit.internal.JGitText; import org.eclipse.jgit.internal.JGitText;
import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.Constants;
return Files.isRegularFile(file.toPath(), LinkOption.NOFOLLOW_LINKS); return Files.isRegularFile(file.toPath(), LinkOption.NOFOLLOW_LINKS);
} }


/**
* Whether the path is a directory with files in it.
*
* @param dir
* directory path
* @return {@code true} if the given directory path contains files
* @throws IOException
* on any I/O errors accessing the path
*
* @since 5.11
*/
public static boolean hasFiles(Path dir) throws IOException {
try (Stream<Path> stream = Files.list(dir)) {
return stream.findAny().isPresent();
}
}

/** /**
* Whether the given file can be executed. * Whether the given file can be executed.
* *

Loading…
取消
儲存