ChatAttachmentScanProperties.java
package com.ecommerce.chat.infrastructure.storage;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.validation.annotation.Validated;
import java.time.Duration;
@Validated
@ConfigurationProperties("ecommerce.chat.attachments.scan")
public record ChatAttachmentScanProperties(
boolean enabled,
@NotBlank String host,
@Min(1) @Max(65535) int port,
@NotNull Duration connectTimeout,
@NotNull Duration readTimeout,
@Min(0) long initialDelay,
@Min(250) long fixedDelay,
@Min(1) @Max(50) int batchSize,
@NotNull Duration leaseDuration,
@Min(1) @Max(100) int maximumAttempts,
@NotBlank String scannerId,
@Min(256) @Max(65536) int maximumResponseBytes
) {
public ChatAttachmentScanProperties {
requirePositive(connectTimeout, "connectTimeout");
requirePositive(readTimeout, "readTimeout");
requirePositive(leaseDuration, "leaseDuration");
}
private static void requirePositive(Duration value, String name) {
if (value != null && (value.isZero() || value.isNegative())) {
throw new IllegalArgumentException(name + " must be greater than zero");
}
}
}