Stirling-PDF icon indicating copy to clipboard operation
Stirling-PDF copied to clipboard

Improved Configuration and YAML Management

Open Ludy87 opened this issue 10 months ago • 6 comments

Description of Changes

What was changed:

  • Configuration Updates:
    Replaced all calls to GeneralUtils.saveKeyToConfig with the new GeneralUtils.saveKeyToSettings method across multiple classes (e.g., LicenseKeyChecker, InitialSetup, SettingsController, etc.). This update ensures consistent management of configuration settings.

  • File Path and Exception Handling:
    Updated file path handling in SPDFApplication by creating Path objects from string paths and logging these paths for clarity. Also refined exception handling by catching more specific exceptions (e.g., using IOException instead of a generic Exception).

  • Analytics Flag and Rate Limiting:
    Changed the analytics flag in the application properties from a String to a Boolean, and updated related logic in AppConfig and PostHogService. The rate-limiting property retrieval in AppConfig was also refined for clarity.

  • YAML Configuration Management:
    Replaced the previous manual, line-based YAML merging logic in ConfigInitializer with a new YamlHelper class. This helper leverages the SnakeYAML engine to load, update, and save YAML configurations more robustly while preserving comments and formatting.

Why the change was made:

  • Improved Maintainability:
    Consolidating configuration update logic into a single utility method (saveKeyToSettings) reduces code duplication and simplifies future maintenance.

  • Enhanced Robustness:
    The new YamlHelper class ensures that configuration files are merged accurately and safely, minimizing risks of data loss or format corruption.

  • Better Type Safety and Exception Handling:
    Switching the analytics flag to a Boolean and refining exception handling improves code robustness and debugging efficiency.

  • Clarity and Consistency:
    Standardizing file path handling and logging practices enhances code readability across the project.

Challenges encountered:

  • YAML Merging Complexity:
    Integrating the new YamlHelper required careful handling to preserve existing settings, comments, and formatting during merges.

  • Type Conversion and Backward Compatibility:
    Updating the analytics flag from a string to a Boolean required extensive testing to ensure backward compatibility and proper functionality.

  • Exception Granularity:
    Refactoring exception handling from a generic to a more specific approach involved a detailed review to cover all edge cases.

Closes #<issue_number>


Checklist

Documentation

UI Changes (if applicable)

  • [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR)

Testing (if applicable)

  • [x] I have tested my changes locally. Refer to the Testing Guide for more details.

Ludy87 avatar Feb 16 '25 22:02 Ludy87

/deploypr

Ludy87 avatar Feb 16 '25 22:02 Ludy87

/deploypr

Ludy87 avatar Feb 18 '25 11:02 Ludy87

/deploypr fixed now haha

Frooodle avatar Feb 19 '25 21:02 Frooodle

🚀 PR Test Deployment

Your PR has been deployed for testing!

🔗 Test URL: http://185.252.234.121:2966

This deployment will be automatically cleaned up when the PR is closed.

github-actions[bot] avatar Feb 19 '25 21:02 github-actions[bot]

/deploypr

Frooodle avatar Feb 23 '25 17:02 Frooodle

🚀 PR Test Deployment

Your PR has been deployed for testing!

🔗 Test URL: http://185.252.234.121:2966

This deployment will be automatically cleaned up when the PR is closed.

github-actions[bot] avatar Feb 23 '25 17:02 github-actions[bot]

/deploypr

Ludy87 avatar Feb 25 '25 21:02 Ludy87

🚀 PR Test Deployment

Your PR has been deployed for testing!

🔗 Test URL: http://185.252.234.121:2966

This deployment will be automatically cleaned up when the PR is closed.

github-actions[bot] avatar Feb 25 '25 21:02 github-actions[bot]