Class Win32DiskDriveToPartitionAndLogicalDiskService

java.lang.Object
io.github.eggy03.ferrumx.windows.service.compounded.Win32DiskDriveToPartitionAndLogicalDiskService
All Implemented Interfaces:
CommonServiceInterface<Win32DiskDriveToPartitionAndLogicalDisk>

public class Win32DiskDriveToPartitionAndLogicalDiskService extends Object implements CommonServiceInterface<Win32DiskDriveToPartitionAndLogicalDisk>
Service class for fetching physical disk and related partition and logical disk data from the system.

This class executes the ScriptEnum.WIN32_DISK_DRIVE_TO_PARTITION_AND_LOGICAL PowerShell command and maps the resulting JSON into an immutable list of Win32DiskDriveToPartitionAndLogicalDisk objects.

Usage examples

// Convenience API (creates its own short-lived session)
Win32DiskDriveToPartitionAndLogicalDiskService service = new Win32DiskDriveToPartitionAndLogicalDiskService();
List<Win32DiskDriveToPartitionAndLogicalDisk> disks = service.get();

// API with re-usable session (caller manages session lifecycle)
try (PowerShell session = PowerShell.openSession()) {
    List<Win32DiskDriveToPartitionAndLogicalDisk> disks = service.get(session);
}

// API with execution timeout (auto-created session is terminated if the timeout is exceeded)
Win32DiskDriveToPartitionAndLogicalDiskService service = new Win32DiskDriveToPartitionAndLogicalDiskService();
List<Win32DiskDriveToPartitionAndLogicalDisk> disks = service.get(10);

Execution models and concurrency

This service supports multiple PowerShell execution strategies:

  • jPowerShell-based execution via get() and get(PowerShell):
    These methods rely on jPowerShell sessions. Due to internal global configuration of jPowerShell, the PowerShell sessions launched by it is not safe to use concurrently across multiple threads or executors. Running these methods in parallel may result in runtime exceptions.
  • Isolated PowerShell execution via get(long timeout):
    This method doesn't rely on jPowerShell and instead, launches a standalone PowerShell process per invocation using TerminalUtility. Each call is fully isolated and safe to use in multithreaded and executor-based environments.

For concurrent or executor-based workloads, prefer get(long timeout).

Since:
3.0.0
See Also: