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()andget(PowerShell):
These methods rely onjPowerShellsessions. Due to internal global configuration ofjPowerShell, 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 onjPowerShelland instead, launches a standalone PowerShell process per invocation usingTerminalUtility. 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:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription@NotNull @Unmodifiable List<Win32DiskDriveToPartitionAndLogicalDisk> get()Retrieves an immutable list of physical disks with related partition and logical disk data connected to the system.@NotNull @Unmodifiable List<Win32DiskDriveToPartitionAndLogicalDisk> get(long timeout) Retrieves an immutable list of physical disks with related partition and logical disk data connected to the system using an isolated PowerShell process with a configurable timeout.@NotNull @Unmodifiable List<Win32DiskDriveToPartitionAndLogicalDisk> get(@NonNull com.profesorfalken.jpowershell.PowerShell powerShell) Retrieves an immutable list of physical disks with related partition and logical disk data connected to the system using the caller'sPowerShellsession.
-
Constructor Details
-
Win32DiskDriveToPartitionAndLogicalDiskService
public Win32DiskDriveToPartitionAndLogicalDiskService()
-
-
Method Details
-
get
@UsesJPowerShell @NotNull public @NotNull @Unmodifiable List<Win32DiskDriveToPartitionAndLogicalDisk> get()Retrieves an immutable list of physical disks with related partition and logical disk data connected to the system.Each invocation creates and uses a short-lived PowerShell session internally.
- Specified by:
getin interfaceCommonServiceInterface<Win32DiskDriveToPartitionAndLogicalDisk>- Returns:
- an immutable list of
Win32DiskDriveToPartitionAndLogicalDiskobjects representing connected physical disks with their partitions and logical disks. Returns an empty list if no data is found. - Since:
- 3.0.0
-
get
@UsesJPowerShell @NotNull public @NotNull @Unmodifiable List<Win32DiskDriveToPartitionAndLogicalDisk> get(@NonNull @NonNull com.profesorfalken.jpowershell.PowerShell powerShell) Retrieves an immutable list of physical disks with related partition and logical disk data connected to the system using the caller'sPowerShellsession.- Specified by:
getin interfaceCommonServiceInterface<Win32DiskDriveToPartitionAndLogicalDisk>- Parameters:
powerShell- an existing PowerShell session managed by the caller- Returns:
- an immutable list of
Win32DiskDriveToPartitionAndLogicalDiskobjects representing connected physical disks with their partitions and logical disks. Returns an empty list if no data is found. - Since:
- 3.0.0
-
get
@IsolatedPowerShell @NotNull public @NotNull @Unmodifiable List<Win32DiskDriveToPartitionAndLogicalDisk> get(long timeout) Retrieves an immutable list of physical disks with related partition and logical disk data connected to the system using an isolated PowerShell process with a configurable timeout.Each invocation creates an isolated PowerShell process, which is pre-maturely terminated if execution exceeds the specified timeout.
- Specified by:
getin interfaceCommonServiceInterface<Win32DiskDriveToPartitionAndLogicalDisk>- Parameters:
timeout- the maximum time (in seconds) to wait for the PowerShell command to complete before terminating the process- Returns:
- an immutable list of
Win32DiskDriveToPartitionAndLogicalDiskobjects representing connected physical disks with their partitions and logical disks. Returns an empty list if no data is found. - Since:
- 3.1.0
-