CaptureDeviceDescriptor.java
package org.hammer.audio.acquisition;
/**
* Stable, API-neutral description of one discoverable capture device.
*
* @param deviceId deterministic provider-specific identity
* @param name human-readable device name
* @param vendor provider or hardware vendor
* @param description longer provider description
* @param version provider or driver version
*/
public record CaptureDeviceDescriptor(
String deviceId, String name, String vendor, String description, String version) {
// Validate one discovered capture-device descriptor.
public CaptureDeviceDescriptor {
requireText(deviceId, "deviceId");
requireText(name, "name");
vendor = normalize(vendor);
description = normalize(description);
version = normalize(version);
}
private static String normalize(String value) {
return value == null ? "" : value.trim();
}
private static void requireText(String value, String name) {
if (value == null || value.isBlank()) {
throw new IllegalArgumentException(name + " must not be blank");
}
}
}