diff --git a/app/common/build.gradle b/app/common/build.gradle index 39dab8ded..f79ec6982 100644 --- a/app/common/build.gradle +++ b/app/common/build.gradle @@ -29,7 +29,7 @@ spotless { dependencies { api 'org.springframework.boot:spring-boot-starter-web' api 'org.springframework.boot:spring-boot-starter-aop' - api 'org.springframework.boot:spring-boot-starter-thymeleaf' + // api 'org.springframework.boot:spring-boot-starter-thymeleaf' // Deprecated - UI moved to React frontend api 'com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:20240325.1' api 'com.fathzer:javaluator:3.0.6' api 'com.posthog.java:posthog:1.2.0' diff --git a/app/common/src/main/java/stirling/software/common/configuration/AppConfig.java b/app/common/src/main/java/stirling/software/common/configuration/AppConfig.java index f611f42ca..170261ff8 100644 --- a/app/common/src/main/java/stirling/software/common/configuration/AppConfig.java +++ b/app/common/src/main/java/stirling/software/common/configuration/AppConfig.java @@ -10,7 +10,6 @@ import java.util.Properties; import java.util.function.Predicate; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Lazy; @@ -19,9 +18,7 @@ import org.springframework.context.annotation.Scope; import org.springframework.core.env.Environment; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; -import org.springframework.core.io.ResourceLoader; import org.springframework.util.ClassUtils; -import org.thymeleaf.spring6.SpringTemplateEngine; import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -51,6 +48,7 @@ public class AppConfig { @Value("${server.port:8080}") private String serverPort; + /* Commented out Thymeleaf template engine bean - to be removed when frontend migration is complete @Bean @ConditionalOnProperty(name = "system.customHTMLFiles", havingValue = "true") public SpringTemplateEngine templateEngine(ResourceLoader resourceLoader) { @@ -58,6 +56,7 @@ public class AppConfig { templateEngine.addTemplateResolver(new FileFallbackTemplateResolver(resourceLoader)); return templateEngine; } + */ @Bean(name = "loginEnabled") public boolean loginEnabled() { diff --git a/app/common/src/main/java/stirling/software/common/configuration/FileFallbackTemplateResolver.java b/app/common/src/main/java/stirling/software/common/configuration/FileFallbackTemplateResolver.java index 320d9aaac..9c5e0a7ae 100644 --- a/app/common/src/main/java/stirling/software/common/configuration/FileFallbackTemplateResolver.java +++ b/app/common/src/main/java/stirling/software/common/configuration/FileFallbackTemplateResolver.java @@ -1,19 +1,8 @@ package stirling.software.common.configuration; -import java.io.IOException; -import java.io.InputStream; -import java.util.Map; +/* Commented out entire FileFallbackTemplateResolver class - Thymeleaf dependency removed + * This class will be removed when frontend migration to React is complete -import org.springframework.core.io.Resource; -import org.springframework.core.io.ResourceLoader; -import org.thymeleaf.IEngineConfiguration; -import org.thymeleaf.templateresolver.AbstractConfigurableTemplateResolver; -import org.thymeleaf.templateresource.FileTemplateResource; -import org.thymeleaf.templateresource.ITemplateResource; - -import lombok.extern.slf4j.Slf4j; - -import stirling.software.common.model.InputStreamTemplateResource; @Slf4j public class FileFallbackTemplateResolver extends AbstractConfigurableTemplateResolver { @@ -57,3 +46,4 @@ public class FileFallbackTemplateResolver extends AbstractConfigurableTemplateRe return null; } } +*/ diff --git a/app/common/src/main/java/stirling/software/common/model/InputStreamTemplateResource.java b/app/common/src/main/java/stirling/software/common/model/InputStreamTemplateResource.java index 4bc81cafa..3bac16fef 100644 --- a/app/common/src/main/java/stirling/software/common/model/InputStreamTemplateResource.java +++ b/app/common/src/main/java/stirling/software/common/model/InputStreamTemplateResource.java @@ -1,11 +1,8 @@ package stirling.software.common.model; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; +/* Commented out entire InputStreamTemplateResource class - Thymeleaf dependency removed + * This class will be removed when frontend migration to React is complete -import org.thymeleaf.templateresource.ITemplateResource; public class InputStreamTemplateResource implements ITemplateResource { private InputStream inputStream; @@ -42,3 +39,4 @@ public class InputStreamTemplateResource implements ITemplateResource { return inputStream != null; } } +*/ diff --git a/app/core/src/main/java/stirling/software/SPDF/SPDFApplication.java b/app/core/src/main/java/stirling/software/SPDF/SPDFApplication.java index 2131b4239..288d11a8d 100644 --- a/app/core/src/main/java/stirling/software/SPDF/SPDFApplication.java +++ b/app/core/src/main/java/stirling/software/SPDF/SPDFApplication.java @@ -10,7 +10,6 @@ import java.util.HashMap; import java.util.Map; import java.util.Properties; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.core.env.Environment; @@ -23,7 +22,6 @@ import jakarta.annotation.PreDestroy; import lombok.extern.slf4j.Slf4j; -import stirling.software.SPDF.UI.WebBrowser; import stirling.software.common.configuration.AppConfig; import stirling.software.common.configuration.ConfigInitializer; import stirling.software.common.configuration.InstallationPathConfig; @@ -47,17 +45,15 @@ public class SPDFApplication { private final AppConfig appConfig; private final Environment env; private final ApplicationProperties applicationProperties; - private final WebBrowser webBrowser; + + // private final WebBrowser webBrowser; // Removed - desktop UI eliminated public SPDFApplication( - AppConfig appConfig, - Environment env, - ApplicationProperties applicationProperties, - @Autowired(required = false) WebBrowser webBrowser) { + AppConfig appConfig, Environment env, ApplicationProperties applicationProperties) { this.appConfig = appConfig; this.env = env; this.applicationProperties = applicationProperties; - this.webBrowser = webBrowser; + // this.webBrowser = webBrowser; // Removed - desktop UI eliminated } public static void main(String[] args) throws IOException, InterruptedException { @@ -151,28 +147,31 @@ public class SPDFApplication { serverPortStatic = serverPort; String url = baseUrl + ":" + getStaticPort() + contextPath; - if (webBrowser != null - && Boolean.parseBoolean(System.getProperty("STIRLING_PDF_DESKTOP_UI", "false"))) { - webBrowser.initWebUI(url); - } else { - String browserOpenEnv = env.getProperty("BROWSER_OPEN"); - boolean browserOpen = browserOpenEnv != null && "true".equalsIgnoreCase(browserOpenEnv); - if (browserOpen) { - try { - String os = System.getProperty("os.name").toLowerCase(); - Runtime rt = Runtime.getRuntime(); + // Desktop UI initialization removed - webBrowser dependency eliminated + // Keep backwards compatibility for STIRLING_PDF_DESKTOP_UI system property + if (Boolean.parseBoolean(System.getProperty("STIRLING_PDF_DESKTOP_UI", "false"))) { + log.info("Desktop UI mode enabled, but WebBrowser functionality has been removed"); + // webBrowser.initWebUI(url); // Removed - desktop UI eliminated + } - if (os.contains("win")) { - // For Windows - SystemCommand.runCommand(rt, "rundll32 url.dll,FileProtocolHandler " + url); - } else if (os.contains("mac")) { - SystemCommand.runCommand(rt, "open " + url); - } else if (os.contains("nix") || os.contains("nux")) { - SystemCommand.runCommand(rt, "xdg-open " + url); - } - } catch (IOException e) { - log.error("Error opening browser: {}", e.getMessage()); + // Standard browser opening logic + String browserOpenEnv = env.getProperty("BROWSER_OPEN"); + boolean browserOpen = browserOpenEnv != null && "true".equalsIgnoreCase(browserOpenEnv); + if (browserOpen) { + try { + String os = System.getProperty("os.name").toLowerCase(); + Runtime rt = Runtime.getRuntime(); + + if (os.contains("win")) { + // For Windows + SystemCommand.runCommand(rt, "rundll32 url.dll,FileProtocolHandler " + url); + } else if (os.contains("mac")) { + SystemCommand.runCommand(rt, "open " + url); + } else if (os.contains("nix") || os.contains("nux")) { + SystemCommand.runCommand(rt, "xdg-open " + url); } + } catch (IOException e) { + log.error("Error opening browser: {}", e.getMessage()); } } } @@ -189,9 +188,10 @@ public class SPDFApplication { @PreDestroy public void cleanup() { - if (webBrowser != null) { - webBrowser.cleanup(); - } + // webBrowser cleanup removed - desktop UI eliminated + // if (webBrowser != null) { + // webBrowser.cleanup(); + // } } private static void printStartupLogs() { diff --git a/app/core/src/main/java/stirling/software/SPDF/UI/WebBrowser.java b/app/core/src/main/java/stirling/software/SPDF/UI/WebBrowser.java deleted file mode 100644 index b884888fe..000000000 --- a/app/core/src/main/java/stirling/software/SPDF/UI/WebBrowser.java +++ /dev/null @@ -1,7 +0,0 @@ -package stirling.software.SPDF.UI; - -public interface WebBrowser { - void initWebUI(String url); - - void cleanup(); -} diff --git a/app/core/src/main/java/stirling/software/SPDF/UI/impl/DesktopBrowser.java b/app/core/src/main/java/stirling/software/SPDF/UI/impl/DesktopBrowser.java deleted file mode 100644 index 959e7f354..000000000 --- a/app/core/src/main/java/stirling/software/SPDF/UI/impl/DesktopBrowser.java +++ /dev/null @@ -1,497 +0,0 @@ -package stirling.software.SPDF.UI.impl; - -import java.awt.AWTException; -import java.awt.BorderLayout; -import java.awt.Frame; -import java.awt.Image; -import java.awt.MenuItem; -import java.awt.PopupMenu; -import java.awt.SystemTray; -import java.awt.TrayIcon; -import java.awt.event.WindowEvent; -import java.awt.event.WindowStateListener; -import java.io.File; -import java.io.InputStream; -import java.util.Objects; -import java.util.concurrent.CompletableFuture; - -import javax.imageio.ImageIO; -import javax.swing.JFrame; -import javax.swing.JPanel; -import javax.swing.SwingUtilities; -import javax.swing.Timer; - -import org.cef.CefApp; -import org.cef.CefClient; -import org.cef.CefSettings; -import org.cef.browser.CefBrowser; -import org.cef.callback.CefBeforeDownloadCallback; -import org.cef.callback.CefDownloadItem; -import org.cef.callback.CefDownloadItemCallback; -import org.cef.handler.CefDownloadHandlerAdapter; -import org.cef.handler.CefLoadHandlerAdapter; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.stereotype.Component; - -import jakarta.annotation.PreDestroy; - -import lombok.extern.slf4j.Slf4j; - -import me.friwi.jcefmaven.CefAppBuilder; -import me.friwi.jcefmaven.EnumProgress; -import me.friwi.jcefmaven.MavenCefAppHandlerAdapter; -import me.friwi.jcefmaven.impl.progress.ConsoleProgressHandler; - -import stirling.software.SPDF.UI.WebBrowser; -import stirling.software.common.configuration.InstallationPathConfig; -import stirling.software.common.util.UIScaling; - -@Component -@Slf4j -@ConditionalOnProperty( - name = "STIRLING_PDF_DESKTOP_UI", - havingValue = "true", - matchIfMissing = false) -public class DesktopBrowser implements WebBrowser { - private static CefApp cefApp; - private static CefClient client; - private static CefBrowser browser; - private static JFrame frame; - private static LoadingWindow loadingWindow; - private static volatile boolean browserInitialized = false; - private static TrayIcon trayIcon; - private static SystemTray systemTray; - - public DesktopBrowser() { - SwingUtilities.invokeLater( - () -> { - loadingWindow = new LoadingWindow(null, "Initializing..."); - loadingWindow.setVisible(true); - }); - } - - public void initWebUI(String url) { - CompletableFuture.runAsync( - () -> { - try { - CefAppBuilder builder = new CefAppBuilder(); - configureCefSettings(builder); - builder.setProgressHandler(createProgressHandler()); - builder.setInstallDir( - new File(InstallationPathConfig.getClientWebUIPath())); - // Build and initialize CEF - cefApp = builder.build(); - client = cefApp.createClient(); - - // Set up download handler - setupDownloadHandler(); - - // Create browser and frame on EDT - SwingUtilities.invokeAndWait( - () -> { - browser = client.createBrowser(url, false, false); - setupMainFrame(); - setupLoadHandler(); - - // Force initialize UI after 7 seconds if not already done - Timer timeoutTimer = - new Timer( - 2500, - e -> { - log.warn( - "Loading timeout reached. Forcing" - + " UI transition."); - if (!browserInitialized) { - // Force UI initialization - forceInitializeUI(); - } - }); - timeoutTimer.setRepeats(false); - timeoutTimer.start(); - }); - } catch (Exception e) { - log.error("Error initializing JCEF browser: ", e); - cleanup(); - } - }); - } - - private void configureCefSettings(CefAppBuilder builder) { - CefSettings settings = builder.getCefSettings(); - String basePath = InstallationPathConfig.getClientWebUIPath(); - log.info("basePath " + basePath); - settings.cache_path = new File(basePath + "cache").getAbsolutePath(); - settings.root_cache_path = new File(basePath + "root_cache").getAbsolutePath(); - // settings.browser_subprocess_path = new File(basePath + - // "subprocess").getAbsolutePath(); - // settings.resources_dir_path = new File(basePath + "resources").getAbsolutePath(); - // settings.locales_dir_path = new File(basePath + "locales").getAbsolutePath(); - settings.log_file = new File(basePath, "debug.log").getAbsolutePath(); - - settings.persist_session_cookies = true; - settings.windowless_rendering_enabled = false; - settings.log_severity = CefSettings.LogSeverity.LOGSEVERITY_INFO; - - builder.setAppHandler( - new MavenCefAppHandlerAdapter() { - @Override - public void stateHasChanged(org.cef.CefApp.CefAppState state) { - log.info("CEF state changed: " + state); - if (state == CefApp.CefAppState.TERMINATED) { - System.exit(0); - } - } - }); - } - - private void setupDownloadHandler() { - client.addDownloadHandler( - new CefDownloadHandlerAdapter() { - @Override - public boolean onBeforeDownload( - CefBrowser browser, - CefDownloadItem downloadItem, - String suggestedName, - CefBeforeDownloadCallback callback) { - callback.Continue("", true); - return true; - } - - @Override - public void onDownloadUpdated( - CefBrowser browser, - CefDownloadItem downloadItem, - CefDownloadItemCallback callback) { - if (downloadItem.isComplete()) { - log.info("Download completed: " + downloadItem.getFullPath()); - } else if (downloadItem.isCanceled()) { - log.info("Download canceled: " + downloadItem.getFullPath()); - } - } - }); - } - - private ConsoleProgressHandler createProgressHandler() { - return new ConsoleProgressHandler() { - @Override - public void handleProgress(EnumProgress state, float percent) { - Objects.requireNonNull(state, "state cannot be null"); - SwingUtilities.invokeLater( - () -> { - if (loadingWindow != null) { - switch (state) { - case LOCATING: - loadingWindow.setStatus("Locating Files..."); - loadingWindow.setProgress(0); - break; - case DOWNLOADING: - if (percent >= 0) { - loadingWindow.setStatus( - String.format( - "Downloading additional files: %.0f%%", - percent)); - loadingWindow.setProgress((int) percent); - } - break; - case EXTRACTING: - loadingWindow.setStatus("Extracting files..."); - loadingWindow.setProgress(60); - break; - case INITIALIZING: - loadingWindow.setStatus("Initializing UI..."); - loadingWindow.setProgress(80); - break; - case INITIALIZED: - loadingWindow.setStatus("Finalising startup..."); - loadingWindow.setProgress(90); - break; - } - } - }); - } - }; - } - - private void setupMainFrame() { - frame = new JFrame("Stirling-PDF"); - frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); - frame.setUndecorated(true); - frame.setOpacity(0.0f); - - JPanel contentPane = new JPanel(new BorderLayout()); - contentPane.setDoubleBuffered(true); - contentPane.add(browser.getUIComponent(), BorderLayout.CENTER); - frame.setContentPane(contentPane); - - frame.addWindowListener( - new java.awt.event.WindowAdapter() { - @Override - public void windowClosing(java.awt.event.WindowEvent windowEvent) { - cleanup(); - System.exit(0); - } - }); - - frame.setSize(UIScaling.scaleWidth(1280), UIScaling.scaleHeight(800)); - frame.setLocationRelativeTo(null); - - loadIcon(); - } - - private void setupLoadHandler() { - final long initStartTime = System.currentTimeMillis(); - log.info("Setting up load handler at: {}", initStartTime); - - client.addLoadHandler( - new CefLoadHandlerAdapter() { - @Override - public void onLoadingStateChange( - CefBrowser browser, - boolean isLoading, - boolean canGoBack, - boolean canGoForward) { - log.debug( - "Loading state change - isLoading: {}, canGoBack: {}, canGoForward:" - + " {}, browserInitialized: {}, Time elapsed: {}ms", - isLoading, - canGoBack, - canGoForward, - browserInitialized, - System.currentTimeMillis() - initStartTime); - - if (!isLoading && !browserInitialized) { - log.info( - "Browser finished loading, preparing to initialize UI" - + " components"); - browserInitialized = true; - SwingUtilities.invokeLater( - () -> { - try { - if (loadingWindow != null) { - log.info("Starting UI initialization sequence"); - - // Close loading window first - loadingWindow.setVisible(false); - loadingWindow.dispose(); - loadingWindow = null; - log.info("Loading window disposed"); - - // Then setup the main frame - frame.setVisible(false); - frame.dispose(); - frame.setOpacity(1.0f); - frame.setUndecorated(false); - frame.pack(); - frame.setSize( - UIScaling.scaleWidth(1280), - UIScaling.scaleHeight(800)); - frame.setLocationRelativeTo(null); - log.debug("Frame reconfigured"); - - // Show the main frame - frame.setVisible(true); - frame.requestFocus(); - frame.toFront(); - log.info("Main frame displayed and focused"); - - // Focus the browser component - Timer focusTimer = - new Timer( - 100, - e -> { - try { - browser.getUIComponent() - .requestFocus(); - log.info( - "Browser component" - + " focused"); - } catch (Exception ex) { - log.error( - "Error focusing" - + " browser", - ex); - } - }); - focusTimer.setRepeats(false); - focusTimer.start(); - } - } catch (Exception e) { - log.error("Error during UI initialization", e); - // Attempt cleanup on error - if (loadingWindow != null) { - loadingWindow.dispose(); - loadingWindow = null; - } - if (frame != null) { - frame.setVisible(true); - frame.requestFocus(); - } - } - }); - } - } - }); - } - - private void setupTrayIcon(Image icon) { - if (!SystemTray.isSupported()) { - log.warn("System tray is not supported"); - return; - } - - try { - systemTray = SystemTray.getSystemTray(); - - // Create popup menu - PopupMenu popup = new PopupMenu(); - - // Create menu items - MenuItem showItem = new MenuItem("Show"); - showItem.addActionListener( - e -> { - frame.setVisible(true); - frame.setState(Frame.NORMAL); - }); - - MenuItem exitItem = new MenuItem("Exit"); - exitItem.addActionListener( - e -> { - cleanup(); - System.exit(0); - }); - - // Add menu items to popup menu - popup.add(showItem); - popup.addSeparator(); - popup.add(exitItem); - - // Create tray icon - trayIcon = new TrayIcon(icon, "Stirling-PDF", popup); - trayIcon.setImageAutoSize(true); - - // Add double-click behavior - trayIcon.addActionListener( - e -> { - frame.setVisible(true); - frame.setState(Frame.NORMAL); - }); - - // Add tray icon to system tray - systemTray.add(trayIcon); - - // Modify frame behavior to minimize to tray - frame.addWindowStateListener( - new WindowStateListener() { - public void windowStateChanged(WindowEvent e) { - if (e.getNewState() == Frame.ICONIFIED) { - frame.setVisible(false); - } - } - }); - - } catch (AWTException e) { - log.error("Error setting up system tray icon", e); - } - } - - private void loadIcon() { - try { - Image icon = null; - String[] iconPaths = {"/static/favicon.ico"}; - - for (String path : iconPaths) { - if (icon != null) break; - try { - try (InputStream is = getClass().getResourceAsStream(path)) { - if (is != null) { - icon = ImageIO.read(is); - break; - } - } - } catch (Exception e) { - log.debug("Could not load icon from " + path, e); - } - } - - if (icon != null) { - frame.setIconImage(icon); - setupTrayIcon(icon); - } else { - log.warn("Could not load icon from any source"); - } - } catch (Exception e) { - log.error("Error loading icon", e); - } - } - - @PreDestroy - public void cleanup() { - if (browser != null) browser.close(true); - if (client != null) client.dispose(); - if (cefApp != null) cefApp.dispose(); - if (loadingWindow != null) loadingWindow.dispose(); - } - - public static void forceInitializeUI() { - try { - if (loadingWindow != null) { - log.info("Forcing start of UI initialization sequence"); - - // Close loading window first - loadingWindow.setVisible(false); - loadingWindow.dispose(); - loadingWindow = null; - log.info("Loading window disposed"); - - // Then setup the main frame - frame.setVisible(false); - frame.dispose(); - frame.setOpacity(1.0f); - frame.setUndecorated(false); - frame.pack(); - frame.setSize(UIScaling.scaleWidth(1280), UIScaling.scaleHeight(800)); - frame.setLocationRelativeTo(null); - log.debug("Frame reconfigured"); - - // Show the main frame - frame.setVisible(true); - frame.requestFocus(); - frame.toFront(); - log.info("Main frame displayed and focused"); - - // Focus the browser component if available - if (browser != null) { - Timer focusTimer = - new Timer( - 100, - e -> { - try { - browser.getUIComponent().requestFocus(); - log.info("Browser component focused"); - } catch (Exception ex) { - log.error( - "Error focusing browser during force ui" - + " initialization.", - ex); - } - }); - focusTimer.setRepeats(false); - focusTimer.start(); - } - } - } catch (Exception e) { - log.error("Error during Forced UI initialization.", e); - // Attempt cleanup on error - if (loadingWindow != null) { - loadingWindow.dispose(); - loadingWindow = null; - } - if (frame != null) { - frame.setVisible(true); - frame.setOpacity(1.0f); - frame.setUndecorated(false); - frame.requestFocus(); - } - } - } -} diff --git a/app/core/src/main/java/stirling/software/SPDF/UI/impl/LoadingWindow.java b/app/core/src/main/java/stirling/software/SPDF/UI/impl/LoadingWindow.java deleted file mode 100644 index 5c7381fa4..000000000 --- a/app/core/src/main/java/stirling/software/SPDF/UI/impl/LoadingWindow.java +++ /dev/null @@ -1,351 +0,0 @@ -package stirling.software.SPDF.UI.impl; - -import java.awt.*; -import java.io.BufferedReader; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.HashSet; -import java.util.Set; -import java.util.concurrent.TimeUnit; - -import javax.imageio.ImageIO; -import javax.swing.*; - -import io.github.pixee.security.BoundedLineReader; - -import lombok.extern.slf4j.Slf4j; - -import stirling.software.common.util.UIScaling; - -@Slf4j -public class LoadingWindow extends JDialog { - private final JProgressBar progressBar; - private final JLabel statusLabel; - private final JPanel mainPanel; - private final JLabel brandLabel; - private long startTime; - - private Timer stuckTimer; - private long stuckThreshold = 4000; - private long timeAt90Percent = -1; - private volatile Process explorerProcess; - private static final boolean IS_WINDOWS = - System.getProperty("os.name").toLowerCase().contains("win"); - - public LoadingWindow(Frame parent, String initialUrl) { - super(parent, "Initializing Stirling-PDF", true); - startTime = System.currentTimeMillis(); - log.info("Creating LoadingWindow - initialization started at: {}", startTime); - - // Initialize components - mainPanel = new JPanel(); - mainPanel.setBackground(Color.WHITE); - mainPanel.setBorder(BorderFactory.createEmptyBorder(20, 30, 20, 30)); - mainPanel.setLayout(new GridBagLayout()); - GridBagConstraints gbc = new GridBagConstraints(); - - // Configure GridBagConstraints - gbc.gridwidth = GridBagConstraints.REMAINDER; - gbc.fill = GridBagConstraints.HORIZONTAL; - gbc.insets = new Insets(5, 5, 5, 5); - gbc.weightx = 1.0; - gbc.weighty = 0.0; - - // Add icon - try { - try (InputStream is = getClass().getResourceAsStream("/static/favicon.ico")) { - if (is != null) { - Image img = ImageIO.read(is); - if (img != null) { - Image scaledImg = UIScaling.scaleIcon(img, 48, 48); - JLabel iconLabel = new JLabel(new ImageIcon(scaledImg)); - iconLabel.setHorizontalAlignment(SwingConstants.CENTER); - gbc.gridy = 0; - mainPanel.add(iconLabel, gbc); - log.info("Icon loaded and scaled successfully"); - } - } - } - } catch (Exception e) { - log.error("Failed to load icon", e); - } - - // URL Label with explicit size - brandLabel = new JLabel(initialUrl); - brandLabel.setHorizontalAlignment(SwingConstants.CENTER); - brandLabel.setPreferredSize(new Dimension(300, 25)); - brandLabel.setText("Stirling-PDF"); - gbc.gridy = 1; - mainPanel.add(brandLabel, gbc); - - // Status label with explicit size - statusLabel = new JLabel("Initializing..."); - statusLabel.setHorizontalAlignment(SwingConstants.CENTER); - statusLabel.setPreferredSize(new Dimension(300, 25)); - gbc.gridy = 2; - mainPanel.add(statusLabel, gbc); - - // Progress bar with explicit size - progressBar = new JProgressBar(0, 100); - progressBar.setStringPainted(true); - progressBar.setPreferredSize(new Dimension(300, 25)); - gbc.gridy = 3; - mainPanel.add(progressBar, gbc); - - // Set dialog properties - setContentPane(mainPanel); - setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); - setResizable(false); - setUndecorated(false); - - // Set size and position - setSize(UIScaling.scaleWidth(400), UIScaling.scaleHeight(200)); - - setLocationRelativeTo(parent); - setAlwaysOnTop(true); - setProgress(0); - setStatus("Starting..."); - - log.info( - "LoadingWindow initialization completed in {}ms", - System.currentTimeMillis() - startTime); - } - - private void checkAndRefreshExplorer() { - if (!IS_WINDOWS) { - return; - } - if (timeAt90Percent == -1) { - timeAt90Percent = System.currentTimeMillis(); - stuckTimer = - new Timer( - 1000, - e -> { - long currentTime = System.currentTimeMillis(); - if (currentTime - timeAt90Percent > stuckThreshold) { - try { - log.debug( - "Attempting Windows explorer refresh due to 90% stuck state"); - String currentDir = System.getProperty("user.dir"); - - // Store current explorer PIDs before we start new one - Set existingPids = new HashSet<>(); - ProcessBuilder listExplorer = - new ProcessBuilder( - "cmd", - "/c", - "wmic", - "process", - "where", - "name='explorer.exe'", - "get", - "ProcessId", - "/format:csv"); - Process process = listExplorer.start(); - BufferedReader reader = - new BufferedReader( - new InputStreamReader( - process.getInputStream())); - String line; - while ((line = - BoundedLineReader.readLine( - reader, 5_000_000)) - != null) { - if (line.matches(".*\\d+.*")) { // Contains numbers - String[] parts = line.trim().split(","); - if (parts.length >= 2) { - existingPids.add( - parts[parts.length - 1].trim()); - } - } - } - process.waitFor(2, TimeUnit.SECONDS); - - // Start new explorer - ProcessBuilder pb = - new ProcessBuilder( - "cmd", - "/c", - "start", - "/min", - "/b", - "explorer.exe", - currentDir); - pb.redirectErrorStream(true); - explorerProcess = pb.start(); - - // Schedule cleanup - Timer cleanupTimer = - new Timer( - 2000, - cleanup -> { - try { - // Find new explorer processes - ProcessBuilder findNewExplorer = - new ProcessBuilder( - "cmd", - "/c", - "wmic", - "process", - "where", - "name='explorer.exe'", - "get", - "ProcessId", - "/format:csv"); - Process newProcess = - findNewExplorer.start(); - BufferedReader newReader = - new BufferedReader( - new InputStreamReader( - newProcess - .getInputStream())); - String newLine; - while ((newLine = - BoundedLineReader - .readLine( - newReader, - 5_000_000)) - != null) { - if (newLine.matches( - ".*\\d+.*")) { - String[] parts = - newLine.trim() - .split(","); - if (parts.length >= 2) { - String pid = - parts[ - parts.length - - 1] - .trim(); - if (!existingPids - .contains( - pid)) { - log.debug( - "Found new explorer.exe with PID: " - + pid); - ProcessBuilder - killProcess = - new ProcessBuilder( - "taskkill", - "/PID", - pid, - "/F"); - killProcess - .redirectErrorStream( - true); - Process killResult = - killProcess - .start(); - killResult.waitFor( - 2, - TimeUnit - .SECONDS); - log.debug( - "Explorer process terminated: " - + pid); - } - } - } - } - newProcess.waitFor( - 2, TimeUnit.SECONDS); - } catch (Exception ex) { - log.error( - "Error cleaning up Windows explorer process", - ex); - } - }); - cleanupTimer.setRepeats(false); - cleanupTimer.start(); - stuckTimer.stop(); - } catch (Exception ex) { - log.error("Error refreshing Windows explorer", ex); - } - } - }); - stuckTimer.setRepeats(true); - stuckTimer.start(); - } - } - - public void setProgress(final int progress) { - SwingUtilities.invokeLater( - () -> { - try { - int validProgress = Math.min(Math.max(progress, 0), 100); - log.info( - "Setting progress to {}% at {}ms since start", - validProgress, System.currentTimeMillis() - startTime); - - // Log additional details when near 90% - if (validProgress >= 85 && validProgress <= 95) { - log.info( - "Near 90% progress - Current status: {}, Window visible: {}, " - + "Progress bar responding: {}, Memory usage: {}MB", - statusLabel.getText(), - isVisible(), - progressBar.isEnabled(), - Runtime.getRuntime().totalMemory() / (1024 * 1024)); - - // Add thread state logging - Thread currentThread = Thread.currentThread(); - log.info( - "Current thread state - Name: {}, State: {}, Priority: {}", - currentThread.getName(), - currentThread.getState(), - currentThread.getPriority()); - - if (validProgress >= 90 && validProgress < 95) { - checkAndRefreshExplorer(); - } else { - // Reset the timer if we move past 95% - if (validProgress >= 95) { - if (stuckTimer != null) { - stuckTimer.stop(); - } - timeAt90Percent = -1; - } - } - } - - progressBar.setValue(validProgress); - progressBar.setString(validProgress + "%"); - mainPanel.revalidate(); - mainPanel.repaint(); - } catch (Exception e) { - log.error("Error updating progress to " + progress, e); - } - }); - } - - public void setStatus(final String status) { - log.info( - "Status update at {}ms - Setting status to: {}", - System.currentTimeMillis() - startTime, - status); - - SwingUtilities.invokeLater( - () -> { - try { - String validStatus = status != null ? status : ""; - statusLabel.setText(validStatus); - - // Log UI state when status changes - log.info( - "UI State - Window visible: {}, Progress: {}%, Status: {}", - isVisible(), progressBar.getValue(), validStatus); - - mainPanel.revalidate(); - mainPanel.repaint(); - } catch (Exception e) { - log.error("Error updating status to: " + status, e); - } - }); - } - - @Override - public void dispose() { - log.info("LoadingWindow disposing after {}ms", System.currentTimeMillis() - startTime); - super.dispose(); - } -} diff --git a/app/core/src/main/java/stirling/software/SPDF/config/CleanUrlInterceptor.java b/app/core/src/main/java/stirling/software/SPDF/config/CleanUrlInterceptor.java index c33b86948..bdcd183a2 100644 --- a/app/core/src/main/java/stirling/software/SPDF/config/CleanUrlInterceptor.java +++ b/app/core/src/main/java/stirling/software/SPDF/config/CleanUrlInterceptor.java @@ -45,7 +45,13 @@ public class CleanUrlInterceptor implements HandlerInterceptor { String queryString = request.getQueryString(); if (queryString != null && !queryString.isEmpty()) { - + String requestURI = request.getRequestURI(); + + if (requestURI.contains("/api/")) { + return true; + } + + Map allowedParameters = new HashMap<>(); // Keep only the allowed parameters diff --git a/app/core/src/main/java/stirling/software/SPDF/config/OpenApiConfig.java b/app/core/src/main/java/stirling/software/SPDF/config/OpenApiConfig.java index 1a5635baa..c0a0b6b55 100644 --- a/app/core/src/main/java/stirling/software/SPDF/config/OpenApiConfig.java +++ b/app/core/src/main/java/stirling/software/SPDF/config/OpenApiConfig.java @@ -53,14 +53,14 @@ public class OpenApiConfig { .description(DEFAULT_DESCRIPTION); OpenAPI openAPI = new OpenAPI().info(info); - + // Add server configuration from environment variable String swaggerServerUrl = System.getenv("SWAGGER_SERVER_URL"); if (swaggerServerUrl != null && !swaggerServerUrl.trim().isEmpty()) { Server server = new Server().url(swaggerServerUrl).description("API Server"); openAPI.addServersItem(server); } - + if (!applicationProperties.getSecurity().getEnableLogin()) { return openAPI.components(new Components()); } else { @@ -69,8 +69,7 @@ public class OpenApiConfig { .type(SecurityScheme.Type.APIKEY) .in(SecurityScheme.In.HEADER) .name("X-API-KEY"); - return openAPI - .components(new Components().addSecuritySchemes("apiKey", apiKeyScheme)) + return openAPI.components(new Components().addSecuritySchemes("apiKey", apiKeyScheme)) .addSecurityItem(new SecurityRequirement().addList("apiKey")); } } diff --git a/app/core/src/main/java/stirling/software/SPDF/config/WebMvcConfig.java b/app/core/src/main/java/stirling/software/SPDF/config/WebMvcConfig.java index c3e204b3c..dab11c697 100644 --- a/app/core/src/main/java/stirling/software/SPDF/config/WebMvcConfig.java +++ b/app/core/src/main/java/stirling/software/SPDF/config/WebMvcConfig.java @@ -2,13 +2,10 @@ package stirling.software.SPDF.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import lombok.RequiredArgsConstructor; -import stirling.software.common.configuration.InstallationPathConfig; - @Configuration @RequiredArgsConstructor public class WebMvcConfig implements WebMvcConfigurer { @@ -20,12 +17,12 @@ public class WebMvcConfig implements WebMvcConfigurer { registry.addInterceptor(endpointInterceptor); } - @Override - public void addResourceHandlers(ResourceHandlerRegistry registry) { - // Handler for external static resources - registry.addResourceHandler("/**") - .addResourceLocations( - "file:" + InstallationPathConfig.getStaticPath(), "classpath:/static/"); - // .setCachePeriod(0); // Optional: disable caching - } + // @Override + // public void addResourceHandlers(ResourceHandlerRegistry registry) { + // // Handler for external static resources - DISABLED in backend-only mode + // registry.addResourceHandler("/**") + // .addResourceLocations( + // "file:" + InstallationPathConfig.getStaticPath(), "classpath:/static/"); + // // .setCachePeriod(0); // Optional: disable caching + // } } diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/AnalysisController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/AnalysisController.java index 27fff75d2..fe1440d4a 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/AnalysisController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/AnalysisController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.IOException; import java.util.*; @@ -20,6 +18,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.model.api.PDFFile; import stirling.software.common.service.CustomPDFDocumentFactory; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/CropController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/CropController.java index f47bd0d0c..9a7f09c5e 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/CropController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/CropController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -14,7 +12,6 @@ import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -24,6 +21,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import stirling.software.SPDF.model.api.general.CropPdfForm; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/EditTableOfContentsController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/EditTableOfContentsController.java index 2f823695e..bce16e867 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/EditTableOfContentsController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/EditTableOfContentsController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.ByteArrayOutputStream; import java.util.ArrayList; import java.util.HashMap; @@ -16,7 +14,6 @@ import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlin import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; @@ -33,6 +30,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.EditTableOfContentsRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/MergeController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/MergeController.java index 538b82a90..23a03e59a 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/MergeController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/MergeController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; @@ -24,7 +22,6 @@ import org.apache.pdfbox.pdmodel.interactive.form.PDField; import org.apache.pdfbox.pdmodel.interactive.form.PDSignatureField; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -36,6 +33,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.general.MergePdfsRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ExceptionUtils; import stirling.software.common.util.GeneralUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/MultiPageLayoutController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/MultiPageLayoutController.java index d07b5314e..96b23f332 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/MultiPageLayoutController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/MultiPageLayoutController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.awt.*; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -15,7 +13,6 @@ import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject; import org.apache.pdfbox.util.Matrix; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -27,6 +24,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import stirling.software.SPDF.model.api.general.MergeMultiplePagesRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/PdfImageRemovalController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/PdfImageRemovalController.java index 5c262ecc6..c4dba6eb3 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/PdfImageRemovalController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/PdfImageRemovalController.java @@ -1,14 +1,11 @@ package stirling.software.SPDF.controller.api; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.ByteArrayOutputStream; import java.io.IOException; import org.apache.pdfbox.pdmodel.PDDocument; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -18,6 +15,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import stirling.software.SPDF.service.PdfImageRemovalService; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.model.api.PDFFile; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/PdfOverlayController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/PdfOverlayController.java index 4f90ddac0..12c267495 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/PdfOverlayController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/PdfOverlayController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; @@ -17,7 +15,6 @@ import org.apache.pdfbox.pdmodel.PDDocument; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -29,6 +26,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import stirling.software.SPDF.model.api.general.OverlayPdfsRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.GeneralUtils; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/RearrangePagesPDFController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/RearrangePagesPDFController.java index 6254183b0..31274ac23 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/RearrangePagesPDFController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/RearrangePagesPDFController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.IOException; import java.util.ArrayList; import java.util.Collections; @@ -11,7 +9,6 @@ import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -26,6 +23,7 @@ import lombok.extern.slf4j.Slf4j; 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.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ExceptionUtils; import stirling.software.common.util.GeneralUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/RotationController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/RotationController.java index e5a8ae90c..bc4062a34 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/RotationController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/RotationController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.IOException; import org.apache.pdfbox.pdmodel.PDDocument; @@ -9,7 +7,6 @@ import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageTree; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -21,6 +18,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import stirling.software.SPDF.model.api.general.RotatePDFRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ExceptionUtils; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/ScalePagesController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/ScalePagesController.java index abc4c4e46..1638e1b24 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/ScalePagesController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/ScalePagesController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.HashMap; @@ -16,7 +14,6 @@ import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject; import org.apache.pdfbox.util.Matrix; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -28,6 +25,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import stirling.software.SPDF.model.api.general.ScalePagesRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ExceptionUtils; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java index efa77b54a..a1cedd540 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/SettingsController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.IOException; import java.util.Map; @@ -9,7 +7,6 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -19,6 +16,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import stirling.software.SPDF.config.EndpointConfiguration; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.configuration.InstallationPathConfig; import stirling.software.common.model.ApplicationProperties; import stirling.software.common.util.GeneralUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPDFController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPDFController.java index 32691b2d0..e3a9e15c6 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPDFController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPDFController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.file.Files; @@ -17,7 +15,6 @@ import org.apache.pdfbox.pdmodel.PDPage; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -30,6 +27,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.PDFWithPageNums; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ExceptionUtils; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfByChaptersController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfByChaptersController.java index a30b208c9..e519344da 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfByChaptersController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfByChaptersController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.ByteArrayOutputStream; import java.nio.file.Files; import java.nio.file.Path; @@ -17,7 +15,6 @@ import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlin import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -34,6 +31,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.SplitPdfByChaptersRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.model.PdfMetadata; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.service.PdfMetadataService; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySectionsController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySectionsController.java index a27d7f1b9..6d3ae9efe 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySectionsController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySectionsController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.file.Files; @@ -22,7 +20,6 @@ import org.apache.pdfbox.util.Matrix; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -34,6 +31,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import stirling.software.SPDF.model.api.SplitPdfBySectionsRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySizeController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySizeController.java index adfe42b46..5ff32f286 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySizeController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/SplitPdfBySizeController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.file.Files; @@ -14,7 +12,6 @@ import org.apache.pdfbox.pdmodel.PDPage; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -27,6 +24,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.general.SplitPdfBySizeOrCountRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ExceptionUtils; import stirling.software.common.util.GeneralUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/ToSinglePageController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/ToSinglePageController.java index e52f1bfef..1b5f1a750 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/ToSinglePageController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/ToSinglePageController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.awt.geom.AffineTransform; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -14,7 +12,6 @@ import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -23,6 +20,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.model.api.PDFFile; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/UIDataController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/UIDataController.java index 3161560ae..0902cb1f4 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/UIDataController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/UIDataController.java @@ -25,7 +25,6 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.Data; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.Dependency; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertEmlToPDF.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertEmlToPDF.java index 7633dd110..f1aa76f37 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertEmlToPDF.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertEmlToPDF.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.converters; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -10,7 +8,6 @@ import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -22,6 +19,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.configuration.RuntimePathConfig; import stirling.software.common.model.api.converters.EmlToPdfRequest; import stirling.software.common.service.CustomPDFDocumentFactory; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertHtmlToPDF.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertHtmlToPDF.java index 15abcf50f..32d1347d6 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertHtmlToPDF.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertHtmlToPDF.java @@ -1,10 +1,7 @@ package stirling.software.SPDF.controller.api.converters; -import stirling.software.common.annotations.AutoJobPostMapping; - import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -15,6 +12,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.configuration.RuntimePathConfig; import stirling.software.common.model.api.converters.HTMLToPdfRequest; import stirling.software.common.service.CustomPDFDocumentFactory; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java index 39af4a002..ba58d951f 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertImgPDFController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.converters; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; @@ -21,7 +19,6 @@ import org.apache.pdfbox.rendering.ImageType; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -35,6 +32,7 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.converters.ConvertToImageRequest; import stirling.software.SPDF.model.api.converters.ConvertToPdfRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.CheckProgramInstall; import stirling.software.common.util.ExceptionUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertMarkdownToPdf.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertMarkdownToPdf.java index 0bd4cf6dd..2e0f53a0f 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertMarkdownToPdf.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertMarkdownToPdf.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.converters; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.util.List; import java.util.Map; @@ -14,7 +12,6 @@ import org.commonmark.renderer.html.AttributeProvider; import org.commonmark.renderer.html.HtmlRenderer; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -25,6 +22,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.configuration.RuntimePathConfig; import stirling.software.common.model.api.GeneralFile; import stirling.software.common.service.CustomPDFDocumentFactory; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertOfficeController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertOfficeController.java index eb1eecc59..339f184b3 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertOfficeController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertOfficeController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.converters; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -15,7 +13,6 @@ import org.apache.commons.io.FilenameUtils; import org.apache.pdfbox.pdmodel.PDDocument; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -26,6 +23,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.configuration.RuntimePathConfig; import stirling.software.common.model.api.GeneralFile; import stirling.software.common.service.CustomPDFDocumentFactory; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToHtml.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToHtml.java index 6b47a498b..63c96d762 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToHtml.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToHtml.java @@ -1,10 +1,7 @@ package stirling.software.SPDF.controller.api.converters; -import stirling.software.common.annotations.AutoJobPostMapping; - import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -12,6 +9,7 @@ import org.springframework.web.multipart.MultipartFile; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.model.api.PDFFile; import stirling.software.common.util.PDFToFile; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToOffice.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToOffice.java index 3d133f943..ee1b6eaab 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToOffice.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToOffice.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.converters; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.IOException; import org.apache.pdfbox.pdmodel.PDDocument; @@ -9,7 +7,6 @@ import org.apache.pdfbox.text.PDFTextStripper; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -23,6 +20,7 @@ import lombok.RequiredArgsConstructor; import stirling.software.SPDF.model.api.converters.PdfToPresentationRequest; import stirling.software.SPDF.model.api.converters.PdfToTextOrRTFRequest; import stirling.software.SPDF.model.api.converters.PdfToWordRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.model.api.PDFFile; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.PDFToFile; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToPDFA.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToPDFA.java index 1e77e2b44..0e5aeb1f6 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToPDFA.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertPDFToPDFA.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.converters; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.awt.Color; import java.io.ByteArrayOutputStream; import java.io.File; @@ -57,7 +55,6 @@ import org.apache.xmpbox.xml.XmpSerializer; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -69,6 +66,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.converters.PdfToPdfARequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.util.ExceptionUtils; import stirling.software.common.util.ProcessExecutor; import stirling.software.common.util.ProcessExecutor.ProcessExecutorResult; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java index 1b5467587..182dc8a3e 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ConvertWebsiteToPDF.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.converters; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -11,7 +9,6 @@ import java.util.List; import org.apache.pdfbox.pdmodel.PDDocument; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -22,6 +19,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.converters.UrlToPdfRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.configuration.RuntimePathConfig; import stirling.software.common.model.ApplicationProperties; import stirling.software.common.service.CustomPDFDocumentFactory; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ExtractCSVController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ExtractCSVController.java index 2bec58d38..1ce2e6fc3 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ExtractCSVController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/converters/ExtractCSVController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.converters; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.StringWriter; @@ -20,7 +18,6 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -32,6 +29,7 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.PDFWithPageNums; import stirling.software.SPDF.pdf.FlexibleCSVWriter; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import technology.tabula.ObjectExtractor; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/filters/FilterController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/filters/FilterController.java index b4e9dc285..262c931df 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/filters/FilterController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/filters/FilterController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.filters; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.IOException; import org.apache.pdfbox.pdmodel.PDDocument; @@ -9,7 +7,6 @@ import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -26,6 +23,7 @@ import stirling.software.SPDF.model.api.filter.ContainsTextRequest; import stirling.software.SPDF.model.api.filter.FileSizeRequest; import stirling.software.SPDF.model.api.filter.PageRotationRequest; import stirling.software.SPDF.model.api.filter.PageSizeRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ExceptionUtils; import stirling.software.common.util.PdfUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/AttachmentController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/AttachmentController.java index 3729af9d8..c6a274f5c 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/AttachmentController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/AttachmentController.java @@ -1,14 +1,11 @@ package stirling.software.SPDF.controller.api.misc; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.IOException; import java.util.List; import org.apache.pdfbox.pdmodel.PDDocument; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -22,6 +19,7 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.misc.AddAttachmentRequest; import stirling.software.SPDF.service.AttachmentServiceInterface; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/AutoRenameController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/AutoRenameController.java index 628e0d028..214d0870a 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/AutoRenameController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/AutoRenameController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.misc; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.IOException; import java.util.ArrayList; import java.util.Comparator; @@ -12,7 +10,6 @@ import org.apache.pdfbox.text.PDFTextStripper; import org.apache.pdfbox.text.TextPosition; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -25,6 +22,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.misc.ExtractHeaderRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/AutoSplitPdfController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/AutoSplitPdfController.java index 0650481bf..78518617a 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/AutoSplitPdfController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/AutoSplitPdfController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.misc; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.awt.image.BufferedImage; import java.awt.image.DataBufferByte; import java.awt.image.DataBufferInt; @@ -21,7 +19,6 @@ import org.apache.pdfbox.rendering.PDFRenderer; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -37,6 +34,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.misc.AutoSplitPdfRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/BlankPageController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/BlankPageController.java index 010d6d0bb..f6f9f94ad 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/BlankPageController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/BlankPageController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.misc; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -19,7 +17,6 @@ import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -32,6 +29,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.misc.RemoveBlankPagesRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.PdfUtils; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/CompressController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/CompressController.java index 9b0b43dc1..20a869c2c 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/CompressController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/CompressController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.misc; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.awt.*; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; @@ -36,7 +34,6 @@ import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject; import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -54,6 +51,7 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.config.EndpointConfiguration; import stirling.software.SPDF.model.api.misc.OptimizePdfRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ExceptionUtils; import stirling.software.common.util.GeneralUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ConfigController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ConfigController.java index fb1b7b2ca..bc9174476 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ConfigController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ConfigController.java @@ -110,7 +110,8 @@ public class ConfigController { } @GetMapping("/endpoint-enabled") - public ResponseEntity isEndpointEnabled(@RequestParam(name = "endpoint") String endpoint) { + public ResponseEntity isEndpointEnabled( + @RequestParam(name = "endpoint") String endpoint) { boolean enabled = endpointConfiguration.isEndpointEnabled(endpoint); return ResponseEntity.ok(enabled); } diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/DecompressPdfController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/DecompressPdfController.java index b5fe504c4..93dc8ee56 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/DecompressPdfController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/DecompressPdfController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.misc; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; @@ -15,7 +13,6 @@ import org.apache.pdfbox.pdmodel.PDDocument; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -26,6 +23,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.model.api.PDFFile; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ExceptionUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java index aa3c40519..d40a6a292 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImageScansController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.misc; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.awt.image.BufferedImage; import java.io.FileOutputStream; import java.io.IOException; @@ -21,7 +19,6 @@ import org.apache.pdfbox.rendering.PDFRenderer; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -33,6 +30,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.misc.ExtractImageScansRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.CheckProgramInstall; import stirling.software.common.util.ExceptionUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImagesController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImagesController.java index 2e2968c9c..026dd1b70 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImagesController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ExtractImagesController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.misc; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.awt.*; import java.awt.image.BufferedImage; import java.awt.image.RenderedImage; @@ -29,7 +27,6 @@ import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -42,6 +39,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.PDFExtractImagesRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ExceptionUtils; import stirling.software.common.util.ImageProcessingUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/FlattenController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/FlattenController.java index ecd263c1c..984871185 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/FlattenController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/FlattenController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.misc; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.awt.image.BufferedImage; import java.io.IOException; @@ -15,7 +13,6 @@ import org.apache.pdfbox.rendering.ImageType; import org.apache.pdfbox.rendering.PDFRenderer; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -28,6 +25,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.misc.FlattenRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/MetadataController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/MetadataController.java index 37b1c209e..0253ccdf4 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/MetadataController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/MetadataController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.misc; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -25,6 +23,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.misc.MetadataRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.WebResponseUtils; import stirling.software.common.util.propertyeditor.StringToMapPropertyEditor; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/OCRController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/OCRController.java index 5cd80384c..a1b2fa277 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/OCRController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/OCRController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.misc; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.awt.image.BufferedImage; import java.io.*; import java.nio.file.Files; @@ -20,7 +18,6 @@ import org.apache.pdfbox.text.PDFTextStripper; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -34,6 +31,7 @@ import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.config.EndpointConfiguration; import stirling.software.SPDF.model.api.misc.ProcessPdfWithOcrRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.model.ApplicationProperties; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ExceptionUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/OverlayImageController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/OverlayImageController.java index 5b61f66ea..8c9a99436 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/OverlayImageController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/OverlayImageController.java @@ -1,13 +1,10 @@ package stirling.software.SPDF.controller.api.misc; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.IOException; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -20,6 +17,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.misc.OverlayImageRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.PdfUtils; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/PageNumbersController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/PageNumbersController.java index d91c30bae..864735880 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/PageNumbersController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/PageNumbersController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.misc; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.List; @@ -15,7 +13,6 @@ import org.apache.pdfbox.pdmodel.font.Standard14Fonts; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -27,6 +24,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import stirling.software.SPDF.model.api.misc.AddPageNumbersRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.GeneralUtils; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/PrintFileController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/PrintFileController.java index 34ed58540..5fc54a799 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/PrintFileController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/PrintFileController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.misc; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.awt.*; import java.awt.image.BufferedImage; import java.awt.print.PageFormat; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/RepairController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/RepairController.java index e1084a457..a5c1d79cc 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/RepairController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/RepairController.java @@ -1,14 +1,11 @@ package stirling.software.SPDF.controller.api.misc; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -21,6 +18,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.config.EndpointConfiguration; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.model.api.PDFFile; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ProcessExecutor; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ReplaceAndInvertColorController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ReplaceAndInvertColorController.java index b935d59da..e8c864d5c 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ReplaceAndInvertColorController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ReplaceAndInvertColorController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.misc; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.IOException; import org.springframework.core.io.InputStreamResource; @@ -9,7 +7,6 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -20,6 +17,7 @@ import lombok.RequiredArgsConstructor; import stirling.software.SPDF.model.api.misc.ReplaceAndInvertColorRequest; import stirling.software.SPDF.service.misc.ReplaceAndInvertColorService; +import stirling.software.common.annotations.AutoJobPostMapping; @RestController @RequestMapping("/api/v1/misc") diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ScannerEffectController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ScannerEffectController.java index a140e9029..f7fe0e837 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ScannerEffectController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ScannerEffectController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.misc; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.awt.Color; import java.awt.Graphics2D; import java.awt.RenderingHints; @@ -21,7 +19,6 @@ import org.apache.pdfbox.rendering.PDFRenderer; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -36,6 +33,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.misc.ScannerEffectRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ShowJavascript.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ShowJavascript.java index 709d8bd09..56f43ca41 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ShowJavascript.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/ShowJavascript.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.misc; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.nio.charset.StandardCharsets; import java.util.Map; @@ -11,7 +9,6 @@ import org.apache.pdfbox.pdmodel.interactive.action.PDActionJavaScript; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -22,6 +19,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.model.api.PDFFile; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/StampController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/StampController.java index 8193c7a81..590ace5d4 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/StampController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/StampController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.misc; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; @@ -28,7 +26,6 @@ import org.apache.pdfbox.util.Matrix; import org.springframework.core.io.ClassPathResource; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -40,6 +37,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import stirling.software.SPDF.model.api.misc.AddStampRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.TempFile; import stirling.software.common.util.TempFileManager; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/UnlockPDFFormsController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/UnlockPDFFormsController.java index d80c35022..d1394d366 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/UnlockPDFFormsController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/misc/UnlockPDFFormsController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.misc; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; @@ -14,7 +12,6 @@ import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm; import org.apache.pdfbox.pdmodel.interactive.form.PDField; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -24,6 +21,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.model.api.PDFFile; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineController.java index 166668db9..ac034e287 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/pipeline/PipelineController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.pipeline; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.util.HashMap; @@ -14,7 +12,6 @@ import org.springframework.core.io.Resource; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -32,6 +29,7 @@ import stirling.software.SPDF.model.PipelineConfig; import stirling.software.SPDF.model.PipelineOperation; import stirling.software.SPDF.model.PipelineResult; import stirling.software.SPDF.model.api.HandleDataRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.PostHogService; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/CertSignController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/CertSignController.java index b43d918e8..316311d87 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/CertSignController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/CertSignController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.security; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.awt.*; import java.beans.PropertyEditorSupport; import java.io.*; @@ -61,7 +59,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -75,6 +72,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import stirling.software.SPDF.model.api.security.SignPDFWithCertRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ExceptionUtils; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/GetInfoOnPDF.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/GetInfoOnPDF.java index 436b2ba30..8d5f6fb37 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/GetInfoOnPDF.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/GetInfoOnPDF.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.security; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; @@ -48,7 +46,6 @@ import org.apache.xmpbox.xml.XmpSerializer; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -63,6 +60,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.model.api.PDFFile; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ExceptionUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/PasswordController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/PasswordController.java index d3e78ef6e..566a1224a 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/PasswordController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/PasswordController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.security; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.IOException; import org.apache.pdfbox.pdmodel.PDDocument; @@ -9,7 +7,6 @@ import org.apache.pdfbox.pdmodel.encryption.AccessPermission; import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -22,6 +19,7 @@ import lombok.RequiredArgsConstructor; import stirling.software.SPDF.model.api.security.AddPasswordRequest; import stirling.software.SPDF.model.api.security.PDFPasswordRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ExceptionUtils; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java index 23d7e20ad..d73381f19 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/RedactController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.security; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.awt.*; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -20,7 +18,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -36,6 +33,7 @@ import stirling.software.SPDF.model.PDFText; import stirling.software.SPDF.model.api.security.ManualRedactPdfRequest; import stirling.software.SPDF.model.api.security.RedactPdfRequest; import stirling.software.SPDF.pdf.TextFinder; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.model.api.security.RedactionArea; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.GeneralUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/RemoveCertSignController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/RemoveCertSignController.java index 8ecfe7cb7..c07656d68 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/RemoveCertSignController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/RemoveCertSignController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.security; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.util.List; import org.apache.pdfbox.pdmodel.PDDocument; @@ -11,7 +9,6 @@ import org.apache.pdfbox.pdmodel.interactive.form.PDField; import org.apache.pdfbox.pdmodel.interactive.form.PDSignatureField; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -22,6 +19,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.model.api.PDFFile; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/SanitizeController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/SanitizeController.java index 5935a5152..af6b30a47 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/SanitizeController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/SanitizeController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.security; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.io.IOException; import org.apache.pdfbox.cos.COSDictionary; @@ -25,7 +23,6 @@ import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm; import org.apache.pdfbox.pdmodel.interactive.form.PDField; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -37,6 +34,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import stirling.software.SPDF.model.api.security.SanitizePdfRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/ValidateSignatureController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/ValidateSignatureController.java index 0ed9e98f9..7ce340fbc 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/ValidateSignatureController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/ValidateSignatureController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.security; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.beans.PropertyEditorSupport; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -29,7 +27,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -42,6 +39,7 @@ import lombok.RequiredArgsConstructor; import stirling.software.SPDF.model.api.security.SignatureValidationRequest; import stirling.software.SPDF.model.api.security.SignatureValidationResult; import stirling.software.SPDF.service.CertificateValidationService; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.ExceptionUtils; @@ -71,7 +69,9 @@ public class ValidateSignatureController { description = "Validates the digital signatures in a PDF file against default or custom" + " certificates. Input:PDF Output:JSON Type:SISO") - @AutoJobPostMapping(value = "/validate-signature", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + @AutoJobPostMapping( + value = "/validate-signature", + consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public ResponseEntity> validateSignature( @ModelAttribute SignatureValidationRequest request) throws IOException { List results = new ArrayList<>(); diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java index b3abf2df7..e94559658 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/api/security/WatermarkController.java @@ -1,7 +1,5 @@ package stirling.software.SPDF.controller.api.security; -import stirling.software.common.annotations.AutoJobPostMapping; - import java.awt.*; import java.awt.image.BufferedImage; import java.beans.PropertyEditorSupport; @@ -30,7 +28,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -42,6 +39,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import stirling.software.SPDF.model.api.security.AddWatermarkRequest; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.service.CustomPDFDocumentFactory; import stirling.software.common.util.PdfUtils; import stirling.software.common.util.WebResponseUtils; diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/web/ConverterWebController.java b/app/core/src/main/java/stirling/software/SPDF/controller/web/ConverterWebController.java index 1c05aaabd..bec23184c 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/web/ConverterWebController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/web/ConverterWebController.java @@ -1,8 +1,6 @@ package stirling.software.SPDF.controller.web; -import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.servlet.ModelAndView; import io.swagger.v3.oas.annotations.Hidden; @@ -12,46 +10,52 @@ import stirling.software.common.model.ApplicationProperties; import stirling.software.common.util.ApplicationContextProvider; import stirling.software.common.util.CheckProgramInstall; -@Controller +// @Controller // Disabled - Backend-only mode, no Thymeleaf UI @Tag(name = "Convert", description = "Convert APIs") public class ConverterWebController { - @GetMapping("/img-to-pdf") + @Deprecated + // @GetMapping("/img-to-pdf") @Hidden public String convertImgToPdfForm(Model model) { model.addAttribute("currentPage", "img-to-pdf"); return "convert/img-to-pdf"; } - @GetMapping("/html-to-pdf") + @Deprecated + // @GetMapping("/html-to-pdf") @Hidden public String convertHTMLToPdfForm(Model model) { model.addAttribute("currentPage", "html-to-pdf"); return "convert/html-to-pdf"; } - @GetMapping("/markdown-to-pdf") + @Deprecated + // @GetMapping("/markdown-to-pdf") @Hidden public String convertMarkdownToPdfForm(Model model) { model.addAttribute("currentPage", "markdown-to-pdf"); return "convert/markdown-to-pdf"; } - @GetMapping("/pdf-to-markdown") + @Deprecated + // @GetMapping("/pdf-to-markdown") @Hidden public String convertPdfToMarkdownForm(Model model) { model.addAttribute("currentPage", "pdf-to-markdown"); return "convert/pdf-to-markdown"; } - @GetMapping("/url-to-pdf") + @Deprecated + // @GetMapping("/url-to-pdf") @Hidden public String convertURLToPdfForm(Model model) { model.addAttribute("currentPage", "url-to-pdf"); return "convert/url-to-pdf"; } - @GetMapping("/file-to-pdf") + @Deprecated + // @GetMapping("/file-to-pdf") @Hidden public String convertToPdfForm(Model model) { model.addAttribute("currentPage", "file-to-pdf"); @@ -60,7 +64,8 @@ public class ConverterWebController { // PDF TO...... - @GetMapping("/pdf-to-img") + @Deprecated + // @GetMapping("/pdf-to-img") @Hidden public String pdfToimgForm(Model model) { boolean isPython = CheckProgramInstall.isPythonAvailable(); @@ -76,7 +81,8 @@ public class ConverterWebController { return "convert/pdf-to-img"; } - @GetMapping("/pdf-to-html") + @Deprecated + // @GetMapping("/pdf-to-html") @Hidden public ModelAndView pdfToHTML() { ModelAndView modelAndView = new ModelAndView("convert/pdf-to-html"); @@ -84,7 +90,8 @@ public class ConverterWebController { return modelAndView; } - @GetMapping("/pdf-to-presentation") + @Deprecated + // @GetMapping("/pdf-to-presentation") @Hidden public ModelAndView pdfToPresentation() { ModelAndView modelAndView = new ModelAndView("convert/pdf-to-presentation"); @@ -92,7 +99,8 @@ public class ConverterWebController { return modelAndView; } - @GetMapping("/pdf-to-text") + @Deprecated + // @GetMapping("/pdf-to-text") @Hidden public ModelAndView pdfToText() { ModelAndView modelAndView = new ModelAndView("convert/pdf-to-text"); @@ -100,7 +108,8 @@ public class ConverterWebController { return modelAndView; } - @GetMapping("/pdf-to-word") + @Deprecated + // @GetMapping("/pdf-to-word") @Hidden public ModelAndView pdfToWord() { ModelAndView modelAndView = new ModelAndView("convert/pdf-to-word"); @@ -108,7 +117,8 @@ public class ConverterWebController { return modelAndView; } - @GetMapping("/pdf-to-xml") + @Deprecated + // @GetMapping("/pdf-to-xml") @Hidden public ModelAndView pdfToXML() { ModelAndView modelAndView = new ModelAndView("convert/pdf-to-xml"); @@ -116,7 +126,8 @@ public class ConverterWebController { return modelAndView; } - @GetMapping("/pdf-to-csv") + @Deprecated + // @GetMapping("/pdf-to-csv") @Hidden public ModelAndView pdfToCSV() { ModelAndView modelAndView = new ModelAndView("convert/pdf-to-csv"); @@ -124,14 +135,16 @@ public class ConverterWebController { return modelAndView; } - @GetMapping("/pdf-to-pdfa") + @Deprecated + // @GetMapping("/pdf-to-pdfa") @Hidden public String pdfToPdfAForm(Model model) { model.addAttribute("currentPage", "pdf-to-pdfa"); return "convert/pdf-to-pdfa"; } - @GetMapping("/eml-to-pdf") + @Deprecated + // @GetMapping("/eml-to-pdf") @Hidden public String convertEmlToPdfForm(Model model) { model.addAttribute("currentPage", "eml-to-pdf"); diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java b/app/core/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java index 1084e2fe0..b8e6036f9 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java @@ -12,9 +12,7 @@ import java.util.stream.Stream; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; -import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; @@ -32,7 +30,7 @@ import stirling.software.common.service.UserServiceInterface; import stirling.software.common.util.ExceptionUtils; import stirling.software.common.util.GeneralUtils; -@Controller +// @Controller // Disabled - Backend-only mode, no Thymeleaf UI @Tag(name = "General", description = "General APIs") @Slf4j public class GeneralWebController { @@ -53,7 +51,8 @@ public class GeneralWebController { this.runtimePathConfig = runtimePathConfig; } - @GetMapping("/pipeline") + @Deprecated + // @GetMapping("/pipeline") @Hidden public String pipelineForm(Model model) { model.addAttribute("currentPage", "pipeline"); @@ -103,91 +102,104 @@ public class GeneralWebController { return "pipeline"; } - @GetMapping("/merge-pdfs") + @Deprecated + // @GetMapping("/merge-pdfs") @Hidden public String mergePdfForm(Model model) { model.addAttribute("currentPage", "merge-pdfs"); return "merge-pdfs"; } - @GetMapping("/split-pdf-by-sections") + @Deprecated + // @GetMapping("/split-pdf-by-sections") @Hidden public String splitPdfBySections(Model model) { model.addAttribute("currentPage", "split-pdf-by-sections"); return "split-pdf-by-sections"; } - @GetMapping("/split-pdf-by-chapters") + @Deprecated + // @GetMapping("/split-pdf-by-chapters") @Hidden public String splitPdfByChapters(Model model) { model.addAttribute("currentPage", "split-pdf-by-chapters"); return "split-pdf-by-chapters"; } - @GetMapping("/view-pdf") + @Deprecated + // @GetMapping("/view-pdf") @Hidden public String ViewPdfForm2(Model model) { model.addAttribute("currentPage", "view-pdf"); return "view-pdf"; } - @GetMapping("/edit-table-of-contents") + @Deprecated + // @GetMapping("/edit-table-of-contents") @Hidden public String editTableOfContents(Model model) { model.addAttribute("currentPage", "edit-table-of-contents"); return "edit-table-of-contents"; } - @GetMapping("/multi-tool") + @Deprecated + // @GetMapping("/multi-tool") @Hidden public String multiToolForm(Model model) { model.addAttribute("currentPage", "multi-tool"); return "multi-tool"; } - @GetMapping("/remove-pages") + @Deprecated + // @GetMapping("/remove-pages") @Hidden public String pageDeleter(Model model) { model.addAttribute("currentPage", "remove-pages"); return "remove-pages"; } - @GetMapping("/pdf-organizer") + @Deprecated + // @GetMapping("/pdf-organizer") @Hidden public String pageOrganizer(Model model) { model.addAttribute("currentPage", "pdf-organizer"); return "pdf-organizer"; } - @GetMapping("/extract-page") + @Deprecated + // @GetMapping("/extract-page") @Hidden public String extractPages(Model model) { model.addAttribute("currentPage", "extract-page"); return "extract-page"; } - @GetMapping("/pdf-to-single-page") + @Deprecated + // @GetMapping("/pdf-to-single-page") @Hidden public String pdfToSinglePage(Model model) { model.addAttribute("currentPage", "pdf-to-single-page"); return "pdf-to-single-page"; } - @GetMapping("/rotate-pdf") + @Deprecated + // @GetMapping("/rotate-pdf") @Hidden public String rotatePdfForm(Model model) { model.addAttribute("currentPage", "rotate-pdf"); return "rotate-pdf"; } - @GetMapping("/split-pdfs") + @Deprecated + // @GetMapping("/split-pdfs") @Hidden public String splitPdfForm(Model model) { model.addAttribute("currentPage", "split-pdfs"); return "split-pdfs"; } - @GetMapping("/sign") + @Deprecated + // @GetMapping("/sign") @Hidden public String signForm(Model model) { String username = ""; @@ -202,28 +214,32 @@ public class GeneralWebController { return "sign"; } - @GetMapping("/multi-page-layout") + @Deprecated + // @GetMapping("/multi-page-layout") @Hidden public String multiPageLayoutForm(Model model) { model.addAttribute("currentPage", "multi-page-layout"); return "multi-page-layout"; } - @GetMapping("/scale-pages") + @Deprecated + // @GetMapping("/scale-pages") @Hidden public String scalePagesFrom(Model model) { model.addAttribute("currentPage", "scale-pages"); return "scale-pages"; } - @GetMapping("/split-by-size-or-count") + @Deprecated + // @GetMapping("/split-by-size-or-count") @Hidden public String splitBySizeOrCount(Model model) { model.addAttribute("currentPage", "split-by-size-or-count"); return "split-by-size-or-count"; } - @GetMapping("/overlay-pdf") + @Deprecated + // @GetMapping("/overlay-pdf") @Hidden public String overlayPdf(Model model) { model.addAttribute("currentPage", "overlay-pdf"); @@ -296,21 +312,24 @@ public class GeneralWebController { } } - @GetMapping("/crop") + @Deprecated + // @GetMapping("/crop") @Hidden public String cropForm(Model model) { model.addAttribute("currentPage", "crop"); return "crop"; } - @GetMapping("/auto-split-pdf") + @Deprecated + // @GetMapping("/auto-split-pdf") @Hidden public String autoSPlitPDFForm(Model model) { model.addAttribute("currentPage", "auto-split-pdf"); return "auto-split-pdf"; } - @GetMapping("/remove-image-pdf") + @Deprecated + // @GetMapping("/remove-image-pdf") @Hidden public String removeImagePdfForm(Model model) { model.addAttribute("currentPage", "remove-image-pdf"); diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/web/HomeWebController.java b/app/core/src/main/java/stirling/software/SPDF/controller/web/HomeWebController.java index 2b36f95af..e9b085dd9 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/web/HomeWebController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/web/HomeWebController.java @@ -9,7 +9,6 @@ import java.util.Map; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.http.MediaType; -import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; @@ -26,20 +25,22 @@ import stirling.software.SPDF.model.Dependency; import stirling.software.common.model.ApplicationProperties; @Slf4j -@Controller +// @Controller // Disabled - Backend-only mode, no Thymeleaf UI @RequiredArgsConstructor public class HomeWebController { private final ApplicationProperties applicationProperties; - @GetMapping("/about") + @Deprecated + // @GetMapping("/about") @Hidden public String gameForm(Model model) { model.addAttribute("currentPage", "about"); return "about"; } - @GetMapping("/licenses") + @Deprecated + // @GetMapping("/licenses") @Hidden public String licensesForm(Model model) { model.addAttribute("currentPage", "licenses"); @@ -56,12 +57,14 @@ public class HomeWebController { return "licenses"; } - @GetMapping("/releases") + @Deprecated + // @GetMapping("/releases") public String getReleaseNotes(Model model) { return "releases"; } - @GetMapping("/") + @Deprecated + // @GetMapping("/") public String home(Model model) { model.addAttribute("currentPage", "home"); String showSurvey = System.getenv("SHOW_SURVEY"); @@ -70,12 +73,14 @@ public class HomeWebController { return "home"; } - @GetMapping("/home") + @Deprecated + // @GetMapping("/home") public String root(Model model) { return "redirect:/"; } - @GetMapping("/home-legacy") + @Deprecated + // @GetMapping("/home-legacy") public String redirectHomeLegacy() { return "redirect:/"; } diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java b/app/core/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java index bc63a4b84..6ef6fc773 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/web/OtherWebController.java @@ -5,9 +5,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.servlet.ModelAndView; import io.swagger.v3.oas.annotations.Hidden; @@ -18,28 +16,31 @@ import lombok.RequiredArgsConstructor; import stirling.software.common.model.ApplicationProperties; import stirling.software.common.util.CheckProgramInstall; -@Controller +// @Controller // Disabled - Backend-only mode, no Thymeleaf UI @Tag(name = "Misc", description = "Miscellaneous APIs") @RequiredArgsConstructor public class OtherWebController { private final ApplicationProperties applicationProperties; - @GetMapping("/compress-pdf") + @Deprecated + // @GetMapping("/compress-pdf") @Hidden public String compressPdfForm(Model model) { model.addAttribute("currentPage", "compress-pdf"); return "misc/compress-pdf"; } - @GetMapping("/replace-and-invert-color-pdf") + @Deprecated + // @GetMapping("/replace-and-invert-color-pdf") @Hidden public String replaceAndInvertColorPdfForm(Model model) { model.addAttribute("currentPage", "replace-invert-color-pdf"); return "misc/replace-color"; } - @GetMapping("/extract-image-scans") + @Deprecated + // @GetMapping("/extract-image-scans") @Hidden public ModelAndView extractImageScansForm() { ModelAndView modelAndView = new ModelAndView("misc/extract-image-scans"); @@ -49,70 +50,80 @@ public class OtherWebController { return modelAndView; } - @GetMapping("/show-javascript") + @Deprecated + // @GetMapping("/show-javascript") @Hidden public String extractJavascriptForm(Model model) { model.addAttribute("currentPage", "show-javascript"); return "misc/show-javascript"; } - @GetMapping("/stamp") + @Deprecated + // @GetMapping("/stamp") @Hidden public String stampForm(Model model) { model.addAttribute("currentPage", "stamp"); return "misc/stamp"; } - @GetMapping("/add-page-numbers") + @Deprecated + // @GetMapping("/add-page-numbers") @Hidden public String addPageNumbersForm(Model model) { model.addAttribute("currentPage", "add-page-numbers"); return "misc/add-page-numbers"; } - @GetMapping("/scanner-effect") + @Deprecated + // @GetMapping("/scanner-effect") @Hidden public String scannerEffectForm(Model model) { model.addAttribute("currentPage", "scanner-effect"); return "misc/scanner-effect"; } - @GetMapping("/extract-images") + @Deprecated + // @GetMapping("/extract-images") @Hidden public String extractImagesForm(Model model) { model.addAttribute("currentPage", "extract-images"); return "misc/extract-images"; } - @GetMapping("/flatten") + @Deprecated + // @GetMapping("/flatten") @Hidden public String flattenForm(Model model) { model.addAttribute("currentPage", "flatten"); return "misc/flatten"; } - @GetMapping("/change-metadata") + @Deprecated + // @GetMapping("/change-metadata") @Hidden public String addWatermarkForm(Model model) { model.addAttribute("currentPage", "change-metadata"); return "misc/change-metadata"; } - @GetMapping("/unlock-pdf-forms") + @Deprecated + // @GetMapping("/unlock-pdf-forms") @Hidden public String unlockPDFForms(Model model) { model.addAttribute("currentPage", "unlock-pdf-forms"); return "misc/unlock-pdf-forms"; } - @GetMapping("/compare") + @Deprecated + // @GetMapping("/compare") @Hidden public String compareForm(Model model) { model.addAttribute("currentPage", "compare"); return "misc/compare"; } - @GetMapping("/print-file") + @Deprecated + // @GetMapping("/print-file") @Hidden public String printFileForm(Model model) { model.addAttribute("currentPage", "print-file"); @@ -133,7 +144,8 @@ public class OtherWebController { .toList(); } - @GetMapping("/ocr-pdf") + @Deprecated + // @GetMapping("/ocr-pdf") @Hidden public ModelAndView ocrPdfPage() { ModelAndView modelAndView = new ModelAndView("misc/ocr-pdf"); @@ -143,56 +155,64 @@ public class OtherWebController { return modelAndView; } - @GetMapping("/add-image") + @Deprecated + // @GetMapping("/add-image") @Hidden public String overlayImage(Model model) { model.addAttribute("currentPage", "add-image"); return "misc/add-image"; } - @GetMapping("/adjust-contrast") + @Deprecated + // @GetMapping("/adjust-contrast") @Hidden public String contrast(Model model) { model.addAttribute("currentPage", "adjust-contrast"); return "misc/adjust-contrast"; } - @GetMapping("/repair") + @Deprecated + // @GetMapping("/repair") @Hidden public String repairForm(Model model) { model.addAttribute("currentPage", "repair"); return "misc/repair"; } - @GetMapping("/remove-blanks") + @Deprecated + // @GetMapping("/remove-blanks") @Hidden public String removeBlanksForm(Model model) { model.addAttribute("currentPage", "remove-blanks"); return "misc/remove-blanks"; } - @GetMapping("/remove-annotations") + @Deprecated + // @GetMapping("/remove-annotations") @Hidden public String removeAnnotationsForm(Model model) { model.addAttribute("currentPage", "remove-annotations"); return "misc/remove-annotations"; } - @GetMapping("/auto-crop") + @Deprecated + // @GetMapping("/auto-crop") @Hidden public String autoCropForm(Model model) { model.addAttribute("currentPage", "auto-crop"); return "misc/auto-crop"; } - @GetMapping("/auto-rename") + @Deprecated + // @GetMapping("/auto-rename") @Hidden public String autoRenameForm(Model model) { model.addAttribute("currentPage", "auto-rename"); return "misc/auto-rename"; } - @GetMapping("/add-attachments") + @Deprecated + // @GetMapping("/add-attachments") @Hidden public String attachmentsForm(Model model) { model.addAttribute("currentPage", "add-attachments"); diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/web/ReactRoutingController.java b/app/core/src/main/java/stirling/software/SPDF/controller/web/ReactRoutingController.java index 2d4ad3c97..09e40b133 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/web/ReactRoutingController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/web/ReactRoutingController.java @@ -1,9 +1,8 @@ package stirling.software.SPDF.controller.web; -import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; -@Controller +// @Controller // Disabled - Backend-only mode, no Thymeleaf UI public class ReactRoutingController { @GetMapping("/{path:^(?!api|static|robots\\.txt|favicon\\.ico)[^\\.]*$}") diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/web/SecurityWebController.java b/app/core/src/main/java/stirling/software/SPDF/controller/web/SecurityWebController.java index eb7245e5a..e2a34e140 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/web/SecurityWebController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/web/SecurityWebController.java @@ -1,86 +1,95 @@ package stirling.software.SPDF.controller.web; -import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; import io.swagger.v3.oas.annotations.Hidden; import io.swagger.v3.oas.annotations.tags.Tag; -@Controller +// @Controller // Disabled - Backend-only mode, no Thymeleaf UI @Tag(name = "Security", description = "Security APIs") public class SecurityWebController { - @GetMapping("/auto-redact") + @Deprecated + // @GetMapping("/auto-redact") @Hidden public String autoRedactForm(Model model) { model.addAttribute("currentPage", "auto-redact"); return "security/auto-redact"; } - @GetMapping("/redact") + @Deprecated + // @GetMapping("/redact") public String redactForm(Model model) { model.addAttribute("currentPage", "redact"); return "security/redact"; } - @GetMapping("/add-password") + @Deprecated + // @GetMapping("/add-password") @Hidden public String addPasswordForm(Model model) { model.addAttribute("currentPage", "add-password"); return "security/add-password"; } - @GetMapping("/change-permissions") + @Deprecated + // @GetMapping("/change-permissions") @Hidden public String permissionsForm(Model model) { model.addAttribute("currentPage", "change-permissions"); return "security/change-permissions"; } - @GetMapping("/remove-password") + @Deprecated + // @GetMapping("/remove-password") @Hidden public String removePasswordForm(Model model) { model.addAttribute("currentPage", "remove-password"); return "security/remove-password"; } - @GetMapping("/add-watermark") + @Deprecated + // @GetMapping("/add-watermark") @Hidden public String addWatermarkForm(Model model) { model.addAttribute("currentPage", "add-watermark"); return "security/add-watermark"; } - @GetMapping("/cert-sign") + @Deprecated + // @GetMapping("/cert-sign") @Hidden public String certSignForm(Model model) { model.addAttribute("currentPage", "cert-sign"); return "security/cert-sign"; } - @GetMapping("/validate-signature") + @Deprecated + // @GetMapping("/validate-signature") @Hidden public String certSignVerifyForm(Model model) { model.addAttribute("currentPage", "validate-signature"); return "security/validate-signature"; } - @GetMapping("/remove-cert-sign") + @Deprecated + // @GetMapping("/remove-cert-sign") @Hidden public String certUnSignForm(Model model) { model.addAttribute("currentPage", "remove-cert-sign"); return "security/remove-cert-sign"; } - @GetMapping("/sanitize-pdf") + @Deprecated + // @GetMapping("/sanitize-pdf") @Hidden public String sanitizeForm(Model model) { model.addAttribute("currentPage", "sanitize-pdf"); return "security/sanitize-pdf"; } - @GetMapping("/get-info-on-pdf") + @Deprecated + // @GetMapping("/get-info-on-pdf") @Hidden public String getInfo(Model model) { model.addAttribute("currentPage", "get-info-on-pdf"); diff --git a/app/core/src/main/java/stirling/software/SPDF/controller/web/SignatureController.java b/app/core/src/main/java/stirling/software/SPDF/controller/web/SignatureController.java index de03680e1..ad046f326 100644 --- a/app/core/src/main/java/stirling/software/SPDF/controller/web/SignatureController.java +++ b/app/core/src/main/java/stirling/software/SPDF/controller/web/SignatureController.java @@ -6,7 +6,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @@ -14,7 +13,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import stirling.software.SPDF.service.SignatureService; import stirling.software.common.service.UserServiceInterface; -@Controller +// @Controller // Disabled - Backend-only mode, no Thymeleaf UI @RequestMapping("/api/v1/general") public class SignatureController { diff --git a/app/core/src/main/java/stirling/software/SPDF/model/api/converters/ConvertPDFToMarkdown.java b/app/core/src/main/java/stirling/software/SPDF/model/api/converters/ConvertPDFToMarkdown.java index a3ebcfd3d..e9b326a2a 100644 --- a/app/core/src/main/java/stirling/software/SPDF/model/api/converters/ConvertPDFToMarkdown.java +++ b/app/core/src/main/java/stirling/software/SPDF/model/api/converters/ConvertPDFToMarkdown.java @@ -1,10 +1,7 @@ package stirling.software.SPDF.model.api.converters; -import stirling.software.common.annotations.AutoJobPostMapping; - import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; @@ -12,6 +9,7 @@ import org.springframework.web.multipart.MultipartFile; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.common.model.api.PDFFile; import stirling.software.common.util.PDFToFile; diff --git a/app/core/src/main/java/stirling/software/SPDF/service/SignatureService.java b/app/core/src/main/java/stirling/software/SPDF/service/SignatureService.java index 1d25f409f..16385392e 100644 --- a/app/core/src/main/java/stirling/software/SPDF/service/SignatureService.java +++ b/app/core/src/main/java/stirling/software/SPDF/service/SignatureService.java @@ -9,7 +9,7 @@ import java.util.ArrayList; import java.util.List; import org.springframework.stereotype.Service; -import org.thymeleaf.util.StringUtils; +import org.springframework.util.StringUtils; import lombok.extern.slf4j.Slf4j; @@ -40,7 +40,7 @@ public class SignatureService { List signatures = new ArrayList<>(); // Get signatures from user's personal folder - if (!StringUtils.isEmptyOrWhitespace(username)) { + if (StringUtils.hasText(username)) { Path userFolder = Paths.get(SIGNATURE_BASE_PATH, username); if (Files.exists(userFolder)) { try { diff --git a/app/core/src/main/resources/application.properties b/app/core/src/main/resources/application.properties index ea30bf78e..da1999dd0 100644 --- a/app/core/src/main/resources/application.properties +++ b/app/core/src/main/resources/application.properties @@ -25,7 +25,7 @@ server.servlet.context-path=${SYSTEM_ROOTURIPATH:/} spring.devtools.restart.enabled=true spring.devtools.livereload.enabled=true spring.devtools.restart.exclude=stirling.software.proprietary.security/** -spring.thymeleaf.encoding=UTF-8 +# spring.thymeleaf.encoding=UTF-8 # Disabled - React frontend replaces Thymeleaf spring.web.resources.mime-mappings.webmanifest=application/manifest+json spring.mvc.async.request-timeout=${SYSTEM_CONNECTIONTIMEOUTMILLISECONDS:1200000} @@ -35,6 +35,14 @@ spring.datasource.username=sa spring.datasource.password= spring.h2.console.enabled=false spring.jpa.hibernate.ddl-auto=update +# Defer datasource initialization to ensure that the database is fully set up +# before Hibernate attempts to access it. This is particularly useful when +# using database initialization scripts or tools. +spring.jpa.defer-datasource-initialization=true + +# Disable SQL logging to avoid cluttering the logs in production. Enable this +# property during development if you need to debug SQL queries. +spring.jpa.show-sql=false server.servlet.session.timeout:30m # Change the default URL path for OpenAPI JSON springdoc.api-docs.path=/v1/api-docs diff --git a/app/proprietary/build.gradle b/app/proprietary/build.gradle index 719f74127..4a855ec6b 100644 --- a/app/proprietary/build.gradle +++ b/app/proprietary/build.gradle @@ -35,6 +35,8 @@ dependencies { api 'org.springframework:spring-webmvc' api 'org.springframework.session:spring-session-core' api "org.springframework.security:spring-security-core:$springSecuritySamlVersion" + api "org.springframework.security:spring-security-web:$springSecuritySamlVersion" + api "org.springframework.security:spring-security-config:$springSecuritySamlVersion" api "org.springframework.security:spring-security-saml2-service-provider:$springSecuritySamlVersion" api 'org.springframework.boot:spring-boot-starter-jetty' api 'org.springframework.boot:spring-boot-starter-security' @@ -47,7 +49,7 @@ dependencies { // https://mvnrepository.com/artifact/com.bucket4j/bucket4j_jdk17 implementation 'org.bouncycastle:bcprov-jdk18on:1.81' - implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.3.RELEASE' + // implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.3.RELEASE' // Removed - UI moved to React frontend api 'io.micrometer:micrometer-registry-prometheus' implementation 'com.unboundid.product.scim2:scim2-sdk-client:4.0.0' runtimeOnly 'com.h2database:h2:2.3.232' // Don't upgrade h2database diff --git a/app/proprietary/src/main/java/stirling/software/proprietary/controller/AuditDashboardController.java b/app/proprietary/src/main/java/stirling/software/proprietary/controller/AuditDashboardController.java index 67b71ccd8..6d2f85303 100644 --- a/app/proprietary/src/main/java/stirling/software/proprietary/controller/AuditDashboardController.java +++ b/app/proprietary/src/main/java/stirling/software/proprietary/controller/AuditDashboardController.java @@ -22,7 +22,6 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -46,7 +45,7 @@ import stirling.software.proprietary.security.config.EnterpriseEndpoint; /** Controller for the audit dashboard. Admin-only access. */ @Slf4j -@Controller +// @Controller // Disabled - Backend-only mode, no Thymeleaf UI @RequestMapping("/audit") @PreAuthorize("hasRole('ADMIN')") @RequiredArgsConstructor diff --git a/app/proprietary/src/main/java/stirling/software/proprietary/security/config/AccountWebController.java b/app/proprietary/src/main/java/stirling/software/proprietary/security/config/AccountWebController.java index 0d846fc3d..1009a6aba 100644 --- a/app/proprietary/src/main/java/stirling/software/proprietary/security/config/AccountWebController.java +++ b/app/proprietary/src/main/java/stirling/software/proprietary/security/config/AccountWebController.java @@ -12,13 +12,10 @@ import java.util.Map; import java.util.Optional; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.core.Authentication; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.oauth2.core.user.OAuth2User; -import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -48,7 +45,7 @@ import stirling.software.proprietary.security.saml2.CustomSaml2AuthenticatedPrin import stirling.software.proprietary.security.service.TeamService; import stirling.software.proprietary.security.session.SessionPersistentRegistry; -@Controller +// @Controller // Disabled - Backend-only mode, no Thymeleaf UI @Slf4j @Tag(name = "Account Security", description = "Account Security APIs") public class AccountWebController { @@ -75,7 +72,7 @@ public class AccountWebController { this.teamRepository = teamRepository; } - @GetMapping("/login") + // @GetMapping("/login") public String login(HttpServletRequest request, Model model, Authentication authentication) { // If the user is already authenticated, redirect them to the home page. if (authentication != null && authentication.isAuthenticated()) { @@ -203,8 +200,8 @@ public class AccountWebController { return "login"; } - @PreAuthorize("hasRole('ROLE_ADMIN')") - @GetMapping("/usage") + // @PreAuthorize("hasRole('ROLE_ADMIN')") + // @GetMapping("/usage") public String showUsage() { if (!runningEE) { return "error"; @@ -212,8 +209,8 @@ public class AccountWebController { return "usage"; } - @PreAuthorize("hasRole('ROLE_ADMIN')") - @GetMapping("/adminSettings") + // @PreAuthorize("hasRole('ROLE_ADMIN')") + // @GetMapping("/adminSettings") public String showAddUserForm( HttpServletRequest request, Model model, Authentication authentication) { List allUsers = userRepository.findAllWithTeam(); @@ -371,8 +368,8 @@ public class AccountWebController { return "adminSettings"; } - @PreAuthorize("!hasAuthority('ROLE_DEMO_USER')") - @GetMapping("/account") + // @PreAuthorize("!hasAuthority('ROLE_DEMO_USER')") + // @GetMapping("/account") public String account(HttpServletRequest request, Model model, Authentication authentication) { if (authentication == null || !authentication.isAuthenticated()) { return "redirect:/"; @@ -436,8 +433,8 @@ public class AccountWebController { return "account"; } - @PreAuthorize("!hasAuthority('ROLE_DEMO_USER')") - @GetMapping("/change-creds") + // @PreAuthorize("!hasAuthority('ROLE_DEMO_USER')") + // @GetMapping("/change-creds") public String changeCreds( HttpServletRequest request, Model model, Authentication authentication) { if (authentication == null || !authentication.isAuthenticated()) { diff --git a/app/proprietary/src/main/java/stirling/software/proprietary/security/controller/api/EmailController.java b/app/proprietary/src/main/java/stirling/software/proprietary/security/controller/api/EmailController.java index 839c07083..e2a55e00e 100644 --- a/app/proprietary/src/main/java/stirling/software/proprietary/security/controller/api/EmailController.java +++ b/app/proprietary/src/main/java/stirling/software/proprietary/security/controller/api/EmailController.java @@ -1,13 +1,10 @@ package stirling.software.proprietary.security.controller.api; -import stirling.software.common.annotations.AutoJobPostMapping; - import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.mail.MailSendException; import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -20,6 +17,7 @@ import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import stirling.software.common.annotations.AutoJobPostMapping; import stirling.software.proprietary.security.model.api.Email; import stirling.software.proprietary.security.service.EmailService; diff --git a/app/proprietary/src/main/java/stirling/software/proprietary/security/controller/web/DatabaseWebController.java b/app/proprietary/src/main/java/stirling/software/proprietary/security/controller/web/DatabaseWebController.java index 940c0c13f..ee33be0b9 100644 --- a/app/proprietary/src/main/java/stirling/software/proprietary/security/controller/web/DatabaseWebController.java +++ b/app/proprietary/src/main/java/stirling/software/proprietary/security/controller/web/DatabaseWebController.java @@ -4,9 +4,7 @@ import java.util.List; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.core.Authentication; -import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; import io.swagger.v3.oas.annotations.tags.Tag; @@ -17,15 +15,16 @@ import lombok.RequiredArgsConstructor; import stirling.software.common.model.FileInfo; import stirling.software.proprietary.security.service.DatabaseService; -@Controller +// @Controller // Disabled - Backend-only mode, no Thymeleaf UI @Tag(name = "Database Management", description = "Database management and security APIs") @RequiredArgsConstructor public class DatabaseWebController { private final DatabaseService databaseService; + @Deprecated @PreAuthorize("hasRole('ROLE_ADMIN')") - @GetMapping("/database") + // @GetMapping("/database") public String database(HttpServletRequest request, Model model, Authentication authentication) { String error = request.getParameter("error"); String confirmed = request.getParameter("infoMessage"); diff --git a/app/proprietary/src/main/java/stirling/software/proprietary/security/controller/web/TeamWebController.java b/app/proprietary/src/main/java/stirling/software/proprietary/security/controller/web/TeamWebController.java index 2dd9b3478..71ea99d2f 100644 --- a/app/proprietary/src/main/java/stirling/software/proprietary/security/controller/web/TeamWebController.java +++ b/app/proprietary/src/main/java/stirling/software/proprietary/security/controller/web/TeamWebController.java @@ -6,9 +6,7 @@ import java.util.List; import java.util.Map; import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,7 +23,7 @@ import stirling.software.proprietary.security.model.User; import stirling.software.proprietary.security.repository.TeamRepository; import stirling.software.proprietary.security.service.TeamService; -@Controller +// @Controller // Disabled - Backend-only mode, no Thymeleaf UI @RequestMapping("/teams") @RequiredArgsConstructor @Slf4j @@ -35,7 +33,8 @@ public class TeamWebController { private final SessionRepository sessionRepository; private final UserRepository userRepository; - @GetMapping + @Deprecated + // @GetMapping @PreAuthorize("hasRole('ROLE_ADMIN')") public String listTeams(HttpServletRequest request, Model model) { // Get teams with user counts using a DTO projection @@ -86,7 +85,8 @@ public class TeamWebController { return "accounts/teams"; } - @GetMapping("/{id}") + @Deprecated + // @GetMapping("/{id}") @PreAuthorize("hasRole('ROLE_ADMIN')") public String viewTeamDetails( HttpServletRequest request, @PathVariable("id") Long id, Model model) { diff --git a/testing/compose/docker-compose-ultra-lite.yml b/testing/compose/docker-compose-ultra-lite.yml index 2ea9464a6..bddea4668 100644 --- a/testing/compose/docker-compose-ultra-lite.yml +++ b/testing/compose/docker-compose-ultra-lite.yml @@ -10,7 +10,7 @@ services: limits: memory: 2G healthcheck: - test: ["CMD-SHELL", "curl -f http://localhost:8080/api/v1/info/status | grep -q 'UP' && curl -fL http://localhost:8080/ | grep -qv 'Please sign in'"] + test: ["CMD-SHELL", "curl -f http://localhost:8080/api/v1/info/status | grep -q 'UP'"] interval: 5s timeout: 10s retries: 16 diff --git a/testing/test.sh b/testing/test.sh index 0876893de..ec01ff638 100644 --- a/testing/test.sh +++ b/testing/test.sh @@ -185,23 +185,18 @@ verify_app_version() { echo "Checking version for $service_name (expecting $EXPECTED_VERSION)..." - # Try to access the homepage and extract the version + # Try to access the status endpoint and extract the version local response - response=$(curl -s "$base_url") + response=$(curl -s "$base_url/api/v1/info/status") - # Extract version from pixel tracking tag + # Extract version from JSON response using grep and sed local actual_version - actual_version=$(echo "$response" | grep -o 'appVersion=[0-9.]*' | head -1 | sed 's/appVersion=//') + actual_version=$(echo "$response" | grep -o '"version":"[^"]*"' | head -1 | sed 's/"version":"//' | sed 's/"//') - # If we couldn't find the version in the pixel tag, try other approaches + # Check if we got a valid response if [ -z "$actual_version" ]; then - # Check for "App Version:" format - if echo "$response" | grep -q "App Version:"; then - actual_version=$(echo "$response" | grep -o "App Version: [0-9.]*" | sed 's/App Version: //') - else - echo "❌ Version verification failed: Could not find version information" - return 1 - fi + echo "❌ Version verification failed: Could not find version information in status endpoint" + return 1 fi # Check if the extracted version matches expected version @@ -278,15 +273,6 @@ main() { # Test each configuration run_tests "Stirling-PDF-Ultra-Lite" "./testing/compose/docker-compose-ultra-lite.yml" - - echo "Testing basic frontend homepage accessibility..." - if curl -f http://localhost:3000 > /dev/null 2>&1; then - passed_tests+=("Frontend-Homepage-Accessibility-lite") - echo "Frontend homepage accessibility check passed" - else - failed_tests+=("Frontend-Homepage-Accessibility-lite") - echo "Frontend homepage accessibility check failed" - fi # echo "Testing webpage accessibility..." # cd "testing" @@ -327,15 +313,6 @@ main() { # Test each configuration with security run_tests "Stirling-PDF-Security" "./testing/compose/docker-compose-security.yml" - - echo "Testing basic frontend homepage accessibility..." - if curl -f http://localhost:3000 > /dev/null 2>&1; then - passed_tests+=("Frontend-Homepage-Accessibility-full") - echo "Frontend homepage accessibility check passed" - else - failed_tests+=("Frontend-Homepage-Accessibility-full") - echo "Frontend homepage accessibility check failed" - fi # echo "Testing webpage accessibility..." # cd "testing"