DocumentMultipartConfiguration.java

package com.taxonomy.provenance.config;

import jakarta.servlet.MultipartConfigElement;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/** Keeps servlet multipart rejection aligned with the application upload policy. */
@Configuration
public class DocumentMultipartConfiguration {

    private static final long REQUEST_OVERHEAD_BYTES = 1024L * 1024L;

    @Bean
    MultipartConfigElement taxonomyMultipartConfig(DocumentImportLimits limits) {
        long fileLimit = limits.getMaxUploadBytes();
        long requestLimit;
        try {
            requestLimit = Math.addExact(fileLimit, REQUEST_OVERHEAD_BYTES);
        } catch (ArithmeticException error) {
            requestLimit = Long.MAX_VALUE;
        }
        return new MultipartConfigElement("", fileLimit, requestLimit, 0);
    }
}