From 37c7373dc44ab7cc475990f5f3cae966eceb26c5 Mon Sep 17 00:00:00 2001 From: Dario Ghunney Ware Date: Thu, 22 May 2025 12:31:25 +0100 Subject: [PATCH] renamed GeneralUtil to GeneralUtils --- .../common/configuration/YamlConfig.java | 44 ------ .../common/model/ApplicationProperties.java | 48 ++++++- .../{GeneralUtil.java => GeneralUtils.java} | 2 +- .../software/common/util/PdfUtils.java | 4 +- .../{ProviderUtil.java => ProviderUtils.java} | 6 +- ...questUriUtil.java => RequestUriUtils.java} | 2 +- ...lidationUtil.java => ValidationUtils.java} | 2 +- .../util/GeneralUtilAdditionalTest.java | 41 ------ .../util/GeneralUtilsAdditionalTest.java | 41 ++++++ ...ralUtilTest.java => GeneralUtilsTest.java} | 50 +++---- ...erUtilTest.java => ProviderUtilsTest.java} | 6 +- ...UtilTest.java => RequestUriUtilsTest.java} | 134 +++++++++--------- .../SPDF/EE/KeygenLicenseVerifier.java | 4 +- .../software/SPDF/EE/LicenseKeyChecker.java | 4 +- .../software/SPDF/config/InitialSetup.java | 22 +-- .../software/SPDF/config/MetricsFilter.java | 4 +- .../CustomAuthenticationSuccessHandler.java | 4 +- .../config/security/FirstLoginFilter.java | 4 +- .../config/security/IPRateLimitingFilter.java | 4 +- ...tomOAuth2AuthenticationSuccessHandler.java | 4 +- .../security/oauth2/OAuth2Configuration.java | 4 +- ...stomSaml2AuthenticationSuccessHandler.java | 4 +- .../SPDF/controller/api/MergeController.java | 4 +- .../controller/api/PdfOverlayController.java | 4 +- .../api/RearrangePagesPDFController.java | 6 +- .../controller/api/SettingsController.java | 4 +- .../api/SplitPdfBySizeController.java | 4 +- .../converters/ConvertImgPDFController.java | 4 +- .../api/converters/ConvertWebsiteToPDF.java | 6 +- .../api/misc/CompressController.java | 22 +-- .../api/misc/PageNumbersController.java | 4 +- .../api/security/RedactController.java | 5 +- .../controller/web/AccountWebController.java | 2 +- .../controller/web/GeneralWebController.java | 4 +- .../SPDF/model/api/PDFWithPageNums.java | 4 +- 35 files changed, 252 insertions(+), 259 deletions(-) delete mode 100644 common/src/main/java/stirling/software/common/configuration/YamlConfig.java rename common/src/main/java/stirling/software/common/util/{GeneralUtil.java => GeneralUtils.java} (99%) rename common/src/main/java/stirling/software/common/util/{ProviderUtil.java => ProviderUtils.java} (74%) rename common/src/main/java/stirling/software/common/util/{RequestUriUtil.java => RequestUriUtils.java} (98%) rename common/src/main/java/stirling/software/common/util/{ValidationUtil.java => ValidationUtils.java} (90%) delete mode 100644 common/src/test/java/stirling/software/common/util/GeneralUtilAdditionalTest.java create mode 100644 common/src/test/java/stirling/software/common/util/GeneralUtilsAdditionalTest.java rename common/src/test/java/stirling/software/common/util/{GeneralUtilTest.java => GeneralUtilsTest.java} (60%) rename common/src/test/java/stirling/software/common/util/{ProviderUtilTest.java => ProviderUtilsTest.java} (90%) rename common/src/test/java/stirling/software/common/util/{RequestUriUtilTest.java => RequestUriUtilsTest.java} (60%) diff --git a/common/src/main/java/stirling/software/common/configuration/YamlConfig.java b/common/src/main/java/stirling/software/common/configuration/YamlConfig.java deleted file mode 100644 index 4da4dd8cc..000000000 --- a/common/src/main/java/stirling/software/common/configuration/YamlConfig.java +++ /dev/null @@ -1,44 +0,0 @@ -package stirling.software.common.configuration; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; -import lombok.extern.slf4j.Slf4j; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.env.ConfigurableEnvironment; -import org.springframework.core.env.PropertySource; -import org.springframework.core.io.FileSystemResource; -import org.springframework.core.io.Resource; -import org.springframework.core.io.support.EncodedResource; - -@Slf4j -@Configuration -public class YamlConfig { - - @Bean - public PropertySource dynamicYamlPropertySource(ConfigurableEnvironment environment) - throws IOException { - String configPath = InstallationPathConfig.getSettingsPath(); - log.debug("Attempting to load settings from: " + configPath); - - File file = new File(configPath); - if (!file.exists()) { - log.error("Warning: Settings file does not exist at: " + configPath); - } - - Resource resource = new FileSystemResource(configPath); - if (!resource.exists()) { - throw new FileNotFoundException("Settings file not found at: " + configPath); - } - - EncodedResource encodedResource = new EncodedResource(resource); - PropertySource propertySource = - new YamlPropertySourceFactory().createPropertySource(null, encodedResource); - environment.getPropertySources().addFirst(propertySource); - - log.debug("Loaded properties: " + propertySource.getSource()); - - return propertySource; - } -} diff --git a/common/src/main/java/stirling/software/common/model/ApplicationProperties.java b/common/src/main/java/stirling/software/common/model/ApplicationProperties.java index 33ec5e217..cb96ee332 100644 --- a/common/src/main/java/stirling/software/common/model/ApplicationProperties.java +++ b/common/src/main/java/stirling/software/common/model/ApplicationProperties.java @@ -1,5 +1,7 @@ package stirling.software.common.model; +import java.io.File; +import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; @@ -14,21 +16,29 @@ import lombok.Data; import lombok.Getter; import lombok.Setter; import lombok.ToString; +import lombok.extern.slf4j.Slf4j; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; +import org.springframework.core.env.ConfigurableEnvironment; +import org.springframework.core.env.PropertySource; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; +import org.springframework.core.io.support.EncodedResource; import org.springframework.stereotype.Component; +import stirling.software.common.configuration.InstallationPathConfig; +import stirling.software.common.configuration.YamlPropertySourceFactory; import stirling.software.common.model.exception.UnsupportedProviderException; import stirling.software.common.model.oauth2.GitHubProvider; import stirling.software.common.model.oauth2.GoogleProvider; import stirling.software.common.model.oauth2.KeycloakProvider; import stirling.software.common.model.oauth2.Provider; -import stirling.software.common.util.ValidationUtil; +import stirling.software.common.util.ValidationUtils; @Data +@Slf4j @Component @Order(Ordered.HIGHEST_PRECEDENCE) @ConfigurationProperties(prefix = "") @@ -49,6 +59,32 @@ public class ApplicationProperties { private AutoPipeline autoPipeline = new AutoPipeline(); private ProcessExecutor processExecutor = new ProcessExecutor(); + @Bean + public PropertySource dynamicYamlPropertySource(ConfigurableEnvironment environment) + throws IOException { + String configPath = InstallationPathConfig.getSettingsPath(); + log.debug("Attempting to load settings from: " + configPath); + + File file = new File(configPath); + if (!file.exists()) { + log.error("Warning: Settings file does not exist at: " + configPath); + } + + Resource resource = new FileSystemResource(configPath); + if (!resource.exists()) { + throw new FileNotFoundException("Settings file not found at: " + configPath); + } + + EncodedResource encodedResource = new EncodedResource(resource); + PropertySource propertySource = + new YamlPropertySourceFactory().createPropertySource(null, encodedResource); + environment.getPropertySources().addFirst(propertySource); + + log.debug("Loaded properties: " + propertySource.getSource()); + + return propertySource; + } + @Data public static class AutoPipeline { private String outputFolder; @@ -208,11 +244,11 @@ public class ApplicationProperties { } public boolean isSettingsValid() { - return !ValidationUtil.isStringEmpty(this.getIssuer()) - && !ValidationUtil.isStringEmpty(this.getClientId()) - && !ValidationUtil.isStringEmpty(this.getClientSecret()) - && !ValidationUtil.isCollectionEmpty(this.getScopes()) - && !ValidationUtil.isStringEmpty(this.getUseAsUsername()); + return !ValidationUtils.isStringEmpty(this.getIssuer()) + && !ValidationUtils.isStringEmpty(this.getClientId()) + && !ValidationUtils.isStringEmpty(this.getClientSecret()) + && !ValidationUtils.isCollectionEmpty(this.getScopes()) + && !ValidationUtils.isStringEmpty(this.getUseAsUsername()); } @Data diff --git a/common/src/main/java/stirling/software/common/util/GeneralUtil.java b/common/src/main/java/stirling/software/common/util/GeneralUtils.java similarity index 99% rename from common/src/main/java/stirling/software/common/util/GeneralUtil.java rename to common/src/main/java/stirling/software/common/util/GeneralUtils.java index f716dcee8..3353cdfeb 100644 --- a/common/src/main/java/stirling/software/common/util/GeneralUtil.java +++ b/common/src/main/java/stirling/software/common/util/GeneralUtils.java @@ -30,7 +30,7 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.common.configuration.InstallationPathConfig; @Slf4j -public class GeneralUtil { +public class GeneralUtils { public static File convertMultipartFileToFile(MultipartFile multipartFile) throws IOException { File tempFile = Files.createTempFile("temp", null).toFile(); diff --git a/common/src/main/java/stirling/software/common/util/PdfUtils.java b/common/src/main/java/stirling/software/common/util/PdfUtils.java index acfbe0ce4..bee180f70 100644 --- a/common/src/main/java/stirling/software/common/util/PdfUtils.java +++ b/common/src/main/java/stirling/software/common/util/PdfUtils.java @@ -84,7 +84,7 @@ public class PdfUtils { public static boolean hasImages(PDDocument document, String pagesToCheck) throws IOException { String[] pageOrderArr = pagesToCheck.split(","); List pageList = - GeneralUtil.parsePageList(pageOrderArr, document.getNumberOfPages()); + GeneralUtils.parsePageList(pageOrderArr, document.getNumberOfPages()); for (int pageNumber : pageList) { PDPage page = document.getPage(pageNumber); @@ -100,7 +100,7 @@ public class PdfUtils { throws IOException { String[] pageOrderArr = pageNumbersToCheck.split(","); List pageList = - GeneralUtil.parsePageList(pageOrderArr, document.getNumberOfPages()); + GeneralUtils.parsePageList(pageOrderArr, document.getNumberOfPages()); for (int pageNumber : pageList) { PDPage page = document.getPage(pageNumber); diff --git a/common/src/main/java/stirling/software/common/util/ProviderUtil.java b/common/src/main/java/stirling/software/common/util/ProviderUtils.java similarity index 74% rename from common/src/main/java/stirling/software/common/util/ProviderUtil.java rename to common/src/main/java/stirling/software/common/util/ProviderUtils.java index ee570346d..1dd942f88 100644 --- a/common/src/main/java/stirling/software/common/util/ProviderUtil.java +++ b/common/src/main/java/stirling/software/common/util/ProviderUtils.java @@ -1,10 +1,10 @@ package stirling.software.common.util; import stirling.software.common.model.oauth2.Provider; -import static stirling.software.common.util.ValidationUtil.isCollectionEmpty; -import static stirling.software.common.util.ValidationUtil.isStringEmpty; +import static stirling.software.common.util.ValidationUtils.isCollectionEmpty; +import static stirling.software.common.util.ValidationUtils.isStringEmpty; -public class ProviderUtil { +public class ProviderUtils { public static boolean validateProvider(Provider provider) { if (provider == null) { diff --git a/common/src/main/java/stirling/software/common/util/RequestUriUtil.java b/common/src/main/java/stirling/software/common/util/RequestUriUtils.java similarity index 98% rename from common/src/main/java/stirling/software/common/util/RequestUriUtil.java rename to common/src/main/java/stirling/software/common/util/RequestUriUtils.java index 4cf6d6034..4c14901b3 100644 --- a/common/src/main/java/stirling/software/common/util/RequestUriUtil.java +++ b/common/src/main/java/stirling/software/common/util/RequestUriUtils.java @@ -1,6 +1,6 @@ package stirling.software.common.util; -public class RequestUriUtil { +public class RequestUriUtils { public static boolean isStaticResource(String requestURI) { return isStaticResource("", requestURI); diff --git a/common/src/main/java/stirling/software/common/util/ValidationUtil.java b/common/src/main/java/stirling/software/common/util/ValidationUtils.java similarity index 90% rename from common/src/main/java/stirling/software/common/util/ValidationUtil.java rename to common/src/main/java/stirling/software/common/util/ValidationUtils.java index 8646f3bb6..b7cc48a77 100644 --- a/common/src/main/java/stirling/software/common/util/ValidationUtil.java +++ b/common/src/main/java/stirling/software/common/util/ValidationUtils.java @@ -2,7 +2,7 @@ package stirling.software.common.util; import java.util.Collection; -public class ValidationUtil { +public class ValidationUtils { public static boolean isStringEmpty(String input) { return input == null || input.isBlank(); diff --git a/common/src/test/java/stirling/software/common/util/GeneralUtilAdditionalTest.java b/common/src/test/java/stirling/software/common/util/GeneralUtilAdditionalTest.java deleted file mode 100644 index 8a8aaf770..000000000 --- a/common/src/test/java/stirling/software/common/util/GeneralUtilAdditionalTest.java +++ /dev/null @@ -1,41 +0,0 @@ -package stirling.software.common.util; - -import static org.junit.jupiter.api.Assertions.*; - -import org.junit.jupiter.api.Test; - -class GeneralUtilAdditionalTest { - - @Test - void testConvertSizeToBytes() { - assertEquals(1024L, GeneralUtil.convertSizeToBytes("1KB")); - assertEquals(1024L * 1024, GeneralUtil.convertSizeToBytes("1MB")); - assertEquals(1024L * 1024 * 1024, GeneralUtil.convertSizeToBytes("1GB")); - assertEquals(100L * 1024 * 1024, GeneralUtil.convertSizeToBytes("100")); - assertNull(GeneralUtil.convertSizeToBytes("invalid")); - assertNull(GeneralUtil.convertSizeToBytes(null)); - } - - @Test - void testFormatBytes() { - assertEquals("512 B", GeneralUtil.formatBytes(512)); - assertEquals("1.00 KB", GeneralUtil.formatBytes(1024)); - assertEquals("1.00 MB", GeneralUtil.formatBytes(1024L * 1024)); - assertEquals("1.00 GB", GeneralUtil.formatBytes(1024L * 1024 * 1024)); - } - - @Test - void testURLHelpersAndUUID() { - assertTrue(GeneralUtil.isValidURL("https://example.com")); - assertFalse(GeneralUtil.isValidURL("htp:/bad")); - assertFalse(GeneralUtil.isURLReachable("http://localhost")); - assertFalse(GeneralUtil.isURLReachable("ftp://example.com")); - - assertTrue(GeneralUtil.isValidUUID("123e4567-e89b-12d3-a456-426614174000")); - assertFalse(GeneralUtil.isValidUUID("not-a-uuid")); - - assertFalse(GeneralUtil.isVersionHigher(null, "1.0")); - assertTrue(GeneralUtil.isVersionHigher("2.0", "1.9")); - assertFalse(GeneralUtil.isVersionHigher("1.0", "1.0.1")); - } -} diff --git a/common/src/test/java/stirling/software/common/util/GeneralUtilsAdditionalTest.java b/common/src/test/java/stirling/software/common/util/GeneralUtilsAdditionalTest.java new file mode 100644 index 000000000..3ecc6fac5 --- /dev/null +++ b/common/src/test/java/stirling/software/common/util/GeneralUtilsAdditionalTest.java @@ -0,0 +1,41 @@ +package stirling.software.common.util; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +class GeneralUtilsAdditionalTest { + + @Test + void testConvertSizeToBytes() { + assertEquals(1024L, GeneralUtils.convertSizeToBytes("1KB")); + assertEquals(1024L * 1024, GeneralUtils.convertSizeToBytes("1MB")); + assertEquals(1024L * 1024 * 1024, GeneralUtils.convertSizeToBytes("1GB")); + assertEquals(100L * 1024 * 1024, GeneralUtils.convertSizeToBytes("100")); + assertNull(GeneralUtils.convertSizeToBytes("invalid")); + assertNull(GeneralUtils.convertSizeToBytes(null)); + } + + @Test + void testFormatBytes() { + assertEquals("512 B", GeneralUtils.formatBytes(512)); + assertEquals("1.00 KB", GeneralUtils.formatBytes(1024)); + assertEquals("1.00 MB", GeneralUtils.formatBytes(1024L * 1024)); + assertEquals("1.00 GB", GeneralUtils.formatBytes(1024L * 1024 * 1024)); + } + + @Test + void testURLHelpersAndUUID() { + assertTrue(GeneralUtils.isValidURL("https://example.com")); + assertFalse(GeneralUtils.isValidURL("htp:/bad")); + assertFalse(GeneralUtils.isURLReachable("http://localhost")); + assertFalse(GeneralUtils.isURLReachable("ftp://example.com")); + + assertTrue(GeneralUtils.isValidUUID("123e4567-e89b-12d3-a456-426614174000")); + assertFalse(GeneralUtils.isValidUUID("not-a-uuid")); + + assertFalse(GeneralUtils.isVersionHigher(null, "1.0")); + assertTrue(GeneralUtils.isVersionHigher("2.0", "1.9")); + assertFalse(GeneralUtils.isVersionHigher("1.0", "1.0.1")); + } +} diff --git a/common/src/test/java/stirling/software/common/util/GeneralUtilTest.java b/common/src/test/java/stirling/software/common/util/GeneralUtilsTest.java similarity index 60% rename from common/src/test/java/stirling/software/common/util/GeneralUtilTest.java rename to common/src/test/java/stirling/software/common/util/GeneralUtilsTest.java index b2a1c8c79..a73cd332b 100644 --- a/common/src/test/java/stirling/software/common/util/GeneralUtilTest.java +++ b/common/src/test/java/stirling/software/common/util/GeneralUtilsTest.java @@ -6,152 +6,152 @@ import java.util.List; import org.junit.jupiter.api.Test; -public class GeneralUtilTest { +public class GeneralUtilsTest { @Test void testParsePageListWithAll() { - List result = GeneralUtil.parsePageList(new String[] {"all"}, 5, false); + List result = GeneralUtils.parsePageList(new String[] {"all"}, 5, false); assertEquals(List.of(0, 1, 2, 3, 4), result, "'All' keyword should return all pages."); } @Test void testParsePageListWithAllOneBased() { - List result = GeneralUtil.parsePageList(new String[] {"all"}, 5, true); + List result = GeneralUtils.parsePageList(new String[] {"all"}, 5, true); assertEquals(List.of(1, 2, 3, 4, 5), result, "'All' keyword should return all pages."); } @Test void nFunc() { - List result = GeneralUtil.parsePageList(new String[] {"n"}, 5, true); + List result = GeneralUtils.parsePageList(new String[] {"n"}, 5, true); assertEquals(List.of(1, 2, 3, 4, 5), result, "'n' keyword should return all pages."); } @Test void nFuncAdvanced() { - List result = GeneralUtil.parsePageList(new String[] {"4n"}, 9, true); + List result = GeneralUtils.parsePageList(new String[] {"4n"}, 9, true); // skip 0 as not valid assertEquals(List.of(4, 8), result, "'All' keyword should return all pages."); } @Test void nFuncAdvancedZero() { - List result = GeneralUtil.parsePageList(new String[] {"4n"}, 9, false); + List result = GeneralUtils.parsePageList(new String[] {"4n"}, 9, false); // skip 0 as not valid assertEquals(List.of(3, 7), result, "'All' keyword should return all pages."); } @Test void nFuncAdvanced2() { - List result = GeneralUtil.parsePageList(new String[] {"4n-1"}, 9, true); + List result = GeneralUtils.parsePageList(new String[] {"4n-1"}, 9, true); // skip -1 as not valid assertEquals(List.of(3, 7), result, "4n-1 should do (0-1), (4-1), (8-1)"); } @Test void nFuncAdvanced3() { - List result = GeneralUtil.parsePageList(new String[] {"4n+1"}, 9, true); + List result = GeneralUtils.parsePageList(new String[] {"4n+1"}, 9, true); assertEquals(List.of(5, 9), result, "'All' keyword should return all pages."); } @Test void nFunc_spaces() { - List result = GeneralUtil.parsePageList(new String[] {"n + 1"}, 9, true); + List result = GeneralUtils.parsePageList(new String[] {"n + 1"}, 9, true); assertEquals(List.of(2, 3, 4, 5, 6, 7, 8, 9), result); } @Test void nFunc_consecutive_Ns_nnn() { - List result = GeneralUtil.parsePageList(new String[] {"nnn"}, 9, true); + List result = GeneralUtils.parsePageList(new String[] {"nnn"}, 9, true); assertEquals(List.of(1, 8), result); } @Test void nFunc_consecutive_Ns_nn() { - List result = GeneralUtil.parsePageList(new String[] {"nn"}, 9, true); + List result = GeneralUtils.parsePageList(new String[] {"nn"}, 9, true); assertEquals(List.of(1, 4, 9), result); } @Test void nFunc_opening_closing_round_brackets() { - List result = GeneralUtil.parsePageList(new String[] {"(n-1)(n-2)"}, 9, true); + List result = GeneralUtils.parsePageList(new String[] {"(n-1)(n-2)"}, 9, true); assertEquals(List.of(2, 6), result); } @Test void nFunc_opening_round_brackets() { - List result = GeneralUtil.parsePageList(new String[] {"2(n-1)"}, 9, true); + List result = GeneralUtils.parsePageList(new String[] {"2(n-1)"}, 9, true); assertEquals(List.of(2, 4, 6, 8), result); } @Test void nFunc_opening_round_brackets_n() { - List result = GeneralUtil.parsePageList(new String[] {"n(n-1)"}, 9, true); + List result = GeneralUtils.parsePageList(new String[] {"n(n-1)"}, 9, true); assertEquals(List.of(2, 6), result); } @Test void nFunc_closing_round_brackets() { - List result = GeneralUtil.parsePageList(new String[] {"(n-1)2"}, 9, true); + List result = GeneralUtils.parsePageList(new String[] {"(n-1)2"}, 9, true); assertEquals(List.of(2, 4, 6, 8), result); } @Test void nFunc_closing_round_brackets_n() { - List result = GeneralUtil.parsePageList(new String[] {"(n-1)n"}, 9, true); + List result = GeneralUtils.parsePageList(new String[] {"(n-1)n"}, 9, true); assertEquals(List.of(2, 6), result); } @Test void nFunc_function_surrounded_with_brackets() { - List result = GeneralUtil.parsePageList(new String[] {"(n-1)"}, 9, true); + List result = GeneralUtils.parsePageList(new String[] {"(n-1)"}, 9, true); assertEquals(List.of(1, 2, 3, 4, 5, 6, 7, 8), result); } @Test void nFuncAdvanced4() { - List result = GeneralUtil.parsePageList(new String[] {"3+2n"}, 9, true); + List result = GeneralUtils.parsePageList(new String[] {"3+2n"}, 9, true); assertEquals(List.of(5, 7, 9), result, "'All' keyword should return all pages."); } @Test void nFuncAdvancedZerobased() { - List result = GeneralUtil.parsePageList(new String[] {"4n"}, 9, false); + List result = GeneralUtils.parsePageList(new String[] {"4n"}, 9, false); assertEquals(List.of(3, 7), result, "'All' keyword should return all pages."); } @Test void nFuncAdvanced2Zerobased() { - List result = GeneralUtil.parsePageList(new String[] {"4n-1"}, 9, false); + List result = GeneralUtils.parsePageList(new String[] {"4n-1"}, 9, false); assertEquals(List.of(2, 6), result, "'All' keyword should return all pages."); } @Test void testParsePageListWithRangeOneBasedOutput() { - List result = GeneralUtil.parsePageList(new String[] {"1-3"}, 5, true); + List result = GeneralUtils.parsePageList(new String[] {"1-3"}, 5, true); assertEquals(List.of(1, 2, 3), result, "Range should be parsed correctly."); } @Test void testParsePageListWithRangeZeroBaseOutput() { - List result = GeneralUtil.parsePageList(new String[] {"1-3"}, 5, false); + List result = GeneralUtils.parsePageList(new String[] {"1-3"}, 5, false); assertEquals(List.of(0, 1, 2), result, "Range should be parsed correctly."); } @Test void testParsePageListWithRangeOneBasedOutputFull() { - List result = GeneralUtil.parsePageList(new String[] {"1,3,7-8"}, 8, true); + List result = GeneralUtils.parsePageList(new String[] {"1,3,7-8"}, 8, true); assertEquals(List.of(1, 3, 7, 8), result, "Range should be parsed correctly."); } @Test void testParsePageListWithRangeOneBasedOutputFullOutOfRange() { - List result = GeneralUtil.parsePageList(new String[] {"1,3,7-8"}, 5, true); + List result = GeneralUtils.parsePageList(new String[] {"1,3,7-8"}, 5, true); assertEquals(List.of(1, 3), result, "Range should be parsed correctly."); } @Test void testParsePageListWithRangeZeroBaseOutputFull() { - List result = GeneralUtil.parsePageList(new String[] {"1,3,7-8"}, 8, false); + List result = GeneralUtils.parsePageList(new String[] {"1,3,7-8"}, 8, false); assertEquals(List.of(0, 2, 6, 7), result, "Range should be parsed correctly."); } } diff --git a/common/src/test/java/stirling/software/common/util/ProviderUtilTest.java b/common/src/test/java/stirling/software/common/util/ProviderUtilsTest.java similarity index 90% rename from common/src/test/java/stirling/software/common/util/ProviderUtilTest.java rename to common/src/test/java/stirling/software/common/util/ProviderUtilsTest.java index 231bc3760..02143cc84 100644 --- a/common/src/test/java/stirling/software/common/util/ProviderUtilTest.java +++ b/common/src/test/java/stirling/software/common/util/ProviderUtilsTest.java @@ -16,7 +16,7 @@ import stirling.software.common.model.oauth2.Provider; import static org.mockito.Mockito.*; @ExtendWith(MockitoExtension.class) -class ProviderUtilTest { +class ProviderUtilsTest { @Test void testSuccessfulValidation() { @@ -26,13 +26,13 @@ class ProviderUtilTest { when(provider.getClientSecret()).thenReturn("clientSecret"); when(provider.getScopes()).thenReturn(List.of("read:user")); - Assertions.assertTrue(ProviderUtil.validateProvider(provider)); + Assertions.assertTrue(ProviderUtils.validateProvider(provider)); } @ParameterizedTest @MethodSource("providerParams") void testUnsuccessfulValidation(Provider provider) { - Assertions.assertFalse(ProviderUtil.validateProvider(provider)); + Assertions.assertFalse(ProviderUtils.validateProvider(provider)); } public static Stream providerParams() { diff --git a/common/src/test/java/stirling/software/common/util/RequestUriUtilTest.java b/common/src/test/java/stirling/software/common/util/RequestUriUtilsTest.java similarity index 60% rename from common/src/test/java/stirling/software/common/util/RequestUriUtilTest.java rename to common/src/test/java/stirling/software/common/util/RequestUriUtilsTest.java index b2d74c10c..21cfea85f 100644 --- a/common/src/test/java/stirling/software/common/util/RequestUriUtilTest.java +++ b/common/src/test/java/stirling/software/common/util/RequestUriUtilsTest.java @@ -7,45 +7,45 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -public class RequestUriUtilTest { +public class RequestUriUtilsTest { @Test void testIsStaticResource() { // Test static resources without context path assertTrue( - RequestUriUtil.isStaticResource("/css/styles.css"), "CSS files should be static"); - assertTrue(RequestUriUtil.isStaticResource("/js/script.js"), "JS files should be static"); + RequestUriUtils.isStaticResource("/css/styles.css"), "CSS files should be static"); + assertTrue(RequestUriUtils.isStaticResource("/js/script.js"), "JS files should be static"); assertTrue( - RequestUriUtil.isStaticResource("/images/logo.png"), + RequestUriUtils.isStaticResource("/images/logo.png"), "Image files should be static"); assertTrue( - RequestUriUtil.isStaticResource("/public/index.html"), + RequestUriUtils.isStaticResource("/public/index.html"), "Public files should be static"); assertTrue( - RequestUriUtil.isStaticResource("/pdfjs/pdf.worker.js"), + RequestUriUtils.isStaticResource("/pdfjs/pdf.worker.js"), "PDF.js files should be static"); assertTrue( - RequestUriUtil.isStaticResource("/api/v1/info/status"), + RequestUriUtils.isStaticResource("/api/v1/info/status"), "API status should be static"); assertTrue( - RequestUriUtil.isStaticResource("/some-path/icon.svg"), + RequestUriUtils.isStaticResource("/some-path/icon.svg"), "SVG files should be static"); - assertTrue(RequestUriUtil.isStaticResource("/login"), "Login page should be static"); - assertTrue(RequestUriUtil.isStaticResource("/error"), "Error page should be static"); + assertTrue(RequestUriUtils.isStaticResource("/login"), "Login page should be static"); + assertTrue(RequestUriUtils.isStaticResource("/error"), "Error page should be static"); // Test non-static resources assertFalse( - RequestUriUtil.isStaticResource("/api/v1/users"), + RequestUriUtils.isStaticResource("/api/v1/users"), "API users should not be static"); assertFalse( - RequestUriUtil.isStaticResource("/api/v1/orders"), + RequestUriUtils.isStaticResource("/api/v1/orders"), "API orders should not be static"); - assertFalse(RequestUriUtil.isStaticResource("/"), "Root path should not be static"); + assertFalse(RequestUriUtils.isStaticResource("/"), "Root path should not be static"); assertFalse( - RequestUriUtil.isStaticResource("/register"), + RequestUriUtils.isStaticResource("/register"), "Register page should not be static"); assertFalse( - RequestUriUtil.isStaticResource("/api/v1/products"), + RequestUriUtils.isStaticResource("/api/v1/products"), "API products should not be static"); } @@ -55,24 +55,24 @@ public class RequestUriUtilTest { // Test static resources with context path assertTrue( - RequestUriUtil.isStaticResource(contextPath, contextPath + "/css/styles.css"), + RequestUriUtils.isStaticResource(contextPath, contextPath + "/css/styles.css"), "CSS with context path should be static"); assertTrue( - RequestUriUtil.isStaticResource(contextPath, contextPath + "/js/script.js"), + RequestUriUtils.isStaticResource(contextPath, contextPath + "/js/script.js"), "JS with context path should be static"); assertTrue( - RequestUriUtil.isStaticResource(contextPath, contextPath + "/images/logo.png"), + RequestUriUtils.isStaticResource(contextPath, contextPath + "/images/logo.png"), "Images with context path should be static"); assertTrue( - RequestUriUtil.isStaticResource(contextPath, contextPath + "/login"), + RequestUriUtils.isStaticResource(contextPath, contextPath + "/login"), "Login with context path should be static"); // Test non-static resources with context path assertFalse( - RequestUriUtil.isStaticResource(contextPath, contextPath + "/api/v1/users"), + RequestUriUtils.isStaticResource(contextPath, contextPath + "/api/v1/users"), "API users with context path should not be static"); assertFalse( - RequestUriUtil.isStaticResource(contextPath, "/"), + RequestUriUtils.isStaticResource(contextPath, "/"), "Root path with context path should not be static"); } @@ -92,7 +92,7 @@ public class RequestUriUtilTest { }) void testIsStaticResourceWithFileExtensions(String path) { assertTrue( - RequestUriUtil.isStaticResource(path), + RequestUriUtils.isStaticResource(path), "Files with specific extensions should be static regardless of path"); } @@ -100,59 +100,59 @@ public class RequestUriUtilTest { void testIsTrackableResource() { // Test non-trackable resources (returns false) assertFalse( - RequestUriUtil.isTrackableResource("/js/script.js"), + RequestUriUtils.isTrackableResource("/js/script.js"), "JS files should not be trackable"); assertFalse( - RequestUriUtil.isTrackableResource("/v1/api-docs"), + RequestUriUtils.isTrackableResource("/v1/api-docs"), "API docs should not be trackable"); assertFalse( - RequestUriUtil.isTrackableResource("robots.txt"), + RequestUriUtils.isTrackableResource("robots.txt"), "robots.txt should not be trackable"); assertFalse( - RequestUriUtil.isTrackableResource("/images/logo.png"), + RequestUriUtils.isTrackableResource("/images/logo.png"), "Images should not be trackable"); assertFalse( - RequestUriUtil.isTrackableResource("/styles.css"), + RequestUriUtils.isTrackableResource("/styles.css"), "CSS files should not be trackable"); assertFalse( - RequestUriUtil.isTrackableResource("/script.js.map"), + RequestUriUtils.isTrackableResource("/script.js.map"), "Map files should not be trackable"); assertFalse( - RequestUriUtil.isTrackableResource("/icon.svg"), + RequestUriUtils.isTrackableResource("/icon.svg"), "SVG files should not be trackable"); assertFalse( - RequestUriUtil.isTrackableResource("/popularity.txt"), + RequestUriUtils.isTrackableResource("/popularity.txt"), "Popularity file should not be trackable"); assertFalse( - RequestUriUtil.isTrackableResource("/script.js"), + RequestUriUtils.isTrackableResource("/script.js"), "JS files should not be trackable"); assertFalse( - RequestUriUtil.isTrackableResource("/swagger/index.html"), + RequestUriUtils.isTrackableResource("/swagger/index.html"), "Swagger files should not be trackable"); assertFalse( - RequestUriUtil.isTrackableResource("/api/v1/info/status"), + RequestUriUtils.isTrackableResource("/api/v1/info/status"), "API info should not be trackable"); assertFalse( - RequestUriUtil.isTrackableResource("/site.webmanifest"), + RequestUriUtils.isTrackableResource("/site.webmanifest"), "Webmanifest should not be trackable"); assertFalse( - RequestUriUtil.isTrackableResource("/fonts/font.woff"), + RequestUriUtils.isTrackableResource("/fonts/font.woff"), "Fonts should not be trackable"); assertFalse( - RequestUriUtil.isTrackableResource("/pdfjs/viewer.js"), + RequestUriUtils.isTrackableResource("/pdfjs/viewer.js"), "PDF.js files should not be trackable"); // Test trackable resources (returns true) - assertTrue(RequestUriUtil.isTrackableResource("/login"), "Login page should be trackable"); + assertTrue(RequestUriUtils.isTrackableResource("/login"), "Login page should be trackable"); assertTrue( - RequestUriUtil.isTrackableResource("/register"), + RequestUriUtils.isTrackableResource("/register"), "Register page should be trackable"); assertTrue( - RequestUriUtil.isTrackableResource("/api/v1/users"), + RequestUriUtils.isTrackableResource("/api/v1/users"), "API users should be trackable"); - assertTrue(RequestUriUtil.isTrackableResource("/"), "Root path should be trackable"); + assertTrue(RequestUriUtils.isTrackableResource("/"), "Root path should be trackable"); assertTrue( - RequestUriUtil.isTrackableResource("/some-other-path"), + RequestUriUtils.isTrackableResource("/some-other-path"), "Other paths should be trackable"); } @@ -162,27 +162,27 @@ public class RequestUriUtilTest { // Test with context path assertFalse( - RequestUriUtil.isTrackableResource(contextPath, "/js/script.js"), + RequestUriUtils.isTrackableResource(contextPath, "/js/script.js"), "JS files should not be trackable with context path"); assertTrue( - RequestUriUtil.isTrackableResource(contextPath, "/login"), + RequestUriUtils.isTrackableResource(contextPath, "/login"), "Login page should be trackable with context path"); // Additional tests with context path assertFalse( - RequestUriUtil.isTrackableResource(contextPath, "/fonts/custom.woff"), + RequestUriUtils.isTrackableResource(contextPath, "/fonts/custom.woff"), "Font files should not be trackable with context path"); assertFalse( - RequestUriUtil.isTrackableResource(contextPath, "/images/header.png"), + RequestUriUtils.isTrackableResource(contextPath, "/images/header.png"), "Images should not be trackable with context path"); assertFalse( - RequestUriUtil.isTrackableResource(contextPath, "/swagger/ui.html"), + RequestUriUtils.isTrackableResource(contextPath, "/swagger/ui.html"), "Swagger UI should not be trackable with context path"); assertTrue( - RequestUriUtil.isTrackableResource(contextPath, "/account/profile"), + RequestUriUtils.isTrackableResource(contextPath, "/account/profile"), "Account page should be trackable with context path"); assertTrue( - RequestUriUtil.isTrackableResource(contextPath, "/pdf/view"), + RequestUriUtils.isTrackableResource(contextPath, "/pdf/view"), "PDF view page should be trackable with context path"); } @@ -206,7 +206,7 @@ public class RequestUriUtilTest { }) void testNonTrackableResources(String path) { assertFalse( - RequestUriUtil.isTrackableResource(path), + RequestUriUtils.isTrackableResource(path), "Resources matching patterns should not be trackable: " + path); } @@ -229,22 +229,22 @@ public class RequestUriUtilTest { }) void testTrackableResources(String path) { assertTrue( - RequestUriUtil.isTrackableResource(path), + RequestUriUtils.isTrackableResource(path), "App routes should be trackable: " + path); } @Test void testEdgeCases() { // Test with empty strings - assertFalse(RequestUriUtil.isStaticResource("", ""), "Empty path should not be static"); - assertTrue(RequestUriUtil.isTrackableResource("", ""), "Empty path should be trackable"); + assertFalse(RequestUriUtils.isStaticResource("", ""), "Empty path should not be static"); + assertTrue(RequestUriUtils.isTrackableResource("", ""), "Empty path should be trackable"); // Test with null-like behavior (would actually throw NPE in real code) // These are not actual null tests but shows handling of odd cases - assertFalse(RequestUriUtil.isStaticResource("null"), "String 'null' should not be static"); + assertFalse(RequestUriUtils.isStaticResource("null"), "String 'null' should not be static"); // Test String "null" as a path - boolean isTrackable = RequestUriUtil.isTrackableResource("null"); + boolean isTrackable = RequestUriUtils.isTrackableResource("null"); assertTrue(isTrackable, "String 'null' should be trackable"); // Mixed case extensions test - note that Java's endsWith() is case-sensitive @@ -252,31 +252,31 @@ public class RequestUriUtilTest { // Always test the lowercase versions which should definitely work assertTrue( - RequestUriUtil.isStaticResource("/logo.png"), "PNG (lowercase) should be static"); + RequestUriUtils.isStaticResource("/logo.png"), "PNG (lowercase) should be static"); assertTrue( - RequestUriUtil.isStaticResource("/icon.svg"), "SVG (lowercase) should be static"); + RequestUriUtils.isStaticResource("/icon.svg"), "SVG (lowercase) should be static"); // Path with query parameters assertFalse( - RequestUriUtil.isStaticResource("/api/users?page=1"), + RequestUriUtils.isStaticResource("/api/users?page=1"), "Path with query params should respect base path"); assertTrue( - RequestUriUtil.isStaticResource("/images/logo.png?v=123"), + RequestUriUtils.isStaticResource("/images/logo.png?v=123"), "Static resource with query params should still be static"); // Paths with fragments assertTrue( - RequestUriUtil.isStaticResource("/css/styles.css#section1"), + RequestUriUtils.isStaticResource("/css/styles.css#section1"), "CSS with fragment should be static"); // Multiple dots in filename assertTrue( - RequestUriUtil.isStaticResource("/js/jquery.min.js"), + RequestUriUtils.isStaticResource("/js/jquery.min.js"), "JS with multiple dots should be static"); // Special characters in path assertTrue( - RequestUriUtil.isStaticResource("/images/user's-photo.png"), + RequestUriUtils.isStaticResource("/images/user's-photo.png"), "Path with special chars should be handled correctly"); } @@ -284,28 +284,28 @@ public class RequestUriUtilTest { void testComplexPaths() { // Test complex static resource paths assertTrue( - RequestUriUtil.isStaticResource("/css/theme/dark/styles.css"), + RequestUriUtils.isStaticResource("/css/theme/dark/styles.css"), "Nested CSS should be static"); assertTrue( - RequestUriUtil.isStaticResource("/fonts/open-sans/bold/font.woff"), + RequestUriUtils.isStaticResource("/fonts/open-sans/bold/font.woff"), "Nested font should be static"); assertTrue( - RequestUriUtil.isStaticResource("/js/vendor/jquery/3.5.1/jquery.min.js"), + RequestUriUtils.isStaticResource("/js/vendor/jquery/3.5.1/jquery.min.js"), "Versioned JS should be static"); // Test complex paths with context String contextPath = "/app"; assertTrue( - RequestUriUtil.isStaticResource( + RequestUriUtils.isStaticResource( contextPath, contextPath + "/css/theme/dark/styles.css"), "Nested CSS with context should be static"); // Test boundary cases for isTrackableResource assertFalse( - RequestUriUtil.isTrackableResource("/js-framework/components"), + RequestUriUtils.isTrackableResource("/js-framework/components"), "Path starting with js- should not be treated as JS resource"); assertFalse( - RequestUriUtil.isTrackableResource("/fonts-selection"), + RequestUriUtils.isTrackableResource("/fonts-selection"), "Path starting with fonts- should not be treated as font resource"); } } diff --git a/src/main/java/stirling/software/SPDF/EE/KeygenLicenseVerifier.java b/src/main/java/stirling/software/SPDF/EE/KeygenLicenseVerifier.java index 25e9fefec..c760a83c9 100644 --- a/src/main/java/stirling/software/SPDF/EE/KeygenLicenseVerifier.java +++ b/src/main/java/stirling/software/SPDF/EE/KeygenLicenseVerifier.java @@ -20,7 +20,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.common.model.ApplicationProperties; -import stirling.software.common.util.GeneralUtil; +import stirling.software.common.util.GeneralUtils; @Service @Slf4j @@ -765,7 +765,7 @@ public class KeygenLicenseVerifier { } private String generateMachineFingerprint() { - return GeneralUtil.generateMachineFingerprint(); + return GeneralUtils.generateMachineFingerprint(); } /** diff --git a/src/main/java/stirling/software/SPDF/EE/LicenseKeyChecker.java b/src/main/java/stirling/software/SPDF/EE/LicenseKeyChecker.java index f0cb76a8e..c1a6f199c 100644 --- a/src/main/java/stirling/software/SPDF/EE/LicenseKeyChecker.java +++ b/src/main/java/stirling/software/SPDF/EE/LicenseKeyChecker.java @@ -12,7 +12,7 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.EE.KeygenLicenseVerifier.License; import stirling.software.common.model.ApplicationProperties; -import stirling.software.common.util.GeneralUtil; +import stirling.software.common.util.GeneralUtils; @Component @Slf4j @@ -88,7 +88,7 @@ public class LicenseKeyChecker { public void updateLicenseKey(String newKey) throws IOException { applicationProperties.getPremium().setKey(newKey); - GeneralUtil.saveKeyToSettings("EnterpriseEdition.key", newKey); + GeneralUtils.saveKeyToSettings("EnterpriseEdition.key", newKey); checkLicense(); } diff --git a/src/main/java/stirling/software/SPDF/config/InitialSetup.java b/src/main/java/stirling/software/SPDF/config/InitialSetup.java index 8722a2c5f..d61e2ca6c 100644 --- a/src/main/java/stirling/software/SPDF/config/InitialSetup.java +++ b/src/main/java/stirling/software/SPDF/config/InitialSetup.java @@ -18,7 +18,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.common.model.ApplicationProperties; -import stirling.software.common.util.GeneralUtil; +import stirling.software.common.util.GeneralUtils; @Component @Slf4j @@ -39,31 +39,31 @@ public class InitialSetup { public void initUUIDKey() throws IOException { String uuid = applicationProperties.getAutomaticallyGenerated().getUUID(); - if (!GeneralUtil.isValidUUID(uuid)) { + if (!GeneralUtils.isValidUUID(uuid)) { // Generating a random UUID as the secret key uuid = UUID.randomUUID().toString(); - GeneralUtil.saveKeyToSettings("AutomaticallyGenerated.UUID", uuid); + GeneralUtils.saveKeyToSettings("AutomaticallyGenerated.UUID", uuid); applicationProperties.getAutomaticallyGenerated().setUUID(uuid); } } public void initSecretKey() throws IOException { String secretKey = applicationProperties.getAutomaticallyGenerated().getKey(); - if (!GeneralUtil.isValidUUID(secretKey)) { + if (!GeneralUtils.isValidUUID(secretKey)) { // Generating a random UUID as the secret key secretKey = UUID.randomUUID().toString(); - GeneralUtil.saveKeyToSettings("AutomaticallyGenerated.key", secretKey); + GeneralUtils.saveKeyToSettings("AutomaticallyGenerated.key", secretKey); applicationProperties.getAutomaticallyGenerated().setKey(secretKey); } } public void initEnableCSRFSecurity() throws IOException { - if (GeneralUtil.isVersionHigher( + if (GeneralUtils.isVersionHigher( "0.36.0", applicationProperties.getAutomaticallyGenerated().getAppVersion())) { Boolean csrf = applicationProperties.getSecurity().getCsrfDisabled(); if (!csrf) { - GeneralUtil.saveKeyToSettings("security.csrfDisabled", false); - GeneralUtil.saveKeyToSettings("system.enableAnalytics", true); + GeneralUtils.saveKeyToSettings("security.csrfDisabled", false); + GeneralUtils.saveKeyToSettings("system.enableAnalytics", true); applicationProperties.getSecurity().setCsrfDisabled(false); } } @@ -74,14 +74,14 @@ public class InitialSetup { String termsUrl = applicationProperties.getLegal().getTermsAndConditions(); if (StringUtils.isEmpty(termsUrl)) { String defaultTermsUrl = "https://www.stirlingpdf.com/terms"; - GeneralUtil.saveKeyToSettings("legal.termsAndConditions", defaultTermsUrl); + GeneralUtils.saveKeyToSettings("legal.termsAndConditions", defaultTermsUrl); applicationProperties.getLegal().setTermsAndConditions(defaultTermsUrl); } // Initialize Privacy Policy String privacyUrl = applicationProperties.getLegal().getPrivacyPolicy(); if (StringUtils.isEmpty(privacyUrl)) { String defaultPrivacyUrl = "https://www.stirlingpdf.com/privacy-policy"; - GeneralUtil.saveKeyToSettings("legal.privacyPolicy", defaultPrivacyUrl); + GeneralUtils.saveKeyToSettings("legal.privacyPolicy", defaultPrivacyUrl); applicationProperties.getLegal().setPrivacyPolicy(defaultPrivacyUrl); } } @@ -95,7 +95,7 @@ public class InitialSetup { appVersion = props.getProperty("version"); } catch (Exception e) { } - GeneralUtil.saveKeyToSettings("AutomaticallyGenerated.appVersion", appVersion); + GeneralUtils.saveKeyToSettings("AutomaticallyGenerated.appVersion", appVersion); applicationProperties.getAutomaticallyGenerated().setAppVersion(appVersion); } } diff --git a/src/main/java/stirling/software/SPDF/config/MetricsFilter.java b/src/main/java/stirling/software/SPDF/config/MetricsFilter.java index cb0062c26..7813222e2 100644 --- a/src/main/java/stirling/software/SPDF/config/MetricsFilter.java +++ b/src/main/java/stirling/software/SPDF/config/MetricsFilter.java @@ -16,7 +16,7 @@ import jakarta.servlet.http.HttpSession; import lombok.RequiredArgsConstructor; -import stirling.software.common.util.RequestUriUtil; +import stirling.software.common.util.RequestUriUtils; @Component @RequiredArgsConstructor @@ -30,7 +30,7 @@ public class MetricsFilter extends OncePerRequestFilter { throws ServletException, IOException { String uri = request.getRequestURI(); - if (RequestUriUtil.isTrackableResource(request.getContextPath(), uri)) { + if (RequestUriUtils.isTrackableResource(request.getContextPath(), uri)) { HttpSession session = request.getSession(false); String sessionId = (session != null) ? session.getId() : "no-session"; Counter counter = diff --git a/src/main/java/stirling/software/SPDF/config/security/CustomAuthenticationSuccessHandler.java b/src/main/java/stirling/software/SPDF/config/security/CustomAuthenticationSuccessHandler.java index 345361238..0f4fbecb8 100644 --- a/src/main/java/stirling/software/SPDF/config/security/CustomAuthenticationSuccessHandler.java +++ b/src/main/java/stirling/software/SPDF/config/security/CustomAuthenticationSuccessHandler.java @@ -13,7 +13,7 @@ import jakarta.servlet.http.HttpSession; import lombok.extern.slf4j.Slf4j; -import stirling.software.common.util.RequestUriUtil; +import stirling.software.common.util.RequestUriUtils; @Slf4j public class CustomAuthenticationSuccessHandler @@ -48,7 +48,7 @@ public class CustomAuthenticationSuccessHandler : null; if (savedRequest != null - && !RequestUriUtil.isStaticResource( + && !RequestUriUtils.isStaticResource( request.getContextPath(), savedRequest.getRedirectUrl())) { // Redirect to the original destination super.onAuthenticationSuccess(request, response, authentication); diff --git a/src/main/java/stirling/software/SPDF/config/security/FirstLoginFilter.java b/src/main/java/stirling/software/SPDF/config/security/FirstLoginFilter.java index 927d8485b..edada16dd 100644 --- a/src/main/java/stirling/software/SPDF/config/security/FirstLoginFilter.java +++ b/src/main/java/stirling/software/SPDF/config/security/FirstLoginFilter.java @@ -20,7 +20,7 @@ import jakarta.servlet.http.HttpSession; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.User; -import stirling.software.common.util.RequestUriUtil; +import stirling.software.common.util.RequestUriUtils; @Slf4j @Component @@ -40,7 +40,7 @@ public class FirstLoginFilter extends OncePerRequestFilter { String requestURI = request.getRequestURI(); String contextPath = request.getContextPath(); // Check if the request is for static resources - boolean isStaticResource = RequestUriUtil.isStaticResource(contextPath, requestURI); + boolean isStaticResource = RequestUriUtils.isStaticResource(contextPath, requestURI); // If it's a static resource, just continue the filter chain and skip the logic below if (isStaticResource) { filterChain.doFilter(request, response); diff --git a/src/main/java/stirling/software/SPDF/config/security/IPRateLimitingFilter.java b/src/main/java/stirling/software/SPDF/config/security/IPRateLimitingFilter.java index 405e0f769..5d2c67350 100644 --- a/src/main/java/stirling/software/SPDF/config/security/IPRateLimitingFilter.java +++ b/src/main/java/stirling/software/SPDF/config/security/IPRateLimitingFilter.java @@ -9,7 +9,7 @@ import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; -import stirling.software.common.util.RequestUriUtil; +import stirling.software.common.util.RequestUriUtils; @RequiredArgsConstructor public class IPRateLimitingFilter implements Filter { @@ -29,7 +29,7 @@ public class IPRateLimitingFilter implements Filter { String requestURI = httpRequest.getRequestURI(); // Check if the request is for static resources boolean isStaticResource = - RequestUriUtil.isStaticResource(httpRequest.getContextPath(), requestURI); + RequestUriUtils.isStaticResource(httpRequest.getContextPath(), requestURI); // If it's a static resource, just continue the filter chain and skip the logic below if (isStaticResource) { diff --git a/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java b/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java index 61b198635..986118466 100644 --- a/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java +++ b/src/main/java/stirling/software/SPDF/config/security/oauth2/CustomOAuth2AuthenticationSuccessHandler.java @@ -23,7 +23,7 @@ import stirling.software.SPDF.model.AuthenticationType; import stirling.software.common.model.ApplicationProperties; import stirling.software.common.model.ApplicationProperties.Security.OAUTH2; import stirling.software.common.model.exception.UnsupportedProviderException; -import stirling.software.common.util.RequestUriUtil; +import stirling.software.common.util.RequestUriUtils; @RequiredArgsConstructor public class CustomOAuth2AuthenticationSuccessHandler @@ -56,7 +56,7 @@ public class CustomOAuth2AuthenticationSuccessHandler : null; if (savedRequest != null - && !RequestUriUtil.isStaticResource(contextPath, savedRequest.getRedirectUrl())) { + && !RequestUriUtils.isStaticResource(contextPath, savedRequest.getRedirectUrl())) { // Redirect to the original destination super.onAuthenticationSuccess(request, response, authentication); } else { diff --git a/src/main/java/stirling/software/SPDF/config/security/oauth2/OAuth2Configuration.java b/src/main/java/stirling/software/SPDF/config/security/oauth2/OAuth2Configuration.java index 1879ed1d8..98d69113c 100644 --- a/src/main/java/stirling/software/SPDF/config/security/oauth2/OAuth2Configuration.java +++ b/src/main/java/stirling/software/SPDF/config/security/oauth2/OAuth2Configuration.java @@ -1,8 +1,8 @@ package stirling.software.SPDF.config.security.oauth2; import static org.springframework.security.oauth2.core.AuthorizationGrantType.AUTHORIZATION_CODE; -import static stirling.software.common.util.ProviderUtil.validateProvider; -import static stirling.software.common.util.ValidationUtil.isStringEmpty; +import static stirling.software.common.util.ProviderUtils.validateProvider; +import static stirling.software.common.util.ValidationUtils.isStringEmpty; import java.util.ArrayList; import java.util.HashSet; diff --git a/src/main/java/stirling/software/SPDF/config/security/saml2/CustomSaml2AuthenticationSuccessHandler.java b/src/main/java/stirling/software/SPDF/config/security/saml2/CustomSaml2AuthenticationSuccessHandler.java index 74c0da443..94fddae62 100644 --- a/src/main/java/stirling/software/SPDF/config/security/saml2/CustomSaml2AuthenticationSuccessHandler.java +++ b/src/main/java/stirling/software/SPDF/config/security/saml2/CustomSaml2AuthenticationSuccessHandler.java @@ -22,7 +22,7 @@ import stirling.software.SPDF.model.AuthenticationType; import stirling.software.common.model.ApplicationProperties; import stirling.software.common.model.ApplicationProperties.Security.SAML2; import stirling.software.common.model.exception.UnsupportedProviderException; -import stirling.software.common.util.RequestUriUtil; +import stirling.software.common.util.RequestUriUtils; @AllArgsConstructor @Slf4j @@ -58,7 +58,7 @@ public class CustomSaml2AuthenticationSuccessHandler savedRequest != null); if (savedRequest != null - && !RequestUriUtil.isStaticResource( + && !RequestUriUtils.isStaticResource( contextPath, savedRequest.getRedirectUrl())) { log.debug( "Valid saved request found, redirecting to original destination: {}", diff --git a/src/main/java/stirling/software/SPDF/controller/api/MergeController.java b/src/main/java/stirling/software/SPDF/controller/api/MergeController.java index 509ef054d..146db6a3a 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/MergeController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/MergeController.java @@ -33,7 +33,7 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.general.MergePdfsRequest; import stirling.software.common.service.CustomPDFDocumentFactory; -import stirling.software.common.util.GeneralUtil; +import stirling.software.common.util.GeneralUtils; import stirling.software.common.util.WebResponseUtils; @RestController @@ -137,7 +137,7 @@ public class MergeController { for (MultipartFile multipartFile : files) { totalSize += multipartFile.getSize(); File tempFile = - GeneralUtil.convertMultipartFileToFile( + GeneralUtils.convertMultipartFileToFile( multipartFile); // Convert MultipartFile to File filesToDelete.add(tempFile); // Add temp file to the list for later deletion mergerUtility.addSource(tempFile); // Add source file to the merger utility diff --git a/src/main/java/stirling/software/SPDF/controller/api/PdfOverlayController.java b/src/main/java/stirling/software/SPDF/controller/api/PdfOverlayController.java index c725563b3..e6fc2c561 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/PdfOverlayController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/PdfOverlayController.java @@ -28,7 +28,7 @@ import lombok.RequiredArgsConstructor; import stirling.software.SPDF.model.api.general.OverlayPdfsRequest; import stirling.software.common.service.CustomPDFDocumentFactory; -import stirling.software.common.util.GeneralUtil; +import stirling.software.common.util.GeneralUtils; import stirling.software.common.util.WebResponseUtils; @RestController @@ -56,7 +56,7 @@ public class PdfOverlayController { try { for (int i = 0; i < overlayFiles.length; i++) { - overlayPdfFiles[i] = GeneralUtil.multipartToFile(overlayFiles[i]); + overlayPdfFiles[i] = GeneralUtils.multipartToFile(overlayFiles[i]); } String mode = request.getOverlayMode(); // "SequentialOverlay", "InterleavedOverlay", diff --git a/src/main/java/stirling/software/SPDF/controller/api/RearrangePagesPDFController.java b/src/main/java/stirling/software/SPDF/controller/api/RearrangePagesPDFController.java index 356a8490f..3bf2ec802 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/RearrangePagesPDFController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/RearrangePagesPDFController.java @@ -25,7 +25,7 @@ import stirling.software.SPDF.model.SortTypes; import stirling.software.SPDF.model.api.PDFWithPageNums; import stirling.software.SPDF.model.api.general.RearrangePagesRequest; import stirling.software.common.service.CustomPDFDocumentFactory; -import stirling.software.common.util.GeneralUtil; +import stirling.software.common.util.GeneralUtils; import stirling.software.common.util.WebResponseUtils; @RestController @@ -56,7 +56,7 @@ public class RearrangePagesPDFController { String[] pageOrderArr = pagesToDelete.split(","); List pagesToRemove = - GeneralUtil.parsePageList(pageOrderArr, document.getNumberOfPages(), false); + GeneralUtils.parsePageList(pageOrderArr, document.getNumberOfPages(), false); Collections.sort(pagesToRemove); @@ -262,7 +262,7 @@ public class RearrangePagesPDFController { && !"custom".equals(sortType.toLowerCase())) { newPageOrder = processSortTypes(sortType, totalPages, pageOrder); } else { - newPageOrder = GeneralUtil.parsePageList(pageOrderArr, totalPages, false); + newPageOrder = GeneralUtils.parsePageList(pageOrderArr, totalPages, false); } log.info("newPageOrder = " + newPageOrder); log.info("totalPages = " + totalPages); diff --git a/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java b/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java index 13ee8545f..0e9cd96dc 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java @@ -19,7 +19,7 @@ import lombok.RequiredArgsConstructor; import stirling.software.SPDF.config.EndpointConfiguration; import stirling.software.common.configuration.InstallationPathConfig; import stirling.software.common.model.ApplicationProperties; -import stirling.software.common.util.GeneralUtil; +import stirling.software.common.util.GeneralUtils; @Controller @Tag(name = "Settings", description = "Settings APIs") @@ -40,7 +40,7 @@ public class SettingsController { "Setting has already been set, To adjust please edit " + InstallationPathConfig.getSettingsPath()); } - GeneralUtil.saveKeyToSettings("system.enableAnalytics", enabled); + GeneralUtils.saveKeyToSettings("system.enableAnalytics", enabled); applicationProperties.getSystem().setEnableAnalytics(enabled); return ResponseEntity.ok("Updated"); } diff --git a/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySizeController.java b/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySizeController.java index 2b1ffa6e3..3df62816f 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySizeController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySizeController.java @@ -26,7 +26,7 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.general.SplitPdfBySizeOrCountRequest; import stirling.software.common.service.CustomPDFDocumentFactory; -import stirling.software.common.util.GeneralUtil; +import stirling.software.common.util.GeneralUtils; import stirling.software.common.util.WebResponseUtils; @RestController @@ -81,7 +81,7 @@ public class SplitPdfBySizeController { if (type == 0) { log.debug("Processing split by size"); - long maxBytes = GeneralUtil.convertSizeToBytes(value); + long maxBytes = GeneralUtils.convertSizeToBytes(value); log.debug("Max bytes per document: {}", maxBytes); handleSplitBySize(sourceDocument, maxBytes, zipOut, filename); } else if (type == 1) { diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java index dd2faa5ea..3125f8335 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java @@ -34,7 +34,7 @@ import stirling.software.SPDF.model.api.converters.ConvertToImageRequest; import stirling.software.SPDF.model.api.converters.ConvertToPdfRequest; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.CheckProgramInstall; -import stirling.software.common.util.GeneralUtil; +import stirling.software.common.util.GeneralUtils; import stirling.software.common.util.PdfUtils; import stirling.software.common.util.ProcessExecutor; import stirling.software.common.util.ProcessExecutor.ProcessExecutorResult; @@ -251,7 +251,7 @@ public class ConvertImgPDFController { // Load the input PDF PDDocument document = pdfDocumentFactory.load(pdfFile); int totalPages = document.getNumberOfPages(); - List newPageOrder = GeneralUtil.parsePageList(pageOrderArr, totalPages, false); + List newPageOrder = GeneralUtils.parsePageList(pageOrderArr, totalPages, false); // Create a new list to hold the pages in the new order List newPages = new ArrayList<>(); diff --git a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java index c57bf4213..b16cc01d9 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java +++ b/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java @@ -23,7 +23,7 @@ import stirling.software.SPDF.model.api.converters.UrlToPdfRequest; import stirling.software.common.configuration.RuntimePathConfig; import stirling.software.common.model.ApplicationProperties; import stirling.software.common.service.CustomPDFDocumentFactory; -import stirling.software.common.util.GeneralUtil; +import stirling.software.common.util.GeneralUtils; import stirling.software.common.util.ProcessExecutor; import stirling.software.common.util.ProcessExecutor.ProcessExecutorResult; import stirling.software.common.util.WebResponseUtils; @@ -53,12 +53,12 @@ public class ConvertWebsiteToPDF { throw new IllegalArgumentException("This endpoint has been disabled by the admin."); } // Validate the URL format - if (!URL.matches("^https?://.*") || !GeneralUtil.isValidURL(URL)) { + if (!URL.matches("^https?://.*") || !GeneralUtils.isValidURL(URL)) { throw new IllegalArgumentException("Invalid URL format provided."); } // validate the URL is reachable - if (!GeneralUtil.isURLReachable(URL)) { + if (!GeneralUtils.isURLReachable(URL)) { throw new IllegalArgumentException("URL is not reachable, please provide a valid URL."); } diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/CompressController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/CompressController.java index b3d82731a..8509f5056 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/CompressController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/CompressController.java @@ -52,7 +52,7 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.config.EndpointConfiguration; import stirling.software.SPDF.model.api.misc.OptimizePdfRequest; import stirling.software.common.service.CustomPDFDocumentFactory; -import stirling.software.common.util.GeneralUtil; +import stirling.software.common.util.GeneralUtils; import stirling.software.common.util.ProcessExecutor; import stirling.software.common.util.ProcessExecutor.ProcessExecutorResult; import stirling.software.common.util.WebResponseUtils; @@ -111,7 +111,7 @@ public class CompressController { scaleFactor, jpegQuality, convertToGrayscale, - GeneralUtil.formatBytes(originalFileSize)); + GeneralUtils.formatBytes(originalFileSize)); try (PDDocument doc = pdfDocumentFactory.load(pdfFile)) { // Find all unique images in the document @@ -145,8 +145,8 @@ public class CompressController { double overallReduction = 100.0 - ((compressedFileSize * 100.0) / originalFileSize); log.info( "Overall PDF compression: {} → {} (reduced by {}%)", - GeneralUtil.formatBytes(originalFileSize), - GeneralUtil.formatBytes(compressedFileSize), + GeneralUtils.formatBytes(originalFileSize), + GeneralUtils.formatBytes(compressedFileSize), String.format("%.1f", overallReduction)); return newCompressedPDF; } @@ -316,8 +316,8 @@ public class CompressController { log.info( "Image hash {}: Compressed from {} to {} (reduced by {}%)", imageHash, - GeneralUtil.formatBytes(originalSize), - GeneralUtil.formatBytes(compressedSize), + GeneralUtils.formatBytes(originalSize), + GeneralUtils.formatBytes(compressedSize), String.format("%.1f", reductionPercentage)); } else { log.info("Image hash {}: Not suitable for compression, skipping", imageHash); @@ -456,8 +456,8 @@ public class CompressController { stats.nestedImages); log.info( "Total original image size: {}, compressed: {} (reduced by {}%)", - GeneralUtil.formatBytes(stats.totalOriginalBytes), - GeneralUtil.formatBytes(stats.totalCompressedBytes), + GeneralUtils.formatBytes(stats.totalOriginalBytes), + GeneralUtils.formatBytes(stats.totalCompressedBytes), String.format("%.1f", overallImageReduction)); } @@ -673,7 +673,7 @@ public class CompressController { Long expectedOutputSize = 0L; boolean autoMode = false; if (expectedOutputSizeString != null && expectedOutputSizeString.length() > 1) { - expectedOutputSize = GeneralUtil.convertSizeToBytes(expectedOutputSizeString); + expectedOutputSize = GeneralUtils.convertSizeToBytes(expectedOutputSizeString); autoMode = true; } @@ -794,7 +794,7 @@ public class CompressController { throws IOException { long preQpdfSize = Files.size(currentFile); - log.info("Pre-QPDF file size: {}", GeneralUtil.formatBytes(preQpdfSize)); + log.info("Pre-QPDF file size: {}", GeneralUtils.formatBytes(preQpdfSize)); // Map optimization levels to QPDF compression levels int qpdfCompressionLevel; @@ -839,7 +839,7 @@ public class CompressController { double qpdfReduction = 100.0 - ((postQpdfSize * 100.0) / preQpdfSize); log.info( "Post-QPDF file size: {} (reduced by {}%)", - GeneralUtil.formatBytes(postQpdfSize), String.format("%.1f", qpdfReduction)); + GeneralUtils.formatBytes(postQpdfSize), String.format("%.1f", qpdfReduction)); } catch (Exception e) { if (returnCode != null && returnCode.getRc() != 3) { diff --git a/src/main/java/stirling/software/SPDF/controller/api/misc/PageNumbersController.java b/src/main/java/stirling/software/SPDF/controller/api/misc/PageNumbersController.java index eeb3240cb..4233d11e4 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/misc/PageNumbersController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/misc/PageNumbersController.java @@ -26,7 +26,7 @@ import lombok.RequiredArgsConstructor; import stirling.software.SPDF.model.api.misc.AddPageNumbersRequest; import stirling.software.common.service.CustomPDFDocumentFactory; -import stirling.software.common.util.GeneralUtil; +import stirling.software.common.util.GeneralUtils; import stirling.software.common.util.WebResponseUtils; @RestController @@ -80,7 +80,7 @@ public class PageNumbersController { customText = "{n}"; } List pagesToNumberList = - GeneralUtil.parsePageList(pagesToNumber.split(","), document.getNumberOfPages()); + GeneralUtils.parsePageList(pagesToNumber.split(","), document.getNumberOfPages()); for (int i : pagesToNumberList) { PDPage page = document.getPage(i); diff --git a/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java b/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java index facbe8bd9..1e4feb840 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java @@ -36,7 +36,7 @@ import stirling.software.SPDF.model.api.security.RedactPdfRequest; import stirling.software.SPDF.model.api.security.RedactionArea; import stirling.software.SPDF.pdf.TextFinder; import stirling.software.common.service.CustomPDFDocumentFactory; -import stirling.software.common.util.GeneralUtil; +import stirling.software.common.util.GeneralUtils; import stirling.software.common.util.PdfUtils; import stirling.software.common.util.WebResponseUtils; import stirling.software.common.util.propertyeditor.StringToArrayListPropertyEditor; @@ -184,7 +184,8 @@ public class RedactController { String pageNumbersInput = request.getPageNumbers(); String[] parsedPageNumbers = pageNumbersInput != null ? pageNumbersInput.split(",") : new String[0]; - List pageNumbers = GeneralUtil.parsePageList(parsedPageNumbers, pagesCount, false); + List pageNumbers = + GeneralUtils.parsePageList(parsedPageNumbers, pagesCount, false); Collections.sort(pageNumbers); return pageNumbers; } diff --git a/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java b/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java index f031b2e4f..1962dffb8 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java @@ -1,6 +1,6 @@ package stirling.software.SPDF.controller.web; -import static stirling.software.common.util.ProviderUtil.validateProvider; +import static stirling.software.common.util.ProviderUtils.validateProvider; import java.time.Instant; import java.time.temporal.ChronoUnit; diff --git a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java index 139ff0b97..eb51d721a 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java @@ -29,7 +29,7 @@ import stirling.software.SPDF.service.SignatureService; import stirling.software.common.configuration.InstallationPathConfig; import stirling.software.common.configuration.RuntimePathConfig; import stirling.software.common.service.UserServiceInterface; -import stirling.software.common.util.GeneralUtil; +import stirling.software.common.util.GeneralUtils; @Controller @Tag(name = "General", description = "General APIs") @@ -240,7 +240,7 @@ public class GeneralWebController { private List getFontNamesFromLocation(String locationPattern) { try { Resource[] resources = - GeneralUtil.getResourcesFromLocationPattern(locationPattern, resourceLoader); + GeneralUtils.getResourcesFromLocationPattern(locationPattern, resourceLoader); return Arrays.stream(resources) .map( resource -> { diff --git a/src/main/java/stirling/software/SPDF/model/api/PDFWithPageNums.java b/src/main/java/stirling/software/SPDF/model/api/PDFWithPageNums.java index 3720bad65..062c890fc 100644 --- a/src/main/java/stirling/software/SPDF/model/api/PDFWithPageNums.java +++ b/src/main/java/stirling/software/SPDF/model/api/PDFWithPageNums.java @@ -12,7 +12,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import stirling.software.common.model.api.PDFFile; -import stirling.software.common.util.GeneralUtil; +import stirling.software.common.util.GeneralUtils; @Data @EqualsAndHashCode(callSuper = true) @@ -30,6 +30,6 @@ public class PDFWithPageNums extends PDFFile { @Hidden public List getPageNumbersList(PDDocument doc, boolean oneBased) { int pageCount = doc.getNumberOfPages(); - return GeneralUtil.parsePageList(pageNumbers, pageCount, oneBased); + return GeneralUtils.parsePageList(pageNumbers, pageCount, oneBased); } }