From 8b4eabe985794fc64ad6a4a53f8f96201cf73fb8 Mon Sep 17 00:00:00 2001 From: Take Weiland Date: Wed, 25 Mar 2020 13:52:07 +0100 Subject: [PATCH] fix: incorrect check for Windows OS in FileDataStoreFactory (#927) * fix: incorrect check for Windows OS in FileDataStoreFactory * fix: properly get file owner on windows in FileDataStoreFactory * refactor: use toLowerCase instead of regionMatches in FileDataStoreFactory --- .../api/client/util/store/FileDataStoreFactory.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/google-http-client/src/main/java/com/google/api/client/util/store/FileDataStoreFactory.java b/google-http-client/src/main/java/com/google/api/client/util/store/FileDataStoreFactory.java index 230af26e2..6114c2ae1 100644 --- a/google-http-client/src/main/java/com/google/api/client/util/store/FileDataStoreFactory.java +++ b/google-http-client/src/main/java/com/google/api/client/util/store/FileDataStoreFactory.java @@ -32,9 +32,11 @@ import java.nio.file.attribute.AclEntryPermission; import java.nio.file.attribute.AclEntryType; import java.nio.file.attribute.AclFileAttributeView; +import java.nio.file.attribute.FileOwnerAttributeView; import java.nio.file.attribute.PosixFilePermission; import java.nio.file.attribute.UserPrincipal; import java.util.HashSet; +import java.util.Locale; import java.util.Set; import java.util.logging.Logger; @@ -53,7 +55,7 @@ public class FileDataStoreFactory extends AbstractDataStoreFactory { private static final Logger LOGGER = Logger.getLogger(FileDataStoreFactory.class.getName()); private static final boolean IS_WINDOWS = StandardSystemProperty.OS_NAME.value() - .startsWith("WINDOWS"); + .toLowerCase(Locale.ENGLISH).startsWith("windows"); /** Directory to store data. */ private final File dataDirectory; @@ -155,8 +157,8 @@ static void setPermissionsToOwnerOnly(File file) throws IOException { static void setPermissionsToOwnerOnlyWindows(File file) throws IOException { Path path = Paths.get(file.getAbsolutePath()); - UserPrincipal owner = path.getFileSystem().getUserPrincipalLookupService() - .lookupPrincipalByName("OWNER@"); + FileOwnerAttributeView fileAttributeView = Files.getFileAttributeView(path, FileOwnerAttributeView.class); + UserPrincipal owner = fileAttributeView.getOwner(); // get view AclFileAttributeView view = Files.getFileAttributeView(path, AclFileAttributeView.class);