Skip to content
This repository was archived by the owner on Feb 18, 2025. It is now read-only.

Commit 2009d9e

Browse files
brcolowsoc
authored andcommitted
Use Java 22's foreign function API for Windows
- Drop all existing mechanisms for retrieving this info on Windows - This increases the required Java version of the library to 22 Fixes #49.
1 parent d8b2093 commit 2009d9e

File tree

6 files changed

+200
-201
lines changed

6 files changed

+200
-201
lines changed

.github/workflows/test.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ jobs:
1818

1919
steps:
2020
- uses: actions/checkout@v4
21-
- name: Set up JDK 11
21+
- name: Set up JDK 22
2222
uses: actions/setup-java@v2
2323
with:
24-
java-version: '11'
25-
distribution: 'adopt'
24+
java-version: '22'
25+
distribution: 'temurin'
2626
- name: Run tests
2727
run: sbt test

src/main/java/dev/dirs/BaseDirectories.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -275,10 +275,9 @@ private BaseDirectories() {
275275
runtimeDir = null;
276276
break;
277277
case Constants.WIN:
278-
String[] winDirs = Windows.getWinDirs("5E6C858F-0E22-4760-9AFE-EA3317B67173", "3EB685DB-65F9-4CF6-A03A-E3EF65729F3D", "F1B32785-6FBA-4FCF-9D55-7B8E7F157091");
279-
homeDir = winDirs[0];
280-
dataDir = winDirs[1];
281-
dataLocalDir = winDirs[2];
278+
homeDir = Windows.getProfileDir();
279+
dataDir = Windows.getRoamingAppDataDir();
280+
dataLocalDir = Windows.getLocalAppDataDir();
282281
configDir = dataDir;
283282
cacheDir = dataLocalDir;
284283
executableDir = null;

src/main/java/dev/dirs/ProjectDirectories.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -258,9 +258,8 @@ public static ProjectDirectories fromPath(String path) {
258258
preferenceDir = homeDir + "/Library/Preferences/" + path;
259259
break;
260260
case Constants.WIN:
261-
String[] winDirs = Windows.getWinDirs("3EB685DB-65F9-4CF6-A03A-E3EF65729F3D", "F1B32785-6FBA-4FCF-9D55-7B8E7F157091");
262-
String appDataRoaming = winDirs[0] + '\\' + path;
263-
String appDataLocal = winDirs[1] + '\\' + path;
261+
String appDataRoaming = Windows.getRoamingAppDataDir() + '\\' + path;
262+
String appDataLocal = Windows.getLocalAppDataDir() + '\\' + path;
264263
dataDir = appDataRoaming + "\\data";
265264
dataLocalDir = appDataLocal + "\\data";
266265
configDir = appDataRoaming + "\\config";

src/main/java/dev/dirs/UserDirectories.java

+9-19
Original file line numberDiff line numberDiff line change
@@ -343,26 +343,16 @@ private UserDirectories() {
343343
videoDir = homeDir + "/Movies";
344344
break;
345345
case Constants.WIN:
346-
String[] winDirs = Windows.getWinDirs(
347-
"5E6C858F-0E22-4760-9AFE-EA3317B67173",
348-
"4BD8D571-6D19-48D3-BE97-422220080E43",
349-
"B4BFCC3A-DB2C-424C-B029-7FE99A87C641",
350-
"FDD39AD0-238F-46AF-ADB4-6C85480369C7",
351-
"374DE290-123F-4565-9164-39C4925E467B",
352-
"33E28130-4E1E-4676-835A-98395C3BC3BB",
353-
"DFDF76A2-C82A-4D63-906A-5644AC457385",
354-
"A63293E8-664E-48DB-A079-DF759E0509F7",
355-
"18989B1D-99B5-455B-841C-AB7C74E4DDFC");
356-
homeDir = winDirs[0];
357-
audioDir = winDirs[1];
346+
homeDir = Windows.getProfileDir();
347+
audioDir = Windows.getMusicDir();
358348
fontDir = null;
359-
desktopDir = winDirs[2];
360-
documentDir = winDirs[3];
361-
downloadDir = winDirs[4];
362-
pictureDir = winDirs[5];
363-
publicDir = winDirs[6];
364-
templateDir = winDirs[7];
365-
videoDir = winDirs[8];
349+
desktopDir = Windows.getDesktopDir();
350+
documentDir = Windows.getDocumentsDir();
351+
downloadDir = Windows.getDownloadsDir();
352+
pictureDir = Windows.getPicturesDir();
353+
publicDir = Windows.getPublicDir();
354+
templateDir = Windows.getTemplatesDir();
355+
videoDir = Windows.getVideosDir();
366356
break;
367357
default:
368358
throw new UnsupportedOperatingSystemException("User directories are not supported on " + Constants.operatingSystemName);

0 commit comments

Comments
 (0)