aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src-tauri/src/core/java/persistence.rs5
-rw-r--r--src-tauri/src/core/java/priority.rs2
-rw-r--r--src-tauri/src/core/java/provider.rs9
-rw-r--r--src-tauri/src/core/java/validation.rs19
4 files changed, 19 insertions, 16 deletions
diff --git a/src-tauri/src/core/java/persistence.rs b/src-tauri/src/core/java/persistence.rs
index 0932f2e..5e263fb 100644
--- a/src-tauri/src/core/java/persistence.rs
+++ b/src-tauri/src/core/java/persistence.rs
@@ -47,6 +47,7 @@ pub fn save_java_config(app_handle: &AppHandle, config: &JavaConfig) -> Result<(
Ok(())
}
+#[allow(dead_code)]
pub fn add_user_defined_path(app_handle: &AppHandle, path: String) -> Result<(), String> {
let mut config = load_java_config(app_handle);
if !config.user_defined_paths.contains(&path) {
@@ -55,23 +56,27 @@ pub fn add_user_defined_path(app_handle: &AppHandle, path: String) -> Result<(),
save_java_config(app_handle, &config)
}
+#[allow(dead_code)]
pub fn remove_user_defined_path(app_handle: &AppHandle, path: &str) -> Result<(), String> {
let mut config = load_java_config(app_handle);
config.user_defined_paths.retain(|p| p != path);
save_java_config(app_handle, &config)
}
+#[allow(dead_code)]
pub fn set_preferred_java_path(app_handle: &AppHandle, path: Option<String>) -> Result<(), String> {
let mut config = load_java_config(app_handle);
config.preferred_java_path = path;
save_java_config(app_handle, &config)
}
+#[allow(dead_code)]
pub fn get_preferred_java_path(app_handle: &AppHandle) -> Option<String> {
let config = load_java_config(app_handle);
config.preferred_java_path
}
+#[allow(dead_code)]
pub fn update_last_detection_time(app_handle: &AppHandle) -> Result<(), String> {
let mut config = load_java_config(app_handle);
config.last_detection_time = std::time::SystemTime::now()
diff --git a/src-tauri/src/core/java/priority.rs b/src-tauri/src/core/java/priority.rs
index cf39fdd..98f8b0e 100644
--- a/src-tauri/src/core/java/priority.rs
+++ b/src-tauri/src/core/java/priority.rs
@@ -4,6 +4,7 @@ use super::JavaInstallation;
use crate::core::java::persistence;
use crate::core::java::validation;
+#[allow(dead_code)]
pub async fn resolve_java_for_launch(
app_handle: &AppHandle,
instance_java_override: Option<&str>,
@@ -49,6 +50,7 @@ pub async fn resolve_java_for_launch(
.find(|java| is_version_compatible(java, required_major_version, max_major_version))
}
+#[allow(dead_code)]
fn is_version_compatible(
java: &JavaInstallation,
required_major_version: Option<u64>,
diff --git a/src-tauri/src/core/java/provider.rs b/src-tauri/src/core/java/provider.rs
index 0f9d78a..1b79681 100644
--- a/src-tauri/src/core/java/provider.rs
+++ b/src-tauri/src/core/java/provider.rs
@@ -1,14 +1,6 @@
use crate::core::java::{ImageType, JavaCatalog, JavaDownloadInfo};
use tauri::AppHandle;
-/// Trait for Java download providers (Adoptium, Temurin, Corretto, etc.)
-///
-/// Implements SOLID principles:
-/// - Single Responsibility: Each provider handles one download source
-/// - Open/Closed: New providers can be added without modifying existing code
-/// - Liskov Substitution: All providers are interchangeable
-/// - Interface Segregation: Minimal required methods
-/// - Dependency Inversion: Code depends on trait, not concrete implementations
pub trait JavaProvider: Send + Sync {
/// Fetch the Java catalog (all available versions for this provider)
async fn fetch_catalog(
@@ -28,6 +20,7 @@ pub trait JavaProvider: Send + Sync {
async fn available_versions(&self) -> Result<Vec<u32>, String>;
/// Get provider name (e.g., "adoptium", "corretto")
+ #[allow(dead_code)]
fn provider_name(&self) -> &'static str;
/// Get OS name for this provider's API
diff --git a/src-tauri/src/core/java/validation.rs b/src-tauri/src/core/java/validation.rs
index 8eca58a..cfe6f14 100644
--- a/src-tauri/src/core/java/validation.rs
+++ b/src-tauri/src/core/java/validation.rs
@@ -16,19 +16,21 @@ pub async fn check_java_installation(path: &PathBuf) -> Option<JavaInstallation>
}
fn check_java_installation_blocking(path: &PathBuf) -> Option<JavaInstallation> {
- let mut cmd = Command::new(path);
- cmd.arg("-version");
- #[cfg(target_os = "windows")]
- cmd.creation_flags(0x08000000);
+ let mut cmd = Command::new(path);
+ cmd.arg("-version");
+
+ // Hide console window
+ #[cfg(target_os = "windows")]
+ cmd.creation_flags(0x08000000);
let output = cmd.output().ok()?;
let version_output = String::from_utf8_lossy(&output.stderr);
- let version = parse_version_string(&version_output)?;
- let arch = extract_architecture(&version_output);
- let vendor = extract_vendor(&version_output);
- let is_64bit = version_output.contains("64-Bit");
+ let version = parse_version_string(&version_output)?;
+ let arch = extract_architecture(&version_output);
+ let vendor = extract_vendor(&version_output);
+ let is_64bit = version_output.to_lowercase().contains("64-bit") || arch == "aarch64";
Some(JavaInstallation {
path: path.to_string_lossy().to_string(),
@@ -84,6 +86,7 @@ pub fn extract_architecture(version_output: &str) -> String {
pub fn extract_vendor(version_output: &str) -> String {
let lower = version_output.to_lowercase();
+ // TODO: Expand with more vendors as needed
if lower.contains("temurin") || lower.contains("adoptium") {
"Eclipse Adoptium".to_string()
} else if lower.contains("openjdk") {