FS_POSIX: Fix boxing/unboxing of Boolean
Boolean is being abused to represent three possible states of atomic file creation support (true/enabled, false/disabled, null/undefined). Replace this with an enum of the three explicit states. Change-Id: I2cd7fa6422311dc427823304b082ce8da50d2fbe Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
This commit is contained in:
parent
171f84a041
commit
61790cb931
|
@ -80,7 +80,11 @@ public class FS_POSIX extends FS {
|
|||
|
||||
private volatile boolean supportsUnixNLink = true;
|
||||
|
||||
private volatile Boolean supportsAtomicCreateNewFile;
|
||||
private volatile AtomicFileCreation supportsAtomicCreateNewFile = AtomicFileCreation.UNDEFINED;
|
||||
|
||||
private enum AtomicFileCreation {
|
||||
SUPPORTED, NOT_SUPPORTED, UNDEFINED
|
||||
}
|
||||
|
||||
/** Default constructor. */
|
||||
protected FS_POSIX() {
|
||||
|
@ -99,31 +103,34 @@ protected FS_POSIX(FS src) {
|
|||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("boxing")
|
||||
private void determineAtomicFileCreationSupport() {
|
||||
// @TODO: enhance SystemReader to support this without copying code
|
||||
Boolean ret = getAtomicFileCreationSupportOption(
|
||||
AtomicFileCreation ret = getAtomicFileCreationSupportOption(
|
||||
SystemReader.getInstance().openUserConfig(null, this));
|
||||
if (ret == null && StringUtils.isEmptyOrNull(SystemReader.getInstance()
|
||||
.getenv(Constants.GIT_CONFIG_NOSYSTEM_KEY))) {
|
||||
if (ret == AtomicFileCreation.UNDEFINED
|
||||
&& StringUtils.isEmptyOrNull(SystemReader.getInstance()
|
||||
.getenv(Constants.GIT_CONFIG_NOSYSTEM_KEY))) {
|
||||
ret = getAtomicFileCreationSupportOption(
|
||||
SystemReader.getInstance().openSystemConfig(null, this));
|
||||
}
|
||||
supportsAtomicCreateNewFile = (ret == null) || ret;
|
||||
supportsAtomicCreateNewFile = ret;
|
||||
}
|
||||
|
||||
private Boolean getAtomicFileCreationSupportOption(FileBasedConfig config) {
|
||||
private AtomicFileCreation getAtomicFileCreationSupportOption(
|
||||
FileBasedConfig config) {
|
||||
try {
|
||||
config.load();
|
||||
String value = config.getString(ConfigConstants.CONFIG_CORE_SECTION,
|
||||
null,
|
||||
ConfigConstants.CONFIG_KEY_SUPPORTSATOMICFILECREATION);
|
||||
if (value == null) {
|
||||
return null;
|
||||
return AtomicFileCreation.UNDEFINED;
|
||||
}
|
||||
return Boolean.valueOf(StringUtils.toBoolean(value));
|
||||
return StringUtils.toBoolean(value)
|
||||
? AtomicFileCreation.SUPPORTED
|
||||
: AtomicFileCreation.NOT_SUPPORTED;
|
||||
} catch (IOException | ConfigInvalidException e) {
|
||||
return Boolean.TRUE;
|
||||
return AtomicFileCreation.SUPPORTED;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -340,10 +347,10 @@ public File findHook(Repository repository, String hookName) {
|
|||
|
||||
@Override
|
||||
public boolean supportsAtomicCreateNewFile() {
|
||||
if (supportsAtomicCreateNewFile == null) {
|
||||
if (supportsAtomicCreateNewFile == AtomicFileCreation.UNDEFINED) {
|
||||
determineAtomicFileCreationSupport();
|
||||
}
|
||||
return supportsAtomicCreateNewFile.booleanValue();
|
||||
return supportsAtomicCreateNewFile == AtomicFileCreation.SUPPORTED;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue