diff --git a/pgjdbc/src/main/java/org/postgresql/util/OSUtil.java b/pgjdbc/src/main/java/org/postgresql/util/OSUtil.java index e49e0e122b..dcd1de7dcd 100644 --- a/pgjdbc/src/main/java/org/postgresql/util/OSUtil.java +++ b/pgjdbc/src/main/java/org/postgresql/util/OSUtil.java @@ -26,9 +26,9 @@ public static boolean isWindows() { */ public static String getUserConfigRootDirectory() { if (isWindows()) { - return System.getenv("APPDATA") + File.separator; + return System.getenv("APPDATA") + File.separator + "postgresql"; } else { - return System.getProperty("user.home") + File.separator; + return System.getProperty("user.home"); } } diff --git a/pgjdbc/src/main/java/org/postgresql/util/PGPropertyPasswordParser.java b/pgjdbc/src/main/java/org/postgresql/util/PGPropertyPasswordParser.java index 6bf2033399..78e3419ad3 100644 --- a/pgjdbc/src/main/java/org/postgresql/util/PGPropertyPasswordParser.java +++ b/pgjdbc/src/main/java/org/postgresql/util/PGPropertyPasswordParser.java @@ -126,19 +126,18 @@ private InputStream openInputStream(String resourceName) throws IOException { // if file in user home is readable, use it, otherwise continue - 3rd priority { - String resourceName = OSUtil.getUserConfigRootDirectory(); - if (OSUtil.isWindows()) { - resourceName += "postgresql" + File.separator; - } else { + String resourceName = ""; + if ( !OSUtil.isWindows() ) { resourceName += "."; } resourceName += pgPassFileDefaultName; if (OSUtil.isWindows()) { resourceName += ".conf"; } - if (new File(resourceName).canRead()) { - LOGGER.log(Level.FINE, "Value [{0}] selected because file exist in user home directory", new Object[]{resourceName}); - return resourceName; + File resourceFile = new File(OSUtil.getUserConfigRootDirectory(), resourceName); + if (resourceFile.canRead()) { + LOGGER.log(Level.FINE, "Value [{0}] selected because file exist in user home directory", new Object[]{resourceFile.getAbsolutePath()}); + return resourceFile.getAbsolutePath(); } } diff --git a/pgjdbc/src/main/java/org/postgresql/util/PGPropertyServiceParser.java b/pgjdbc/src/main/java/org/postgresql/util/PGPropertyServiceParser.java index 9619efe472..20b5c807fc 100644 --- a/pgjdbc/src/main/java/org/postgresql/util/PGPropertyServiceParser.java +++ b/pgjdbc/src/main/java/org/postgresql/util/PGPropertyServiceParser.java @@ -111,17 +111,16 @@ private InputStream openInputStream(String resourceName) throws IOException { } } - // if file in user home is readable, use it, otherwise continue - 3rd priority + /* + if file in user home is readable, use it, otherwise continue - 3rd priority + in the case that the file is in the user home directory it is prepended with '.' + */ { - String resourceName = OSUtil.getUserConfigRootDirectory(); - if (OSUtil.isWindows()) { - resourceName += "postgresql" + File.separator; - } - resourceName += "."; - resourceName += pgServceConfFileDefaultName; - if (new File(resourceName).canRead()) { - LOGGER.log(Level.FINE, "Value [{0}] selected because file exist in user home directory", new Object[]{resourceName}); - return resourceName; + String resourceName = "." + pgServceConfFileDefaultName; + File resourceFile = new File(OSUtil.getUserConfigRootDirectory(), resourceName); + if (resourceFile.canRead()) { + LOGGER.log(Level.FINE, "Value [{0}] selected because file exist in user home directory", new Object[]{resourceFile.getAbsolutePath()}); + return resourceFile.getAbsolutePath(); } } diff --git a/pgjdbc/src/test/java/org/postgresql/util/OSUtilTest.java b/pgjdbc/src/test/java/org/postgresql/util/OSUtilTest.java index 7c31a6221a..d59ba297a9 100644 --- a/pgjdbc/src/test/java/org/postgresql/util/OSUtilTest.java +++ b/pgjdbc/src/test/java/org/postgresql/util/OSUtilTest.java @@ -6,7 +6,6 @@ package org.postgresql.util; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -26,15 +25,13 @@ void getUserConfigRootDirectory() throws Exception { Resources.with(new EnvironmentVariables("APPDATA", "C:\\Users\\realuser\\AppData\\Roaming"), new SystemProperties("os.name", "Windows 10")).execute(() -> { String result = OSUtil.getUserConfigRootDirectory(); - assertNotNull(result); - assertEquals("C:\\Users\\realuser\\AppData\\Roaming" + File.separator, result); + assertEquals("C:\\Users\\realuser\\AppData\\Roaming" + File.separator + "postgresql", result); } ); // linux Resources.with(new SystemProperties("os.name", "Linux", "user.home", "/home/realuser")).execute(() -> { String result = OSUtil.getUserConfigRootDirectory(); - assertNotNull(result); - assertEquals("/home/realuser" + File.separator, result); + assertEquals("/home/realuser", result); } ); } diff --git a/pgjdbc/src/test/resources/pg_service/postgresql/pg_service.conf b/pgjdbc/src/test/resources/pg_service/postgresql/.pg_service.conf similarity index 100% rename from pgjdbc/src/test/resources/pg_service/postgresql/pg_service.conf rename to pgjdbc/src/test/resources/pg_service/postgresql/.pg_service.conf