aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src-tauri/src/core/java/mod.rs
diff options
context:
space:
mode:
authorBegonia, HE <163421589+BegoniaHe@users.noreply.github.com>2026-01-25 10:28:46 +0100
committerBegonia, HE <163421589+BegoniaHe@users.noreply.github.com>2026-01-29 02:56:30 +0100
commit83e9e3c6067c8a2016676d461c17835d4da8b7ab (patch)
treefe587fd7c30c32cf1805af1f73ba05eef5baa0c8 /src-tauri/src/core/java/mod.rs
parent84fdc3b8ab262dc72780bffb258f2fff909f37f6 (diff)
downloadDropOut-83e9e3c6067c8a2016676d461c17835d4da8b7ab.tar.gz
DropOut-83e9e3c6067c8a2016676d461c17835d4da8b7ab.zip
refactor(java): address Sourcery AI code review feedback
- Centralize strip_unc_prefix into java/mod.rs to eliminate duplication across detection.rs and validation.rs - Remove unused JAVA_CHECK_TIMEOUT constant from validation.rs - Implement actual timeout mechanism in run_which_command_with_timeout() using try_wait() loop - Parallelize Adoptium API requests for better catalog fetch performance Fixes: - Multiple strip_unc_prefix implementations consolidated - Timeout constant now properly enforced in which/where command execution - Catalog fetching now uses concurrent tokio::spawn tasks instead of sequential await Reviewed-by: Claude Sonnet 4.5
Diffstat (limited to 'src-tauri/src/core/java/mod.rs')
-rw-r--r--src-tauri/src/core/java/mod.rs18
1 files changed, 15 insertions, 3 deletions
diff --git a/src-tauri/src/core/java/mod.rs b/src-tauri/src/core/java/mod.rs
index fd82390..05bf734 100644
--- a/src-tauri/src/core/java/mod.rs
+++ b/src-tauri/src/core/java/mod.rs
@@ -9,6 +9,18 @@ pub mod validation;
pub mod provider;
pub mod providers;
+/// Remove the UNC prefix (\\?\) from Windows paths
+pub fn strip_unc_prefix(path: PathBuf) -> PathBuf {
+ #[cfg(target_os = "windows")]
+ {
+ let s = path.to_string_lossy().to_string();
+ if s.starts_with(r"\\?\\") {
+ return PathBuf::from(&s[4..]);
+ }
+ }
+ path
+}
+
use crate::core::downloader::{DownloadQueue, JavaDownloadProgress, PendingJavaDownload};
use crate::utils::zip;
use provider::JavaProvider;
@@ -267,7 +279,7 @@ pub async fn download_and_install_java(
}
let java_bin = std::fs::canonicalize(&java_bin).map_err(|e| e.to_string())?;
- let java_bin = validation::strip_unc_prefix(java_bin);
+ let java_bin = strip_unc_prefix(java_bin);
let installation = validation::check_java_installation(&java_bin)
.await
@@ -431,7 +443,7 @@ fn find_java_executable(dir: &PathBuf) -> Option<PathBuf> {
let direct_bin = dir.join("bin").join(bin_name);
if direct_bin.exists() {
let resolved = std::fs::canonicalize(&direct_bin).unwrap_or(direct_bin);
- return Some(validation::strip_unc_prefix(resolved));
+ return Some(strip_unc_prefix(resolved));
}
#[cfg(target_os = "macos")]
@@ -449,7 +461,7 @@ fn find_java_executable(dir: &PathBuf) -> Option<PathBuf> {
let nested_bin = path.join("bin").join(bin_name);
if nested_bin.exists() {
let resolved = std::fs::canonicalize(&nested_bin).unwrap_or(nested_bin);
- return Some(validation::strip_unc_prefix(resolved));
+ return Some(strip_unc_prefix(resolved));
}
#[cfg(target_os = "macos")]