]> source.dussan.org Git - jgit.git/commitdiff
FS_POSIX: Fix boxing/unboxing of Boolean 88/112988/2
authorDavid Pursehouse <david.pursehouse@gmail.com>
Thu, 7 Dec 2017 07:30:01 +0000 (16:30 +0900)
committerDavid Pursehouse <david.pursehouse@gmail.com>
Thu, 7 Dec 2017 11:02:59 +0000 (20:02 +0900)
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>
org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX.java

index 05db583b41e581b6cb0e650036a25f2b548e8605..969afd2a97e1310053b91a50390fcfd22be35b10 100644 (file)
@@ -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 @@ public class FS_POSIX extends FS {
                }
        }
 
-       @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 class FS_POSIX extends FS {
 
        @Override
        public boolean supportsAtomicCreateNewFile() {
-               if (supportsAtomicCreateNewFile == null) {
+               if (supportsAtomicCreateNewFile == AtomicFileCreation.UNDEFINED) {
                        determineAtomicFileCreationSupport();
                }
-               return supportsAtomicCreateNewFile.booleanValue();
+               return supportsAtomicCreateNewFile == AtomicFileCreation.SUPPORTED;
        }
 
        @Override