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() {
}
}
- @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;
}
}
@Override
public boolean supportsAtomicCreateNewFile() {
- if (supportsAtomicCreateNewFile == null) {
+ if (supportsAtomicCreateNewFile == AtomicFileCreation.UNDEFINED) {
determineAtomicFileCreationSupport();
}
- return supportsAtomicCreateNewFile.booleanValue();
+ return supportsAtomicCreateNewFile == AtomicFileCreation.SUPPORTED;
}
@Override