feat(docker): update base images to Java 25, Spring 4, Jackson 3, Gradle 9 and optimize JVM options (Project Lilliput) (#5725)

Co-authored-by: Anthony Stirling <[email protected]>
This commit is contained in:
Balázs Szücs
2026-02-24 20:06:32 +00:00
committed by GitHub
co-authored by Anthony Stirling
parent 24128dd318
commit 1f9b90ad57
112 changed files with 3181 additions and 2102 deletions
@@ -27,13 +27,13 @@ import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.mock.web.MockMultipartFile;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import stirling.software.SPDF.controller.api.EditTableOfContentsController.BookmarkItem;
import stirling.software.SPDF.model.api.EditTableOfContentsRequest;
import stirling.software.common.service.CustomPDFDocumentFactory;
import tools.jackson.core.type.TypeReference;
import tools.jackson.databind.ObjectMapper;
@ExtendWith(MockitoExtension.class)
class EditTableOfContentsControllerTest {
@@ -40,14 +40,15 @@ import org.springframework.http.ResponseEntity;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.web.multipart.MultipartFile;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import stirling.software.SPDF.model.api.security.PDFVerificationResult;
import stirling.software.SPDF.service.VeraPDFService;
import stirling.software.common.model.api.PDFFile;
import stirling.software.common.service.CustomPDFDocumentFactory;
import tools.jackson.databind.JsonNode;
import tools.jackson.databind.ObjectMapper;
import tools.jackson.databind.json.JsonMapper;
@DisplayName("GetInfoOnPDF Controller Tests")
@ExtendWith(MockitoExtension.class)
class GetInfoOnPDFTest {
@@ -64,7 +65,7 @@ class GetInfoOnPDFTest {
@BeforeEach
void setUp() {
objectMapper = new ObjectMapper();
objectMapper = JsonMapper.builder().build();
}
/** Helper method to load a PDF file from test resources */
@@ -216,8 +217,8 @@ class GetInfoOnPDFTest {
Assertions.assertTrue(jsonNode.has("Permissions"));
JsonNode metadata = jsonNode.get("Metadata");
Assertions.assertEquals("Test Title", metadata.get("Title").asText());
Assertions.assertEquals("Test Author", metadata.get("Author").asText());
Assertions.assertEquals("Test Title", metadata.get("Title").asText(""));
Assertions.assertEquals("Test Author", metadata.get("Author").asText(""));
}
}
@@ -315,12 +316,12 @@ class GetInfoOnPDFTest {
JsonNode jsonNode = objectMapper.readTree(jsonResponse);
JsonNode metadata = jsonNode.get("Metadata");
Assertions.assertEquals("Test Title", metadata.get("Title").asText());
Assertions.assertEquals("Test Author", metadata.get("Author").asText());
Assertions.assertEquals("Test Subject", metadata.get("Subject").asText());
Assertions.assertEquals("test, pdf, metadata", metadata.get("Keywords").asText());
Assertions.assertEquals("Test Creator", metadata.get("Creator").asText());
Assertions.assertEquals("Test Producer", metadata.get("Producer").asText());
Assertions.assertEquals("Test Title", metadata.get("Title").asText(""));
Assertions.assertEquals("Test Author", metadata.get("Author").asText(""));
Assertions.assertEquals("Test Subject", metadata.get("Subject").asText(""));
Assertions.assertEquals("test, pdf, metadata", metadata.get("Keywords").asText(""));
Assertions.assertEquals("Test Creator", metadata.get("Creator").asText(""));
Assertions.assertEquals("Test Producer", metadata.get("Producer").asText(""));
Assertions.assertTrue(metadata.has("CreationDate"));
Assertions.assertTrue(metadata.has("ModificationDate"));
@@ -512,10 +513,10 @@ class GetInfoOnPDFTest {
JsonNode page1 = perPageInfo.get("Page 1");
Assertions.assertTrue(page1.has("Size"));
Assertions.assertTrue(page1.get("Size").has("Standard Page"));
Assertions.assertEquals("A4", page1.get("Size").get("Standard Page").asText());
Assertions.assertEquals("A4", page1.get("Size").get("Standard Page").asText(""));
JsonNode page2 = perPageInfo.get("Page 2");
Assertions.assertEquals("Letter", page2.get("Size").get("Standard Page").asText());
Assertions.assertEquals("Letter", page2.get("Size").get("Standard Page").asText(""));
loadedDoc.close();
}
@@ -569,7 +570,8 @@ class GetInfoOnPDFTest {
JsonNode jsonNode = objectMapper.readTree(jsonResponse);
Assertions.assertTrue(jsonNode.has("error"));
Assertions.assertTrue(jsonNode.get("error").asText().contains("PDF file is required"));
Assertions.assertTrue(
jsonNode.get("error").asText("").contains("PDF file is required"));
}
@Test
@@ -645,7 +647,7 @@ class GetInfoOnPDFTest {
Assertions.assertTrue(jsonNode.has("error"));
Assertions.assertTrue(
jsonNode.get("error").asText().contains("exceeds maximum allowed size"));
jsonNode.get("error").asText("").contains("exceeds maximum allowed size"));
}
}
@@ -7,14 +7,15 @@ import java.util.Map;
import org.junit.jupiter.api.Test;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import tools.jackson.databind.JsonNode;
import tools.jackson.databind.ObjectMapper;
import tools.jackson.databind.json.JsonMapper;
import tools.jackson.databind.node.ArrayNode;
import tools.jackson.databind.node.ObjectNode;
class ApiEndpointTest {
private final ObjectMapper mapper = new ObjectMapper();
private final ObjectMapper mapper = JsonMapper.builder().build();
private JsonNode postNodeWithParams(String description, String... names) {
ObjectNode post = mapper.createObjectNode();
@@ -12,14 +12,15 @@ import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.servlet.ServletContext;
import stirling.software.SPDF.model.ApiEndpoint;
import stirling.software.common.service.UserServiceInterface;
import tools.jackson.databind.JsonNode;
import tools.jackson.databind.ObjectMapper;
import tools.jackson.databind.json.JsonMapper;
@ExtendWith(MockitoExtension.class)
class ApiDocServiceTest {
@@ -27,11 +28,11 @@ class ApiDocServiceTest {
@Mock UserServiceInterface userService;
ApiDocService apiDocService;
ObjectMapper mapper = new ObjectMapper();
ObjectMapper mapper = JsonMapper.builder().build();
@BeforeEach
void setUp() {
apiDocService = new ApiDocService(servletContext, userService);
apiDocService = new ApiDocService(mapper, servletContext, userService);
}
private void setApiDocumentation(Map<String, ApiEndpoint> docs) throws Exception {
@@ -20,6 +20,8 @@ import org.mockito.MockedStatic;
import stirling.software.SPDF.model.SignatureFile;
import stirling.software.common.configuration.InstallationPathConfig;
import tools.jackson.databind.json.JsonMapper;
class SignatureServiceTest {
@TempDir Path tempDir;
@@ -53,7 +55,7 @@ class SignatureServiceTest {
.thenReturn(tempDir.toString());
// Initialize the service with our temp directory
signatureService = new SharedSignatureService();
signatureService = new SharedSignatureService(JsonMapper.builder().build());
}
}