Compare commits

...
175 Commits
Author SHA1 Message Date
Anthony Stirling a187f0599b camers scan init 2025-06-04 15:45:50 +01:00
Anthony Stirling 488fe253aa test 2025-06-03 13:41:24 +01:00
Anthony Stirling 7874d18f32 fix 2025-06-03 13:19:42 +01:00
a 1e968c79f6 Merge branch 'websocketSupportFun' of git@github.com:Stirling-Tools/Stirling-PDF.git into websocketSupportFun 2025-06-03 13:15:02 +01:00
Anthony Stirling e2b88cf8b4 fix tests 2025-06-03 13:08:32 +01:00
Anthony Stirling da49b50d27 Update build.yml 2025-06-03 13:04:02 +01:00
Anthony Stirling 970679640d Merge branch 'main' into websocketSupportFun 2025-06-03 13:01:35 +01:00
Anthony Stirling 4883573e87 Update build.yml (#3637)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-06-03 13:01:07 +01:00
Anthony Stirling 18f571291b extra result 2025-06-03 12:40:33 +01:00
Anthony Stirling 0abcc0ccb8 test fix 2025-06-03 12:36:00 +01:00
Anthony Stirling a99c104053 jdk17 support 2025-06-03 12:01:28 +01:00
Anthony Stirling 95fbd4647d log changing 2025-06-03 10:34:47 +01:00
Anthony Stirling 8d4f5f16cb Queue, timeouts, retries, tests! 2025-06-03 01:18:07 +01:00
albanobattistella 63fdb958ef Update messages_it_IT.properties (#3634)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-06-03 00:26:16 +01:00
Anthony Stirling 2ee43b2070 update all endpoints 2025-06-02 22:49:46 +01:00
stirlingbot[bot] 55b9286958 Update 3rd Party Licenses (#3632)
Auto-generated by stirlingbot[bot]

Signed-off-by: stirlingbot[bot] <stirlingbot[bot]@users.noreply.github.com>
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-06-02 20:12:02 +01:00
dependabot[bot] 3cc3037408 Bump me.friwi:jcefmaven from 132.3.1 to 135.0.20 (#3548)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps [me.friwi:jcefmaven](https://github.com/jcefmaven/jcefmaven) from
132.3.1 to 135.0.20.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/jcefmaven/jcefmaven/releases">me.friwi:jcefmaven's
releases</a>.</em></p>
<blockquote>
<h2>JCEF Maven 135.0.20</h2>
<p><strong>Update JCEF to <a
href="https://bitbucket.org/chromiumembedded/java-cef/commits/ca49ada5c7e3fc98cd7058b6253b59f967530a65">ca49ada</a></strong></p>
<p>Build: [GitHub Actions <a
href="https://redirect.github.com/jcefmaven/jcefmaven/issues/94">#94</a>](<a
href="https://github.com/jcefmaven/jcefmaven/actions/runs/15018447852">https://github.com/jcefmaven/jcefmaven/actions/runs/15018447852</a>)
MVN version: 135.0.20
JCEF commit: ca49ada
CEF version: 135.0.20+ge7de5c3+chromium-135.0.7049.85</p>
<p><strong>Use with Maven:</strong></p>
<pre><code>&lt;dependency&gt;
    &lt;groupId&gt;me.friwi&lt;/groupId&gt;
    &lt;artifactId&gt;jcefmaven&lt;/artifactId&gt;
    &lt;version&gt;135.0.20&lt;/version&gt;
&lt;/dependency&gt;
</code></pre>
<!-- raw HTML omitted -->
<h5>Linux AMD64</h5>
<pre><code>&lt;dependency&gt;
    &lt;groupId&gt;me.friwi&lt;/groupId&gt;
    &lt;artifactId&gt;jcef-natives-linux-amd64&lt;/artifactId&gt;

&lt;version&gt;jcef-ca49ada+cef-135.0.20+ge7de5c3+chromium-135.0.7049.85&lt;/version&gt;
&lt;/dependency&gt;
</code></pre>
<h5>Linux ARM</h5>
<pre><code>&lt;dependency&gt;
    &lt;groupId&gt;me.friwi&lt;/groupId&gt;
    &lt;artifactId&gt;jcef-natives-linux-arm&lt;/artifactId&gt;

&lt;version&gt;jcef-ca49ada+cef-135.0.20+ge7de5c3+chromium-135.0.7049.85&lt;/version&gt;
&lt;/dependency&gt;
</code></pre>
<h5>Linux ARM64</h5>
<pre><code>&lt;dependency&gt;
    &lt;groupId&gt;me.friwi&lt;/groupId&gt;
    &lt;artifactId&gt;jcef-natives-linux-arm64&lt;/artifactId&gt;

&lt;version&gt;jcef-ca49ada+cef-135.0.20+ge7de5c3+chromium-135.0.7049.85&lt;/version&gt;
&lt;/dependency&gt;
</code></pre>
<h5>Macosx AMD64</h5>
<pre><code>&lt;dependency&gt;
&lt;/tr&gt;&lt;/table&gt; 
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/jcefmaven/jcefmaven/commit/91b0aca9c0fbe76cd9df609aa6f10230dddf54c6"><code>91b0aca</code></a>
Update README.md to 135.0.20</li>
<li>See full diff in <a
href="https://github.com/jcefmaven/jcefmaven/compare/132.3.1...135.0.20">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=me.friwi:jcefmaven&package-manager=gradle&previous-version=132.3.1&new-version=135.0.20)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 20:09:42 +01:00
dependabot[bot] 70a9b5f009 Bump jakarta.servlet:jakarta.servlet-api from 6.0.0 to 6.1.0 (#3631)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps
[jakarta.servlet:jakarta.servlet-api](https://github.com/eclipse-ee4j/servlet-api)
from 6.0.0 to 6.1.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/eclipse-ee4j/servlet-api/commits">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=jakarta.servlet:jakarta.servlet-api&package-manager=gradle&previous-version=6.0.0&new-version=6.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 20:09:22 +01:00
stirlingbot[bot] 92f5c5de7a 🌐 Sync Translations + Update README Progress Table (#3617)
### Description of Changes

This Pull Request was automatically generated to synchronize updates to
translation files and documentation. Below are the details of the
changes made:

#### **1. Synchronization of Translation Files**
- Updated translation files (`messages_*.properties`) to reflect changes
in the reference file `messages_en_GB.properties`.
- Ensured consistency and synchronization across all supported language
files.
- Highlighted any missing or incomplete translations.

#### **2. Update README.md**
- Generated the translation progress table in `README.md`.
- Added a summary of the current translation status for all supported
languages.
- Included up-to-date statistics on translation coverage.

#### **Why these changes are necessary**
- Keeps translation files aligned with the latest reference updates.
- Ensures the documentation reflects the current translation progress.

---

Auto-generated by [create-pull-request][1].

[1]: https://github.com/peter-evans/create-pull-request

---------

Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-06-02 20:08:36 +01:00
dependabot[bot] b08bc191fc Bump org.springdoc:springdoc-openapi-starter-webmvc-ui from 2.8.6 to 2.8.8 (#3628)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps
[org.springdoc:springdoc-openapi-starter-webmvc-ui](https://github.com/springdoc/springdoc-openapi)
from 2.8.6 to 2.8.8.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/springdoc/springdoc-openapi/releases">org.springdoc:springdoc-openapi-starter-webmvc-ui's
releases</a>.</em></p>
<blockquote>
<h2>v2.8.8</h2>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/springdoc/springdoc-openapi/compare/v2.8.7...v2.8.8">https://github.com/springdoc/springdoc-openapi/compare/v2.8.7...v2.8.8</a></p>
<h3>Fixed</h3>
<ul>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2977">#2977</a>
- Handle projects not using kotlin-reflect <a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2977">#2977</a></li>
</ul>
<h2>springdoc-openapi v2.8.7 released!</h2>
<h2>What's Changed</h2>
<h3>Added</h3>
<ul>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2944">#2944</a>
- Introducing springdoc-openapi-bom project</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2948">#2948</a>
- Customize Servers via application.yml</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2963">#2963</a>
- Set default content type for problem details object to
application/problem+jso</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2971">#2971</a>
- List of value classes in Kotlin</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Upgrade swagger-ui to v5.21.0</li>
<li>Upgrade swagger-core to 2.2.30</li>
<li>Upgrade spring-boot to version 3.4.5</li>
<li>Upgrade spring-security-oauth2-authorization-server to version
1.4.3</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2947">#2947</a>
- Unexpected warning &quot;Appended trailing slash to static resource
location&quot;</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2960">#2960</a>
- NPE when customizing group's open-api without specifying any
schema</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2969">#2969</a>
- fix path to register resource handler to work
SwaggerIndexPageTransformer considering /webjar path prefix</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2964">#2964</a>
- Cannot add custom description and example for java.time.Duration since
v2.8.6</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2972">#2972</a>
- <a href="https://github.com/Header"><code>@​Header</code></a>(schema =
<a href="https://github.com/Schema"><code>@​Schema</code></a>(type =
&quot;string&quot;)) generates empty or broken schema in OpenAPI output
since 2.8.0</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2976">#2976</a>,
<a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2967">#2967</a>
- Build Failure due to Private Inner Class.</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2556">#2556</a>
- Unable to determine if it is a Kotlin type</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/lagoshny"><code>@​lagoshny</code></a>
made their first contribution in <a
href="https://redirect.github.com/springdoc/springdoc-openapi/pull/2970">springdoc/springdoc-openapi#2970</a></li>
<li><a href="https://github.com/mymx2"><code>@​mymx2</code></a> made
their first contribution in <a
href="https://redirect.github.com/springdoc/springdoc-openapi/pull/2950">springdoc/springdoc-openapi#2950</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/springdoc/springdoc-openapi/compare/v2.8.6...v2.8.7">https://github.com/springdoc/springdoc-openapi/compare/v2.8.6...v2.8.7</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/springdoc/springdoc-openapi/blob/main/CHANGELOG.md">org.springdoc:springdoc-openapi-starter-webmvc-ui's
changelog</a>.</em></p>
<blockquote>
<h2>[2.8.8] - 2025-05-04</h2>
<h3>Fixed</h3>
<ul>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2977">#2977</a>
- Handle projects not using kotlin-reflect <a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2977">#2977</a></li>
</ul>
<h2>[2.8.7] - 2025-05-04</h2>
<h3>Added</h3>
<ul>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2944">#2944</a>
- Introducing springdoc-openapi-bom project</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2948">#2948</a>
- Customize Servers via application.yml</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2963">#2963</a>
- Set default content type for problem details object to
application/problem+jso</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2971">#2971</a>
- List of value classes in Kotlin</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Upgrade swagger-ui to v5.21.0</li>
<li>Upgrade swagger-core to 2.2.30</li>
<li>Upgrade spring-boot to version 3.4.5</li>
<li>Upgrade spring-security-oauth2-authorization-server to version
1.4.3</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2947">#2947</a>
- Unexpected warning &quot;Appended trailing slash to static resource
location&quot;</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2960">#2960</a>
- NPE when customizing group's open-api without specifying any
schema</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2969">#2969</a>
- fix path to register resource handler to work
SwaggerIndexPageTransformer considering /webjar path prefix</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2964">#2964</a>
- Cannot add custom description and example for java.time.Duration since
v2.8.6</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2972">#2972</a>
- <a href="https://github.com/Header"><code>@​Header</code></a>(schema =
<a href="https://github.com/Schema"><code>@​Schema</code></a>(type =
&quot;string&quot;)) generates empty or broken schema in OpenAPI output
since 2.8.0</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2976">#2976</a>,
<a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2967">#2967</a>
- Build Failure due to Private Inner Class.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/springdoc/springdoc-openapi/commit/bce44dbe502cbaeeff6188fe210042859aa0ed54"><code>bce44db</code></a>
[maven-release-plugin] prepare release v2.8.8</li>
<li><a
href="https://github.com/springdoc/springdoc-openapi/commit/707fce0271fda0c713c412488247dba4cc32d98c"><code>707fce0</code></a>
Handle projects not using kotlin-reflect. Fixes <a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2977">#2977</a></li>
<li><a
href="https://github.com/springdoc/springdoc-openapi/commit/7a3546cb733d3ca493b6e622778a97c73b39b04a"><code>7a3546c</code></a>
[maven-release-plugin] prepare for next development iteration</li>
<li><a
href="https://github.com/springdoc/springdoc-openapi/commit/764ef2fd42040232a7a9280d826ed72a591da3df"><code>764ef2f</code></a>
[maven-release-plugin] prepare release v2.8.7</li>
<li><a
href="https://github.com/springdoc/springdoc-openapi/commit/98dacbda5cbdb0a278aa407ddc6aa05c8f23f031"><code>98dacbd</code></a>
Prepare for the next release</li>
<li><a
href="https://github.com/springdoc/springdoc-openapi/commit/5eb7d77e55df6b1b4ea1964fb146233f88b71e2d"><code>5eb7d77</code></a>
pom.xml cleanup for <a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2944">#2944</a></li>
<li><a
href="https://github.com/springdoc/springdoc-openapi/commit/9dffa3d7d43e11ee1abfa86c7bf9b1886fc23e11"><code>9dffa3d</code></a>
pom.xml cleanup for <a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2944">#2944</a></li>
<li><a
href="https://github.com/springdoc/springdoc-openapi/commit/a68b42edf1465f1888c42263dac5547622ebd4cc"><code>a68b42e</code></a>
List of value classes in Kotlin. Fixes <a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2971">#2971</a></li>
<li><a
href="https://github.com/springdoc/springdoc-openapi/commit/95fa3bbb71859e428092034efbb3deae9bf4c892"><code>95fa3bb</code></a>
Regression: <a
href="https://github.com/Header"><code>@​Header</code></a>(schema = <a
href="https://github.com/Schema"><code>@​Schema</code></a>(type =
&quot;string&quot;)) generates empty or bro...</li>
<li><a
href="https://github.com/springdoc/springdoc-openapi/commit/3d056d8c55ec3139fc3e2d4a2f0eed7d8384d5f0"><code>3d056d8</code></a>
Build Failure due to Private Inner Class. Fixes <a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2976">#2976</a>,
<a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2967">#2967</a></li>
<li>Additional commits viewable in <a
href="https://github.com/springdoc/springdoc-openapi/compare/v2.8.6...v2.8.8">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.springdoc:springdoc-openapi-starter-webmvc-ui&package-manager=gradle&previous-version=2.8.6&new-version=2.8.8)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 20:08:06 +01:00
dependabot[bot] d12aca0ca6 Bump org.postgresql:postgresql from 42.7.5 to 42.7.6 (#3629)
Bumps [org.postgresql:postgresql](https://github.com/pgjdbc/pgjdbc) from
42.7.5 to 42.7.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pgjdbc/pgjdbc/releases">org.postgresql:postgresql's
releases</a>.</em></p>
<blockquote>
<h2>v42.7.6</h2>
<h2>Changes</h2>
<ul>
<li>Prepare release notes for release 42_7_6 (new format) <a
href="https://github.com/davecramer"><code>@​davecramer</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3628">#3628</a>)</li>
<li>fix: isValid incorrectly called execute, instead of executeWithFlags
fixes Issue <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3630">#3630</a>
<a href="https://github.com/davecramer"><code>@​davecramer</code></a>
(<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3631">#3631</a>)</li>
<li>add override <a
href="https://github.com/davecramer"><code>@​davecramer</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3629">#3629</a>)</li>
<li>add the ability to turn off automatic LSN flush <a
href="https://github.com/davecramer"><code>@​davecramer</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3403">#3403</a>)</li>
<li>test: add tests with reWriteBatchedInserts=true <a
href="https://github.com/vlsi"><code>@​vlsi</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3616">#3616</a>)</li>
<li>test: add CI executions with adaptive_fetch=true by default <a
href="https://github.com/vlsi"><code>@​vlsi</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3615">#3615</a>)</li>
<li>test: simplify TestUtil.openDB, add tests with various
assumeMinServerVersion values <a
href="https://github.com/vlsi"><code>@​vlsi</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3614">#3614</a>)</li>
<li>Deprecate group startup parms <a
href="https://github.com/davecramer"><code>@​davecramer</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3613">#3613</a>)</li>
<li>Add back application name setting <a
href="https://github.com/joejensen"><code>@​joejensen</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3509">#3509</a>)</li>
<li>Copr: Use Java 21 as the build dependency <a
href="https://github.com/mkoncek"><code>@​mkoncek</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3607">#3607</a>)</li>
<li>fix indentation of return child to allow built pass in Checkstyle's
CIs <a href="https://github.com/mohitsatr"><code>@​mohitsatr</code></a>
(<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3611">#3611</a>)</li>
<li>Set column name explicitely when using
<code>current_database()</code> in queries <a
href="https://github.com/kneth"><code>@​kneth</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3526">#3526</a>)</li>
<li>add PgMessageType and use static variables for protocol literals <a
href="https://github.com/davecramer"><code>@​davecramer</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3609">#3609</a>)</li>
<li>Handle protocol 3.2 and wider cancel keys. <a
href="https://github.com/davecramer"><code>@​davecramer</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3592">#3592</a>)</li>
<li>refactor empty resultset to use empty result set if the catalog is
not correct <a
href="https://github.com/davecramer"><code>@​davecramer</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3588">#3588</a>)</li>
<li>Use query to find the current catalog instead of relying on the
database in the connection URL or connection properties as this could be
different if connected through a pooler or proxy <a
href="https://github.com/davecramer"><code>@​davecramer</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3565">#3565</a>)</li>
<li>ci: add Java 24 tests <a
href="https://github.com/davecramer"><code>@​davecramer</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3580">#3580</a>)</li>
<li>docs: Relabel 42.7.4 as past version as it is no longer the latest
<a href="https://github.com/sehrope"><code>@​sehrope</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3586">#3586</a>)</li>
<li>test: remove stale logging message from SslTest <a
href="https://github.com/vlsi"><code>@​vlsi</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3584">#3584</a>)</li>
<li>chore: appply the latest byte-buddy version for tests so we support
the latest Java versions <a
href="https://github.com/vlsi"><code>@​vlsi</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3583">#3583</a>)</li>
<li>fix: make PgConnection#abort compatible with Java 24 <a
href="https://github.com/vlsi"><code>@​vlsi</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3582">#3582</a>)</li>
<li>chore(deps): update plugin com.github.burrunan.s3-build-cache to
v1.8.5 <a
href="https://github.com/renovate-bot"><code>@​renovate-bot</code></a>
(<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3573">#3573</a>)</li>
<li>Fix JavadocTagContinuationIndentation in
AfterBeforeParameterResolver <a
href="https://github.com/Anmol202005"><code>@​Anmol202005</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3566">#3566</a>)</li>
<li>Revert &quot;use in row values instead of union all (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3510">#3510</a>)&quot;
<a href="https://github.com/vlsi"><code>@​vlsi</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3524">#3524</a>)</li>
<li>use in row values instead of union all <a
href="https://github.com/davecramer"><code>@​davecramer</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3510">#3510</a>)</li>
<li>feat: enhanced DatabaseMetadata.getIndexInfo() method, added index
comment as REMARKS property <a
href="https://github.com/raminorujov"><code>@​raminorujov</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3513">#3513</a>)</li>
<li>Nit: correct message in main.yml test action <a
href="https://github.com/ecki"><code>@​ecki</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3503">#3503</a>)</li>
<li>chore: use import instead of require to support modern NodeJS <a
href="https://github.com/vlsi"><code>@​vlsi</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3502">#3502</a>)</li>
<li>chore: use PostgreSQL 17 rather than 17rc1 for CI tests <a
href="https://github.com/vlsi"><code>@​vlsi</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3501">#3501</a>)</li>
<li>chore: add ErrorProne verification to catch bugs ealier <a
href="https://github.com/vlsi"><code>@​vlsi</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3493">#3493</a>)</li>
<li>fix: ArrayIndexOutOfBounds when write big object into GSS enabled
connection, make GSSInputStream robust in face of streams that produce
incomplete reads <a
href="https://github.com/vlsi"><code>@​vlsi</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3500">#3500</a>)</li>
<li>refactor: factor out duplicated .getBytes() when converting
date/time to Date/Time/Timestamp <a
href="https://github.com/vlsi"><code>@​vlsi</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3497">#3497</a>)</li>
<li>chore: exclude Oracle Java 17 from CI tests <a
href="https://github.com/vlsi"><code>@​vlsi</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3499">#3499</a>)</li>
<li>chore: remove unused Travis CI configuration <a
href="https://github.com/vlsi"><code>@​vlsi</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3498">#3498</a>)</li>
<li>Undeprecate sslfactoryarg connection property <a
href="https://github.com/sehrope"><code>@​sehrope</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3496">#3496</a>)</li>
<li>fix:Fix sending extra_float_digits <a
href="https://github.com/davecramer"><code>@​davecramer</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3491">#3491</a>)</li>
</ul>
<h2>🐛 Bug Fixes</h2>
<ul>
<li>fix: EOFException on PreparedStatement#toString with unset bytea
parameter since 42.7.4 <a
href="https://github.com/MrEasy"><code>@​MrEasy</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3369">#3369</a>)</li>
</ul>
<h2>🧰 Maintenance</h2>
<ul>
<li>chore: use Java 21 for building pgjdbc by default <a
href="https://github.com/vlsi"><code>@​vlsi</code></a> (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3612">#3612</a>)</li>
</ul>
<h2>⬆️ Dependencies</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pgjdbc/pgjdbc/blob/master/CHANGELOG.md">org.postgresql:postgresql's
changelog</a>.</em></p>
<blockquote>
<h2>[42.7.6]</h2>
<h4>Features</h4>
<ul>
<li>fix: Enhanced DatabaseMetadata.getIndexInfo() method, added index
comment as REMARKS property [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3513">#3513</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3513">pgjdbc/pgjdbc#3513</a>)</li>
</ul>
<h3>Performance Improvements</h3>
<ul>
<li>performance: Improve ResultSetMetadata.fetchFieldMetaData by using
IN row values instead of UNION ALL for improved query performance (later
reverted) [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3510">#3510</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3510">pgjdbc/pgjdbc#3510</a>)</li>
<li>feat:Use a single simple query for all startup parameters, so
groupStartupParameters is no longer needed [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3613">#3613</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3613">pgjdbc/pgjdbc#3613</a>)</li>
<li></li>
</ul>
<h2>Bug Fixes</h2>
<h3>Protocol &amp; Connection Handling</h3>
<ul>
<li>fix: Send extra_float_digits=3 for PostgreSQL 12+ as well [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3491">#3491</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3491">pgjdbc/pgjdbc#3491</a>)</li>
<li>fix: Fixed handling of protocol 3.2 and wider cancel keys [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3592">#3592</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3592">pgjdbc/pgjdbc#3592</a>)</li>
<li>fix: Made PgConnection#abort compatible with Java 24 [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3582">#3582</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3582">pgjdbc/pgjdbc#3582</a>)</li>
<li>fix: Fixed ArrayIndexOutOfBounds when writing big objects into GSS
enabled connections [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3500">#3500</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3500">pgjdbc/pgjdbc#3500</a>)</li>
<li>fix: Added back application name setting [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3509">#3509</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3509">pgjdbc/pgjdbc#3509</a>)</li>
</ul>
<h3>Metadata &amp; Catalog Handling</h3>
<ul>
<li>fix: Set column name explicitly when using current_database() in
queries [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3526">#3526</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3526">pgjdbc/pgjdbc#3526</a>)</li>
<li>fix: Use query to find the current catalog instead of relying on the
database in the connection URL [pull <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3565">#3565</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3565">pgjdbc/pgjdbc#3565</a>)</li>
<li>fix: Refactored empty resultset to use empty result set if the
catalog is not correct [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3588">#3588</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3588">pgjdbc/pgjdbc#3588</a>)</li>
</ul>
<h3>API Improvements</h3>
<ul>
<li>fix: Undeprecated Fastpath API and fixed deprecation warnings [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3493">#3493</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3493">pgjdbc/pgjdbc#3493</a>)</li>
<li>fix: Undeprecated sslfactoryarg [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3496">#3496</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3496">pgjdbc/pgjdbc#3496</a>)</li>
<li>fix: Added PgMessageType and used static variables for protocol
literals [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3609">#3609</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3609">pgjdbc/pgjdbc#3609</a>)</li>
<li>fix: Add the ability to turn off automatic LSN flush [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3403">#3403</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3403">pgjdbc/pgjdbc#3403</a>)</li>
<li>fix: isValid incorrectly called execute, instead of executeWithFlags
[PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3631">#3631</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3631">pgjdbc/pgjdbc#3631</a>).
Fixes [Issue <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3630">#3630</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3630">pgjdbc/pgjdbc#3630</a>)</li>
<li>fix: EOFException on PreparedStatement#toString with unset bytea
parameter since 42.7.4 <a
href="https://github.com/pgjdbc/pgjdbc/commit/0a88ea425e86dce691a96d6aa7023c20ac887b98">Commit
0a88ea4</a>. Fixes [Issue <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3365">#3365</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3365">pgjdbc/pgjdbc#3365</a>)</li>
</ul>
<h2>Infrastructure &amp; Build Improvements</h2>
<h3>Java Support</h3>
<ul>
<li>update: Updated to use Java 21 for building pgjdbc by default [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3612">#3612</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3612">pgjdbc/pgjdbc#3612</a>)</li>
<li>update: Updated Java 21 as the build dependency for copr [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3607">#3607</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3607">pgjdbc/pgjdbc#3607</a>)</li>
<li>update: Updated latest JDK to version 24 [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3580">#3580</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3580">pgjdbc/pgjdbc#3580</a>)</li>
<li>update: Applied the latest byte-buddy version for tests to support
the latest Java versions [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3583">#3583</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3583">pgjdbc/pgjdbc#3583</a>)</li>
</ul>
<h3>Testing &amp; Quality</h3>
<ul>
<li>test: Added ErrorProne verification to detect bugs earlier [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3493">#3493</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3493">pgjdbc/pgjdbc#3493</a>)</li>
<li>test: Simplified TestUtil.openDB, added tests with various
assumeMinServerVersion values [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3624">#3624</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3614">pgjdbc/pgjdbc#3614</a>)</li>
<li>test: Updated to use PostgreSQL 17 rather than 17rc1 for CI tests
[PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3501">#3501</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3501">pgjdbc/pgjdbc#3501</a>)</li>
<li>test: Removed stale logging message from SslTest [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3584">#3584</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3584">pgjdbc/pgjdbc#3584</a>)</li>
<li>test: Added CI executions with adaptive_fetch=true by default for
performance testing [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3615">#3615</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3615">pgjdbc/pgjdbc#3615</a>)</li>
<li>test: Added tests with reWriteBatchedInserts=true [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3616">#3616</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3616">pgjdbc/pgjdbc#3616</a>)</li>
</ul>
<h3>Code Quality</h3>
<ul>
<li>doc: Fixed javadoc warnings [PR <a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3493">#3493</a>](<a
href="https://redirect.github.com/pgjdbc/pgjdbc/pull/3493">pgjdbc/pgjdbc#3493</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pgjdbc/pgjdbc/commit/689708f96d446993cd264cbf5bd5696a726cf8b7"><code>689708f</code></a>
Prepare release notes for release 42_7_6 (new format) (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3628">#3628</a>)</li>
<li><a
href="https://github.com/pgjdbc/pgjdbc/commit/0a88ea425e86dce691a96d6aa7023c20ac887b98"><code>0a88ea4</code></a>
fix: EOFException on PreparedStatement#toString with unset bytea
parameter si...</li>
<li><a
href="https://github.com/pgjdbc/pgjdbc/commit/2de9b943c693c745ea9280444d72b408165caa11"><code>2de9b94</code></a>
fix: make sure Connection.isValid correctly uses executeWithFlags fixes
Issu...</li>
<li><a
href="https://github.com/pgjdbc/pgjdbc/commit/d9e20874590f59543c39a99b824e09344f00a813"><code>d9e2087</code></a>
add override (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3629">#3629</a>)</li>
<li><a
href="https://github.com/pgjdbc/pgjdbc/commit/665b27b8656c8288d9d6c1f8e8d6a7072c238d64"><code>665b27b</code></a>
add the ability to turn off automatic LSN flush (<a
href="https://redirect.github.com/pgjdbc/pgjdbc/issues/3403">#3403</a>)</li>
<li><a
href="https://github.com/pgjdbc/pgjdbc/commit/253c68243c9794644d3cbd9d61b4505b9d079ea5"><code>253c682</code></a>
chore(deps): update burrunan/gradle-cache-action action to v3</li>
<li><a
href="https://github.com/pgjdbc/pgjdbc/commit/2d1ae0cbd44660a9d172c9b4a90e16e198f43d43"><code>2d1ae0c</code></a>
chore(deps): update plugin com.gradle.develocity to v4</li>
<li><a
href="https://github.com/pgjdbc/pgjdbc/commit/baeb89321b26a1a13d430d50ed1102ba80bff183"><code>baeb893</code></a>
fix(deps): update dependency
org.openrewrite.rewrite:org.openrewrite.rewrite....</li>
<li><a
href="https://github.com/pgjdbc/pgjdbc/commit/e24d599952af46cca3c03ced4f574c7e205bdda0"><code>e24d599</code></a>
fix(deps): update dependency com.google.errorprone:error_prone_core to
v2.38.0</li>
<li><a
href="https://github.com/pgjdbc/pgjdbc/commit/1617c68d510b86cd5500b0e9d1a1427156bffcbf"><code>1617c68</code></a>
fix(deps): update dependency
net.ltgt.errorprone:net.ltgt.errorprone.gradle.p...</li>
<li>Additional commits viewable in <a
href="https://github.com/pgjdbc/pgjdbc/compare/REL42.7.5...REL42.7.6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.postgresql:postgresql&package-manager=gradle&previous-version=42.7.5&new-version=42.7.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 20:07:28 +01:00
dependabot[bot] 5ec78b5425 Bump org.springframework.boot:spring-boot-dependencies from 3.4.5 to 3.5.0 (#3627)
Bumps
[org.springframework.boot:spring-boot-dependencies](https://github.com/spring-projects/spring-boot)
from 3.4.5 to 3.5.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-boot/releases">org.springframework.boot:spring-boot-dependencies's
releases</a>.</em></p>
<blockquote>
<h2>v3.5.0</h2>
<p>Full <a
href="https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.5-Release-Notes">release
notes for Spring Boot 3.5</a> are available on the wiki.</p>
<h2> New Features</h2>
<ul>
<li>Make heapdump endpoint restricted by default <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45624">#45624</a></li>
<li>Remove SSL status tag from metrics <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45602">#45602</a></li>
<li>Remove 'spring.http.client' deprecation and change
'spring.http.reactiveclient.settings' to 'spring.http.reactiveclient' <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45507">#45507</a></li>
</ul>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Unable to override/set nested ConfigurationProperties by passing as
a system property <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45639">#45639</a></li>
<li>ValidationAutoConfiguration triggers early initialization of
properties binding <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45618">#45618</a></li>
<li>Micrometer &quot;enable&quot; annotations property does not cover
observed aspect <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45617">#45617</a></li>
<li>spring.graphql.sse.timeout is no longer exposed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45613">#45613</a></li>
<li>SpringApplication.setEnvironmentPrefix is ignored when reading
SPRING_PROFILES_ACTIVE <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45549">#45549</a></li>
<li>IllegalStateException when extracting using layers a module with no
code of its own <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45449">#45449</a></li>
<li>Removed spring.batch.initialize-schema property is still considered
<a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45380">#45380</a></li>
<li>ReactorHttpClientBuilder does not offer a factory method to create
the HttpClient <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45378">#45378</a></li>
<li>Suggested values for spring.jpa.hibernate.ddl-auto are not aligned
with Hibernate <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45351">#45351</a></li>
<li>Custom default units declared on a field are ignored when binding
properties in a native image <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45347">#45347</a></li>
<li>DockerRegistryConfigAuthentication uses the wrong serverUrl as a
fallback for the Credentials helper <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45345">#45345</a></li>
<li>Various spring.datasource properties are mistakenly marked as
ignored <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45342">#45342</a></li>
<li>JerseyWebApplicationInitializer always gets loaded, setting a
ServletContext initParameter <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45297">#45297</a></li>
<li>DockerRegistryConfigAuthentication does not align with Docker CLI <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45292">#45292</a></li>
<li>Unlike the Docker CLI, &quot;\x00&quot; characters are not trimmed
from a decoded Docker Registry password <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45290">#45290</a></li>
<li>CloudFoundry security matcher logs a warning due to use of the
'ignoring()' method <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/32622">#32622</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Document the java info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45634">#45634</a></li>
<li>Document the process info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45632">#45632</a></li>
<li>Document the os info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45630">#45630</a></li>
<li>Document typical spring.application.group and name use <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45628">#45628</a></li>
<li>Document that bean methods should be static when annotated with
<code>@ConfigurationPropertiesBinding</code> <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45626">#45626</a></li>
<li>Document the way that primary Kotlin constructors are used when
binding <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45553">#45553</a></li>
<li>Improve &quot;profile&quot; reference documentation with additional
admonitions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45551">#45551</a></li>
<li>Improve setEnvironmentPrefix(...) reference documentation <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45376">#45376</a></li>
<li>Document all the available Testcontainers integrations <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45367">#45367</a></li>
<li>Document when a spring.config.import value is relative and when it
is fixed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45363">#45363</a></li>
<li>Update org.cyclonedx.bom version in docs to 2.3.0 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45320">#45320</a></li>
<li>Update link to &quot;Parameter Name Retention&quot; section of
Spring Framework's release notes <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45299">#45299</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Prevent upgrade to Prometheus Client 1.3.7 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45541">#45541</a></li>
<li>Upgrade to Couchbase Client 3.8.1 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45539">#45539</a></li>
<li>Upgrade to Elasticsearch 8.18.1 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45447">#45447</a></li>
<li>Upgrade to GraphQL Java 24.0 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45588">#45588</a></li>
<li>Upgrade to Hibernate 6.6.15.Final <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45540">#45540</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/8c2d6453243f319accaef7a190ff8ddf89f482a2"><code>8c2d645</code></a>
Release v3.5.0</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/0b49e78c21f5afaf2db23bea2a1f8b369b3d92a7"><code>0b49e78</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/c684fa4050d89a505f28257fef5462745671b6e5"><code>c684fa4</code></a>
Switch <code>make-default</code> for publish-to-sdkman to 3.5.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/569519285046967a85f20cefe4200fcfc35a21c8"><code>5695192</code></a>
Ensure descendants are always recalculated on cache refresh</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/31f549efc699e8f2f597ddf08bb572ad9a74b358"><code>31f549e</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/68df6f594167d760e67dd97eed0783e3f3a5fafd"><code>68df6f5</code></a>
Next development version (v3.4.7-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/9f46877c7ea17452f1f744281aa0008fadcc82f9"><code>9f46877</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/404a0df5e8cffad3c9cbc896b0382347586102bf"><code>404a0df</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/e331846302f763905e9e0d3cf96438f60c7bd3c4"><code>e331846</code></a>
Next development version (v3.3.13-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/b142798bdb8dde5d8a6ab01e70d6d78c1a6752c7"><code>b142798</code></a>
Merge branch '3.4.x'</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-boot/compare/v3.4.5...v3.5.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.springframework.boot:spring-boot-dependencies&package-manager=gradle&previous-version=3.4.5&new-version=3.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 19:59:57 +01:00
dependabot[bot] 3bec51f4e5 Bump com.diffplug.spotless from 7.0.3 to 7.0.4 (#3626)
Bumps com.diffplug.spotless from 7.0.3 to 7.0.4.


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.diffplug.spotless&package-manager=gradle&previous-version=7.0.3&new-version=7.0.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 19:58:31 +01:00
dependabot[bot] d83d8b4748 Bump ossf/scorecard-action from 2.4.1 to 2.4.2 (#3625)
Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action)
from 2.4.1 to 2.4.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ossf/scorecard-action/releases">ossf/scorecard-action's
releases</a>.</em></p>
<blockquote>
<h2>v2.4.2</h2>
<h2>What's Changed</h2>
<p>This update bumps the Scorecard version to the v5.2.1 release. For a
complete list of changes, please refer to the Scorecard <a
href="https://github.com/ossf/scorecard/releases/tag/v5.2.0">v5.2.0</a>
and <a
href="https://github.com/ossf/scorecard/releases/tag/v5.2.1">v5.2.1</a>
release notes.</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/ossf/scorecard-action/compare/v2.4.1...v2.4.2">https://github.com/ossf/scorecard-action/compare/v2.4.1...v2.4.2</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ossf/scorecard-action/commit/05b42c624433fc40578a4040d5cf5e36ddca8cde"><code>05b42c6</code></a>
🌱 bump docker to ghcr v2.4.2 (<a
href="https://redirect.github.com/ossf/scorecard-action/issues/1548">#1548</a>)</li>
<li><a
href="https://github.com/ossf/scorecard-action/commit/b225da6b2b97811a123bb34532642f3ad6a4f011"><code>b225da6</code></a>
Bump github.com/ossf/scorecard/v5 from v5.2.0 to v5.2.1 (<a
href="https://redirect.github.com/ossf/scorecard-action/issues/1550">#1550</a>)</li>
<li><a
href="https://github.com/ossf/scorecard-action/commit/9399f6f42496e38fbb8dbcf85e17223226a5dafe"><code>9399f6f</code></a>
🌱 Bump the docker-images group across 1 directory with 2
updates (<a
href="https://redirect.github.com/ossf/scorecard-action/issues/1">#1</a>...</li>
<li><a
href="https://github.com/ossf/scorecard-action/commit/e1daa8c5c7ed469dbb0167e261ed1c9fa673a9ae"><code>e1daa8c</code></a>
🌱 Bump the github-actions group across 1 directory with 5
updates (#...</li>
<li><a
href="https://github.com/ossf/scorecard-action/commit/9fe6511b9b36af3b03200e49cf8fb09d261b5402"><code>9fe6511</code></a>
🌱 Bump golang.org/x/net from 0.39.0 to 0.40.0 (<a
href="https://redirect.github.com/ossf/scorecard-action/issues/1542">#1542</a>)</li>
<li><a
href="https://github.com/ossf/scorecard-action/commit/25b9cd9cd11610dcac11e59afed9910714b12129"><code>25b9cd9</code></a>
🌱 Bump github.com/ossf/scorecard/v5 from v5.1.1 to v5.2.0 (<a
href="https://redirect.github.com/ossf/scorecard-action/issues/1547">#1547</a>)</li>
<li><a
href="https://github.com/ossf/scorecard-action/commit/18cc9b81307fc5ab3c2cd7092955f06dcfdf8c42"><code>18cc9b8</code></a>
🌱 Bump golang.org/x/net from 0.38.0 to 0.39.0 (<a
href="https://redirect.github.com/ossf/scorecard-action/issues/1536">#1536</a>)</li>
<li><a
href="https://github.com/ossf/scorecard-action/commit/db7814227b097a902957aa24d989c6e473613a8e"><code>db78142</code></a>
🌱 Bump the github-actions group with 2 updates (<a
href="https://redirect.github.com/ossf/scorecard-action/issues/1538">#1538</a>)</li>
<li><a
href="https://github.com/ossf/scorecard-action/commit/de386ed459e2f85111697f50fe076d0ea617a32f"><code>de386ed</code></a>
🌱 Bump golang from 1.24.1 to 1.24.2 in the docker-images group
(<a
href="https://redirect.github.com/ossf/scorecard-action/issues/1534">#1534</a>)</li>
<li><a
href="https://github.com/ossf/scorecard-action/commit/5b7cedba4eccfb66a6277e40cbe18d1d559ecc00"><code>5b7cedb</code></a>
🌱 Bump github.com/sigstore/cosign/v2 from 2.4.3 to 2.5.0 (<a
href="https://redirect.github.com/ossf/scorecard-action/issues/1537">#1537</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/ossf/scorecard-action/compare/f49aabe0b5af0936a0987cfb85d86b75731b0186...05b42c624433fc40578a4040d5cf5e36ddca8cde">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ossf/scorecard-action&package-manager=github_actions&previous-version=2.4.1&new-version=2.4.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 19:58:03 +01:00
dependabot[bot] 03d27013d6 Bump alpine from 3.21.3 to 3.22.0 (#3623)
Bumps alpine from 3.21.3 to 3.22.0.


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=alpine&package-manager=docker&previous-version=3.21.3&new-version=3.22.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 19:51:52 +01:00
dependabot[bot] 679ecdd50d Bump docker/build-push-action from 6.17.0 to 6.18.0 (#3624)
Bumps
[docker/build-push-action](https://github.com/docker/build-push-action)
from 6.17.0 to 6.18.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/docker/build-push-action/releases">docker/build-push-action's
releases</a>.</em></p>
<blockquote>
<h2>v6.18.0</h2>
<ul>
<li>Bump <code>@​docker/actions-toolkit</code> from 0.61.0 to 0.62.1 in
<a
href="https://redirect.github.com/docker/build-push-action/pull/1381">docker/build-push-action#1381</a></li>
</ul>
<blockquote>
<p>[!NOTE]
<a
href="https://docs.docker.com/build/ci/github-actions/build-summary/">Build
summary</a> is now supported with <a
href="https://docs.docker.com/build-cloud/">Docker Build Cloud</a>.</p>
</blockquote>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/build-push-action/compare/v6.17.0...v6.18.0">https://github.com/docker/build-push-action/compare/v6.17.0...v6.18.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/docker/build-push-action/commit/263435318d21b8e681c14492fe198d362a7d2c83"><code>2634353</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1381">#1381</a>
from docker/dependabot/npm_and_yarn/docker/actions-t...</li>
<li><a
href="https://github.com/docker/build-push-action/commit/c0432d2e016ab17a336cee48256683e74d5c4c9e"><code>c0432d2</code></a>
chore: update generated content</li>
<li><a
href="https://github.com/docker/build-push-action/commit/0bb1f27d6b9fc90993f41febd9b53ee89397d3f8"><code>0bb1f27</code></a>
set builder driver and endpoint attributes for dbc summary support</li>
<li><a
href="https://github.com/docker/build-push-action/commit/5f9dbf956c8481ecf630d0e53941d9d3afaa53bb"><code>5f9dbf9</code></a>
chore(deps): Bump <code>@​docker/actions-toolkit</code> from 0.61.0 to
0.62.1</li>
<li><a
href="https://github.com/docker/build-push-action/commit/0788c444d8b4d67580213712e34a148cae3a6c4e"><code>0788c44</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1375">#1375</a>
from crazy-max/remove-gcr</li>
<li><a
href="https://github.com/docker/build-push-action/commit/aa179ca4f405fed7a76dad90a23bd02d6f2a8d2d"><code>aa179ca</code></a>
e2e: remove GCR</li>
<li>See full diff in <a
href="https://github.com/docker/build-push-action/compare/1dc73863535b631f98b2378be8619f83b136f4a0...263435318d21b8e681c14492fe198d362a7d2c83">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=docker/build-push-action&package-manager=github_actions&previous-version=6.17.0&new-version=6.18.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-02 19:51:22 +01:00
Anthony Stirling 02aad40aa0 Tests cleanup and stuff 2025-06-02 11:06:20 +01:00
Anthony Stirling 0328333d81 websocket fun! 2025-06-02 01:19:54 +01:00
Balázs Szücs 631c4fef0b Added scan filter feature (#3530)
# Description of Changes

Please provide a summary of the changes, including:

This pull request introduces the "Fake Scan" feature, which simulates
scanned PDFs with customizable settings. The changes include the removal
of a work-in-progress controller, the addition of a new request model,
and updates to the frontend to support the feature.

### Backend Changes:

* **Removed the unfinished `FakeScanControllerWIP`:** The entire
`FakeScanControllerWIP` class, which contained unimplemented and
experimental code for processing PDFs, has been removed. This cleanup
eliminates unused code and dependencies. Some of the original code of
removed file was ported to the new Controller.
* **Added `FakeScanRequest` model:** Introduced a new model class
`FakeScanRequest` to handle input parameters for the "Fake Scan"
feature. It includes fields for file input, quality, rotation,
colorspace, and other advanced settings, with validation and default
values.

### Frontend Changes:

* **Localization updates for the "Fake Scan" feature:** Added new
localization keys for the "Fake Scan" feature, including titles,
descriptions, and advanced settings options like quality, rotation, and
colorspace.
* **Added "Fake Scan" card to the homepage

### Pictures:
Front-end

![image](https://github.com/user-attachments/assets/e8e2fcac-9f64-4541-8518-04330644030f)

Example document (based on defaults; can be drastically changed
according to need.):

![image](https://github.com/user-attachments/assets/9f9cc386-6eb4-431a-b1d7-ca260edfa0c1)

### Quirks/known issues
- Performance: It might take even reasonable hardware to convert bigger
pdf >500KB more than a few minutes.
- Yellowish filter applies to the whole document and also incl to the
background. (not desirable in some instances)
- There is some randomness involved in the default preset, helps imitate
scan but some user might find it annoying. (but it can be disabled
through advanced settings).
- Some features might confusing to people with no additional context.

Closes #458
---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### UI Changes (if applicable)

- [x] 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](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-31 16:26:52 +01:00
stirlingbot[bot] 209c76d885 🌐 Sync Translations + Update README Progress Table (#3616)
### Description of Changes

This Pull Request was automatically generated to synchronize updates to
translation files and documentation. Below are the details of the
changes made:

#### **1. Synchronization of Translation Files**
- Updated translation files (`messages_*.properties`) to reflect changes
in the reference file `messages_en_GB.properties`.
- Ensured consistency and synchronization across all supported language
files.
- Highlighted any missing or incomplete translations.

#### **2. Update README.md**
- Generated the translation progress table in `README.md`.
- Added a summary of the current translation status for all supported
languages.
- Included up-to-date statistics on translation coverage.

#### **Why these changes are necessary**
- Keeps translation files aligned with the latest reference updates.
- Ensures the documentation reflects the current translation progress.

---

Auto-generated by [create-pull-request][1].

[1]: https://github.com/peter-evans/create-pull-request

Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-05-31 12:31:25 +01:00
Ludy 3293d0d8a1 Fix Tibetan locale code to bo_CN and update translation ignore configurations (#3614)
# Description of Changes

## This PR also serves as a test for PR #3615.

### PR #3615 must first be merged to complete the test.

---

- **What was changed**  
- Replaced Tibetan locale code in README (`README.md`) from `zh_BO` to
`bo_CN`.
- Renamed resource file `messages_zh_BO.properties` to
`messages_bo_CN.properties` and updated its internal keys/translations.
- Updated the HTML fragment (`templates/fragments/languages.html`) to
reference `bo_CN` instead of `zh_BO`.
- Added a `[bo_CN]` section in `scripts/ignore_translation.toml` and
expanded ignore rules across multiple language sections to cover
additional codes.
- Enhanced `counter_translation.py` error handling: now catches
`ValueError` as `e` and logs file path and line number for easier
debugging.

- **Why the change was made**  
- The proper locale identifier for Tibetan is `bo_CN`, aligning with
[Localizely’s standard](https://localizely.com/locale-code/bo-CN/).
- Ensures consistency across code, resources, and templates so the
Tibetan translation loads correctly.
- Expanded ignore lists prevent false positives in translation coverage
checks, and improved error logging aids maintenance of the translation
scripts.

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-31 12:24:02 +01:00
Ludy 45462dc5d4 Use setup-bot token for GitHub Actions and fix GH_APP_ID secret reference (#3615)
# Description of Changes

Please provide a summary of the changes, including:

- **What was changed**  
- In **`.github/workflows/check_properties.yml`**, each
`actions/github-script` step now uses the GitHub App token output (`${{
steps.setup-bot.outputs.token }}`) instead of relying on the default
`secrets.GITHUB_TOKEN`.
- In **`.github/workflows/sync_files.yml`**, the `app-id` input for the
`setup-bot` action was corrected to use `${{ secrets.GH_APP_ID }}`
instead of `${{ vars.GH_APP_ID }}`.

- **Why the change was made**  
- To ensure all workflow steps authenticate through the GitHub App with
least-privilege tokens, improving security and avoiding permission
issues with the default token or inaccessible repo variables.
- To maintain consistency across workflows by centralizing
authentication to the App’s token output.


---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-31 12:23:20 +01:00
albanobattistella c0e93cd5e5 Update messages_it_IT.properties (#3612)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-29 16:01:58 +01:00
Ludy 2217cfb95d Replace deprecated AntPathRequestMatcher with PathPatternRequestMatcher (#3606)
# Description of Changes

Please provide a summary of the changes, including:


https://docs.spring.io/spring-security/reference/api/java/org/springframework/security/web/util/matcher/AntPathRequestMatcher.html

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-27 21:14:04 +01:00
Ludy 214404b5c9 Include common in Spotless formatting (#3605)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-27 21:13:36 +01:00
Anthony Stirling ddc2daea52 security fixes (#3587)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-27 17:25:41 +01:00
stirlingbot[bot] ff602a20a0 🌐 Sync Translations + Update README Progress Table (#3603)
### Description of Changes

This Pull Request was automatically generated to synchronize updates to
translation files and documentation. Below are the details of the
changes made:

#### **1. Synchronization of Translation Files**
- Updated translation files (`messages_*.properties`) to reflect changes
in the reference file `messages_en_GB.properties`.
- Ensured consistency and synchronization across all supported language
files.
- Highlighted any missing or incomplete translations.

#### **2. Update README.md**
- Generated the translation progress table in `README.md`.
- Added a summary of the current translation status for all supported
languages.
- Included up-to-date statistics on translation coverage.

#### **Why these changes are necessary**
- Keeps translation files aligned with the latest reference updates.
- Ensures the documentation reflects the current translation progress.

---

Auto-generated by [create-pull-request][1].

[1]: https://github.com/peter-evans/create-pull-request

Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-05-27 16:09:26 +01:00
Ludy 85ac1259af Replace any() with anyList() in Mockito tests for stronger type safety (#3583)
# Description of Changes

Please provide a summary of the changes, including:

- **What was changed**  
- Updated static imports in `CheckProgramInstallTest.java` and
`PDFToFileTest.java` from `ArgumentMatchers.any` to
`ArgumentMatchers.anyList`.
- Changed all calls to `runCommandWithOutputHandling(any(List.class))`
to `runCommandWithOutputHandling(anyList())`.
- Removed unused `import java.util.List;` statements where no longer
needed.

- **Why the change was made**  
- `anyList()` provides stronger type safety than the raw `any()`,
avoiding unchecked warnings and making intent clearer when matching
`List` arguments in Mockito.
- Cleaning up unused imports keeps the test codebase tidy and free of
clutter.

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-27 16:09:02 +01:00
stirlingbot[bot] 4acfc713e9 Update 3rd Party Licenses (#3599)
Auto-generated by stirlingbot[bot]

Signed-off-by: stirlingbot[bot] <stirlingbot[bot]@users.noreply.github.com>
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-05-27 15:09:28 +01:00
albanobattistella e9f46aec53 Update messages_it_IT.properties (#3602)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-27 15:06:47 +01:00
stirlingbot[bot] 909c0aed7a 🌐 Sync Translations + Update README Progress Table (#3600)
### Description of Changes

This Pull Request was automatically generated to synchronize updates to
translation files and documentation. Below are the details of the
changes made:

#### **1. Synchronization of Translation Files**
- Updated translation files (`messages_*.properties`) to reflect changes
in the reference file `messages_en_GB.properties`.
- Ensured consistency and synchronization across all supported language
files.
- Highlighted any missing or incomplete translations.

#### **2. Update README.md**
- Generated the translation progress table in `README.md`.
- Added a summary of the current translation status for all supported
languages.
- Included up-to-date statistics on translation coverage.

#### **Why these changes are necessary**
- Keeps translation files aligned with the latest reference updates.
- Ensures the documentation reflects the current translation progress.

---

Auto-generated by [create-pull-request][1].

[1]: https://github.com/peter-evans/create-pull-request

---------

Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-05-27 13:58:44 +01:00
Anthony Stirling c9879c1d28 Update README.md (#3601)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-27 13:54:36 +01:00
Anthony Stirling 38e472a631 Reorder OCR menu based on language selected + display language in own language (#3586)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-27 13:50:16 +01:00
Dario Ghunney Ware bedc3d02d7 New common module (#3573)
# Description of Changes

Introduced a new `common` module for shared libs and commonly used
classes. See the screenshot below for the file structure and classes
that have been moved.

---
<img width="452" alt="Screenshot 2025-05-22 at 11 46 56"
src="https://github.com/user-attachments/assets/c9badabc-48f9-4079-b83e-7cfde0fb840f"
/>
<img width="470" alt="Screenshot 2025-05-22 at 11 47 30"
src="https://github.com/user-attachments/assets/e8315b09-2e78-4c50-b9de-4dd9b9b0ecb1"
/>

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [x] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### UI Changes (if applicable)

- [x] 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](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-27 13:01:52 +01:00
Ludy be1a9cc8da Standardize GitHub App Bot Authentication Across Workflows (#3582)
# Description of Changes

Please provide a summary of the changes, including:

- **What was changed**  
- Removed individual `actions/create-github-app-token` steps and
replaced them with a centralized `setup-bot` custom action across all
workflows.
- Updated steps to use `steps.setup-bot.outputs` instead of
`steps.generate-token.outputs`.
- Standardized step names and ordering (e.g. checkout before bot setup).
- Simplified `sync_files.yml` by eliminating the `read_bot_entries` job
and directly using `setup-bot` outputs.
- Added or adjusted permissions where required (e.g.
`repository-projects: write` in `licenses-update.yml`).

- **Why the change was made**  
- To centralize and standardize GitHub App authentication logic, reduce
duplication, and improve maintainability of CI workflows.
- To ensure a consistent bot identity (app slug, token,
committer/author) across all actions and PR automation.
- To streamline workflow configurations and make future updates easier.

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-27 12:36:41 +01:00
stirlingbot[bot] 055c642136 Update 3rd Party Licenses (#3598)
Auto-generated by StirlingBot

Signed-off-by: stirlingbot[bot] <1113334+stirlingbot[bot]@users.noreply.github.com>
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-05-27 12:22:09 +01:00
stirlingbot[bot] 61521b5bf3 🌐 Sync Translations + Update README Progress Table (#3568)
### Description of Changes

This Pull Request was automatically generated to synchronize updates to
translation files and documentation. Below are the details of the
changes made:

#### **1. Synchronization of Translation Files**
- Updated translation files (`messages_*.properties`) to reflect changes
in the reference file `messages_en_GB.properties`.
- Ensured consistency and synchronization across all supported language
files.
- Highlighted any missing or incomplete translations.

#### **2. Update README.md**
- Generated the translation progress table in `README.md`.
- Added a summary of the current translation status for all supported
languages.
- Included up-to-date statistics on translation coverage.

#### **Why these changes are necessary**
- Keeps translation files aligned with the latest reference updates.
- Ensures the documentation reflects the current translation progress.

---

Auto-generated by [create-pull-request][1].

[1]: https://github.com/peter-evans/create-pull-request

Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-05-27 12:21:03 +01:00
DongHeandjusteHe ccf1b23d67 update messages_zh_CN.properties (#3597)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
Added and optimized the Chinese (Simplified) translation
- Why the change was made
The original project lacks a complete simplified Chinese translation and
thus cannot cover the content related to the survey and Cookie Settings.
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [x] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [x] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.

Co-authored-by: justeHe <justeHe@noreply.github.com>
2025-05-27 12:19:04 +01:00
LudyandAnthony Stirling 14f76b6146 Bump Pre-commit Hooks and Java Formatter to Latest Versions (#3589)
# Description of Changes

Please provide a summary of the changes, including:

- **What was changed**:  
- Updated `ruff` from v0.11.6 to v0.11.11 and `gitleaks` from v8.24.3 to
v8.26.0 in `.pre-commit-config.yaml`
- Bumped Java formatter version from 1.26.0 to 1.27.0 in VSCode settings
(`.vscode/settings.json`) and in `build.gradle` (googleJavaFormat)
  - Standardized quoting for the `jacoco` plugin in `build.gradle`  
- Cleaned up indentation and removed extra whitespace in test
dependencies

- **Why the change was made**:  
To keep our linting and formatting tools up to date with the latest
stable releases—bringing in bug fixes, performance improvements, and
maintaining consistency across environments.

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.

Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
2025-05-27 12:17:25 +01:00
stirlingbot[bot] 6780bb4a30 🤖 format everything with pre-commit by <stirlingbot> (#3588)
Auto-generated by [create-pull-request][1] with **stirlingbot**

[1]: https://github.com/peter-evans/create-pull-request

Signed-off-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-05-27 12:16:07 +01:00
dependabot[bot] feb84f001c Bump org.springframework.session:spring-session-core from 3.4.3 to 3.5.0 (#3591)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps
[org.springframework.session:spring-session-core](https://github.com/spring-projects/spring-session)
from 3.4.3 to 3.5.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-session/releases">org.springframework.session:spring-session-core's
releases</a>.</em></p>
<blockquote>
<h2>3.5.0</h2>
<h2>🪲 Bug Fixes</h2>
<ul>
<li>Fix Race Condition in Integration Tests Using Redis
SessionEventRegistry <a
href="https://redirect.github.com/spring-projects/spring-session/issues/3400">#3400</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Bump com.fasterxml.jackson.core:jackson-databind from 2.18.3 to
2.18.4 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3393">#3393</a></li>
<li>Bump io.projectreactor:reactor-bom from 2024.0.5 to 2024.0.6 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3395">#3395</a></li>
<li>Bump io.projectreactor:reactor-core from 3.6.16 to 3.6.17 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3394">#3394</a></li>
<li>Bump io.spring.gradle:spring-security-release-plugin from 1.0.5 to
1.0.6 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3392">#3392</a></li>
<li>Bump io.spring.javaformat:spring-javaformat-checkstyle from 0.0.43
to 0.0.45 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3402">#3402</a></li>
<li>Bump io.spring.javaformat:spring-javaformat-gradle-plugin from
0.0.43 to 0.0.45 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3404">#3404</a></li>
<li>Bump org.springframework.data:spring-data-bom from 2025.0.0-RC1 to
2025.0.1-SNAPSHOT <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3397">#3397</a></li>
<li>Bump org.springframework.security:spring-security-bom from 6.5.0-RC1
to 6.5.1-SNAPSHOT <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3401">#3401</a></li>
<li>Bump org.springframework:spring-framework-bom from 6.2.6 to 6.2.7 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3403">#3403</a></li>
<li>Spring Security 6.5.0 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3406">#3406</a></li>
<li>Update to Spring Data 2025.0.0 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3405">#3405</a></li>
</ul>
<h2>❤️ Contributors</h2>
<p>Thank you to all the contributors who worked on this release:</p>
<p><a href="https://github.com/rwinch"><code>@​rwinch</code></a></p>
<h2>3.5.0-RC1</h2>
<h2> New Features</h2>
<ul>
<li>Introduce CompositeHttpSessionIdResolver <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3264">#3264</a></li>
<li>Start JDBC transactions only when there is an update <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3330">#3330</a></li>
</ul>
<h2>🪲 Bug Fixes</h2>
<ul>
<li>Explicitly use junit-platform-launcher <a
href="https://redirect.github.com/spring-projects/spring-session/issues/3367">#3367</a></li>
<li>Fix jdbc session with special characters <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3316">#3316</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Bump io.projectreactor:reactor-bom from 2024.0.4 to 2024.0.5 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3380">#3380</a></li>
<li>Bump io.projectreactor:reactor-core from 3.6.15 to 3.6.16 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3381">#3381</a></li>
<li>Bump io.spring.gradle:spring-security-release-plugin from 1.0.3 to
1.0.4 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3377">#3377</a></li>
<li>Bump io.spring.gradle:spring-security-release-plugin from 1.0.4 to
1.0.5 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3387">#3387</a></li>
<li>Bump org.aspectj:aspectjweaver from 1.9.23 to 1.9.24 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3378">#3378</a></li>
<li>Bump org.hsqldb:hsqldb from 2.7.3 to 2.7.4 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3369">#3369</a></li>
<li>Bump org.mariadb.jdbc:mariadb-java-client from 3.5.2 to 3.5.3 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3371">#3371</a></li>
<li>Bump org.springframework.boot:spring-boot-gradle-plugin from
3.5.0-M3 to 3.5.0-SNAPSHOT <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3373">#3373</a></li>
<li>Bump org.springframework.data:spring-data-bom from 2025.0.0-M2 to
2025.0.0-SNAPSHOT <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3372">#3372</a></li>
<li>Bump org.springframework:spring-framework-bom from 6.2.5 to 6.2.6 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3384">#3384</a></li>
<li>Update to Spring Boot 3.5.0 (dependencies) <a
href="https://redirect.github.com/spring-projects/spring-session/issues/3368">#3368</a></li>
<li>Update to Spring Security 6.5.0-rc1 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3386">#3386</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-session/commit/817b17251ab34a473a03b9707f55c42d687c7758"><code>817b172</code></a>
Release 3.5.0</li>
<li><a
href="https://github.com/spring-projects/spring-session/commit/5a9c22000aa1ed5f38dea04ec99883a71728875b"><code>5a9c220</code></a>
Update to Spring Security 6.5.0</li>
<li><a
href="https://github.com/spring-projects/spring-session/commit/ce5efb7e51910a49591c015c8a1a2bbf67b73fd3"><code>ce5efb7</code></a>
Update to Spring Data 2025.0.0</li>
<li><a
href="https://github.com/spring-projects/spring-session/commit/d6391a8a42c03f4307eea2edfb926d7310b11632"><code>d6391a8</code></a>
Revert &quot;Bump
io.spring.javaformat:spring-javaformat-checkstyle&quot;</li>
<li><a
href="https://github.com/spring-projects/spring-session/commit/f75cd2454a5d52406d8e8c4822ee654fbd72309f"><code>f75cd24</code></a>
Revert &quot;Bump
org.springframework.security:spring-security-bom&quot;</li>
<li><a
href="https://github.com/spring-projects/spring-session/commit/ca4694310104e6ecb76e089805fc0810788e5efe"><code>ca46943</code></a>
Bump org.springframework.security:spring-security-bom</li>
<li><a
href="https://github.com/spring-projects/spring-session/commit/bf09912a7f697168a21a90ba47ab275a765f8608"><code>bf09912</code></a>
Bump io.spring.javaformat:spring-javaformat-checkstyle</li>
<li><a
href="https://github.com/spring-projects/spring-session/commit/ae2f60668bcf026e651ee65589ecf6a1c082bffc"><code>ae2f606</code></a>
Bump io.spring.javaformat:spring-javaformat-gradle-plugin</li>
<li><a
href="https://github.com/spring-projects/spring-session/commit/05e9a3ec755d212de4dff85811ea8e2c27ec9c28"><code>05e9a3e</code></a>
Bump org.springframework:spring-framework-bom from 6.2.6 to 6.2.7</li>
<li><a
href="https://github.com/spring-projects/spring-session/commit/6fb972d633e144ef3c9eea8577e0074e24caab8b"><code>6fb972d</code></a>
Bump io.spring.gradle:spring-security-release-plugin from 1.0.5 to
1.0.6</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-session/compare/3.4.3...3.5.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.springframework.session:spring-session-core&package-manager=gradle&previous-version=3.4.3&new-version=3.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-27 12:14:42 +01:00
dependabot[bot] 8c061ea644 Bump springBootVersion from 3.4.5 to 3.5.0 (#3592)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps `springBootVersion` from 3.4.5 to 3.5.0.
Updates `org.springframework.boot:spring-boot-starter-web` from 3.4.5 to
3.5.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-boot/releases">org.springframework.boot:spring-boot-starter-web's
releases</a>.</em></p>
<blockquote>
<h2>v3.5.0</h2>
<p>Full <a
href="https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.5-Release-Notes">release
notes for Spring Boot 3.5</a> are available on the wiki.</p>
<h2> New Features</h2>
<ul>
<li>Make heapdump endpoint restricted by default <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45624">#45624</a></li>
<li>Remove SSL status tag from metrics <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45602">#45602</a></li>
<li>Remove 'spring.http.client' deprecation and change
'spring.http.reactiveclient.settings' to 'spring.http.reactiveclient' <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45507">#45507</a></li>
</ul>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Unable to override/set nested ConfigurationProperties by passing as
a system property <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45639">#45639</a></li>
<li>ValidationAutoConfiguration triggers early initialization of
properties binding <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45618">#45618</a></li>
<li>Micrometer &quot;enable&quot; annotations property does not cover
observed aspect <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45617">#45617</a></li>
<li>spring.graphql.sse.timeout is no longer exposed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45613">#45613</a></li>
<li>SpringApplication.setEnvironmentPrefix is ignored when reading
SPRING_PROFILES_ACTIVE <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45549">#45549</a></li>
<li>IllegalStateException when extracting using layers a module with no
code of its own <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45449">#45449</a></li>
<li>Removed spring.batch.initialize-schema property is still considered
<a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45380">#45380</a></li>
<li>ReactorHttpClientBuilder does not offer a factory method to create
the HttpClient <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45378">#45378</a></li>
<li>Suggested values for spring.jpa.hibernate.ddl-auto are not aligned
with Hibernate <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45351">#45351</a></li>
<li>Custom default units declared on a field are ignored when binding
properties in a native image <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45347">#45347</a></li>
<li>DockerRegistryConfigAuthentication uses the wrong serverUrl as a
fallback for the Credentials helper <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45345">#45345</a></li>
<li>Various spring.datasource properties are mistakenly marked as
ignored <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45342">#45342</a></li>
<li>JerseyWebApplicationInitializer always gets loaded, setting a
ServletContext initParameter <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45297">#45297</a></li>
<li>DockerRegistryConfigAuthentication does not align with Docker CLI <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45292">#45292</a></li>
<li>Unlike the Docker CLI, &quot;\x00&quot; characters are not trimmed
from a decoded Docker Registry password <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45290">#45290</a></li>
<li>CloudFoundry security matcher logs a warning due to use of the
'ignoring()' method <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/32622">#32622</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Document the java info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45634">#45634</a></li>
<li>Document the process info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45632">#45632</a></li>
<li>Document the os info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45630">#45630</a></li>
<li>Document typical spring.application.group and name use <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45628">#45628</a></li>
<li>Document that bean methods should be static when annotated with
<code>@ConfigurationPropertiesBinding</code> <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45626">#45626</a></li>
<li>Document the way that primary Kotlin constructors are used when
binding <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45553">#45553</a></li>
<li>Improve &quot;profile&quot; reference documentation with additional
admonitions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45551">#45551</a></li>
<li>Improve setEnvironmentPrefix(...) reference documentation <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45376">#45376</a></li>
<li>Document all the available Testcontainers integrations <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45367">#45367</a></li>
<li>Document when a spring.config.import value is relative and when it
is fixed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45363">#45363</a></li>
<li>Update org.cyclonedx.bom version in docs to 2.3.0 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45320">#45320</a></li>
<li>Update link to &quot;Parameter Name Retention&quot; section of
Spring Framework's release notes <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45299">#45299</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Prevent upgrade to Prometheus Client 1.3.7 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45541">#45541</a></li>
<li>Upgrade to Couchbase Client 3.8.1 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45539">#45539</a></li>
<li>Upgrade to Elasticsearch 8.18.1 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45447">#45447</a></li>
<li>Upgrade to GraphQL Java 24.0 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45588">#45588</a></li>
<li>Upgrade to Hibernate 6.6.15.Final <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45540">#45540</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/8c2d6453243f319accaef7a190ff8ddf89f482a2"><code>8c2d645</code></a>
Release v3.5.0</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/0b49e78c21f5afaf2db23bea2a1f8b369b3d92a7"><code>0b49e78</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/c684fa4050d89a505f28257fef5462745671b6e5"><code>c684fa4</code></a>
Switch <code>make-default</code> for publish-to-sdkman to 3.5.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/569519285046967a85f20cefe4200fcfc35a21c8"><code>5695192</code></a>
Ensure descendants are always recalculated on cache refresh</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/31f549efc699e8f2f597ddf08bb572ad9a74b358"><code>31f549e</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/68df6f594167d760e67dd97eed0783e3f3a5fafd"><code>68df6f5</code></a>
Next development version (v3.4.7-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/9f46877c7ea17452f1f744281aa0008fadcc82f9"><code>9f46877</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/404a0df5e8cffad3c9cbc896b0382347586102bf"><code>404a0df</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/e331846302f763905e9e0d3cf96438f60c7bd3c4"><code>e331846</code></a>
Next development version (v3.3.13-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/b142798bdb8dde5d8a6ab01e70d6d78c1a6752c7"><code>b142798</code></a>
Merge branch '3.4.x'</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-boot/compare/v3.4.5...v3.5.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `org.springframework.boot:spring-boot-starter-jetty` from 3.4.5
to 3.5.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-boot/releases">org.springframework.boot:spring-boot-starter-jetty's
releases</a>.</em></p>
<blockquote>
<h2>v3.5.0</h2>
<p>Full <a
href="https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.5-Release-Notes">release
notes for Spring Boot 3.5</a> are available on the wiki.</p>
<h2> New Features</h2>
<ul>
<li>Make heapdump endpoint restricted by default <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45624">#45624</a></li>
<li>Remove SSL status tag from metrics <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45602">#45602</a></li>
<li>Remove 'spring.http.client' deprecation and change
'spring.http.reactiveclient.settings' to 'spring.http.reactiveclient' <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45507">#45507</a></li>
</ul>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Unable to override/set nested ConfigurationProperties by passing as
a system property <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45639">#45639</a></li>
<li>ValidationAutoConfiguration triggers early initialization of
properties binding <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45618">#45618</a></li>
<li>Micrometer &quot;enable&quot; annotations property does not cover
observed aspect <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45617">#45617</a></li>
<li>spring.graphql.sse.timeout is no longer exposed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45613">#45613</a></li>
<li>SpringApplication.setEnvironmentPrefix is ignored when reading
SPRING_PROFILES_ACTIVE <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45549">#45549</a></li>
<li>IllegalStateException when extracting using layers a module with no
code of its own <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45449">#45449</a></li>
<li>Removed spring.batch.initialize-schema property is still considered
<a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45380">#45380</a></li>
<li>ReactorHttpClientBuilder does not offer a factory method to create
the HttpClient <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45378">#45378</a></li>
<li>Suggested values for spring.jpa.hibernate.ddl-auto are not aligned
with Hibernate <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45351">#45351</a></li>
<li>Custom default units declared on a field are ignored when binding
properties in a native image <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45347">#45347</a></li>
<li>DockerRegistryConfigAuthentication uses the wrong serverUrl as a
fallback for the Credentials helper <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45345">#45345</a></li>
<li>Various spring.datasource properties are mistakenly marked as
ignored <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45342">#45342</a></li>
<li>JerseyWebApplicationInitializer always gets loaded, setting a
ServletContext initParameter <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45297">#45297</a></li>
<li>DockerRegistryConfigAuthentication does not align with Docker CLI <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45292">#45292</a></li>
<li>Unlike the Docker CLI, &quot;\x00&quot; characters are not trimmed
from a decoded Docker Registry password <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45290">#45290</a></li>
<li>CloudFoundry security matcher logs a warning due to use of the
'ignoring()' method <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/32622">#32622</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Document the java info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45634">#45634</a></li>
<li>Document the process info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45632">#45632</a></li>
<li>Document the os info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45630">#45630</a></li>
<li>Document typical spring.application.group and name use <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45628">#45628</a></li>
<li>Document that bean methods should be static when annotated with
<code>@ConfigurationPropertiesBinding</code> <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45626">#45626</a></li>
<li>Document the way that primary Kotlin constructors are used when
binding <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45553">#45553</a></li>
<li>Improve &quot;profile&quot; reference documentation with additional
admonitions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45551">#45551</a></li>
<li>Improve setEnvironmentPrefix(...) reference documentation <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45376">#45376</a></li>
<li>Document all the available Testcontainers integrations <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45367">#45367</a></li>
<li>Document when a spring.config.import value is relative and when it
is fixed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45363">#45363</a></li>
<li>Update org.cyclonedx.bom version in docs to 2.3.0 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45320">#45320</a></li>
<li>Update link to &quot;Parameter Name Retention&quot; section of
Spring Framework's release notes <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45299">#45299</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Prevent upgrade to Prometheus Client 1.3.7 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45541">#45541</a></li>
<li>Upgrade to Couchbase Client 3.8.1 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45539">#45539</a></li>
<li>Upgrade to Elasticsearch 8.18.1 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45447">#45447</a></li>
<li>Upgrade to GraphQL Java 24.0 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45588">#45588</a></li>
<li>Upgrade to Hibernate 6.6.15.Final <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45540">#45540</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/8c2d6453243f319accaef7a190ff8ddf89f482a2"><code>8c2d645</code></a>
Release v3.5.0</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/0b49e78c21f5afaf2db23bea2a1f8b369b3d92a7"><code>0b49e78</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/c684fa4050d89a505f28257fef5462745671b6e5"><code>c684fa4</code></a>
Switch <code>make-default</code> for publish-to-sdkman to 3.5.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/569519285046967a85f20cefe4200fcfc35a21c8"><code>5695192</code></a>
Ensure descendants are always recalculated on cache refresh</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/31f549efc699e8f2f597ddf08bb572ad9a74b358"><code>31f549e</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/68df6f594167d760e67dd97eed0783e3f3a5fafd"><code>68df6f5</code></a>
Next development version (v3.4.7-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/9f46877c7ea17452f1f744281aa0008fadcc82f9"><code>9f46877</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/404a0df5e8cffad3c9cbc896b0382347586102bf"><code>404a0df</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/e331846302f763905e9e0d3cf96438f60c7bd3c4"><code>e331846</code></a>
Next development version (v3.3.13-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/b142798bdb8dde5d8a6ab01e70d6d78c1a6752c7"><code>b142798</code></a>
Merge branch '3.4.x'</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-boot/compare/v3.4.5...v3.5.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `org.springframework.boot:spring-boot-starter-thymeleaf` from
3.4.5 to 3.5.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-boot/releases">org.springframework.boot:spring-boot-starter-thymeleaf's
releases</a>.</em></p>
<blockquote>
<h2>v3.5.0</h2>
<p>Full <a
href="https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.5-Release-Notes">release
notes for Spring Boot 3.5</a> are available on the wiki.</p>
<h2> New Features</h2>
<ul>
<li>Make heapdump endpoint restricted by default <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45624">#45624</a></li>
<li>Remove SSL status tag from metrics <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45602">#45602</a></li>
<li>Remove 'spring.http.client' deprecation and change
'spring.http.reactiveclient.settings' to 'spring.http.reactiveclient' <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45507">#45507</a></li>
</ul>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Unable to override/set nested ConfigurationProperties by passing as
a system property <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45639">#45639</a></li>
<li>ValidationAutoConfiguration triggers early initialization of
properties binding <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45618">#45618</a></li>
<li>Micrometer &quot;enable&quot; annotations property does not cover
observed aspect <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45617">#45617</a></li>
<li>spring.graphql.sse.timeout is no longer exposed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45613">#45613</a></li>
<li>SpringApplication.setEnvironmentPrefix is ignored when reading
SPRING_PROFILES_ACTIVE <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45549">#45549</a></li>
<li>IllegalStateException when extracting using layers a module with no
code of its own <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45449">#45449</a></li>
<li>Removed spring.batch.initialize-schema property is still considered
<a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45380">#45380</a></li>
<li>ReactorHttpClientBuilder does not offer a factory method to create
the HttpClient <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45378">#45378</a></li>
<li>Suggested values for spring.jpa.hibernate.ddl-auto are not aligned
with Hibernate <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45351">#45351</a></li>
<li>Custom default units declared on a field are ignored when binding
properties in a native image <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45347">#45347</a></li>
<li>DockerRegistryConfigAuthentication uses the wrong serverUrl as a
fallback for the Credentials helper <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45345">#45345</a></li>
<li>Various spring.datasource properties are mistakenly marked as
ignored <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45342">#45342</a></li>
<li>JerseyWebApplicationInitializer always gets loaded, setting a
ServletContext initParameter <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45297">#45297</a></li>
<li>DockerRegistryConfigAuthentication does not align with Docker CLI <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45292">#45292</a></li>
<li>Unlike the Docker CLI, &quot;\x00&quot; characters are not trimmed
from a decoded Docker Registry password <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45290">#45290</a></li>
<li>CloudFoundry security matcher logs a warning due to use of the
'ignoring()' method <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/32622">#32622</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Document the java info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45634">#45634</a></li>
<li>Document the process info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45632">#45632</a></li>
<li>Document the os info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45630">#45630</a></li>
<li>Document typical spring.application.group and name use <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45628">#45628</a></li>
<li>Document that bean methods should be static when annotated with
<code>@ConfigurationPropertiesBinding</code> <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45626">#45626</a></li>
<li>Document the way that primary Kotlin constructors are used when
binding <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45553">#45553</a></li>
<li>Improve &quot;profile&quot; reference documentation with additional
admonitions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45551">#45551</a></li>
<li>Improve setEnvironmentPrefix(...) reference documentation <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45376">#45376</a></li>
<li>Document all the available Testcontainers integrations <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45367">#45367</a></li>
<li>Document when a spring.config.import value is relative and when it
is fixed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45363">#45363</a></li>
<li>Update org.cyclonedx.bom version in docs to 2.3.0 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45320">#45320</a></li>
<li>Update link to &quot;Parameter Name Retention&quot; section of
Spring Framework's release notes <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45299">#45299</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Prevent upgrade to Prometheus Client 1.3.7 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45541">#45541</a></li>
<li>Upgrade to Couchbase Client 3.8.1 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45539">#45539</a></li>
<li>Upgrade to Elasticsearch 8.18.1 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45447">#45447</a></li>
<li>Upgrade to GraphQL Java 24.0 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45588">#45588</a></li>
<li>Upgrade to Hibernate 6.6.15.Final <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45540">#45540</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/8c2d6453243f319accaef7a190ff8ddf89f482a2"><code>8c2d645</code></a>
Release v3.5.0</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/0b49e78c21f5afaf2db23bea2a1f8b369b3d92a7"><code>0b49e78</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/c684fa4050d89a505f28257fef5462745671b6e5"><code>c684fa4</code></a>
Switch <code>make-default</code> for publish-to-sdkman to 3.5.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/569519285046967a85f20cefe4200fcfc35a21c8"><code>5695192</code></a>
Ensure descendants are always recalculated on cache refresh</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/31f549efc699e8f2f597ddf08bb572ad9a74b358"><code>31f549e</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/68df6f594167d760e67dd97eed0783e3f3a5fafd"><code>68df6f5</code></a>
Next development version (v3.4.7-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/9f46877c7ea17452f1f744281aa0008fadcc82f9"><code>9f46877</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/404a0df5e8cffad3c9cbc896b0382347586102bf"><code>404a0df</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/e331846302f763905e9e0d3cf96438f60c7bd3c4"><code>e331846</code></a>
Next development version (v3.3.13-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/b142798bdb8dde5d8a6ab01e70d6d78c1a6752c7"><code>b142798</code></a>
Merge branch '3.4.x'</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-boot/compare/v3.4.5...v3.5.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `org.springframework.boot:spring-boot-starter-security` from
3.4.5 to 3.5.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-boot/releases">org.springframework.boot:spring-boot-starter-security's
releases</a>.</em></p>
<blockquote>
<h2>v3.5.0</h2>
<p>Full <a
href="https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.5-Release-Notes">release
notes for Spring Boot 3.5</a> are available on the wiki.</p>
<h2> New Features</h2>
<ul>
<li>Make heapdump endpoint restricted by default <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45624">#45624</a></li>
<li>Remove SSL status tag from metrics <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45602">#45602</a></li>
<li>Remove 'spring.http.client' deprecation and change
'spring.http.reactiveclient.settings' to 'spring.http.reactiveclient' <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45507">#45507</a></li>
</ul>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Unable to override/set nested ConfigurationProperties by passing as
a system property <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45639">#45639</a></li>
<li>ValidationAutoConfiguration triggers early initialization of
properties binding <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45618">#45618</a></li>
<li>Micrometer &quot;enable&quot; annotations property does not cover
observed aspect <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45617">#45617</a></li>
<li>spring.graphql.sse.timeout is no longer exposed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45613">#45613</a></li>
<li>SpringApplication.setEnvironmentPrefix is ignored when reading
SPRING_PROFILES_ACTIVE <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45549">#45549</a></li>
<li>IllegalStateException when extracting using layers a module with no
code of its own <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45449">#45449</a></li>
<li>Removed spring.batch.initialize-schema property is still considered
<a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45380">#45380</a></li>
<li>ReactorHttpClientBuilder does not offer a factory method to create
the HttpClient <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45378">#45378</a></li>
<li>Suggested values for spring.jpa.hibernate.ddl-auto are not aligned
with Hibernate <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45351">#45351</a></li>
<li>Custom default units declared on a field are ignored when binding
properties in a native image <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45347">#45347</a></li>
<li>DockerRegistryConfigAuthentication uses the wrong serverUrl as a
fallback for the Credentials helper <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45345">#45345</a></li>
<li>Various spring.datasource properties are mistakenly marked as
ignored <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45342">#45342</a></li>
<li>JerseyWebApplicationInitializer always gets loaded, setting a
ServletContext initParameter <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45297">#45297</a></li>
<li>DockerRegistryConfigAuthentication does not align with Docker CLI <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45292">#45292</a></li>
<li>Unlike the Docker CLI, &quot;\x00&quot; characters are not trimmed
from a decoded Docker Registry password <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45290">#45290</a></li>
<li>CloudFoundry security matcher logs a warning due to use of the
'ignoring()' method <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/32622">#32622</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Document the java info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45634">#45634</a></li>
<li>Document the process info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45632">#45632</a></li>
<li>Document the os info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45630">#45630</a></li>
<li>Document typical spring.application.group and name use <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45628">#45628</a></li>
<li>Document that bean methods should be static when annotated with
<code>@ConfigurationPropertiesBinding</code> <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45626">#45626</a></li>
<li>Document the way that primary Kotlin constructors are used when
binding <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45553">#45553</a></li>
<li>Improve &quot;profile&quot; reference documentation with additional
admonitions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45551">#45551</a></li>
<li>Improve setEnvironmentPrefix(...) reference documentation <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45376">#45376</a></li>
<li>Document all the available Testcontainers integrations <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45367">#45367</a></li>
<li>Document when a spring.config.import value is relative and when it
is fixed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45363">#45363</a></li>
<li>Update org.cyclonedx.bom version in docs to 2.3.0 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45320">#45320</a></li>
<li>Update link to &quot;Parameter Name Retention&quot; section of
Spring Framework's release notes <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45299">#45299</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Prevent upgrade to Prometheus Client 1.3.7 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45541">#45541</a></li>
<li>Upgrade to Couchbase Client 3.8.1 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45539">#45539</a></li>
<li>Upgrade to Elasticsearch 8.18.1 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45447">#45447</a></li>
<li>Upgrade to GraphQL Java 24.0 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45588">#45588</a></li>
<li>Upgrade to Hibernate 6.6.15.Final <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45540">#45540</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/8c2d6453243f319accaef7a190ff8ddf89f482a2"><code>8c2d645</code></a>
Release v3.5.0</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/0b49e78c21f5afaf2db23bea2a1f8b369b3d92a7"><code>0b49e78</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/c684fa4050d89a505f28257fef5462745671b6e5"><code>c684fa4</code></a>
Switch <code>make-default</code> for publish-to-sdkman to 3.5.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/569519285046967a85f20cefe4200fcfc35a21c8"><code>5695192</code></a>
Ensure descendants are always recalculated on cache refresh</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/31f549efc699e8f2f597ddf08bb572ad9a74b358"><code>31f549e</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/68df6f594167d760e67dd97eed0783e3f3a5fafd"><code>68df6f5</code></a>
Next development version (v3.4.7-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/9f46877c7ea17452f1f744281aa0008fadcc82f9"><code>9f46877</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/404a0df5e8cffad3c9cbc896b0382347586102bf"><code>404a0df</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/e331846302f763905e9e0d3cf96438f60c7bd3c4"><code>e331846</code></a>
Next development version (v3.3.13-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/b142798bdb8dde5d8a6ab01e70d6d78c1a6752c7"><code>b142798</code></a>
Merge branch '3.4.x'</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-boot/compare/v3.4.5...v3.5.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `org.springframework.boot:spring-boot-starter-data-jpa` from
3.4.5 to 3.5.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-boot/releases">org.springframework.boot:spring-boot-starter-data-jpa's
releases</a>.</em></p>
<blockquote>
<h2>v3.5.0</h2>
<p>Full <a
href="https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.5-Release-Notes">release
notes for Spring Boot 3.5</a> are available on the wiki.</p>
<h2> New Features</h2>
<ul>
<li>Make heapdump endpoint restricted by default <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45624">#45624</a></li>
<li>Remove SSL status tag from metrics <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45602">#45602</a></li>
<li>Remove 'spring.http.client' deprecation and change
'spring.http.reactiveclient.settings' to 'spring.http.reactiveclient' <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45507">#45507</a></li>
</ul>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Unable to override/set nested ConfigurationProperties by passing as
a system property <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45639">#45639</a></li>
<li>ValidationAutoConfiguration triggers early initialization of
properties binding <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45618">#45618</a></li>
<li>Micrometer &quot;enable&quot; annotations property does not cover
observed aspect <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45617">#45617</a></li>
<li>spring.graphql.sse.timeout is no longer exposed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45613">#45613</a></li>
<li>SpringApplication.setEnvironmentPrefix is ignored when reading
SPRING_PROFILES_ACTIVE <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45549">#45549</a></li>
<li>IllegalStateException when extracting using layers a module with no
code of its own <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45449">#45449</a></li>
<li>Removed spring.batch.initialize-schema property is still considered
<a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45380">#45380</a></li>
<li>ReactorHttpClientBuilder does not offer a factory method to create
the HttpClient <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45378">#45378</a></li>
<li>Suggested values for spring.jpa.hibernate.ddl-auto are not aligned
with Hibernate <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45351">#45351</a></li>
<li>Custom default units declared on a field are ignored when binding
properties in a native image <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45347">#45347</a></li>
<li>DockerRegistryConfigAuthentication uses the wrong serverUrl as a
fallback for the Credentials helper <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45345">#45345</a></li>
<li>Various spring.datasource properties are mistakenly marked as
ignored <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45342">#45342</a></li>
<li>JerseyWebApplicationInitializer always gets loaded, setting a
ServletContext initParameter <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45297">#45297</a></li>
<li>DockerRegistryConfigAuthentication does not align with Docker CLI <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45292">#45292</a></li>
<li>Unlike the Docker CLI, &quot;\x00&quot; characters are not trimmed
from a decoded Docker Registry password <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45290">#45290</a></li>
<li>CloudFoundry security matcher logs a warning due to use of the
'ignoring()' method <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/32622">#32622</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Document the java info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45634">#45634</a></li>
<li>Document the process info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45632">#45632</a></li>
<li>Document the os info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45630">#45630</a></li>
<li>Document typical spring.application.group and name use <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45628">#45628</a></li>
<li>Document that bean methods should be static when annotated with
<code>@ConfigurationPropertiesBinding</code> <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45626">#45626</a></li>
<li>Document the way that primary Kotlin constructors are used when
binding <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45553">#45553</a></li>
<li>Improve &quot;profile&quot; reference documentation with additional
admonitions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45551">#45551</a></li>
<li>Improve setEnvironmentPrefix(...) reference documentation <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45376">#45376</a></li>
<li>Document all the available Testcontainers integrations <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45367">#45367</a></li>
<li>Document when a spring.config.import value is relative and when it
is fixed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45363">#45363</a></li>
<li>Update org.cyclonedx.bom version in docs to 2.3.0 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45320">#45320</a></li>
<li>Update link to &quot;Parameter Name Retention&quot; section of
Spring Framework's release notes <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45299">#45299</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Prevent upgrade to Prometheus Client 1.3.7 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45541">#45541</a></li>
<li>Upgrade to Couchbase Client 3.8.1 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45539">#45539</a></li>
<li>Upgrade to Elasticsearch 8.18.1 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45447">#45447</a></li>
<li>Upgrade to GraphQL Java 24.0 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45588">#45588</a></li>
<li>Upgrade to Hibernate 6.6.15.Final <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45540">#45540</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/8c2d6453243f319accaef7a190ff8ddf89f482a2"><code>8c2d645</code></a>
Release v3.5.0</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/0b49e78c21f5afaf2db23bea2a1f8b369b3d92a7"><code>0b49e78</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/c684fa4050d89a505f28257fef5462745671b6e5"><code>c684fa4</code></a>
Switch <code>make-default</code> for publish-to-sdkman to 3.5.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/569519285046967a85f20cefe4200fcfc35a21c8"><code>5695192</code></a>
Ensure descendants are always recalculated on cache refresh</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/31f549efc699e8f2f597ddf08bb572ad9a74b358"><code>31f549e</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/68df6f594167d760e67dd97eed0783e3f3a5fafd"><code>68df6f5</code></a>
Next development version (v3.4.7-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/9f46877c7ea17452f1f744281aa0008fadcc82f9"><code>9f46877</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/404a0df5e8cffad3c9cbc896b0382347586102bf"><code>404a0df</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/e331846302f763905e9e0d3cf96438f60c7bd3c4"><code>e331846</code></a>
Next development version (v3.3.13-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/b142798bdb8dde5d8a6ab01e70d6d78c1a6752c7"><code>b142798</code></a>
Merge branch '3.4.x'</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-boot/compare/v3.4.5...v3.5.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `org.springframework.boot:spring-boot-starter-oauth2-client`
from 3.4.5 to 3.5.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-boot/releases">org.springframework.boot:spring-boot-starter-oauth2-client's
releases</a>.</em></p>
<blockquote>
<h2>v3.5.0</h2>
<p>Full <a
href="https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.5-Release-Notes">release
notes for Spring Boot 3.5</a> are available on the wiki.</p>
<h2> New Features</h2>
<ul>
<li>Make heapdump endpoint restricted by default <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45624">#45624</a></li>
<li>Remove SSL status tag from metrics <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45602">#45602</a></li>
<li>Remove 'spring.http.client' deprecation and change
'spring.http.reactiveclient.settings' to 'spring.http.reactiveclient' <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45507">#45507</a></li>
</ul>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Unable to override/set nested ConfigurationProperties by passing as
a system property <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45639">#45639</a></li>
<li>ValidationAutoConfiguration triggers early initialization of
properties binding <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45618">#45618</a></li>
<li>Micrometer &quot;enable&quot; annotations property does not cover
observed aspect <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45617">#45617</a></li>
<li>spring.graphql.sse.timeout is no longer exposed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45613">#45613</a></li>
<li>SpringApplication.setEnvironmentPrefix is ignored when reading
SPRING_PROFILES_ACTIVE <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45549">#45549</a></li>
<li>IllegalStateException when extracting using layers a module with no
code of its own <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45449">#45449</a></li>
<li>Removed spring.batch.initialize-schema property is still considered
<a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45380">#45380</a></li>
<li>ReactorHttpClientBuilder does not offer a factory method to create
the HttpClient <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45378">#45378</a></li>
<li>Suggested values for spring.jpa.hibernate.ddl-auto are not aligned
with Hibernate <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45351">#45351</a></li>
<li>Custom default units declared on a field are ignored when binding
properties in a native image <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45347">#45347</a></li>
<li>DockerRegistryConfigAuthentication uses the wrong serverUrl as a
fallback for the Credentials helper <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45345">#45345</a></li>
<li>Various spring.datasource properties are mistakenly marked as
ignored <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45342">#45342</a></li>
<li>JerseyWebApplicationInitializer always gets loaded, setting a
ServletContext initParameter <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45297">#45297</a></li>
<li>DockerRegistryConfigAuthentication does not align with Docker CLI <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45292">#45292</a></li>
<li>Unlike the Docker CLI, &quot;\x00&quot; characters are not trimmed
from a decoded Docker Registry password <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45290">#45290</a></li>
<li>CloudFoundry security matcher logs a warning due to use of the
'ignoring()' method <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/32622">#32622</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Document the java info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45634">#45634</a></li>
<li>Document the process info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45632">#45632</a></li>
<li>Document the os info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45630">#45630</a></li>
<li>Document typical spring.application.group and name use <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45628">#45628</a></li>
<li>Document that bean methods should be static when annotated with
<code>@ConfigurationPropertiesBinding</code> <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45626">#45626</a></li>
<li>Document the way that primary Kotlin constructors are used when
binding <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45553">#45553</a></li>
<li>Improve &quot;profile&quot; reference documentation with additional
admonitions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45551">#45551</a></li>
<li>Improve setEnvironmentPrefix(...) reference documentation <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45376">#45376</a></li>
<li>Document all the available Testcontainers integrations <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45367">#45367</a></li>
<li>Document when a spring.config.import value is relative and when it
is fixed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45363">#45363</a></li>
<li>Update org.cyclonedx.bom version in docs to 2.3.0 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45320">#45320</a></li>
<li>Update link to &quot;Parameter Name Retention&quot; section of
Spring Framework's release notes <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45299">#45299</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Prevent upgrade to Prometheus Client 1.3.7 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45541">#45541</a></li>
<li>Upgrade to Couchbase Client 3.8.1 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45539">#45539</a></li>
<li>Upgrade to Elasticsearch 8.18.1 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45447">#45447</a></li>
<li>Upgrade to GraphQL Java 24.0 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45588">#45588</a></li>
<li>Upgrade to Hibernate 6.6.15.Final <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45540">#45540</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/8c2d6453243f319accaef7a190ff8ddf89f482a2"><code>8c2d645</code></a>
Release v3.5.0</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/0b49e78c21f5afaf2db23bea2a1f8b369b3d92a7"><code>0b49e78</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/c684fa4050d89a505f28257fef5462745671b6e5"><code>c684fa4</code></a>
Switch <code>make-default</code> for publish-to-sdkman to 3.5.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/569519285046967a85f20cefe4200fcfc35a21c8"><code>5695192</code></a>
Ensure descendants are always recalculated on cache refresh</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/31f549efc699e8f2f597ddf08bb572ad9a74b358"><code>31f549e</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/68df6f594167d760e67dd97eed0783e3f3a5fafd"><code>68df6f5</code></a>
Next development version (v3.4.7-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/9f46877c7ea17452f1f744281aa0008fadcc82f9"><code>9f46877</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/404a0df5e8cffad3c9cbc896b0382347586102bf"><code>404a0df</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/e331846302f763905e9e0d3cf96438f60c7bd3c4"><code>e331846</code></a>
Next development version (v3.3.13-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/b142798bdb8dde5d8a6ab01e70d6d78c1a6752c7"><code>b142798</code></a>
Merge branch '3.4.x'</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-boot/compare/v3.4.5...v3.5.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `org.springframework.boot:spring-boot-starter-mail` from 3.4.5
to 3.5.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-boot/releases">org.springframework.boot:spring-boot-starter-mail's
releases</a>.</em></p>
<blockquote>
<h2>v3.5.0</h2>
<p>Full <a
href="https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.5-Release-Notes">release
notes for Spring Boot 3.5</a> are available on the wiki.</p>
<h2> New Features</h2>
<ul>
<li>Make heapdump endpoint restricted by default <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45624">#45624</a></li>
<li>Remove SSL status tag from metrics <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45602">#45602</a></li>
<li>Remove 'spring.http.client' deprecation and change
'spring.http.reactiveclient.settings' to 'spring.http.reactiveclient' <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45507">#45507</a></li>
</ul>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Unable to override/set nested ConfigurationProperties by passing as
a system property <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45639">#45639</a></li>
<li>ValidationAutoConfiguration triggers early initialization of
properties binding <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45618">#45618</a></li>
<li>Micrometer &quot;enable&quot; annotations property does not cover
observed aspect <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45617">#45617</a></li>
<li>spring.graphql.sse.timeout is no longer exposed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45613">#45613</a></li>
<li>SpringApplication.setEnvironmentPrefix is ignored when reading
SPRING_PROFILES_ACTIVE <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45549">#45549</a></li>
<li>IllegalStateException when extracting using layers a module with no
code of its own <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45449">#45449</a></li>
<li>Removed spring.batch.initialize-schema property is still considered
<a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45380">#45380</a></li>
<li>ReactorHttpClientBuilder does not offer a factory method to create
the HttpClient <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45378">#45378</a></li>
<li>Suggested values for spring.jpa.hibernate.ddl-auto are not aligned
with Hibernate <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45351">#45351</a></li>
<li>Custom default units declared on a field are ignored when binding
properties in a native image <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45347">#45347</a></li>
<li>DockerRegistryConfigAuthentication uses the wrong serverUrl as a
fallback for the Credentials helper <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45345">#45345</a></li>
<li>Various spring.datasource properties are mistakenly marked as
ignored <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45342">#45342</a></li>
<li>JerseyWebApplicationInitializer always gets loaded, setting a
ServletContext initParameter <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45297">#45297</a></li>
<li>DockerRegistryConfigAuthentication does not align with Docker CLI <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45292">#45292</a></li>
<li>Unlike the Docker CLI, &quot;\x00&quot; characters are not trimmed
from a decoded Docker Registry password <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45290">#45290</a></li>
<li>CloudFoundry security matcher logs a warning due to use of the
'ignoring()' method <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/32622">#32622</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Document the java info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45634">#45634</a></li>
<li>Document the process info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45632">#45632</a></li>
<li>Document the os info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45630">#45630</a></li>
<li>Document typical spring.application.group and name use <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45628">#45628</a></li>
<li>Document that bean methods should be static when annotated with
<code>@ConfigurationPropertiesBinding</code> <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45626">#45626</a></li>
<li>Document the way that primary Kotlin constructors are used when
binding <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45553">#45553</a></li>
<li>Improve &quot;profile&quot; reference documentation with additional
admonitions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45551">#45551</a></li>
<li>Improve setEnvironmentPrefix(...) reference documentation <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45376">#45376</a></li>
<li>Document all the available Testcontainers integrations <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45367">#45367</a></li>
<li>Document when a spring.config.import value is relative and when it
is fixed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45363">#45363</a></li>
<li>Update org.cyclonedx.bom version in docs to 2.3.0 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45320">#45320</a></li>
<li>Update link to &quot;Parameter Name Retention&quot; section of
Spring Framework's release notes <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45299">#45299</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Prevent upgrade to Prometheus Client 1.3.7 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45541">#45541</a></li>
<li>Upgrade to Couchbase Client 3.8.1 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45539">#45539</a></li>
<li>Upgrade to Elasticsearch 8.18.1 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45447">#45447</a></li>
<li>Upgrade to GraphQL Java 24.0 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45588">#45588</a></li>
<li>Upgrade to Hibernate 6.6.15.Final <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45540">#45540</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/8c2d6453243f319accaef7a190ff8ddf89f482a2"><code>8c2d645</code></a>
Release v3.5.0</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/0b49e78c21f5afaf2db23bea2a1f8b369b3d92a7"><code>0b49e78</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/c684fa4050d89a505f28257fef5462745671b6e5"><code>c684fa4</code></a>
Switch <code>make-default</code> for publish-to-sdkman to 3.5.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/569519285046967a85f20cefe4200fcfc35a21c8"><code>5695192</code></a>
Ensure descendants are always recalculated on cache refresh</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/31f549efc699e8f2f597ddf08bb572ad9a74b358"><code>31f549e</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/68df6f594167d760e67dd97eed0783e3f3a5fafd"><code>68df6f5</code></a>
Next development version (v3.4.7-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/9f46877c7ea17452f1f744281aa0008fadcc82f9"><code>9f46877</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/404a0df5e8cffad3c9cbc896b0382347586102bf"><code>404a0df</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/e331846302f763905e9e0d3cf96438f60c7bd3c4"><code>e331846</code></a>
Next development version (v3.3.13-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/b142798bdb8dde5d8a6ab01e70d6d78c1a6752c7"><code>b142798</code></a>
Merge branch '3.4.x'</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-boot/compare/v3.4.5...v3.5.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `org.springframework.boot:spring-boot-starter-test` from 3.4.5
to 3.5.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-boot/releases">org.springframework.boot:spring-boot-starter-test's
releases</a>.</em></p>
<blockquote>
<h2>v3.5.0</h2>
<p>Full <a
href="https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.5-Release-Notes">release
notes for Spring Boot 3.5</a> are available on the wiki.</p>
<h2> New Features</h2>
<ul>
<li>Make heapdump endpoint restricted by default <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45624">#45624</a></li>
<li>Remove SSL status tag from metrics <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45602">#45602</a></li>
<li>Remove 'spring.http.client' deprecation and change
'spring.http.reactiveclient.settings' to 'spring.http.reactiveclient' <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45507">#45507</a></li>
</ul>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Unable to override/set nested ConfigurationProperties by passing as
a system property <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45639">#45639</a></li>
<li>ValidationAutoConfiguration triggers early initialization of
properties binding <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45618">#45618</a></li>
<li>Micrometer &quot;enable&quot; annotations property does not cover
observed aspect <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45617">#45617</a></li>
<li>spring.graphql.sse.timeout is no longer exposed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45613">#45613</a></li>
<li>SpringApplication.setEnvironmentPrefix is ignored when reading
SPRING_PROFILES_ACTIVE <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45549">#45549</a></li>
<li>IllegalStateException when extracting using layers a module with no
code of its own <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45449">#45449</a></li>
<li>Removed spring.batch.initialize-schema property is still considered
<a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45380">#45380</a></li>
<li>ReactorHttpClientBuilder does not offer a factory method to create
the HttpClient <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45378">#45378</a></li>
<li>Suggested values for spring.jpa.hibernate.ddl-auto are not aligned
with Hibernate <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45351">#45351</a></li>
<li>Custom default units declared on a field are ignored when binding
properties in a native image <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45347">#45347</a></li>
<li>DockerRegistryConfigAuthentication uses the wrong serverUrl as a
fallback for the Credentials helper <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45345">#45345</a></li>
<li>Various spring.datasource properties are mistakenly marked as
ignored <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45342">#45342</a></li>
<li>JerseyWebApplicationInitializer always gets loaded, setting a
ServletContext initParameter <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45297">#45297</a></li>
<li>DockerRegistryConfigAuthentication does not align with Docker CLI <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45292">#45292</a></li>
<li>Unlike the Docker CLI, &quot;\x00&quot; characters are not trimmed
from a decoded Docker Registry password <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45290">#45290</a></li>
<li>CloudFoundry security matcher logs a warning due to use of the
'ignoring()' method <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/32622">#32622</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Document the java info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45634">#45634</a></li>
<li>Document the process info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45632">#45632</a></li>
<li>Document the os info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45630">#45630</a></li>
<li>Document typical spring.application.group and name use <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45628">#45628</a...

_Description has been truncated_

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-27 12:14:30 +01:00
dependabot[bot] ea5515b614 Bump org.mockito:mockito-core from 5.17.0 to 5.18.0 (#3593)
Bumps [org.mockito:mockito-core](https://github.com/mockito/mockito)
from 5.17.0 to 5.18.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mockito/mockito/releases">org.mockito:mockito-core's
releases</a>.</em></p>
<blockquote>
<h2>v5.18.0</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --><em>Changelog
generated by <a
href="https://github.com/shipkit/shipkit-changelog">Shipkit Changelog
Gradle Plugin</a></em><!-- raw HTML omitted --><!-- raw HTML omitted
--></p>
<h4>5.18.0</h4>
<ul>
<li>2025-05-20 - <a
href="https://github.com/mockito/mockito/compare/v5.17.0...v5.18.0">5
commit(s)</a> by Eugene Platonov, Patrick Doyle, Tim van der Lippe,
dependabot[bot]</li>
<li>Make vararg checks Scala friendly (for mockito-scala) [(<a
href="https://redirect.github.com/mockito/mockito/issues/3651">#3651</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3651">mockito/mockito#3651</a>)</li>
<li>For UnfinishedStubbingException, suggest the possibility of another
thread [(<a
href="https://redirect.github.com/mockito/mockito/issues/3636">#3636</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3636">mockito/mockito#3636</a>)</li>
<li>UnfinishedStubbingException ought to suggest the possibility of
another thread [(<a
href="https://redirect.github.com/mockito/mockito/issues/3635">#3635</a>)](<a
href="https://redirect.github.com/mockito/mockito/issues/3635">mockito/mockito#3635</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mockito/mockito/commit/06737471ea19ca023581351eeac778ffbce8da74"><code>0673747</code></a>
Force Jacoco version for Android</li>
<li><a
href="https://github.com/mockito/mockito/commit/65388f01eb8a555c4df5dec692ba9abf8a2591b8"><code>65388f0</code></a>
Update Jacoco version to 0.8.13</li>
<li><a
href="https://github.com/mockito/mockito/commit/60179ca10dbd29ff959d7eae670ce95b3f19f5fd"><code>60179ca</code></a>
Bump bytebuddy from 1.15.11 to 1.16.1</li>
<li><a
href="https://github.com/mockito/mockito/commit/8f15169774cb639b5757f121f27d6c0d8ca18c97"><code>8f15169</code></a>
Make vararg checks Scala friendly (<a
href="https://redirect.github.com/mockito/mockito/issues/3651">#3651</a>)</li>
<li><a
href="https://github.com/mockito/mockito/commit/3a631cb87082fff212bc00c00970508b4ce63072"><code>3a631cb</code></a>
Add hint for multithreading in <code>UnfinishedStubbingException</code>
(<a
href="https://redirect.github.com/mockito/mockito/issues/3636">#3636</a>)</li>
<li>See full diff in <a
href="https://github.com/mockito/mockito/compare/v5.17.0...v5.18.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.mockito:mockito-core&package-manager=gradle&previous-version=5.17.0&new-version=5.18.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-27 12:14:17 +01:00
dependabot[bot] b1a6e1b481 Bump org.springframework.boot from 3.4.5 to 3.5.0 (#3594)
Bumps
[org.springframework.boot](https://github.com/spring-projects/spring-boot)
from 3.4.5 to 3.5.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-boot/releases">org.springframework.boot's
releases</a>.</em></p>
<blockquote>
<h2>v3.5.0</h2>
<p>Full <a
href="https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.5-Release-Notes">release
notes for Spring Boot 3.5</a> are available on the wiki.</p>
<h2> New Features</h2>
<ul>
<li>Make heapdump endpoint restricted by default <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45624">#45624</a></li>
<li>Remove SSL status tag from metrics <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45602">#45602</a></li>
<li>Remove 'spring.http.client' deprecation and change
'spring.http.reactiveclient.settings' to 'spring.http.reactiveclient' <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45507">#45507</a></li>
</ul>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Unable to override/set nested ConfigurationProperties by passing as
a system property <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45639">#45639</a></li>
<li>ValidationAutoConfiguration triggers early initialization of
properties binding <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45618">#45618</a></li>
<li>Micrometer &quot;enable&quot; annotations property does not cover
observed aspect <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45617">#45617</a></li>
<li>spring.graphql.sse.timeout is no longer exposed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45613">#45613</a></li>
<li>SpringApplication.setEnvironmentPrefix is ignored when reading
SPRING_PROFILES_ACTIVE <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45549">#45549</a></li>
<li>IllegalStateException when extracting using layers a module with no
code of its own <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45449">#45449</a></li>
<li>Removed spring.batch.initialize-schema property is still considered
<a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45380">#45380</a></li>
<li>ReactorHttpClientBuilder does not offer a factory method to create
the HttpClient <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45378">#45378</a></li>
<li>Suggested values for spring.jpa.hibernate.ddl-auto are not aligned
with Hibernate <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45351">#45351</a></li>
<li>Custom default units declared on a field are ignored when binding
properties in a native image <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45347">#45347</a></li>
<li>DockerRegistryConfigAuthentication uses the wrong serverUrl as a
fallback for the Credentials helper <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45345">#45345</a></li>
<li>Various spring.datasource properties are mistakenly marked as
ignored <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45342">#45342</a></li>
<li>JerseyWebApplicationInitializer always gets loaded, setting a
ServletContext initParameter <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45297">#45297</a></li>
<li>DockerRegistryConfigAuthentication does not align with Docker CLI <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45292">#45292</a></li>
<li>Unlike the Docker CLI, &quot;\x00&quot; characters are not trimmed
from a decoded Docker Registry password <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/45290">#45290</a></li>
<li>CloudFoundry security matcher logs a warning due to use of the
'ignoring()' method <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/32622">#32622</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Document the java info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45634">#45634</a></li>
<li>Document the process info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45632">#45632</a></li>
<li>Document the os info contribution <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45630">#45630</a></li>
<li>Document typical spring.application.group and name use <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45628">#45628</a></li>
<li>Document that bean methods should be static when annotated with
<code>@ConfigurationPropertiesBinding</code> <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45626">#45626</a></li>
<li>Document the way that primary Kotlin constructors are used when
binding <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45553">#45553</a></li>
<li>Improve &quot;profile&quot; reference documentation with additional
admonitions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45551">#45551</a></li>
<li>Improve setEnvironmentPrefix(...) reference documentation <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45376">#45376</a></li>
<li>Document all the available Testcontainers integrations <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45367">#45367</a></li>
<li>Document when a spring.config.import value is relative and when it
is fixed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45363">#45363</a></li>
<li>Update org.cyclonedx.bom version in docs to 2.3.0 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45320">#45320</a></li>
<li>Update link to &quot;Parameter Name Retention&quot; section of
Spring Framework's release notes <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45299">#45299</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Prevent upgrade to Prometheus Client 1.3.7 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45541">#45541</a></li>
<li>Upgrade to Couchbase Client 3.8.1 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45539">#45539</a></li>
<li>Upgrade to Elasticsearch 8.18.1 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45447">#45447</a></li>
<li>Upgrade to GraphQL Java 24.0 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45588">#45588</a></li>
<li>Upgrade to Hibernate 6.6.15.Final <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45540">#45540</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/8c2d6453243f319accaef7a190ff8ddf89f482a2"><code>8c2d645</code></a>
Release v3.5.0</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/0b49e78c21f5afaf2db23bea2a1f8b369b3d92a7"><code>0b49e78</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/c684fa4050d89a505f28257fef5462745671b6e5"><code>c684fa4</code></a>
Switch <code>make-default</code> for publish-to-sdkman to 3.5.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/569519285046967a85f20cefe4200fcfc35a21c8"><code>5695192</code></a>
Ensure descendants are always recalculated on cache refresh</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/31f549efc699e8f2f597ddf08bb572ad9a74b358"><code>31f549e</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/68df6f594167d760e67dd97eed0783e3f3a5fafd"><code>68df6f5</code></a>
Next development version (v3.4.7-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/9f46877c7ea17452f1f744281aa0008fadcc82f9"><code>9f46877</code></a>
Merge branch '3.4.x'</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/404a0df5e8cffad3c9cbc896b0382347586102bf"><code>404a0df</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/e331846302f763905e9e0d3cf96438f60c7bd3c4"><code>e331846</code></a>
Next development version (v3.3.13-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/b142798bdb8dde5d8a6ab01e70d6d78c1a6752c7"><code>b142798</code></a>
Merge branch '3.4.x'</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-boot/compare/v3.4.5...v3.5.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.springframework.boot&package-manager=gradle&previous-version=3.4.5&new-version=3.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-27 12:14:12 +01:00
Ludy f2f11496a2 Fix Chinese localization split page numbering (#3574)
# Description of Changes

Please provide a summary of the changes, including:

- **What was changed**  
Updated the values of `split.desc.6`, `split.desc.7`, and `split.desc.8`
in `src/main/resources/messages_zh_CN.properties` to correct the page
numbers:

- **Why the change was made**  
The previous numbering was inconsistent and would have led to incorrect
split outputs in the Chinese UI. This ensures that users splitting a
document see the correct page ranges.

- **Translation Method**  
The correction of these translation strings was generated and verified
using AI assistance.

Closes #3529

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-23 22:22:05 +01:00
LudyandCopilot 75c325d15a Update messages_de_DE.properties (#3575)
# Description of Changes

Please provide a summary of the changes, including:

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-23 10:50:54 +01:00
daenur adcfe629f2 Russian translation (#3572)
Update messages_ru_RU.properties

# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-22 10:44:14 +01:00
Ludy 35304a1491 Enhance email error handling and expand test coverage (#3561)
# Description of Changes

Please provide a summary of the changes, including:

- **What was changed**  
- **EmailController**: Added a `catch (MailSendException)` block to
handle invalid-address errors, log the exception, and return a 500
response with the raw error message.
- **EmailServiceTest**: Added unit tests for attachment-related error
cases (missing filename, null filename, missing file, null file) and
invalid “to” address (null or empty), expecting `MessagingException` or
`MailSendException`.
- **MailConfigTest**: New test class verifying `MailConfig.java`
correctly initializes `JavaMailSenderImpl` with host, port, username,
password, default encoding, and SMTP properties.
- **EmailControllerTest**: Refactored into a parameterized test
(`shouldHandleEmailRequests`) covering four scenarios: success, generic
messaging error, missing `to` parameter, and invalid address formatting.

- **Why the change was made**  
- To ensure invalid email addresses and missing attachments are handled
gracefully at the controller layer, providing clearer feedback to API
clients.
- To improve overall test coverage and guard against regressions in
email functionality.
  - To enforce correct mail configuration via automated tests.

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-21 15:42:08 +01:00
daenur cc938e1751 Ukrainian translation (#3567)
Update messages_uk_UA.properties

# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-21 15:41:51 +01:00
Ludy b65624cf57 Enforce Locale.US for Consistent Decimal Formatting in Byte-Size Output (#3562)
# Description of Changes

Please provide a summary of the changes, including:

- **What was changed**  
  - Added `import java.util.Locale;`  
- Updated the `String.format` call in `humanReadableByteCount` to use
`Locale.US`

- **Why the change was made**  
By default, `String.format` uses the JVM’s default locale, which in some
environments (e.g., Germany) formats decimals with a comma. Tests
expected a dot (`.`) as the decimal separator (e.g., `"1.0 KB"`), so we
force `Locale.US` to ensure consistent output across all locales.


---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-21 15:41:11 +01:00
Anthony Stirling 8bfdb2abb5 Update home.html (#3560)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-20 17:42:42 +01:00
Reece Browne 70349fb7e3 remove legacy homepage (#3518)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-20 12:08:20 +01:00
stirlingbot[bot] bef86b44e4 Update 3rd Party Licenses (#3559)
Auto-generated by StirlingBot

Signed-off-by: stirlingbot[bot] <1113334+stirlingbot[bot]@users.noreply.github.com>
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-05-20 12:07:03 +01:00
Anthony Stirling 46cc2e05df Add additional unit tests for utils and EE (#3557)
## Summary
- add tests for LicenseKeyChecker
- expand GeneralUtils coverage
- cover extra PdfUtils functionality
- merge PdfUtilsMoreTest into PdfUtilsTest

## Testing
- `./gradlew test --no-daemon`
- `./gradlew build spotlessApply --no-daemon`
2025-05-20 12:05:18 +01:00
Anthony StirlingandCopilot c8e25f4c5a Fix TemplateResolver and LibreOfficeListener bugs (#3555)
## Summary
- log missing exceptions in FileFallbackTemplateResolver
- implement exists check for InputStreamTemplateResource
- use LISTENER_PORT constant when verifying LibreOffice listener

## Testing
- `./gradlew build --no-daemon`
- `./gradlew test --no-daemon`

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-20 12:02:26 +01:00
Anthony Stirling 218d21f07a Update AGENTS guidelines (#3556)
## Summary
- clarify Codex contribution instructions
- remove `test.sh` reference and require `./gradlew build`
- add Developer Guide, AI note and translation policy

## Testing
- `./gradlew spotlessApply`
- `./gradlew build`
2025-05-20 12:02:10 +01:00
Anthony Stirling 9fe49c494d Fix test compilation around pipeline processor (#3554)
## Summary
- allow tests to spy on PipelineProcessor web requests
- fix ResponseEntity usage in PipelineProcessorTest

## Testing
- `./gradlew test --offline` *(fails: No route to host while downloading
gradle-8.14-all.zip)*
2025-05-20 12:02:01 +01:00
dependabot[bot] d59e39b4b6 Bump org.mockito:mockito-core from 5.11.0 to 5.17.0 (#3551)
Bumps [org.mockito:mockito-core](https://github.com/mockito/mockito)
from 5.11.0 to 5.17.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mockito/mockito/releases">org.mockito:mockito-core's
releases</a>.</em></p>
<blockquote>
<h2>v5.17.0</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --><em>Changelog
generated by <a
href="https://github.com/shipkit/shipkit-changelog">Shipkit Changelog
Gradle Plugin</a></em><!-- raw HTML omitted --><!-- raw HTML omitted
--></p>
<h4>5.17.0</h4>
<ul>
<li>2025-04-04 - <a
href="https://github.com/mockito/mockito/compare/v5.16.1...v5.17.0">7
commit(s)</a> by Adrian Roos, Andre Kurait, Jan Ouwens, Rafael
Winterhalter, Taeik Lim, Thach Le, Tim van der Lippe</li>
<li>Fixes <a
href="https://redirect.github.com/mockito/mockito/issues/3631">#3631</a>:
Fix broken banner image link [(<a
href="https://redirect.github.com/mockito/mockito/issues/3632">#3632</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3632">mockito/mockito#3632</a>)</li>
<li>Banner image is broken [(<a
href="https://redirect.github.com/mockito/mockito/issues/3631">#3631</a>)](<a
href="https://redirect.github.com/mockito/mockito/issues/3631">mockito/mockito#3631</a>)</li>
<li>Update exception message with mockito-inline [(<a
href="https://redirect.github.com/mockito/mockito/issues/3628">#3628</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3628">mockito/mockito#3628</a>)</li>
<li>Clarify structure of commit messages [(<a
href="https://redirect.github.com/mockito/mockito/issues/3626">#3626</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3626">mockito/mockito#3626</a>)</li>
<li>Fixes <a
href="https://redirect.github.com/mockito/mockito/issues/3622">#3622</a>:
MockitoExtension fails cleanup when aborted before setup [(<a
href="https://redirect.github.com/mockito/mockito/issues/3623">#3623</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3623">mockito/mockito#3623</a>)</li>
<li>MockitoExtension fails cleanup when aborted before setup [(<a
href="https://redirect.github.com/mockito/mockito/issues/3622">#3622</a>)](<a
href="https://redirect.github.com/mockito/mockito/issues/3622">mockito/mockito#3622</a>)</li>
<li>Since mockito-inline has been removed, the exception messages with
<code>mockito-inline</code> should be modified. [(<a
href="https://redirect.github.com/mockito/mockito/issues/3621">#3621</a>)](<a
href="https://redirect.github.com/mockito/mockito/issues/3621">mockito/mockito#3621</a>)</li>
<li>Fixes <a
href="https://redirect.github.com/mockito/mockito/issues/3171">#3171</a>:
Fall back to Throwable Location strategy on Android [(<a
href="https://redirect.github.com/mockito/mockito/issues/3619">#3619</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3619">mockito/mockito#3619</a>)</li>
<li>Fixes <a
href="https://redirect.github.com/mockito/mockito/issues/3615">#3615</a>
: broken links to javadoc.io [(<a
href="https://redirect.github.com/mockito/mockito/issues/3616">#3616</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3616">mockito/mockito#3616</a>)</li>
<li>Broken links to javadoc.io [(<a
href="https://redirect.github.com/mockito/mockito/issues/3615">#3615</a>)](<a
href="https://redirect.github.com/mockito/mockito/issues/3615">mockito/mockito#3615</a>)</li>
<li>Mocks are not working on particular devices after update Android SDK
from 33 to 34 [(<a
href="https://redirect.github.com/mockito/mockito/issues/3171">#3171</a>)](<a
href="https://redirect.github.com/mockito/mockito/issues/3171">mockito/mockito#3171</a>)</li>
</ul>
<h2>v5.16.1</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --><em>Changelog
generated by <a
href="https://github.com/shipkit/shipkit-changelog">Shipkit Changelog
Gradle Plugin</a></em><!-- raw HTML omitted --><!-- raw HTML omitted
--></p>
<h4>5.16.1</h4>
<ul>
<li>2025-03-15 - <a
href="https://github.com/mockito/mockito/compare/v5.16.0...v5.16.1">3
commit(s)</a> by Adrian Roos, Jérôme Prinet, Rafael Winterhalter</li>
<li>Remove Arrays.asList from critical stubbing path in
GenericMetadataSu… [(<a
href="https://redirect.github.com/mockito/mockito/issues/3610">#3610</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3610">mockito/mockito#3610</a>)</li>
<li>Rework of injection strategy in the context of modules [(<a
href="https://redirect.github.com/mockito/mockito/issues/3608">#3608</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3608">mockito/mockito#3608</a>)</li>
<li>Adjust inline mocking snippet to allow task relocatability [(<a
href="https://redirect.github.com/mockito/mockito/issues/3606">#3606</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3606">mockito/mockito#3606</a>)</li>
<li>Inline mocking configuration snippet for Gradle should allow task
relocatability [(<a
href="https://redirect.github.com/mockito/mockito/issues/3605">#3605</a>)](<a
href="https://redirect.github.com/mockito/mockito/issues/3605">mockito/mockito#3605</a>)</li>
</ul>
<h2>v5.16.0</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --><em>Changelog
generated by <a
href="https://github.com/shipkit/shipkit-changelog">Shipkit Changelog
Gradle Plugin</a></em><!-- raw HTML omitted --><!-- raw HTML omitted
--></p>
<h4>5.16.0</h4>
<ul>
<li>2025-03-03 - <a
href="https://github.com/mockito/mockito/compare/v5.15.2...v5.16.0">10
commit(s)</a> by Brice Dutheil, Rafael Winterhalter, TDL,
dependabot[bot]</li>
<li>Add support for including module-info in Mockito. [(<a
href="https://redirect.github.com/mockito/mockito/issues/3597">#3597</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3597">mockito/mockito#3597</a>)</li>
<li>Bump com.gradle.develocity from 3.19 to 3.19.1 [(<a
href="https://redirect.github.com/mockito/mockito/issues/3579">#3579</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3579">mockito/mockito#3579</a>)</li>
<li>Bump org.assertj:assertj-core from 3.27.2 to 3.27.3 [(<a
href="https://redirect.github.com/mockito/mockito/issues/3577">#3577</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3577">mockito/mockito#3577</a>)</li>
<li>Bump com.diffplug.spotless:spotless-plugin-gradle from 7.0.1 to
7.0.2 [(<a
href="https://redirect.github.com/mockito/mockito/issues/3574">#3574</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3574">mockito/mockito#3574</a>)</li>
<li>Bump com.diffplug.spotless:spotless-plugin-gradle from 6.25.0 to
7.0.1 [(<a
href="https://redirect.github.com/mockito/mockito/issues/3571">#3571</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3571">mockito/mockito#3571</a>)</li>
<li>Bump org.assertj:assertj-core from 3.27.1 to 3.27.2 [(<a
href="https://redirect.github.com/mockito/mockito/issues/3569">#3569</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3569">mockito/mockito#3569</a>)</li>
<li>Tweaks documentation on mockito agent config for maven [(<a
href="https://redirect.github.com/mockito/mockito/issues/3568">#3568</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3568">mockito/mockito#3568</a>)</li>
<li>Adds <code>--info</code> to diagnose
closeAndReleaseStagingRepositories issues [(<a
href="https://redirect.github.com/mockito/mockito/issues/3567">#3567</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3567">mockito/mockito#3567</a>)</li>
<li>Refine reflection when calling management factory [(<a
href="https://redirect.github.com/mockito/mockito/issues/3566">#3566</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3566">mockito/mockito#3566</a>)</li>
<li>Avoid warning when dynamic attach is enabled [(<a
href="https://redirect.github.com/mockito/mockito/issues/3551">#3551</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3551">mockito/mockito#3551</a>)</li>
</ul>
<h2>v5.15.2</h2>
<p><!-- raw HTML omitted --><!-- raw HTML omitted --><em>Changelog
generated by <a
href="https://github.com/shipkit/shipkit-changelog">Shipkit Changelog
Gradle Plugin</a></em><!-- raw HTML omitted --><!-- raw HTML omitted
--></p>
<h4>5.15.2</h4>
<ul>
<li>2025-01-02 - <a
href="https://github.com/mockito/mockito/compare/v5.15.1...v5.15.2">2
commit(s)</a> by Brice Dutheil, dependabot[bot]</li>
<li>Fix javadoc publication [(<a
href="https://redirect.github.com/mockito/mockito/issues/3561">#3561</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3561">mockito/mockito#3561</a>)</li>
<li>Bump org.assertj:assertj-core from 3.27.0 to 3.27.1 [(<a
href="https://redirect.github.com/mockito/mockito/issues/3560">#3560</a>)](<a
href="https://redirect.github.com/mockito/mockito/pull/3560">mockito/mockito#3560</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mockito/mockito/commit/7764992d1250f4e7f6ffd10f650dc89516139c8d"><code>7764992</code></a>
Remove mention of <code>mockito-inline</code> from mockmaker exception
(<a
href="https://redirect.github.com/mockito/mockito/issues/3628">#3628</a>)</li>
<li><a
href="https://github.com/mockito/mockito/commit/ee92ad4916d9f3f6ae6836bdba5c30f8404d3d50"><code>ee92ad4</code></a>
Fix broken banner image link (<a
href="https://redirect.github.com/mockito/mockito/issues/3632">#3632</a>)</li>
<li><a
href="https://github.com/mockito/mockito/commit/3edab5283552c3c6c393d8c818c8d6a8fa1f94a5"><code>3edab52</code></a>
Clarify structure of commit messages (<a
href="https://redirect.github.com/mockito/mockito/issues/3626">#3626</a>)</li>
<li><a
href="https://github.com/mockito/mockito/commit/bfab74365e91135b2f88ccb0228372a8799d9279"><code>bfab743</code></a>
Fall back to Throwable Location strategy on Android (<a
href="https://redirect.github.com/mockito/mockito/issues/3619">#3619</a>)</li>
<li><a
href="https://github.com/mockito/mockito/commit/4f469c830b2f6ab0e1f061e9383aff2e6f9f8376"><code>4f469c8</code></a>
MockitoExtension fails cleanup when aborted before setup (<a
href="https://redirect.github.com/mockito/mockito/issues/3623">#3623</a>)</li>
<li><a
href="https://github.com/mockito/mockito/commit/1764e62102f525ff9a82b8166b8596edd25f5b7f"><code>1764e62</code></a>
Update links to javadoc.io (<a
href="https://redirect.github.com/mockito/mockito/issues/3616">#3616</a>)</li>
<li><a
href="https://github.com/mockito/mockito/commit/1e029d767b33ee8de42e58459a2c3e63ab3f7c41"><code>1e029d7</code></a>
Add missing requirement to objenesis.</li>
<li><a
href="https://github.com/mockito/mockito/commit/d000e630775cfa45752eeb491a197283e7370621"><code>d000e63</code></a>
Rework of injection strategy in the context of modules (<a
href="https://redirect.github.com/mockito/mockito/issues/3608">#3608</a>)</li>
<li><a
href="https://github.com/mockito/mockito/commit/0215884a5e68016504be98599b3045070a558002"><code>0215884</code></a>
Remove Arrays.asList from critical stubbing path in
GenericMetadataSupport (#...</li>
<li><a
href="https://github.com/mockito/mockito/commit/d18503512b01eed650f5fdf78f7e3c02755c8ee5"><code>d185035</code></a>
Add reference to Gradle documentation on how to make task relocatable
(<a
href="https://redirect.github.com/mockito/mockito/issues/3606">#3606</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/mockito/mockito/compare/v5.11.0...v5.17.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.mockito:mockito-core&package-manager=gradle&previous-version=5.11.0&new-version=5.17.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 12:00:31 +01:00
dependabot[bot] 9514370cc3 Bump org.gradle.toolchains.foojay-resolver-convention from 0.10.0 to 1.0.0 (#3552)
Bumps org.gradle.toolchains.foojay-resolver-convention from 0.10.0 to
1.0.0.


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.gradle.toolchains.foojay-resolver-convention&package-manager=gradle&previous-version=0.10.0&new-version=1.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 11:58:23 +01:00
dependabot[bot] b9dd78ced6 Bump io.micrometer:micrometer-core from 1.14.7 to 1.15.0 (#3550)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps
[io.micrometer:micrometer-core](https://github.com/micrometer-metrics/micrometer)
from 1.14.7 to 1.15.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/micrometer-metrics/micrometer/releases">io.micrometer:micrometer-core's
releases</a>.</em></p>
<blockquote>
<h2>1.15.0</h2>
<h2> New Features</h2>
<ul>
<li>Further enhancement to OtlpMetricsSender <a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/6025">#6025</a></li>
<li>Make Prometheus Metric and Label naming conventions consistent <a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/5923">#5923</a></li>
<li>Metrics for Executors.newVirtualThreadPerTaskExecutor() <a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/5488">#5488</a></li>
<li>Metrics for live virtual threads <a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/5950">#5950</a></li>
<li>More flexible OTLP per meter configuration <a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/6099">#6099</a></li>
<li>Prometheus/OpenMetrics <code>_created</code> timestamp <a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/2625">#2625</a></li>
<li>Make jvm.classes.unloaded description generic <a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/5745">#5745</a></li>
<li>Use String.toLowerCase()/toUpperCase() with Locale.ROOT consistently
<a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/5711">#5711</a></li>
<li>Use failWithActualExpectedAndMessage() where possible <a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/5696">#5696</a></li>
<li>Provide target host/port info in ObservationExecChainHandler when
HttpHostConnectException is thrown <a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/5615">#5615</a></li>
<li>Enable Gauge builders to take a subclass of Number <a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/5601">#5601</a></li>
<li>micrometer-observation-test support for assertions on events <a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/5576">#5576</a></li>
<li>Log delta count in addition to throughput in LoggingMeterRegistry <a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/5548">#5548</a></li>
<li>Add peer name and port to gRPC observation contexts <a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/3512">#3512</a></li>
<li>Use direct equals call instead of Objects.equals wrapper <a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/5840">#5840</a></li>
<li>Remove special handling of 404/301 from JDK HTTP client
instrumentation <a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/5838">#5838</a></li>
<li>Make Timer and LongTaskTimer output similar in LoggingMeterRegistry
<a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/5835">#5835</a></li>
<li>Remove special handling of 404 and redirection statuses from Jetty
client instrumentation <a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/5825">#5825</a></li>
<li>Log deprecation warning when creating SignalFxMeterRegistry <a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/5824">#5824</a></li>
<li>Log metrics recording failures in CountedAspect and TimedAspect <a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/5820">#5820</a></li>
<li>Remove special handling of 404/301 from OkHttp instrumentation <a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/5814">#5814</a></li>
<li>Support AutoShutdownDelegatedExecutorService in
ExecutorServiceMetrics <a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/5811">#5811</a></li>
<li>Deprecate micrometer-registry-signalfx in favor of
micrometer-registry-otlp <a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/5807">#5807</a></li>
<li>Rebind <code>Log4j2Metrics</code> when
<code>LoggerContext#reconfigure</code> is called <a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/5756">#5756</a></li>
<li>Send metrics via any protocol in the OTLP Registry <a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/5690">#5690</a></li>
<li>Improve average performance of DefaultLongTaskTimer for out-of-order
stopping <a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/5591">#5591</a></li>
<li>Improve OtlpMetricsSender API <a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/5994">#5994</a></li>
<li>Support configuring exponential histograms at the meter level <a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/5459">#5459</a></li>
<li>Allow TimedAspect/CountedAspect to create tags based on method
result <a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/3058">#3058</a></li>
</ul>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Do not leak OTLP types on public-facing API <a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/5699">#5699</a></li>
<li>micrometer-observation-test brings unnecessary JUnit dependencies,
leading to conflicts <a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/6012">#6012</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Bump io.opentelemetry.proto:opentelemetry-proto from 1.4.0-alpha to
1.5.0-alpha <a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/5798">#5798</a></li>
<li>Bump com.google.cloud:libraries-bom from 26.55.0 to 26.56.0 <a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/5991">#5991</a></li>
<li>Bump com.google.cloud:google-cloud-monitoring from 3.59.0 to 3.60.0
<a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/5986">#5986</a></li>
<li>Bump com.google.auth:google-auth-library-oauth2-http from 1.32.1 to
1.33.0 <a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/5963">#5963</a></li>
<li>Bump software.amazon.awssdk:cloudwatch from 2.29.46 to 2.30.11 <a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/5863">#5863</a></li>
</ul>
<h2>❤️ Contributors</h2>
<p>Thank you to all the contributors who worked on this release:</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/micrometer-metrics/micrometer/commit/e13042badcc34c2ca833bfd692924bd86e9d4c1e"><code>e13042b</code></a>
Bump software.amazon.awssdk:cloudwatch from 2.31.40 to 2.31.41 (<a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/6228">#6228</a>)</li>
<li><a
href="https://github.com/micrometer-metrics/micrometer/commit/571793b84ed71c90012b378b94df02fdb417ecf2"><code>571793b</code></a>
Merge branch '1.14.x'</li>
<li><a
href="https://github.com/micrometer-metrics/micrometer/commit/315c1b1817ca77b6d91b890586ae1826186b57c4"><code>315c1b1</code></a>
Merge branch '1.13.x' into 1.14.x</li>
<li><a
href="https://github.com/micrometer-metrics/micrometer/commit/a3ae027d8c6dd0fbd7851eb59a61e29341498f2b"><code>a3ae027</code></a>
Bump com.tngtech.archunit:archunit-junit5 from 1.3.1 to 1.3.2 (<a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/6225">#6225</a>)</li>
<li><a
href="https://github.com/micrometer-metrics/micrometer/commit/ac6c26f7baf6c742a5daf509113d0197a23361d0"><code>ac6c26f</code></a>
Merge branch '1.14.x'</li>
<li><a
href="https://github.com/micrometer-metrics/micrometer/commit/163203f98102e4e7bb8e9e4bc893257b162e2d49"><code>163203f</code></a>
Add missing colons in &quot;Environment&quot; section in bug_report.md
(<a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/6223">#6223</a>)</li>
<li><a
href="https://github.com/micrometer-metrics/micrometer/commit/1713feed26a18f676b0e9f395354e4b8688731b1"><code>1713fee</code></a>
Bump maven-resolver from 1.9.22 to 1.9.23 (<a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/6222">#6222</a>)</li>
<li><a
href="https://github.com/micrometer-metrics/micrometer/commit/e31548477ade9ab7933d2ff7f2a8817540598c5c"><code>e315484</code></a>
Bump software.amazon.awssdk:cloudwatch from 2.31.39 to 2.31.40 (<a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/6221">#6221</a>)</li>
<li><a
href="https://github.com/micrometer-metrics/micrometer/commit/d6b8d4e8472dda214252a184ff8d244a7934e13a"><code>d6b8d4e</code></a>
Bump com.google.cloud:libraries-bom from 26.59.0 to 26.60.0 (<a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/6220">#6220</a>)</li>
<li><a
href="https://github.com/micrometer-metrics/micrometer/commit/121056e6d59fb6995b65adf0b4a53aabbb47d63d"><code>121056e</code></a>
Bump software.amazon.awssdk:cloudwatch from 2.31.38 to 2.31.39 (<a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/6217">#6217</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/micrometer-metrics/micrometer/compare/v1.14.7...v1.15.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=io.micrometer:micrometer-core&package-manager=gradle&previous-version=1.14.7&new-version=1.15.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 11:53:02 +01:00
dependabot[bot] f50f7230d0 Bump org.springframework.security:spring-security-saml2-service-provider from 6.4.5 to 6.5.0 (#3549)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps
[org.springframework.security:spring-security-saml2-service-provider](https://github.com/spring-projects/spring-security)
from 6.4.5 to 6.5.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-security/releases">org.springframework.security:spring-security-saml2-service-provider's
releases</a>.</em></p>
<blockquote>
<h2>6.5.0</h2>
<h2> New Features</h2>
<ul>
<li>Add documentation for DPoP support <a
href="https://redirect.github.com/spring-projects/spring-security/issues/17072">#17072</a></li>
<li>Add logging to CsrfTokenRequestHandler implementations <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16994">#16994</a></li>
<li>Add mapping for DPoP in DefaultMapOAuth2AccessTokenResponseConverter
<a
href="https://redirect.github.com/spring-projects/spring-security/pull/16806">#16806</a></li>
<li>Bump Gradle Wrapper from 8.13 to 8.14 <a
href="https://redirect.github.com/spring-projects/spring-security/issues/17018">#17018</a></li>
<li>ClientRegistrations.fromIssuerLocation does not include failure
information <a
href="https://redirect.github.com/spring-projects/spring-security/issues/17015">#17015</a></li>
<li>Fix Typo In SubjectDnX509PrincipalExtractorTests <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16997">#16997</a></li>
<li>Implement internal cache in JtiClaimValidator <a
href="https://redirect.github.com/spring-projects/spring-security/issues/17107">#17107</a></li>
<li>Polish javadoc <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16924">#16924</a></li>
<li>Remove unused classes <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16935">#16935</a></li>
<li>Replace NimbusOpaqueTokenIntrospector with
SpringOpaqueTokenIntrospector in Documentation <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16962">#16962</a></li>
<li>RequestHeaderAuthenticationFilter creates a session even if not
configured to do so <a
href="https://redirect.github.com/spring-projects/spring-security/issues/17147">#17147</a></li>
</ul>
<h2>🪲 Bug Fixes</h2>
<ul>
<li>Add FunctionalInterface To X509PrincipalExtractor <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16952">#16952</a></li>
<li>Change NonNull import from reactor to spring <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16571">#16571</a></li>
<li>Fix DPoP jkt claim to be JWK SHA-256 thumbprint <a
href="https://redirect.github.com/spring-projects/spring-security/pull/17080">#17080</a></li>
<li>Minor error in the Handling Logouts documentation <a
href="https://redirect.github.com/spring-projects/spring-security/issues/17049">#17049</a></li>
<li>SecurityAnnotationScanner's method comparison should use .equals <a
href="https://redirect.github.com/spring-projects/spring-security/issues/17145">#17145</a></li>
<li>Use proper configuration key in Opaque Token documentation <a
href="https://redirect.github.com/spring-projects/spring-security/issues/17014">#17014</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Bump com.fasterxml.jackson:jackson-bom from 2.18.3 to 2.18.4 <a
href="https://redirect.github.com/spring-projects/spring-security/issues/17069">#17069</a></li>
<li>Bump com.fasterxml.jackson:jackson-bom from 2.18.3 to 2.19.0 <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16995">#16995</a></li>
<li>Bump com.google.code.gson:gson from 2.13.0 to 2.13.1 <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16990">#16990</a></li>
<li>Bump com.webauthn4j:webauthn4j-core from 0.29.0.RELEASE to
0.29.1.RELEASE <a
href="https://redirect.github.com/spring-projects/spring-security/pull/17024">#17024</a></li>
<li>Bump com.webauthn4j:webauthn4j-core from 0.29.1.RELEASE to
0.29.2.RELEASE <a
href="https://redirect.github.com/spring-projects/spring-security/pull/17095">#17095</a></li>
<li>Bump io.micrometer:micrometer-observation from 1.14.6 to 1.14.7 <a
href="https://redirect.github.com/spring-projects/spring-security/pull/17096">#17096</a></li>
<li>Bump io.mockk:mockk from 1.14.0 to 1.14.2 <a
href="https://redirect.github.com/spring-projects/spring-security/pull/17019">#17019</a></li>
<li>Bump io.projectreactor:reactor-bom from 2023.0.17 to 2023.0.18 <a
href="https://redirect.github.com/spring-projects/spring-security/issues/17111">#17111</a></li>
<li>Bump io.spring.gradle:spring-security-release-plugin from 1.0.5 to
1.0.6 <a
href="https://redirect.github.com/spring-projects/spring-security/pull/17040">#17040</a></li>
<li>Bump org-apache-maven-resolver from 1.9.22 to 1.9.23 <a
href="https://redirect.github.com/spring-projects/spring-security/pull/17088">#17088</a></li>
<li>Bump org-eclipse-jetty from 11.0.24 to 11.0.25 <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16761">#16761</a></li>
<li>Bump org.hibernate.orm:hibernate-core from 6.6.13.Final to
6.6.14.Final <a
href="https://redirect.github.com/spring-projects/spring-security/pull/17089">#17089</a></li>
<li>Bump org.hibernate.orm:hibernate-core from 6.6.14.Final to
6.6.15.Final <a
href="https://redirect.github.com/spring-projects/spring-security/pull/17105">#17105</a></li>
<li>Bump org.seleniumhq.selenium:selenium-java from 4.31.0 to 4.32.0 <a
href="https://redirect.github.com/spring-projects/spring-security/pull/17037">#17037</a></li>
<li>Bump org.springframework.data:spring-data-bom from 2024.1.4 to
2024.1.5 <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16981">#16981</a></li>
<li>Bump org.springframework.data:spring-data-bom from 2024.1.5 to
2024.1.6 <a
href="https://redirect.github.com/spring-projects/spring-security/pull/17137">#17137</a></li>
<li>Bump org.springframework:spring-framework-bom from 6.2.6 to 6.2.7 <a
href="https://redirect.github.com/spring-projects/spring-security/pull/17124">#17124</a></li>
</ul>
<h2>🔩 Build Updates</h2>
<ul>
<li>Release 6.5.0 <a
href="https://redirect.github.com/spring-projects/spring-security/issues/17138">#17138</a></li>
</ul>
<h2>❤️ Contributors</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-security/commit/0fd0e9335ae3a6ff3538045d098dd6b94679d99e"><code>0fd0e93</code></a>
Release 6.5.0</li>
<li><a
href="https://github.com/spring-projects/spring-security/commit/78dd02a4c18502fa668ca7736581eaed8193891c"><code>78dd02a</code></a>
Merge branch '6.4.x' into 6.5.x</li>
<li><a
href="https://github.com/spring-projects/spring-security/commit/edc8735eb8ba1c378826499db5160cea44db462a"><code>edc8735</code></a>
Merge branch '6.3.x' into 6.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-security/commit/cae3467a8d5fdf4ef0f5c2343d48aa9c48445be2"><code>cae3467</code></a>
Improve AbstractPreAuthenticatedProcessingFilter docs</li>
<li><a
href="https://github.com/spring-projects/spring-security/commit/9a8f9a91bc1e4b97cd47dd3c61ac7451e62c15ca"><code>9a8f9a9</code></a>
Merge branch '6.4.x' into 6.5.x</li>
<li><a
href="https://github.com/spring-projects/spring-security/commit/c972de5369a1261ab674a3f5e3a80e8ce3e8cdfb"><code>c972de5</code></a>
Use .equals to Compare Methods</li>
<li><a
href="https://github.com/spring-projects/spring-security/commit/bf2aaa1b1830e534ba651d422545ac08a115151b"><code>bf2aaa1</code></a>
Use .equals to Compare Methods</li>
<li><a
href="https://github.com/spring-projects/spring-security/commit/6fb0591109e3c6d9fef9ee2d1a4f215c738c22da"><code>6fb0591</code></a>
Merge branch
'gradle/6.5.x/org.springframework.data-spring-data-bom-2024.1.6'...</li>
<li><a
href="https://github.com/spring-projects/spring-security/commit/390972c4a05b3a664c0e1b936d63712559c53a1f"><code>390972c</code></a>
Merge branch '6.4.x' into 6.5.x</li>
<li><a
href="https://github.com/spring-projects/spring-security/commit/36905173951d20085c226b82da552ec4ff9ab9ee"><code>3690517</code></a>
Merge branch
'gradle/6.4.x/org.springframework.data-spring-data-bom-2024.1.6'...</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-security/compare/6.4.5...6.5.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.springframework.security:spring-security-saml2-service-provider&package-manager=gradle&previous-version=6.4.5&new-version=6.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 11:52:50 +01:00
dependabot[bot] 8ecd4e9c36 Bump org.springframework:spring-webmvc from 6.2.6 to 6.2.7 (#3547)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps
[org.springframework:spring-webmvc](https://github.com/spring-projects/spring-framework)
from 6.2.6 to 6.2.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-framework/releases">org.springframework:spring-webmvc's
releases</a>.</em></p>
<blockquote>
<h2>v6.2.7</h2>
<h2> New Features</h2>
<ul>
<li>Forward more methods to underlying InputStream in
NonClosingInputStream <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34893">#34893</a></li>
<li>Introduce Spring property for the default property placeholder
escape character <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34865">#34865</a></li>
<li>Close ApplicationContext once AOT processing has completed <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34841">#34841</a></li>
<li>Fix
<code>AbstractJackson2HttpMessageConverter#getObjectMappersForType</code>
nullness <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34811">#34811</a></li>
<li>Add option for case-insensitive match to PatternMatchUtils <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34801">#34801</a></li>
<li>RestClient <code>@RequestBody</code> parameters lose generic type
information when creating HTTP service beans <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34793">#34793</a></li>
<li>Adds option to set Principal in MockServerWebExchange <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34789">#34789</a></li>
</ul>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Beans created by FactoryBean are not considered as autowiring
candidates if another thread holds a singletonLock <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34902">#34902</a></li>
<li><code>PropertySourcesPlaceholderConfigurer</code> placeholder
resolution fails in several scenarios <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34861">#34861</a></li>
<li>HttpComponentsClientHttpRequestFactory setConnectionRequestTimeout
not working with httpclient 5.3.1 <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34851">#34851</a></li>
<li>Fragment.create() requires mutable map - which is unusable when used
with Kotlin <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34848">#34848</a></li>
<li>Duplicate <code>BeanOverrideHandler</code> discovered in
<code>@Nested</code> test case with superclass from different class or
in interface implemented multiple times <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34844">#34844</a></li>
<li>Accidental ClassLoader defineClass enforcement after <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34677">#34677</a>
<a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34824">#34824</a></li>
<li>HttpEntity.EMPTY headers should not be possible to mutate via
HttpHeaders constructor <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34812">#34812</a></li>
<li>AbstractFileResolvingResource.exists incorrectly reports result for
resources inside of spring-boot executable jar <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34796">#34796</a></li>
<li>Correctly expand query param with same name from URI variables array
<a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34783">#34783</a></li>
<li>R2DBC <code>NamedParameterUtils</code> only expands reused
collection parameter once <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34768">#34768</a></li>
<li><code>PathMatchingResourcePatternResolver</code> wrongly assumes
that <code>target/classes</code> always exists <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34764">#34764</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Clarify <code>CompositePropertySource</code> behavior for
<code>EnumerablePropertySource</code> contract <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34886">#34886</a></li>
<li>Javadoc and <code>@Nullable</code> annotation for
<code>servletContext</code> parameter of
<code>ConfigurableWebEnvironment.initPropertySources</code> are
contradictory <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34845">#34845</a></li>
<li>Spring MVC: <code>@EnableAsync</code> needs to be redeclared for
each ApplicationContext <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34843">#34843</a></li>
<li>Provide a working example instead of unclear placeholders <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34828">#34828</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Upgrade to Micrometer 1.14.7 <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34889">#34889</a></li>
<li>Upgrade to Reactor 2024.0.6 <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34898">#34898</a></li>
</ul>
<h2>❤️ Contributors</h2>
<p>Thank you to all the contributors who worked on this release:</p>
<p><a href="https://github.com/Artur"><code>@​Artur</code></a>-, <a
href="https://github.com/blake-bauman"><code>@​blake-bauman</code></a>,
<a href="https://github.com/iifawzi"><code>@​iifawzi</code></a>, <a
href="https://github.com/kilink"><code>@​kilink</code></a>, <a
href="https://github.com/quaff"><code>@​quaff</code></a>, <a
href="https://github.com/whlit"><code>@​whlit</code></a>, and <a
href="https://github.com/zzoe2346"><code>@​zzoe2346</code></a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/ba590ac9e49b46d347dc56f4498ee436a3b5969b"><code>ba590ac</code></a>
Release v6.2.7</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/ee62701f5634e904e42e218baad142cea2bcd332"><code>ee62701</code></a>
Make use of PatternMatchUtils ignoreCase option</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/fa168ca78ae134e82db8eacc109bb29266b36fb1"><code>fa168ca</code></a>
Revise FactoryBean locking behavior for strict/lenient consistency</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/3c228a5c1d07874d0bf2b9456921ab20fc6d5e22"><code>3c228a5</code></a>
Add missing <a href="https://github.com/since"><code>@​since</code></a>
tags in PatternMatchUtils</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/9bf6b8cddffac2c0034e0e2f7a799a81ddb1f09f"><code>9bf6b8c</code></a>
Upgrade to Reactor 2024.0.6</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/37ecdd14372555c018c644e980666e47c06dcbe8"><code>37ecdd1</code></a>
Forward more methods to underlying InputStream in
NonClosingInputStream</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/73f1c5a189b0f6e65b5b8507d6862b480ec7193c"><code>73f1c5a</code></a>
Polishing</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/4d296fb4ca1b3f87fe4b9cd97132f2688533de2d"><code>4d296fb</code></a>
Upgrade to Micrometer 1.14.7</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/6a9444473f1aad080bf659563e56cc2bbd8f9512"><code>6a94444</code></a>
Clarify CompositePropertySource behavior for EnumerablePropertySource
contract</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/03ae97b2ebe2ff97ed3f78253758fb3cf6cacbbd"><code>03ae97b</code></a>
Introduce Spring property for default escape character for
placeholders</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-framework/compare/v6.2.6...v6.2.7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.springframework:spring-webmvc&package-manager=gradle&previous-version=6.2.6&new-version=6.2.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 11:52:38 +01:00
dependabot[bot] 9aa692674f Bump org.sonarqube from 6.1.0.5360 to 6.2.0.5505 (#3546)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps org.sonarqube from 6.1.0.5360 to 6.2.0.5505.


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.sonarqube&package-manager=gradle&previous-version=6.1.0.5360&new-version=6.2.0.5505)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 11:52:15 +01:00
dependabot[bot] 89992fe643 Bump org.springframework:spring-jdbc from 6.2.6 to 6.2.7 (#3545)
Bumps
[org.springframework:spring-jdbc](https://github.com/spring-projects/spring-framework)
from 6.2.6 to 6.2.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-framework/releases">org.springframework:spring-jdbc's
releases</a>.</em></p>
<blockquote>
<h2>v6.2.7</h2>
<h2> New Features</h2>
<ul>
<li>Forward more methods to underlying InputStream in
NonClosingInputStream <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34893">#34893</a></li>
<li>Introduce Spring property for the default property placeholder
escape character <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34865">#34865</a></li>
<li>Close ApplicationContext once AOT processing has completed <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34841">#34841</a></li>
<li>Fix
<code>AbstractJackson2HttpMessageConverter#getObjectMappersForType</code>
nullness <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34811">#34811</a></li>
<li>Add option for case-insensitive match to PatternMatchUtils <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34801">#34801</a></li>
<li>RestClient <code>@RequestBody</code> parameters lose generic type
information when creating HTTP service beans <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34793">#34793</a></li>
<li>Adds option to set Principal in MockServerWebExchange <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34789">#34789</a></li>
</ul>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Beans created by FactoryBean are not considered as autowiring
candidates if another thread holds a singletonLock <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34902">#34902</a></li>
<li><code>PropertySourcesPlaceholderConfigurer</code> placeholder
resolution fails in several scenarios <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34861">#34861</a></li>
<li>HttpComponentsClientHttpRequestFactory setConnectionRequestTimeout
not working with httpclient 5.3.1 <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34851">#34851</a></li>
<li>Fragment.create() requires mutable map - which is unusable when used
with Kotlin <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34848">#34848</a></li>
<li>Duplicate <code>BeanOverrideHandler</code> discovered in
<code>@Nested</code> test case with superclass from different class or
in interface implemented multiple times <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34844">#34844</a></li>
<li>Accidental ClassLoader defineClass enforcement after <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34677">#34677</a>
<a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34824">#34824</a></li>
<li>HttpEntity.EMPTY headers should not be possible to mutate via
HttpHeaders constructor <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34812">#34812</a></li>
<li>AbstractFileResolvingResource.exists incorrectly reports result for
resources inside of spring-boot executable jar <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34796">#34796</a></li>
<li>Correctly expand query param with same name from URI variables array
<a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34783">#34783</a></li>
<li>R2DBC <code>NamedParameterUtils</code> only expands reused
collection parameter once <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34768">#34768</a></li>
<li><code>PathMatchingResourcePatternResolver</code> wrongly assumes
that <code>target/classes</code> always exists <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34764">#34764</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Clarify <code>CompositePropertySource</code> behavior for
<code>EnumerablePropertySource</code> contract <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34886">#34886</a></li>
<li>Javadoc and <code>@Nullable</code> annotation for
<code>servletContext</code> parameter of
<code>ConfigurableWebEnvironment.initPropertySources</code> are
contradictory <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34845">#34845</a></li>
<li>Spring MVC: <code>@EnableAsync</code> needs to be redeclared for
each ApplicationContext <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34843">#34843</a></li>
<li>Provide a working example instead of unclear placeholders <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34828">#34828</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Upgrade to Micrometer 1.14.7 <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34889">#34889</a></li>
<li>Upgrade to Reactor 2024.0.6 <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34898">#34898</a></li>
</ul>
<h2>❤️ Contributors</h2>
<p>Thank you to all the contributors who worked on this release:</p>
<p><a href="https://github.com/Artur"><code>@​Artur</code></a>-, <a
href="https://github.com/blake-bauman"><code>@​blake-bauman</code></a>,
<a href="https://github.com/iifawzi"><code>@​iifawzi</code></a>, <a
href="https://github.com/kilink"><code>@​kilink</code></a>, <a
href="https://github.com/quaff"><code>@​quaff</code></a>, <a
href="https://github.com/whlit"><code>@​whlit</code></a>, and <a
href="https://github.com/zzoe2346"><code>@​zzoe2346</code></a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/ba590ac9e49b46d347dc56f4498ee436a3b5969b"><code>ba590ac</code></a>
Release v6.2.7</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/ee62701f5634e904e42e218baad142cea2bcd332"><code>ee62701</code></a>
Make use of PatternMatchUtils ignoreCase option</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/fa168ca78ae134e82db8eacc109bb29266b36fb1"><code>fa168ca</code></a>
Revise FactoryBean locking behavior for strict/lenient consistency</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/3c228a5c1d07874d0bf2b9456921ab20fc6d5e22"><code>3c228a5</code></a>
Add missing <a href="https://github.com/since"><code>@​since</code></a>
tags in PatternMatchUtils</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/9bf6b8cddffac2c0034e0e2f7a799a81ddb1f09f"><code>9bf6b8c</code></a>
Upgrade to Reactor 2024.0.6</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/37ecdd14372555c018c644e980666e47c06dcbe8"><code>37ecdd1</code></a>
Forward more methods to underlying InputStream in
NonClosingInputStream</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/73f1c5a189b0f6e65b5b8507d6862b480ec7193c"><code>73f1c5a</code></a>
Polishing</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/4d296fb4ca1b3f87fe4b9cd97132f2688533de2d"><code>4d296fb</code></a>
Upgrade to Micrometer 1.14.7</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/6a9444473f1aad080bf659563e56cc2bbd8f9512"><code>6a94444</code></a>
Clarify CompositePropertySource behavior for EnumerablePropertySource
contract</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/03ae97b2ebe2ff97ed3f78253758fb3cf6cacbbd"><code>03ae97b</code></a>
Introduce Spring property for default escape character for
placeholders</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-framework/compare/v6.2.6...v6.2.7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.springframework:spring-jdbc&package-manager=gradle&previous-version=6.2.6&new-version=6.2.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 11:52:04 +01:00
dependabot[bot] 1f56ccfc99 Bump gradle/actions from 4.3.1 to 4.4.0 (#3544)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps [gradle/actions](https://github.com/gradle/actions) from 4.3.1 to
4.4.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/gradle/actions/releases">gradle/actions's
releases</a>.</em></p>
<blockquote>
<h2>v4.4.0</h2>
<p>This release updates 2 downstream components:</p>
<ul>
<li>Develocity injection has been updated to <a
href="https://github.com/gradle/develocity-ci-injection/releases/tag/v2.0">v2.0</a>
<ul>
<li>Some environment variables related to Develocity injection have been
renamed. All vars now being with <code>DEVELOCITY_INJECTION_</code>.
Check <a
href="https://github.com/gradle/actions/blob/main/docs/setup-gradle.md#configuring-develocity-injection">the
docs</a> for more details.</li>
</ul>
</li>
<li>Dependency-graph plugin has been updated to <a
href="https://github.com/gradle/github-dependency-graph-gradle-plugin/releases/tag/v1.4.0">v1.4.0</a>
<ul>
<li>The 'detector' values included in the generated graph can now be
configured via environment variables.</li>
</ul>
</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>Update develocity-injection init script to v1.3 by <a
href="https://github.com/bot-githubaction"><code>@​bot-githubaction</code></a>
in <a
href="https://redirect.github.com/gradle/actions/pull/592">gradle/actions#592</a></li>
<li>Update develocity-injection init script to v2.0 by <a
href="https://github.com/bot-githubaction"><code>@​bot-githubaction</code></a>
in <a
href="https://redirect.github.com/gradle/actions/pull/593">gradle/actions#593</a></li>
<li>[StepSecurity] ci: Harden GitHub Actions by <a
href="https://github.com/step-security-bot"><code>@​step-security-bot</code></a>
in <a
href="https://redirect.github.com/gradle/actions/pull/597">gradle/actions#597</a></li>
<li>Use v1.4.0 of dependency graph plugin by <a
href="https://github.com/bigdaz"><code>@​bigdaz</code></a> in <a
href="https://redirect.github.com/gradle/actions/pull/638">gradle/actions#638</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/step-security-bot"><code>@​step-security-bot</code></a>
made their first contribution in <a
href="https://redirect.github.com/gradle/actions/pull/597">gradle/actions#597</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/gradle/actions/compare/v4.3.1...v4.4.0">https://github.com/gradle/actions/compare/v4.3.1...v4.4.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/gradle/actions/commit/8379f6a1328ee0e06e2bb424dadb7b159856a326"><code>8379f6a</code></a>
Use v1.4.0 of dependency graph plugin (<a
href="https://redirect.github.com/gradle/actions/issues/638">#638</a>)</li>
<li><a
href="https://github.com/gradle/actions/commit/9f79b5fa2c0d6f1157051630d2fb45b9f10ca6a5"><code>9f79b5f</code></a>
[bot] Update dist directory</li>
<li><a
href="https://github.com/gradle/actions/commit/e093fac84ca6df405f28ca0317458de1a4c7ad65"><code>e093fac</code></a>
Bump the npm-dependencies group in /sources with 5 updates (<a
href="https://redirect.github.com/gradle/actions/issues/636">#636</a>)</li>
<li><a
href="https://github.com/gradle/actions/commit/768a17f3488dc3fe0155ff431553e1f53d57e22e"><code>768a17f</code></a>
Bump the npm-dependencies group in /sources with 2 updates (<a
href="https://redirect.github.com/gradle/actions/issues/635">#635</a>)</li>
<li><a
href="https://github.com/gradle/actions/commit/36541137722dacf3739105e1b760c6856d5369e4"><code>3654113</code></a>
[bot] Update dist directory</li>
<li><a
href="https://github.com/gradle/actions/commit/2ad385cb2aee647fa33b18e52b479ae14fed4c6c"><code>2ad385c</code></a>
Replace use of typed-rest-client with <code>@​actions/http-client</code>
(<a
href="https://redirect.github.com/gradle/actions/issues/634">#634</a>)</li>
<li><a
href="https://github.com/gradle/actions/commit/95dcf96b0d6e55b48ba036a7d7480ce25a00e6ef"><code>95dcf96</code></a>
[bot] Update dist directory</li>
<li><a
href="https://github.com/gradle/actions/commit/2e3238a6642725202f6a5656922bbe434f25b03e"><code>2e3238a</code></a>
Bump actions/download-artifact from 4.2.1 to 4.3.0 in
/.github/actions/init-i...</li>
<li><a
href="https://github.com/gradle/actions/commit/39dddb8ae7ff59c7416189aac27a8980abd89bd0"><code>39dddb8</code></a>
Remove direct use of octokit/request-error (<a
href="https://redirect.github.com/gradle/actions/issues/632">#632</a>)</li>
<li><a
href="https://github.com/gradle/actions/commit/755ed7db09daddecb584fd9d200146c632f1af98"><code>755ed7d</code></a>
[bot] Update dist directory</li>
<li>Additional commits viewable in <a
href="https://github.com/gradle/actions/compare/06832c7b30a0129d7fb559bcc6e43d26f6374244...8379f6a1328ee0e06e2bb424dadb7b159856a326">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=gradle/actions&package-manager=github_actions&previous-version=4.3.1&new-version=4.4.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 11:51:52 +01:00
dependabot[bot] f290f62e23 Bump actions/dependency-review-action from 4.7.0 to 4.7.1 (#3543)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps
[actions/dependency-review-action](https://github.com/actions/dependency-review-action)
from 4.7.0 to 4.7.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/dependency-review-action/releases">actions/dependency-review-action's
releases</a>.</em></p>
<blockquote>
<h2>v4.7.1</h2>
<ul>
<li>Packages added to <code>allow-dependencies-licenses</code> will be
allowed even if the package in question has no license information <a
href="https://redirect.github.com/actions/dependency-review-action/issues/889">#889</a></li>
<li>License expressions (e.g. <code>Ruby OR GPL-2.0</code>) in the allow
list are automatically discarded so that they don't invalidate the whole
allow list, which should just be license identifier (e.g.
<code>Ruby</code>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/dependency-review-action/commit/da24556b548a50705dd671f47852072ea4c105d9"><code>da24556</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/dependency-review-action/issues/933">#933</a>
from actions/dangoor/471-release</li>
<li><a
href="https://github.com/actions/dependency-review-action/commit/9af0caf0e50bd16cea055a1319f959e718f9cd5d"><code>9af0caf</code></a>
Bump version number for 4.7.1</li>
<li><a
href="https://github.com/actions/dependency-review-action/commit/d8f2df20d5605f0dd46db3bd283002c24e357724"><code>d8f2df2</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/dependency-review-action/issues/932">#932</a>
from actions/907-disallow-expression</li>
<li><a
href="https://github.com/actions/dependency-review-action/commit/6e9307a3d4e5049e0dd8b5f9d51dfa0544391d3a"><code>6e9307a</code></a>
Discard allow list entries that are not SPDX IDs</li>
<li><a
href="https://github.com/actions/dependency-review-action/commit/8805179dc9a63c54224914839d370dd93bd37b2e"><code>8805179</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/dependency-review-action/issues/930">#930</a>
from actions/889-allow-no-license</li>
<li><a
href="https://github.com/actions/dependency-review-action/commit/014300b08cd78d8944f631eb3415e4c079cdb3e8"><code>014300b</code></a>
Update build</li>
<li><a
href="https://github.com/actions/dependency-review-action/commit/34486f306eacc0b5ba73c8d12b5af19a58d22364"><code>34486f3</code></a>
Check namespaces when excluding license checks</li>
<li><a
href="https://github.com/actions/dependency-review-action/commit/9b155d6432a2e91d56f1d2ad084483e8cd766a23"><code>9b155d6</code></a>
Update build</li>
<li><a
href="https://github.com/actions/dependency-review-action/commit/f199659a6a39762ca0753d8a2fb41192144f257a"><code>f199659</code></a>
Allowing dependencies works with no licenses</li>
<li>See full diff in <a
href="https://github.com/actions/dependency-review-action/compare/38ecb5b593bf0eb19e335c03f97670f792489a8b...da24556b548a50705dd671f47852072ea4c105d9">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/dependency-review-action&package-manager=github_actions&previous-version=4.7.0&new-version=4.7.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 11:51:32 +01:00
dependabot[bot] 74fcf01d03 Bump github/codeql-action from 3.28.17 to 3.28.18 (#3542)
Bumps [github/codeql-action](https://github.com/github/codeql-action)
from 3.28.17 to 3.28.18.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.28.18</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.28.18 - 16 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.3. <a
href="https://redirect.github.com/github/codeql-action/pull/2893">#2893</a></li>
<li>Skip validating SARIF produced by CodeQL for improved performance.
<a
href="https://redirect.github.com/github/codeql-action/pull/2894">#2894</a></li>
<li>The number of threads and amount of RAM used by CodeQL can now be
set via the <code>CODEQL_THREADS</code> and <code>CODEQL_RAM</code>
runner environment variables. If set, these environment variables
override the <code>threads</code> and <code>ram</code> inputs
respectively. <a
href="https://redirect.github.com/github/codeql-action/pull/2891">#2891</a></li>
</ul>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.28.18/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>3.28.18 - 16 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.3. <a
href="https://redirect.github.com/github/codeql-action/pull/2893">#2893</a></li>
<li>Skip validating SARIF produced by CodeQL for improved performance.
<a
href="https://redirect.github.com/github/codeql-action/pull/2894">#2894</a></li>
<li>The number of threads and amount of RAM used by CodeQL can now be
set via the <code>CODEQL_THREADS</code> and <code>CODEQL_RAM</code>
runner environment variables. If set, these environment variables
override the <code>threads</code> and <code>ram</code> inputs
respectively. <a
href="https://redirect.github.com/github/codeql-action/pull/2891">#2891</a></li>
</ul>
<h2>3.28.17 - 02 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.2. <a
href="https://redirect.github.com/github/codeql-action/pull/2872">#2872</a></li>
</ul>
<h2>3.28.16 - 23 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2863">#2863</a></li>
</ul>
<h2>3.28.15 - 07 Apr 2025</h2>
<ul>
<li>Fix bug where the action would fail if it tried to produce a debug
artifact with more than 65535 files. <a
href="https://redirect.github.com/github/codeql-action/pull/2842">#2842</a></li>
</ul>
<h2>3.28.14 - 07 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2838">#2838</a></li>
</ul>
<h2>3.28.13 - 24 Mar 2025</h2>
<p>No user facing changes.</p>
<h2>3.28.12 - 19 Mar 2025</h2>
<ul>
<li>Dependency caching should now cache more dependencies for Java
<code>build-mode: none</code> extractions. This should speed up
workflows and avoid inconsistent alerts in some cases.</li>
<li>Update default CodeQL bundle version to 2.20.7. <a
href="https://redirect.github.com/github/codeql-action/pull/2810">#2810</a></li>
</ul>
<h2>3.28.11 - 07 Mar 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.20.6. <a
href="https://redirect.github.com/github/codeql-action/pull/2793">#2793</a></li>
</ul>
<h2>3.28.10 - 21 Feb 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.20.5. <a
href="https://redirect.github.com/github/codeql-action/pull/2772">#2772</a></li>
<li>Address an issue where the CodeQL Bundle would occasionally fail to
decompress on macOS. <a
href="https://redirect.github.com/github/codeql-action/pull/2768">#2768</a></li>
</ul>
<h2>3.28.9 - 07 Feb 2025</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/ff0a06e83cb2de871e5a09832bc6a81e7276941f"><code>ff0a06e</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2896">#2896</a>
from github/update-v3.28.18-b86edfc27</li>
<li><a
href="https://github.com/github/codeql-action/commit/a41e0844be4d25fcef7ce7fa536f3e30275a9a1c"><code>a41e084</code></a>
Update changelog for v3.28.18</li>
<li><a
href="https://github.com/github/codeql-action/commit/b86edfc27a1e0d3b55127a7496a1c770a02b2f84"><code>b86edfc</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2893">#2893</a>
from github/update-bundle/codeql-bundle-v2.21.3</li>
<li><a
href="https://github.com/github/codeql-action/commit/e93b90025f7c49dccc3ee640c4155b63eb9a6b39"><code>e93b900</code></a>
Merge branch 'main' into update-bundle/codeql-bundle-v2.21.3</li>
<li><a
href="https://github.com/github/codeql-action/commit/510dfa3460b15b34a807ab5609b4691aed5ebbee"><code>510dfa3</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2894">#2894</a>
from github/henrymercer/skip-validating-codeql-sarif</li>
<li><a
href="https://github.com/github/codeql-action/commit/492d7832457da825a964331d860789f3f19d105b"><code>492d783</code></a>
Merge branch 'main' into henrymercer/skip-validating-codeql-sarif</li>
<li><a
href="https://github.com/github/codeql-action/commit/83bdf3b7f92061d2f6d74e2a4555ecf719adad68"><code>83bdf3b</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2859">#2859</a>
from github/update-supported-enterprise-server-versions</li>
<li><a
href="https://github.com/github/codeql-action/commit/cffc916774454a5ead1c8fb7925abad20cda85e4"><code>cffc916</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2891">#2891</a>
from austinpray-mixpanel/patch-1</li>
<li><a
href="https://github.com/github/codeql-action/commit/4420887272f1c68c7c58ca2970bdfb5eb657cf08"><code>4420887</code></a>
Add deprecation warning for CodeQL 2.16.5 and earlier</li>
<li><a
href="https://github.com/github/codeql-action/commit/4e178c584157c51ff3d6fb87c764e7ed0715f82a"><code>4e178c5</code></a>
Update supported versions table in README</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/60168efe1c415ce0f5521ea06d5c2062adbeed1b...ff0a06e83cb2de871e5a09832bc6a81e7276941f">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=3.28.17&new-version=3.28.18)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 11:51:13 +01:00
dependabot[bot] 1346abf0e5 Bump docker/build-push-action from 6.16.0 to 6.17.0 (#3541)
Bumps
[docker/build-push-action](https://github.com/docker/build-push-action)
from 6.16.0 to 6.17.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/docker/build-push-action/releases">docker/build-push-action's
releases</a>.</em></p>
<blockquote>
<h2>v6.17.0</h2>
<ul>
<li>Bump <code>@​docker/actions-toolkit</code> from 0.59.0 to 0.61.0 by
<a href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in
<a
href="https://redirect.github.com/docker/build-push-action/pull/1364">docker/build-push-action#1364</a></li>
</ul>
<blockquote>
<p>[!NOTE]
Build record is now exported using the <a
href="https://docs.docker.com/reference/cli/docker/buildx/history/export/"><code>buildx
history export</code></a> command instead of the legacy export-build
tool.</p>
</blockquote>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/build-push-action/compare/v6.16.0...v6.17.0">https://github.com/docker/build-push-action/compare/v6.16.0...v6.17.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/docker/build-push-action/commit/1dc73863535b631f98b2378be8619f83b136f4a0"><code>1dc7386</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1364">#1364</a>
from crazy-max/history-export-cmd</li>
<li><a
href="https://github.com/docker/build-push-action/commit/9c9803f36437c54a2bf7b2c9a4a9011c2a812d71"><code>9c9803f</code></a>
chore: update generated content</li>
<li><a
href="https://github.com/docker/build-push-action/commit/db1f6c46e8d64f89ec10010e409681bcf7951c05"><code>db1f6c4</code></a>
DOCKER_BUILD_EXPORT_LEGACY env var to opt-in for legacy export</li>
<li><a
href="https://github.com/docker/build-push-action/commit/721e8c79de660781840d3a69a11e39e1e836ef8e"><code>721e8c7</code></a>
Bump <code>@​docker/actions-toolkit</code> from 0.59.0 to 0.61.0</li>
<li>See full diff in <a
href="https://github.com/docker/build-push-action/compare/14487ce63c7a62a4a324b0bfb37086795e31c6c1...1dc73863535b631f98b2378be8619f83b136f4a0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=docker/build-push-action&package-manager=github_actions&previous-version=6.16.0&new-version=6.17.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-20 11:50:59 +01:00
LudyandCopilot 523240554f Fix empty-parameter issue in updateUserSettings by using @RequestBody map (#3536)
# Description of Changes

Please provide a summary of the changes, including:


- **What was changed:**  
- Refactored the `updateUserSettings` method in `UserController` to
accept a `@RequestBody Map<String, String>` named `updates` instead of
pulling parameters from `HttpServletRequest`.
- Removed the now-unused `HashMap` import and the manual
parameter-extraction loop.

- **Why the change was made:**  
- **Bug Fix:** The previous implementation relied on
`request.getParameterMap()`, which was consistently empty, so no
settings were ever applied.
- Simplifies controller logic by leveraging Spring’s request-body
binding.
- Improves readability and maintainability, removing boilerplate and
error-prone code.

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-20 07:58:27 +01:00
stirlingbot[bot] e6a9e7a584 🌐 Sync Translations + Update README Progress Table (#3531)
### Description of Changes

This Pull Request was automatically generated to synchronize updates to
translation files and documentation. Below are the details of the
changes made:

#### **1. Synchronization of Translation Files**
- Updated translation files (`messages_*.properties`) to reflect changes
in the reference file `messages_en_GB.properties`.
- Ensured consistency and synchronization across all supported language
files.
- Highlighted any missing or incomplete translations.

#### **2. Update README.md**
- Generated the translation progress table in `README.md`.
- Added a summary of the current translation status for all supported
languages.
- Included up-to-date statistics on translation coverage.

#### **Why these changes are necessary**
- Keeps translation files aligned with the latest reference updates.
- Ensures the documentation reflects the current translation progress.

---

Auto-generated by [create-pull-request][1].

[1]: https://github.com/peter-evans/create-pull-request

Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-05-19 16:46:54 +01:00
stirlingbot[bot] 5bf2fed235 Update 3rd Party Licenses (#3523)
Auto-generated by StirlingBot

Signed-off-by: stirlingbot[bot] <1113334+stirlingbot[bot]@users.noreply.github.com>
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-05-19 14:42:18 +01:00
21832729d2 JUnits JUnits JUnits, so many JUnits (#3537)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: pixeebot[bot] <104101892+pixeebot[bot]@users.noreply.github.com>
2025-05-19 14:12:06 +01:00
Anthony Stirling f94b8c3b22 Floating keys for pro users (#3535)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-19 10:00:58 +01:00
NeilJared b26ecbc3b7 Update messages_es_ES.properties (#3527)
Updated es_ES translation and made minor improvements.
2025-05-16 12:23:55 +01:00
Dr.XYZ 3b2b14609d Update zh_TW Traditional Chinese locale (#3524)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [x] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-16 12:23:37 +01:00
Ludy 52f09f1840 Improve Type Safety and OpenAPI Schema for PDF API Controllers and Models (#3470)
# Description of Changes

- **What was changed**  
- Updated controller methods to use strongly‐typed primitives (`int`,
`long`, `boolean`) instead of `String` for numeric and boolean
parameters, eliminating calls to `Integer.parseInt`/`Long.parseLong` and
improving null‐safety (`Boolean.TRUE.equals(...)`).
- Enhanced all API request model classes with richer Swagger/OpenAPI
annotations: added `requiredMode`, `defaultValue`, `allowableValues`,
`format`, `pattern`, and tightened schema descriptions for all fields.
- Refactored HTML form templates for “Remove Blank Pages” to include
`min`, `max`, and `step` attributes on numeric inputs, matching the
updated validation rules.

- **Why the change was made**  
- **Type safety & robustness**: Shifting from `String` to native types
prevents runtime parsing errors, simplifies controller logic, and makes
default values explicit.
- **Better API documentation & validation**: Enriching the Swagger
annotations ensures generated docs accurately reflect required fields,
default values, and permitted ranges, which improves client code
generation and developer experience.
- **Consistency across codebase**: Aligning all request models and
controllers enforces a uniform coding style and reduces bugs.

#3406

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-16 12:23:01 +01:00
Ludy c660ad80ce Update legal URLs and improve OpenAPI metadata configuration (#3522)
# Description of Changes

Please provide a summary of the changes, including:

- Updated default Terms & Conditions URL from `/terms-and-conditions` to
`/terms` in:
  - `InitialSetup.java`
  - `settings.yml.template`
  - `allEndpointsRemovedSettings.yml`
- Improved OpenAPI metadata in `OpenApiConfig.java`:
  - Added contact information (`name`, `url`, `email`)
  - Added license section with MIT license
  - Included terms of service link
- Changed string comparison in `MetricsConfig.java` to use
`"constant".equals(...)` format
- Cleaned up and unified YAML formatting and comments
- Merged and restructured `enterpriseEdition` settings under
`premium.proFeatures`

### Why the change was made

- Ensure legal links are consistent and up-to-date
- Improve clarity and completeness of the OpenAPI specification for
external consumers
- Follow best practices for code readability and configuration structure
- Prevent misconfiguration from outdated or redundant YAML sections

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-13 23:06:14 +01:00
dependabot[bot] 70717813f6 Bump io.micrometer:micrometer-core from 1.14.6 to 1.14.7 (#3521)
Bumps
[io.micrometer:micrometer-core](https://github.com/micrometer-metrics/micrometer)
from 1.14.6 to 1.14.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/micrometer-metrics/micrometer/releases">io.micrometer:micrometer-core's
releases</a>.</em></p>
<blockquote>
<h2>1.14.7</h2>
<h2> New Features</h2>
<ul>
<li>Replace Meter.Id.getTags() with cheaper alternatives <a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/6147">#6147</a></li>
</ul>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>MultiGauge doesn't work with MeterFilter.map() <a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/6146">#6146</a></li>
<li>Record cache.size in CaffeineCacheMetrics without enabling
recordStats() <a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/6128">#6128</a></li>
<li>TimedHandler shutdown hanging indefinitely <a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/6194">#6194</a></li>
<li>Use snapshot consistently in AppOpticsMeterRegistry.writeSummary()
<a
href="https://redirect.github.com/micrometer-metrics/micrometer/pull/6181">#6181</a></li>
</ul>
<h2>❤️ Contributors</h2>
<p>Thank you to all the contributors who worked on this release:</p>
<p><a href="https://github.com/AlexElin"><code>@​AlexElin</code></a>, <a
href="https://github.com/RafeArnold"><code>@​RafeArnold</code></a>, and
<a href="https://github.com/izeye"><code>@​izeye</code></a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/micrometer-metrics/micrometer/commit/b6e5031303afbdf43073dc19377d84d8e858c048"><code>b6e5031</code></a>
Bump com.tngtech.archunit:archunit-junit5 from 1.3.1 to 1.3.2 (<a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/6226">#6226</a>)</li>
<li><a
href="https://github.com/micrometer-metrics/micrometer/commit/6567cdccd3440b9fb1624463f4470e255d449314"><code>6567cdc</code></a>
Merge branch '1.13.x' into 1.14.x</li>
<li><a
href="https://github.com/micrometer-metrics/micrometer/commit/80d4c9d986dfddee331a22f16a533ee3e4725116"><code>80d4c9d</code></a>
Call Shutdown#check after finishing timing (<a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/6194">#6194</a>)</li>
<li><a
href="https://github.com/micrometer-metrics/micrometer/commit/7f82709bb221470065f23c312e7441952ff78cb4"><code>7f82709</code></a>
Bump maven-resolver from 1.9.22 to 1.9.23 (<a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/6219">#6219</a>)</li>
<li><a
href="https://github.com/micrometer-metrics/micrometer/commit/a1a4f3d83dfaef791949c5cd042e28535e60165b"><code>a1a4f3d</code></a>
Bump maven-resolver from 1.9.22 to 1.9.23 (<a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/6218">#6218</a>)</li>
<li><a
href="https://github.com/micrometer-metrics/micrometer/commit/a6adb3a05862e5c8896a997a755daa159e06eba5"><code>a6adb3a</code></a>
Merge branch '1.13.x' into 1.14.x</li>
<li><a
href="https://github.com/micrometer-metrics/micrometer/commit/fb2d4da16e9388852064b10b6004441848c69dce"><code>fb2d4da</code></a>
Get Google Cloud project ID from env var for integration tests</li>
<li><a
href="https://github.com/micrometer-metrics/micrometer/commit/4f0cf532a923f31c89f80e4a85e1bf3eb61a58e9"><code>4f0cf53</code></a>
Bump com.fasterxml.jackson.core:jackson-databind from 2.18.3 to 2.18.4
(<a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/6214">#6214</a>)</li>
<li><a
href="https://github.com/micrometer-metrics/micrometer/commit/33d1f7ebfd4e33bd027ced975adcd044d83fad12"><code>33d1f7e</code></a>
Merge branch '1.13.x' into 1.14.x</li>
<li><a
href="https://github.com/micrometer-metrics/micrometer/commit/79939c3958fe95b03da844c55e9ce4f03d5e2d3d"><code>79939c3</code></a>
Fix JavaDurationGetSecondsToToSeconds warnings for tests (<a
href="https://redirect.github.com/micrometer-metrics/micrometer/issues/6207">#6207</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/micrometer-metrics/micrometer/compare/v1.14.6...v1.14.7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=io.micrometer:micrometer-core&package-manager=gradle&previous-version=1.14.6&new-version=1.14.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-13 23:05:26 +01:00
dependabot[bot] 662c2a4dfe Bump org.apache.xmlgraphics:batik-all from 1.18 to 1.19 (#3520)
Bumps org.apache.xmlgraphics:batik-all from 1.18 to 1.19.


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.apache.xmlgraphics:batik-all&package-manager=gradle&previous-version=1.18&new-version=1.19)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-13 23:05:06 +01:00
dependabot[bot] 9fc174d12d Bump actions/dependency-review-action from 4.6.0 to 4.7.0 (#3519)
Bumps
[actions/dependency-review-action](https://github.com/actions/dependency-review-action)
from 4.6.0 to 4.7.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/dependency-review-action/releases">actions/dependency-review-action's
releases</a>.</em></p>
<blockquote>
<h2>v4.7.0</h2>
<ul>
<li>Handle complex license expressions (e.g. <code>MIT AND
GPL-2.0</code>) in allow lists (fixes <a
href="https://redirect.github.com/actions/dependency-review-action/issues/809">#809</a>
and probably others)</li>
<li>Replace <code>OTHER</code> in package licenses with
<code>LicenseRef-clearlydefined-OTHER</code> so that parsing passes</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/dependency-review-action/commit/38ecb5b593bf0eb19e335c03f97670f792489a8b"><code>38ecb5b</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/dependency-review-action/issues/929">#929</a>
from actions/dangoor/4.7-release</li>
<li><a
href="https://github.com/actions/dependency-review-action/commit/0e9e935cc870609b60e95f0ca9c5439df6c5a001"><code>0e9e935</code></a>
Version 4.7.0 release</li>
<li><a
href="https://github.com/actions/dependency-review-action/commit/69d2faa36575aaf6f3b6e83344dccafd1434b31e"><code>69d2faa</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/dependency-review-action/issues/926">#926</a>
from dangoor/dangoor/replace-other</li>
<li><a
href="https://github.com/actions/dependency-review-action/commit/7e14978e0e6d56c5c368d665cfe64859530ae43e"><code>7e14978</code></a>
Merge branch 'actions:main' into dangoor/replace-other</li>
<li><a
href="https://github.com/actions/dependency-review-action/commit/8477905b0e5eb937fce8d6d92309aee88f4a4295"><code>8477905</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/dependency-review-action/issues/927">#927</a>
from dangoor/dangoor/multilicense</li>
<li><a
href="https://github.com/actions/dependency-review-action/commit/f3ff3564fad5f71b84386e8dd99dcdd5f25b6e9e"><code>f3ff356</code></a>
Update dist</li>
<li><a
href="https://github.com/actions/dependency-review-action/commit/c7565d44ece013dd49742989a6bd8f2042aed16a"><code>c7565d4</code></a>
Fix tests and respond to review feedback</li>
<li><a
href="https://github.com/actions/dependency-review-action/commit/82299c3bbe54c01331889c2b0f62af249dfb0ee8"><code>82299c3</code></a>
Replace OTHER with a LicenseRef</li>
<li><a
href="https://github.com/actions/dependency-review-action/commit/2013ccccfe108a74501d552608b81853e407307a"><code>2013ccc</code></a>
Update type definition for spdx-satisfies</li>
<li><a
href="https://github.com/actions/dependency-review-action/commit/3a2b68706a35b3507491b524adfe1c822821e706"><code>3a2b687</code></a>
Handle complex licenses (e.g. X AND Y)</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/dependency-review-action/compare/ce3cf9537a52e8119d91fd484ab5b8a807627bf8...38ecb5b593bf0eb19e335c03f97670f792489a8b">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/dependency-review-action&package-manager=github_actions&previous-version=4.6.0&new-version=4.7.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-13 23:04:45 +01:00
Ludy 091484fc1d Standardize Quoted Path Syntax in Thymeleaf th:href for Consistent Link Resolution (#3515)
# Description of Changes

Please provide a summary of the changes, including:

- **What was changed**  
1. In `DeveloperGuide.md`, updated the example `<a>` tag to use
`th:href="@{'/new-feature'}"` instead of `th:href="@{/new-feature}"`.
2. In `adminSettings.html`, replaced the static `href="/usage"` with a
Thymeleaf attribute `th:href="@{'/usage'}"` to ensure proper URL
resolution.

- **Why the change was made**  
Consistently quoting paths in `th:href` improves readability and avoids
potential parsing inconsistencies in Thymeleaf templates when resolving
URLs at runtime.

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-12 10:37:07 +01:00
Shad CT a595a950ab updated the languages list (#3510)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-12 10:36:33 +01:00
stirlingbot[bot] cd775661ab 🤖 format everything with pre-commit by <stirlingbot> (#3514)
Auto-generated by [create-pull-request][1] with **stirlingbot**

[1]: https://github.com/peter-evans/create-pull-request

Signed-off-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-05-12 09:01:28 +01:00
Ludy b8574dc856 Use Thymeleaf th:src for redact.js to ensure correct resource path resolution (#3511)
# Description of Changes

Please provide a summary of the changes, including:

```bash
generic_scripting.js:48 
 GET https://stirling.lan/pdfjs-legacy/js/pdfjs-legacy/pdf.sandbox.mjs net::ERR_ABORTED 404 (Not Found)

pdf_scripting_manager.js:195 setDocument: "Failed to fetch dynamically imported module: https://stirling.lan/pdfjs-legacy/js/pdfjs-legacy/pdf.sandbox.mjs".

```

Closes #(issue_number)

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-11 19:14:27 +01:00
Noah Baculi e78fd00a70 Fix README enterprise link (#3509)
# Description of Changes

Please provide a summary of the changes, including:

- Fixed broken link on the readme to the Pro/Enterprise docs.
- This was changed because the link was broken => degraded user
experience.
- Replaced the broken link with the closest valid page that I could
find.

I could not find an issue for this broken link but one can be created if
needed.

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [x] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [x] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [x] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### UI Changes (if applicable)

- [x] 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](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-11 07:53:20 +01:00
stirlingbot[bot] 780a1d2835 🌐 Sync Translations + Update README Progress Table (#3508)
### Description of Changes

This Pull Request was automatically generated to synchronize updates to
translation files and documentation. Below are the details of the
changes made:

#### **1. Synchronization of Translation Files**
- Updated translation files (`messages_*.properties`) to reflect changes
in the reference file `messages_en_GB.properties`.
- Ensured consistency and synchronization across all supported language
files.
- Highlighted any missing or incomplete translations.

#### **2. Update README.md**
- Generated the translation progress table in `README.md`.
- Added a summary of the current translation status for all supported
languages.
- Included up-to-date statistics on translation coverage.

#### **Why these changes are necessary**
- Keeps translation files aligned with the latest reference updates.
- Ensures the documentation reflects the current translation progress.

---

Auto-generated by [create-pull-request][1].

[1]: https://github.com/peter-evans/create-pull-request

Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-05-10 18:55:19 +01:00
Shad CT d64f4fca4f added Malayalam language (#3506)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [x] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-10 18:08:26 +01:00
Reece Browne 8bb6dea70a accept/decline cookies based on analytics and hide cookie banner when… (#3505)
… analytics modal open

Close cookies banner when analytics modal is open
Accept/decline cookies based on analytics response.

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(3403)

---

## Checklist

### General

- [x ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ x] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ x] I have performed a self-review of my own code
- [ x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-10 13:25:21 +01:00
stirlingbot[bot] ff3fe19d98 🌐 Sync Translations + Update README Progress Table (#3503)
### Description of Changes

This Pull Request was automatically generated to synchronize updates to
translation files and documentation. Below are the details of the
changes made:

#### **1. Synchronization of Translation Files**
- Updated translation files (`messages_*.properties`) to reflect changes
in the reference file `messages_en_GB.properties`.
- Ensured consistency and synchronization across all supported language
files.
- Highlighted any missing or incomplete translations.

#### **2. Update README.md**
- Generated the translation progress table in `README.md`.
- Added a summary of the current translation status for all supported
languages.
- Included up-to-date statistics on translation coverage.

#### **Why these changes are necessary**
- Keeps translation files aligned with the latest reference updates.
- Ensures the documentation reflects the current translation progress.

---

Auto-generated by [create-pull-request][1].

[1]: https://github.com/peter-evans/create-pull-request

Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-05-09 19:38:29 +01:00
Anthony StirlingandCopilot Autofix powered by AI 1bb3b68a87 Potential fix for code scanning alert no. 11: DOM text reinterpreted as HTML (#3497)
Potential fix for
[https://github.com/Stirling-Tools/Stirling-PDF/security/code-scanning/11](https://github.com/Stirling-Tools/Stirling-PDF/security/code-scanning/11)

To fix the issue, we should avoid using `innerHTML` to insert untrusted
data into the DOM. Instead, we can use DOM manipulation methods like
`createElement` and `appendChild` to construct the required HTML
structure safely. These methods do not interpret strings as HTML,
thereby mitigating the risk of XSS.

Specifically:
1. Replace the `innerHTML` assignment on line 302 with code that creates
the required DOM elements programmatically.
2. Ensure that the `selectedOperation` value is inserted as plain text
using `textContent` or equivalent methods.

---


_Suggested fixes powered by Copilot Autofix. Review carefully before
merging._

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-05-09 18:53:13 +01:00
e0c06ecebf Fix French translation. (#2981)
redact (black out) => Caviarder/Caviardage

thanks @ralmn

# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [x] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.

---------

Co-authored-by: Dylan Broussard <contact@deraw.dev>
Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
2025-05-09 18:50:30 +01:00
Balázs Szücs 9ffc0037b7 Refactor permission variable names (#3457)
## Refactor: Improve clarity of permission variable names

Renamed confusing `can[Action]` boolean variables to `prevent[Action]`
(e.g., `canPrint` -> `preventPrinting`) in `PasswordController.java`,
`AddPasswordRequest.java`, and `add-password.html`.


The previous `can[Action]` convention was misleading, as `true` meant
the action was *disallowed*. The new `prevent[Action]` naming directly
reflects the intent (`true` = prevented), improving code clarity.

**Changes:**

*   Updated variable names in controller logic
*   Updated `@Schema` descriptions in `AddPasswordRequest.java`
* Updated corresponding HTML element attributes (`id`, `name`, `for`) in
`add-password.html`

**Important Notes:**

* The underlying logic still inverts the boolean when setting
permissions (e.g., `AccessPermission.setCanPrint(!preventPrinting)`).
* User-facing UI text remains unchanged per request of @Frooodle in
#3420.

**Why not invert the API logic**
*   Inverting API (to can[action] logic) would either invalidate the UI
* Inverting API AND changing UI would warrant bigger translation effort
to change it in all languages
* This version is consistent (meaning what the UI says is actually done)
and preserve the UI language (meaning no translations needed) however it
is inconsistent with PDFBox methods naming scheme

**PDFBox**

* **PDFBox Interaction:** This refactor addresses the naming *within*
Stirling-PDF's API and Front-end layers only. The controller logic
intentionally inverts the `prevent[Action]` boolean
(`ap.setCanPrint(!preventPrinting)`) to correctly interact with the
underlying PDFBox methods. No further renaming related to these
permissions is necessary as the PDFBox methods themselves retain the
`can[Action]` names.


Underlying logic is not changed so it should work but just in case I
tested locally on an Adobe PDF that contained form in Chrome.



## New variable names in API

![new API variable
names](https://github.com/user-attachments/assets/f3d56aaf-0455-4f65-af14-c1a07a02d11a)

**Related Issues:**

Closes #3427
Closes #3420

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-09 18:41:31 +01:00
Anthony Stirling e5e7935456 pixel changes, redact color fix, version bump, aggressive compression (#3502)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-09 16:42:20 +01:00
Anthony StirlingandCopilot Autofix powered by AI fd1e854778 Potential fix for code scanning alert no. 224: DOM text reinterpreted as HTML (#3499)
Potential fix for
[https://github.com/Stirling-Tools/Stirling-PDF/security/code-scanning/224](https://github.com/Stirling-Tools/Stirling-PDF/security/code-scanning/224)

To fix the issue, we should avoid assigning untrusted data directly to
`innerHTML`. Instead, we can use `textContent`, which safely sets the
text content of an element without interpreting it as HTML. This ensures
that any special characters in the `data-title` attribute are treated as
plain text, preventing XSS attacks.

The fix involves replacing `tabButton.innerHTML = title;` on line 12
with `tabButton.textContent = title;`. This change ensures that the
`title` is safely rendered as text.

---


_Suggested fixes powered by Copilot Autofix. Review carefully before
merging._

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-05-08 18:19:55 +01:00
Reece Browne c4b8df2a1e Auto scale (#3490)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [x] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-08 17:54:58 +01:00
stirlingbot[bot] 512e9d7236 Update 3rd Party Licenses (#3487)
Auto-generated by StirlingBot

Signed-off-by: stirlingbot[bot] <1113334+stirlingbot[bot]@users.noreply.github.com>
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-05-07 13:29:51 +01:00
Ludy 5b0eaec436 Add Email Sending Service with Attachment Support (#3455)
# Description of Changes

Please provide a summary of the changes, including:

- **What was changed**  
- Introduced a new `EmailService` for asynchronous email delivery with
attachment support.
- Added `MailConfig` to configure a `JavaMailSender` bean using SMTP
settings from `ApplicationProperties`.
- Created `EmailController` endpoint (`/api/v1/general/send-email`) to
accept multipart/form-data requests for sending emails.
- Defined an `Email` API model to encapsulate recipient, subject, body,
and file input.
- Extended `ApplicationProperties` to include a nested `Mail` class for
SMTP host, port, username/password, and sender address.
- Updated `settings.yml.template` to include SMTP configuration
placeholders.
- Enhanced `.github/labeler-config.yml` to cover all new security- and
API-related source files for automated labeling.

- **Why the change was made**  
- To enable Stirling-PDF to notify users via email—particularly useful
for sending generated PDFs or alerts—directly from the application.
- To centralize mail server configuration in application properties and
streamline onboarding for new environments.

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-07 09:20:21 +01:00
Ludy 2ac606608a Fix cert-sign API NullPointerException when pageNumber is omitted for invisible signatures (#3463)
# Description of Changes

Please provide a summary of the changes, including:

- **What was changed**  
- Updated `SignPDFWithCertRequest` to use `Boolean` for `showSignature`
and `showLogo`, and made `pageNumber` nullable.
  - In `CertSignController`:
- Added an `@InitBinder` to convert empty multipart fields to `null`.
- Extended `@PostMapping` to consume both `multipart/form-data` and
`application/x-www-form-urlencoded`.
- Wrapped `pageNumber` calculation in a null-check (`pageNumber =
request.getPageNumber() != null ? request.getPageNumber() - 1 : null`).
- Changed signature-visualization and logo checks to
`Boolean.TRUE.equals(...)` to avoid unboxing NPE.
  - Cleaned up imports and schema annotations in the request model.

- **Why the change was made**  
- Prevent a 500 Internal Server Error caused by calling `.intValue()` on
a null `pageNumber` when `showSignature=false` (invisible signatures).
- Ensure that omitting `pageNumber` doesn’t break clients using the “try
it out” swagger UI or `curl`-based requests.

- **Any challenges encountered**  
- Configuring Spring’s data binder to treat empty file inputs as `null`
required a custom `PropertyEditorSupport`.
- Balancing backward compatibility with stricter type handling
(switching from primitive `boolean` to boxed `Boolean`).

Closes #3459

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-07 09:19:06 +01:00
LudyandCopilot e2a5874a88 fix read wrong properties (#3472)
# Description of Changes

Please provide a summary of the changes, including:

Test file:


[12345678.pdf](https://github.com/user-attachments/files/20028981/12345678.pdf)

Behavior without readOnly

```json
{
  "creator": null,
  "modificationDate": "java.util.GregorianCalendar[time=1746381303000,areFieldsSet=true,areAllFieldsSet=true,lenient=false,zone=java.util.SimpleTimeZone[id=GMT,offset=0,dstSavings=3600000,useDaylight=false,startYear=0,startMode=0,startMonth=0,startDay=0,startDayOfWeek=0,startTime=0,startTimeMode=0,endMode=0,endMonth=0,endDay=0,endDayOfWeek=0,endTime=0,endTimeMode=0],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2025,MONTH=4,WEEK_OF_YEAR=19,WEEK_OF_MONTH=2,DAY_OF_MONTH=4,DAY_OF_YEAR=124,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=5,HOUR_OF_DAY=17,MINUTE=55,SECOND=3,MILLISECOND=0,ZONE_OFFSET=0,DST_OFFSET=0]",
  "keywords": null,
  "author": "",
  "subject": null,
  "producer": "Stirling-PDF v0.46.0",
  "title": "Microsoft Word - Dokument1",
  "creationDate": "java.util.GregorianCalendar[time=1746381238000,areFieldsSet=true,areAllFieldsSet=true,lenient=false,zone=java.util.SimpleTimeZone[id=GMT+02:00,offset=7200000,dstSavings=3600000,useDaylight=false,startYear=0,startMode=0,startMonth=0,startDay=0,startDayOfWeek=0,startTime=0,startTimeMode=0,endMode=0,endMonth=0,endDay=0,endDayOfWeek=0,endTime=0,endTimeMode=0],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2025,MONTH=4,WEEK_OF_YEAR=19,WEEK_OF_MONTH=2,DAY_OF_MONTH=4,DAY_OF_YEAR=124,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=53,SECOND=58,MILLISECOND=0,ZONE_OFFSET=7200000,DST_OFFSET=0]"
}
```

with readOnly=true

```json
{
  "creator": null,
  "modificationDate": "java.util.GregorianCalendar[time=1746381238000,areFieldsSet=true,areAllFieldsSet=true,lenient=false,zone=java.util.SimpleTimeZone[id=GMT+02:00,offset=7200000,dstSavings=3600000,useDaylight=false,startYear=0,startMode=0,startMonth=0,startDay=0,startDayOfWeek=0,startTime=0,startTimeMode=0,endMode=0,endMonth=0,endDay=0,endDayOfWeek=0,endTime=0,endTimeMode=0],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2025,MONTH=4,WEEK_OF_YEAR=19,WEEK_OF_MONTH=2,DAY_OF_MONTH=4,DAY_OF_YEAR=124,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=53,SECOND=58,MILLISECOND=0,ZONE_OFFSET=7200000,DST_OFFSET=0]",
  "keywords": null,
  "author": "",
  "subject": null,
  "producer": "Microsoft: Print To PDF",
  "title": "Microsoft Word - Dokument1",
  "creationDate": "java.util.GregorianCalendar[time=1746381238000,areFieldsSet=true,areAllFieldsSet=true,lenient=false,zone=java.util.SimpleTimeZone[id=GMT+02:00,offset=7200000,dstSavings=3600000,useDaylight=false,startYear=0,startMode=0,startMonth=0,startDay=0,startDayOfWeek=0,startTime=0,startTimeMode=0,endMode=0,endMonth=0,endDay=0,endDayOfWeek=0,endTime=0,endTimeMode=0],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2025,MONTH=4,WEEK_OF_YEAR=19,WEEK_OF_MONTH=2,DAY_OF_MONTH=4,DAY_OF_YEAR=124,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=53,SECOND=58,MILLISECOND=0,ZONE_OFFSET=7200000,DST_OFFSET=0]"
}
```

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-07 09:18:02 +01:00
stirlingbot[bot] 5d073909cc Update 3rd Party Licenses (#3484)
Auto-generated by StirlingBot

Signed-off-by: stirlingbot[bot] <1113334+stirlingbot[bot]@users.noreply.github.com>
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-05-06 17:53:51 +01:00
dependabot[bot] 1aff1d3480 Bump com.opencsv:opencsv from 5.10 to 5.11 (#3476)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps com.opencsv:opencsv from 5.10 to 5.11.


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.opencsv:opencsv&package-manager=gradle&previous-version=5.10&new-version=5.11)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-06 10:43:42 +01:00
dependabot[bot] bfaffe5050 Bump org.springdoc:springdoc-openapi-starter-webmvc-ui from 2.8.6 to 2.8.8 (#3482)
Bumps
[org.springdoc:springdoc-openapi-starter-webmvc-ui](https://github.com/springdoc/springdoc-openapi)
from 2.8.6 to 2.8.8.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/springdoc/springdoc-openapi/releases">org.springdoc:springdoc-openapi-starter-webmvc-ui's
releases</a>.</em></p>
<blockquote>
<h2>v2.8.8</h2>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/springdoc/springdoc-openapi/compare/v2.8.7...v2.8.8">https://github.com/springdoc/springdoc-openapi/compare/v2.8.7...v2.8.8</a></p>
<h3>Fixed</h3>
<ul>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2977">#2977</a>
- Handle projects not using kotlin-reflect <a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2977">#2977</a></li>
</ul>
<h2>springdoc-openapi v2.8.7 released!</h2>
<h2>What's Changed</h2>
<h3>Added</h3>
<ul>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2944">#2944</a>
- Introducing springdoc-openapi-bom project</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2948">#2948</a>
- Customize Servers via application.yml</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2963">#2963</a>
- Set default content type for problem details object to
application/problem+jso</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2971">#2971</a>
- List of value classes in Kotlin</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Upgrade swagger-ui to v5.21.0</li>
<li>Upgrade swagger-core to 2.2.30</li>
<li>Upgrade spring-boot to version 3.4.5</li>
<li>Upgrade spring-security-oauth2-authorization-server to version
1.4.3</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2947">#2947</a>
- Unexpected warning &quot;Appended trailing slash to static resource
location&quot;</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2960">#2960</a>
- NPE when customizing group's open-api without specifying any
schema</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2969">#2969</a>
- fix path to register resource handler to work
SwaggerIndexPageTransformer considering /webjar path prefix</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2964">#2964</a>
- Cannot add custom description and example for java.time.Duration since
v2.8.6</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2972">#2972</a>
- <a href="https://github.com/Header"><code>@​Header</code></a>(schema =
<a href="https://github.com/Schema"><code>@​Schema</code></a>(type =
&quot;string&quot;)) generates empty or broken schema in OpenAPI output
since 2.8.0</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2976">#2976</a>,
<a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2967">#2967</a>
- Build Failure due to Private Inner Class.</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2556">#2556</a>
- Unable to determine if it is a Kotlin type</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/lagoshny"><code>@​lagoshny</code></a>
made their first contribution in <a
href="https://redirect.github.com/springdoc/springdoc-openapi/pull/2970">springdoc/springdoc-openapi#2970</a></li>
<li><a href="https://github.com/mymx2"><code>@​mymx2</code></a> made
their first contribution in <a
href="https://redirect.github.com/springdoc/springdoc-openapi/pull/2950">springdoc/springdoc-openapi#2950</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/springdoc/springdoc-openapi/compare/v2.8.6...v2.8.7">https://github.com/springdoc/springdoc-openapi/compare/v2.8.6...v2.8.7</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/springdoc/springdoc-openapi/blob/main/CHANGELOG.md">org.springdoc:springdoc-openapi-starter-webmvc-ui's
changelog</a>.</em></p>
<blockquote>
<h2>[2.8.8] - 2025-05-04</h2>
<h3>Fixed</h3>
<ul>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2977">#2977</a>
- Handle projects not using kotlin-reflect <a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2977">#2977</a></li>
</ul>
<h2>[2.8.7] - 2025-05-04</h2>
<h3>Added</h3>
<ul>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2944">#2944</a>
- Introducing springdoc-openapi-bom project</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2948">#2948</a>
- Customize Servers via application.yml</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2963">#2963</a>
- Set default content type for problem details object to
application/problem+jso</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2971">#2971</a>
- List of value classes in Kotlin</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Upgrade swagger-ui to v5.21.0</li>
<li>Upgrade swagger-core to 2.2.30</li>
<li>Upgrade spring-boot to version 3.4.5</li>
<li>Upgrade spring-security-oauth2-authorization-server to version
1.4.3</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2947">#2947</a>
- Unexpected warning &quot;Appended trailing slash to static resource
location&quot;</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2960">#2960</a>
- NPE when customizing group's open-api without specifying any
schema</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2969">#2969</a>
- fix path to register resource handler to work
SwaggerIndexPageTransformer considering /webjar path prefix</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2964">#2964</a>
- Cannot add custom description and example for java.time.Duration since
v2.8.6</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2972">#2972</a>
- <a href="https://github.com/Header"><code>@​Header</code></a>(schema =
<a href="https://github.com/Schema"><code>@​Schema</code></a>(type =
&quot;string&quot;)) generates empty or broken schema in OpenAPI output
since 2.8.0</li>
<li><a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2976">#2976</a>,
<a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2967">#2967</a>
- Build Failure due to Private Inner Class.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/springdoc/springdoc-openapi/commit/bce44dbe502cbaeeff6188fe210042859aa0ed54"><code>bce44db</code></a>
[maven-release-plugin] prepare release v2.8.8</li>
<li><a
href="https://github.com/springdoc/springdoc-openapi/commit/707fce0271fda0c713c412488247dba4cc32d98c"><code>707fce0</code></a>
Handle projects not using kotlin-reflect. Fixes <a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2977">#2977</a></li>
<li><a
href="https://github.com/springdoc/springdoc-openapi/commit/7a3546cb733d3ca493b6e622778a97c73b39b04a"><code>7a3546c</code></a>
[maven-release-plugin] prepare for next development iteration</li>
<li><a
href="https://github.com/springdoc/springdoc-openapi/commit/764ef2fd42040232a7a9280d826ed72a591da3df"><code>764ef2f</code></a>
[maven-release-plugin] prepare release v2.8.7</li>
<li><a
href="https://github.com/springdoc/springdoc-openapi/commit/98dacbda5cbdb0a278aa407ddc6aa05c8f23f031"><code>98dacbd</code></a>
Prepare for the next release</li>
<li><a
href="https://github.com/springdoc/springdoc-openapi/commit/5eb7d77e55df6b1b4ea1964fb146233f88b71e2d"><code>5eb7d77</code></a>
pom.xml cleanup for <a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2944">#2944</a></li>
<li><a
href="https://github.com/springdoc/springdoc-openapi/commit/9dffa3d7d43e11ee1abfa86c7bf9b1886fc23e11"><code>9dffa3d</code></a>
pom.xml cleanup for <a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2944">#2944</a></li>
<li><a
href="https://github.com/springdoc/springdoc-openapi/commit/a68b42edf1465f1888c42263dac5547622ebd4cc"><code>a68b42e</code></a>
List of value classes in Kotlin. Fixes <a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2971">#2971</a></li>
<li><a
href="https://github.com/springdoc/springdoc-openapi/commit/95fa3bbb71859e428092034efbb3deae9bf4c892"><code>95fa3bb</code></a>
Regression: <a
href="https://github.com/Header"><code>@​Header</code></a>(schema = <a
href="https://github.com/Schema"><code>@​Schema</code></a>(type =
&quot;string&quot;)) generates empty or bro...</li>
<li><a
href="https://github.com/springdoc/springdoc-openapi/commit/3d056d8c55ec3139fc3e2d4a2f0eed7d8384d5f0"><code>3d056d8</code></a>
Build Failure due to Private Inner Class. Fixes <a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2976">#2976</a>,
<a
href="https://redirect.github.com/springdoc/springdoc-openapi/issues/2967">#2967</a></li>
<li>Additional commits viewable in <a
href="https://github.com/springdoc/springdoc-openapi/compare/v2.8.6...v2.8.8">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.springdoc:springdoc-openapi-starter-webmvc-ui&package-manager=gradle&previous-version=2.8.6&new-version=2.8.8)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-06 10:43:09 +01:00
dependabot[bot] 3a615360a0 Bump actions/create-github-app-token from 2.0.5 to 2.0.6 (#3475)
Bumps
[actions/create-github-app-token](https://github.com/actions/create-github-app-token)
from 2.0.5 to 2.0.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/create-github-app-token/releases">actions/create-github-app-token's
releases</a>.</em></p>
<blockquote>
<h2>v2.0.6</h2>
<h2><a
href="https://github.com/actions/create-github-app-token/compare/v2.0.5...v2.0.6">2.0.6</a>
(2025-05-03)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>replace <code>-</code> with <code>_</code> (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/246">#246</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/333678481b1f02ee31fa1443aba4f1f7cb5b08b5">3336784</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/create-github-app-token/commit/df432ceedc7162793a195dd1713ff69aefc7379e"><code>df432ce</code></a>
build(release): 2.0.6 [skip ci]</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/333678481b1f02ee31fa1443aba4f1f7cb5b08b5"><code>3336784</code></a>
fix: replace <code>-</code> with <code>_</code> (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/246">#246</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/create-github-app-token/compare/db3cdf40984fe6fd25ae19ac2bf2f4886ae8d959...df432ceedc7162793a195dd1713ff69aefc7379e">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/create-github-app-token&package-manager=github_actions&previous-version=2.0.5&new-version=2.0.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-05 23:23:16 +01:00
stirlingbot[bot] 36758a6a35 🤖 format everything with pre-commit by <stirlingbot> (#3479)
Auto-generated by [create-pull-request][1] with **stirlingbot**

[1]: https://github.com/peter-evans/create-pull-request

Signed-off-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-05-05 23:23:08 +01:00
Ludy b8aa9f0cdf Fix NullPointerException by Enabling Constructor Injection for Color Replacement Components (#3469)
# Description of Changes

Please provide a summary of the changes, including:

- **What was changed**  
Added the `final` modifier to the `ReplaceAndInvertColorService` field
in `ReplaceAndInvertColorController` and to the
`ReplaceAndInvertColorFactory` field in `ReplaceAndInvertColorService`.
This ensures that Lombok’s `@RequiredArgsConstructor` generates
constructors for these dependencies, enabling proper constructor-based
injection instead of leaving them null.

- **Why the change was made**  
Without the `final` keyword, Lombok does not include non-final fields in
the generated constructor, causing Spring to leave them uninitialized
and resulting in a `NullPointerException` during runtime when invoking
`replaceAndInvert` on the factory/service.

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-04 17:20:07 +01:00
stirlingbot[bot] 5ca956f033 Update 3rd Party Licenses (#3468)
Auto-generated by StirlingBot

Signed-off-by: stirlingbot[bot] <1113334+stirlingbot[bot]@users.noreply.github.com>
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-05-04 17:19:50 +01:00
Balázs Szücs 294724659d Update language list to use native names (#3464)
# Description of Changes:

This PR updates the localization files to use the correct native names
for affected languages, ensuring consistency and proper representation

For the translation I didn't know I searched and subsequently, and
verified with Gemini that the translation is valid.

For example:
## Hungarian -> Magyar

![image](https://github.com/user-attachments/assets/177f4e85-fbb9-4486-9708-08679597ef08)

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### UI Changes (if applicable)

- [x] 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](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-03 14:34:41 +01:00
dependabot[bot] 20f0cf1ac3 Bump pdfboxVersion from 3.0.4 to 3.0.5 (#3465)
Bumps `pdfboxVersion` from 3.0.4 to 3.0.5.
Updates `org.apache.pdfbox:pdfbox` from 3.0.4 to 3.0.5

Updates `org.apache.pdfbox:preflight` from 3.0.4 to 3.0.5

Updates `org.apache.pdfbox:xmpbox` from 3.0.4 to 3.0.5


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-03 14:32:08 +01:00
dependabot[bot] 561d3f4eed Bump actions/create-github-app-token from 2.0.2 to 2.0.5 (#3466)
Bumps
[actions/create-github-app-token](https://github.com/actions/create-github-app-token)
from 2.0.2 to 2.0.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/create-github-app-token/releases">actions/create-github-app-token's
releases</a>.</em></p>
<blockquote>
<h2>v2.0.5</h2>
<h2><a
href="https://github.com/actions/create-github-app-token/compare/v2.0.4...v2.0.5">2.0.5</a>
(2025-05-02)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>deps:</strong> bump the production-dependencies group with 3
updates (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/240">#240</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/d64d7d73555d3f2cb08ce64bdd812e49308a2905">d64d7d7</a>)</li>
</ul>
<h2>v2.0.4</h2>
<h2><a
href="https://github.com/actions/create-github-app-token/compare/v2.0.3...v2.0.4">2.0.4</a>
(2025-05-02)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>permission input handling (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/243">#243</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/2950cbc446a8d3030ea17d3f7cbdd3c0fce4b0f5">2950cbc</a>)</li>
</ul>
<h2>v2.0.3</h2>
<h2><a
href="https://github.com/actions/create-github-app-token/compare/v2.0.2...v2.0.3">2.0.3</a>
(2025-05-01)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>README:</strong> use <code>v2</code> in examples (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/234">#234</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/9ba274d954c9af64fbf4cec63082d0e3f57e9b5f">9ba274d</a>),
closes <a
href="https://redirect.github.com/actions/create-github-app-token/issues/232">#232</a></li>
<li>use <code>core.getBooleanInput()</code> to retrieve boolean input
values (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/223">#223</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/c3c17c79ccedec31f588e88d6ad5ff9036afe580">c3c17c7</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/create-github-app-token/commit/db3cdf40984fe6fd25ae19ac2bf2f4886ae8d959"><code>db3cdf4</code></a>
build(release): 2.0.5 [skip ci]</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/d64d7d73555d3f2cb08ce64bdd812e49308a2905"><code>d64d7d7</code></a>
fix(deps): bump the production-dependencies group with 3 updates (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/240">#240</a>)</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/1b6f53e48e3bd5e9fbd610599fc41fca986c51e9"><code>1b6f53e</code></a>
build(deps-dev): bump the development-dependencies group across 1
directory w...</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/061a84d5f55008a6dfb441735e1568fcb8da8b50"><code>061a84d</code></a>
build(deps-dev): bump <code>@​octokit/openapi</code> from 18.2.0 to
19.0.0 (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/242">#242</a>)</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/c8f34a61a85667dfbbbc74c5468935fc8a369720"><code>c8f34a6</code></a>
build(deps): bump stefanzweifel/git-auto-commit-action from 5.1.0 to
5.2.0 in...</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/4821f52fa7a8e45784f1d99cdb1c27bec9f00720"><code>4821f52</code></a>
build(release): 2.0.4 [skip ci]</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/2950cbc446a8d3030ea17d3f7cbdd3c0fce4b0f5"><code>2950cbc</code></a>
fix: permission input handling (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/243">#243</a>)</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/30bf6253fa41bdc8d1501d202ad15287582246b4"><code>30bf625</code></a>
build(release): 2.0.3 [skip ci]</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/c3c17c79ccedec31f588e88d6ad5ff9036afe580"><code>c3c17c7</code></a>
fix: use <code>core.getBooleanInput()</code> to retrieve boolean input
values (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/223">#223</a>)</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/9ba274d954c9af64fbf4cec63082d0e3f57e9b5f"><code>9ba274d</code></a>
fix(README): use <code>v2</code> in examples (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/234">#234</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/create-github-app-token/compare/3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5...db3cdf40984fe6fd25ae19ac2bf2f4886ae8d959">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/create-github-app-token&package-manager=github_actions&previous-version=2.0.2&new-version=2.0.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-03 14:31:49 +01:00
dependabot[bot] e239bbf89a Bump github/codeql-action from 3.28.16 to 3.28.17 (#3467)
Bumps [github/codeql-action](https://github.com/github/codeql-action)
from 3.28.16 to 3.28.17.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.28.17</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.28.17 - 02 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.2. <a
href="https://redirect.github.com/github/codeql-action/pull/2872">#2872</a></li>
</ul>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.28.17/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>3.28.17 - 02 May 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.2. <a
href="https://redirect.github.com/github/codeql-action/pull/2872">#2872</a></li>
</ul>
<h2>3.28.16 - 23 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2863">#2863</a></li>
</ul>
<h2>3.28.15 - 07 Apr 2025</h2>
<ul>
<li>Fix bug where the action would fail if it tried to produce a debug
artifact with more than 65535 files. <a
href="https://redirect.github.com/github/codeql-action/pull/2842">#2842</a></li>
</ul>
<h2>3.28.14 - 07 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2838">#2838</a></li>
</ul>
<h2>3.28.13 - 24 Mar 2025</h2>
<p>No user facing changes.</p>
<h2>3.28.12 - 19 Mar 2025</h2>
<ul>
<li>Dependency caching should now cache more dependencies for Java
<code>build-mode: none</code> extractions. This should speed up
workflows and avoid inconsistent alerts in some cases.</li>
<li>Update default CodeQL bundle version to 2.20.7. <a
href="https://redirect.github.com/github/codeql-action/pull/2810">#2810</a></li>
</ul>
<h2>3.28.11 - 07 Mar 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.20.6. <a
href="https://redirect.github.com/github/codeql-action/pull/2793">#2793</a></li>
</ul>
<h2>3.28.10 - 21 Feb 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.20.5. <a
href="https://redirect.github.com/github/codeql-action/pull/2772">#2772</a></li>
<li>Address an issue where the CodeQL Bundle would occasionally fail to
decompress on macOS. <a
href="https://redirect.github.com/github/codeql-action/pull/2768">#2768</a></li>
</ul>
<h2>3.28.9 - 07 Feb 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.20.4. <a
href="https://redirect.github.com/github/codeql-action/pull/2753">#2753</a></li>
</ul>
<h2>3.28.8 - 29 Jan 2025</h2>
<ul>
<li>Enable support for Kotlin 2.1.10 when running with CodeQL CLI
v2.20.3. <a
href="https://redirect.github.com/github/codeql-action/pull/2744">#2744</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/60168efe1c415ce0f5521ea06d5c2062adbeed1b"><code>60168ef</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2886">#2886</a>
from github/update-v3.28.17-97a2bfd2a</li>
<li><a
href="https://github.com/github/codeql-action/commit/0d5a3115da6459f8ab4333164184f8292c0c7a7f"><code>0d5a311</code></a>
Update changelog for v3.28.17</li>
<li><a
href="https://github.com/github/codeql-action/commit/97a2bfd2a3d26d458da69e548f7f859d6fca634d"><code>97a2bfd</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2872">#2872</a>
from github/update-bundle/codeql-bundle-v2.21.2</li>
<li><a
href="https://github.com/github/codeql-action/commit/9aba20e4c91fd8c3a71d5ab2bdeba0da11713864"><code>9aba20e</code></a>
Merge branch 'main' into update-bundle/codeql-bundle-v2.21.2</li>
<li><a
href="https://github.com/github/codeql-action/commit/81a9508deb02898c1a7be79bd5b49bb0ab9c787e"><code>81a9508</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2876">#2876</a>
from github/henrymercer/fix-diff-informed-multiple-a...</li>
<li><a
href="https://github.com/github/codeql-action/commit/1569f4c145413fbce7d6573c6ee9212d2612d27f"><code>1569f4c</code></a>
Disable diff-informed queries in code scanning config tests</li>
<li><a
href="https://github.com/github/codeql-action/commit/62fbeb66b359bfbdec7d4d96af8f68aece59b4db"><code>62fbeb6</code></a>
Merge branch 'main' into
henrymercer/fix-diff-informed-multiple-analyze</li>
<li><a
href="https://github.com/github/codeql-action/commit/f122d1dc9eb83b12dc16b38495b667a2dddfa6f9"><code>f122d1d</code></a>
Address test failures from computing temporary directory too early</li>
<li><a
href="https://github.com/github/codeql-action/commit/083772aae48a3be5654921bb6e6ccb00e0e1d563"><code>083772a</code></a>
Do not fail diff informed analyses when <code>analyze</code> is run
twice in the same job</li>
<li><a
href="https://github.com/github/codeql-action/commit/5db14d0471303d6eee1e2a51393f5ae1669b6703"><code>5db14d0</code></a>
Merge branch 'main' into update-bundle/codeql-bundle-v2.21.2</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/28deaeda66b76a05916b6923827895f2b14ab387...60168efe1c415ce0f5521ea06d5c2062adbeed1b">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=3.28.16&new-version=3.28.17)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-03 14:31:44 +01:00
stirlingbot[bot] 8516ad1543 🌐 Sync Translations + Update README Progress Table (#3461)
### Description of Changes

This Pull Request was automatically generated to synchronize updates to
translation files and documentation. Below are the details of the
changes made:

#### **1. Synchronization of Translation Files**
- Updated translation files (`messages_*.properties`) to reflect changes
in the reference file `messages_en_GB.properties`.
- Ensured consistency and synchronization across all supported language
files.
- Highlighted any missing or incomplete translations.

#### **2. Update README.md**
- Generated the translation progress table in `README.md`.
- Added a summary of the current translation status for all supported
languages.
- Included up-to-date statistics on translation coverage.

#### **Why these changes are necessary**
- Keeps translation files aligned with the latest reference updates.
- Ensures the documentation reflects the current translation progress.

---

Auto-generated by [create-pull-request][1].

[1]: https://github.com/peter-evans/create-pull-request

Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-05-02 16:23:18 +01:00
albanobattistella 47bfab896d Update messages_it_IT.properties (#3456)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-02 16:00:42 +01:00
Ludy aef64cd7cc Validate H2 Database Type and URL Consistency for Custom Databases (#3458)
# Description of Changes

Please provide a summary of the changes, including:

- **What was changed**  
Introduced a local `isCustomDatabase` flag (based on
`datasource.isEnableCustomDatabase()`) to ensure that the H2-specific
URL/type consistency checks (and corresponding warnings/exceptions) only
run when a custom database configuration is enabled. Refactored the
return statement to use this flag (`return !isCustomDatabase || isH2;`)
instead of calling `isEnableCustomDatabase()` directly.

- **Why the change was made**  
Previously, even when custom database support was disabled, the method
would still validate H2 configuration and potentially throw an
`IllegalStateException`. By guarding those checks, we avoid spurious
warnings or exceptions in default (non-custom) setups and make the
method’s behavior more predictable.

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-05-02 16:00:12 +01:00
stirlingbot[bot] d95f169ebd Update 3rd Party Licenses (#3444)
Auto-generated by StirlingBot

Signed-off-by: stirlingbot[bot] <1113334+stirlingbot[bot]@users.noreply.github.com>
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-04-30 20:07:55 +01:00
stirlingbot[bot] 1fdd9f49a9 🌐 Sync Translations + Update README Progress Table (#3446)
### Description of Changes

This Pull Request was automatically generated to synchronize updates to
translation files and documentation. Below are the details of the
changes made:

#### **1. Synchronization of Translation Files**
- Updated translation files (`messages_*.properties`) to reflect changes
in the reference file `messages_en_GB.properties`.
- Ensured consistency and synchronization across all supported language
files.
- Highlighted any missing or incomplete translations.

#### **2. Update README.md**
- Generated the translation progress table in `README.md`.
- Added a summary of the current translation status for all supported
languages.
- Included up-to-date statistics on translation coverage.

#### **Why these changes are necessary**
- Keeps translation files aligned with the latest reference updates.
- Ensures the documentation reflects the current translation progress.

---

Auto-generated by [create-pull-request][1].

[1]: https://github.com/peter-evans/create-pull-request

---------

Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-04-30 15:26:54 +01:00
Balázs Szücs 7626dc5f90 Added missing Hungarian translations. (#3451)
Description of Changes
---

Added missing translations, focusing only on untranslated parts and not
reviewing previous translations.

I primarily relied on my native language skills, but used Gemini to
double-check my changes.

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-04-30 15:23:41 +01:00
Ludy 1377aa4f8d Internationalize logout message (#3450)
# Description of Changes

Please provide a summary of the changes, including:

- **What was changed**  
- Controller now uses the `login.logoutMessage` i18n key instead of
hard-coded text.
- Added `login.logoutMessage` entry to `messages_de_DE.properties` and
`messages_en_GB.properties`.
- Updated `login.html` to resolve the logout message via
`th:text="#{…}"`.

- **Why the change was made**  
  - To support localization for logout feedback.
- To eliminate hard-coded strings from the view layer and rely on
message bundles.

before:


![image](https://github.com/user-attachments/assets/5e9975f6-717f-4035-8e3c-76df8c0275bb)


after:


![image](https://github.com/user-attachments/assets/934f45ad-d490-4a34-9399-5c9031f2db2d)


---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### UI Changes (if applicable)

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

### Testing (if applicable)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-04-30 09:30:15 +01:00
LudyandAnthony Stirling 4b86703082 Validate H2 datasource configuration in DatabaseService (#3449)
# Description of Changes

Please provide a summary of the changes, including:

- **What was changed**  
Updated the `isH2Database()` method in `DatabaseService.java` to perform
additional consistency checks between the configured datasource type and
the JDBC URL:
- Compute `isTypeH2` based on
`datasource.getType().equalsIgnoreCase("H2")`.
- Compute `isDBUrlH2` by checking if `datasource.getCustomDatabaseUrl()`
contains “h2” (case-insensitive).
- Log a warning and throw `IllegalStateException` when the type is H2
but URL doesn’t contain “h2”, or vice versa.
- Return the original boolean logic (`!enableCustomDatabase || isH2`)
only when both type and URL agree.

- **Why the change was made**  
To prevent runtime misconfigurations where the declared database driver
(H2) does not match the actual JDBC URL (or vice versa), providing
early, clear feedback to users and avoiding obscure errors later in
startup.


Closes #3428

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.

Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
2025-04-29 17:35:48 +00:00
albanobattistella cdc0d1bdbe Update messages_it_IT.properties (#3448)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-04-29 17:50:49 +01:00
Anthony Stirling 35ecff053a Version bump (#3445)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-04-29 12:00:59 +01:00
Maria Leonor LaranjeiraandAnthony Stirling 715445a8dd Remove read only from forms (#3423)
# Description of Changes

Create new tool to remove read-only properties of form fields.

- Added new html file to provide a page for the tool
(misc/unlock-pdf-forms.html), as well as new endpoint
(/unlock-pdf-forms) under config/EndpointConfiguration.java
- Added the tool to the list of "view & edit" tools under the home page
in home-legacy.html and navElements.html
- Mapped the frontend in controller/web/OtherWebController.java
- Created a new controller
(controller/api/misc/UnlockPDFFormsController.java) to handle AcroForm
/Ff flags, /Lock tags and XFA Forms, removing the read-only properties
of all form fields of a PDF document.
- Added language entries to all the language files, to correctly display
the tool's title, header,description, etc.

Closes #2965

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### UI Changes

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


![image](https://github.com/user-attachments/assets/2890d3c0-0535-487c-aa0a-83ad9597d898)

![image](https://github.com/user-attachments/assets/631e729c-d68d-4da9-b925-64b5362aeea4)

![image](https://github.com/user-attachments/assets/376a98d5-ca1d-45e9-910f-b5c7639eae8c)



### Testing (if applicable)

- [x] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.

---------

Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
2025-04-29 11:40:08 +01:00
dependabot[bot] 9635e573d8 Bump gradle from 8.13-jdk21 to 8.14-jdk21 (#3439)
Bumps gradle from 8.13-jdk21 to 8.14-jdk21.


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=gradle&package-manager=docker&previous-version=8.13-jdk21&new-version=8.14-jdk21)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-29 11:39:38 +01:00
dependabot[bot] ffb8e98dcd Bump springBootVersion from 3.4.4 to 3.4.5 (#3440)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps `springBootVersion` from 3.4.4 to 3.4.5.
Updates `org.springframework.boot:spring-boot-starter-web` from 3.4.4 to
3.4.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-boot/releases">org.springframework.boot:spring-boot-starter-web's
releases</a>.</em></p>
<blockquote>
<h2>v3.4.5</h2>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Spring Boot with native image container image build fails on podman
due to directory permissions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45256">#45256</a></li>
<li>Neo4jReactiveDataAutoConfiguration assumes that certain beans are
available <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45235">#45235</a></li>
<li>Wrong jOOQ exception translator with empty db name <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45219">#45219</a></li>
<li>MessageSourceMessageInterpolator does not replace a parameter when
the message matches its code <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45213">#45213</a></li>
<li>IntegrationMbeanExporter is not eligible for getting processed by
all BeanPostProcessors warnings are shown when using JMX <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45194">#45194</a></li>
<li>OAuth2AuthorizationServerJwtAutoConfiguration uses
<code>@ConditionalOnClass</code> incorrectly <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45178">#45178</a></li>
<li>MongoDB's dependency management is missing Kotlin coroutine driver
modules <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45159">#45159</a></li>
<li>ImagePlatform can cause &quot;OS must not be empty&quot;
IllegalArgumentException <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45153">#45153</a></li>
<li>TypeUtils does not handle generics with identical names in different
positions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45039">#45039</a></li>
<li>HttpClient5 5.4.3 breaks local Docker transport <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45028">#45028</a></li>
<li>spring.datasource.hikari.data-source-class-name cannot be used as a
driver class name is always required and Hikari does not accept both <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45002">#45002</a></li>
<li>Post-processing to apply custom JdbcConnectionDetails triggers an
NPE in Hikari if the JDBC URL is for an unknown driver <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44998">#44998</a></li>
<li>DataSourceBuilder triggers an NPE in Hikari when trying to build a
DataSource with a JDBC URL for an unknown driver <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44995">#44995</a></li>
<li>SSL config does not watch for symlink file changes <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44887">#44887</a></li>
<li>EmbeddedLdapAutoConfiguration should not rely on PreDestroy <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44874">#44874</a></li>
<li>DataSourceTransactionManagerAutoConfiguration should run after
DataSourceAutoConfiguration <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44819">#44819</a></li>
<li>JsonValueWriter can throw StackOverflowError on deeply nested items
<a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44627">#44627</a></li>
<li>In a reactive web app, SslBundle can no longer open store file
locations without using a 'file:' prefix <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44535">#44535</a></li>
<li>Logging a Path object using structured logging throws
StackOverflowError <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44507">#44507</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Make <code>@Component</code> a javadoc link <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45258">#45258</a></li>
<li>Fix documentation links to buildpacks.io <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45241">#45241</a></li>
<li>Clarify the use of multiple profile expressions with
&quot;spring.config.activate.on-profile&quot; <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45224">#45224</a></li>
<li>Show the use of token properties in authorization server clients
configuration example <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45176">#45176</a></li>
<li>Add details of the purpose of the metrics endpoint <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45047">#45047</a></li>
<li>Escape the asterisk in spring-application.adoc <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45033">#45033</a></li>
<li>Add reference to Styra (OPA) Spring Boot SDK <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44976">#44976</a></li>
<li>Update CDS documentation to cover AOTCache <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44970">#44970</a></li>
<li>WebFlux security documentation incorrectly links to servlet classes
<a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44966">#44966</a></li>
<li>Replace mentions of deprecated MockBean annotation <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44947">#44947</a></li>
<li>TaskExecution documentation should describe what happens when
multiple Executor beans are present <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44908">#44908</a></li>
<li>Documentation lists coordinates for some dependencies that are not
actually managed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44879">#44879</a></li>
<li>Polish javadoc of SpringProfileAction <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44826">#44826</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Upgrade to AspectJ 1.9.24 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45184">#45184</a></li>
<li>Upgrade to Couchbase Client 3.7.9 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45072">#45072</a></li>
<li>Upgrade to Hibernate 6.6.13.Final <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45073">#45073</a></li>
<li>Upgrade to HttpClient5 5.4.3 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45074">#45074</a></li>
<li>Upgrade to HttpCore5 5.3.4 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45075">#45075</a></li>
<li>Upgrade to Jaybird 5.0.7.java11 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45076">#45076</a></li>
<li>Upgrade to Jetty 12.0.19 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45077">#45077</a></li>
<li>Upgrade to jOOQ 3.19.22 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45078">#45078</a></li>
<li>Upgrade to Lombok 1.18.38 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45079">#45079</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/b882c29bdf607d5d4db910f7fd0161143a1329c7"><code>b882c29</code></a>
Release v3.4.5</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/918066f39ae72de5a6e1bae78c841396e049e5b6"><code>918066f</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/ab0c332d9995963d22c202706564be58ff724622"><code>ab0c332</code></a>
Next development version (v3.3.12-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/71acf939ace320fbfa35ce48577ba534469dfc90"><code>71acf93</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/d2eaac6b60d117c3d10939866c70fce6b945eefd"><code>d2eaac6</code></a>
Revert &quot;Upgrade to Netty 4.1.120.Final&quot;</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/d24a38f0f890ef70a07be8236bb9717527f50ba5"><code>d24a38f</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/933572ad5e7da2e47d8efc168a86c8cf6105b062"><code>933572a</code></a>
Upgrade to Netty 4.1.120.Final</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/016b3de968b9b9a6319f7bc58abfb1df007bbc4b"><code>016b3de</code></a>
Upgrade to Netty 4.1.120.Final</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/46a709a8503c096e2514c8cd17b1a7e7e715e7b2"><code>46a709a</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/55f67c9a522647039fd3294dee5cb83f4888160a"><code>55f67c9</code></a>
Fix potential null problem in actuator</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-boot/compare/v3.4.4...v3.4.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `org.springframework.boot:spring-boot-starter-jetty` from 3.4.4
to 3.4.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-boot/releases">org.springframework.boot:spring-boot-starter-jetty's
releases</a>.</em></p>
<blockquote>
<h2>v3.4.5</h2>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Spring Boot with native image container image build fails on podman
due to directory permissions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45256">#45256</a></li>
<li>Neo4jReactiveDataAutoConfiguration assumes that certain beans are
available <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45235">#45235</a></li>
<li>Wrong jOOQ exception translator with empty db name <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45219">#45219</a></li>
<li>MessageSourceMessageInterpolator does not replace a parameter when
the message matches its code <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45213">#45213</a></li>
<li>IntegrationMbeanExporter is not eligible for getting processed by
all BeanPostProcessors warnings are shown when using JMX <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45194">#45194</a></li>
<li>OAuth2AuthorizationServerJwtAutoConfiguration uses
<code>@ConditionalOnClass</code> incorrectly <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45178">#45178</a></li>
<li>MongoDB's dependency management is missing Kotlin coroutine driver
modules <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45159">#45159</a></li>
<li>ImagePlatform can cause &quot;OS must not be empty&quot;
IllegalArgumentException <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45153">#45153</a></li>
<li>TypeUtils does not handle generics with identical names in different
positions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45039">#45039</a></li>
<li>HttpClient5 5.4.3 breaks local Docker transport <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45028">#45028</a></li>
<li>spring.datasource.hikari.data-source-class-name cannot be used as a
driver class name is always required and Hikari does not accept both <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45002">#45002</a></li>
<li>Post-processing to apply custom JdbcConnectionDetails triggers an
NPE in Hikari if the JDBC URL is for an unknown driver <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44998">#44998</a></li>
<li>DataSourceBuilder triggers an NPE in Hikari when trying to build a
DataSource with a JDBC URL for an unknown driver <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44995">#44995</a></li>
<li>SSL config does not watch for symlink file changes <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44887">#44887</a></li>
<li>EmbeddedLdapAutoConfiguration should not rely on PreDestroy <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44874">#44874</a></li>
<li>DataSourceTransactionManagerAutoConfiguration should run after
DataSourceAutoConfiguration <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44819">#44819</a></li>
<li>JsonValueWriter can throw StackOverflowError on deeply nested items
<a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44627">#44627</a></li>
<li>In a reactive web app, SslBundle can no longer open store file
locations without using a 'file:' prefix <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44535">#44535</a></li>
<li>Logging a Path object using structured logging throws
StackOverflowError <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44507">#44507</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Make <code>@Component</code> a javadoc link <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45258">#45258</a></li>
<li>Fix documentation links to buildpacks.io <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45241">#45241</a></li>
<li>Clarify the use of multiple profile expressions with
&quot;spring.config.activate.on-profile&quot; <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45224">#45224</a></li>
<li>Show the use of token properties in authorization server clients
configuration example <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45176">#45176</a></li>
<li>Add details of the purpose of the metrics endpoint <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45047">#45047</a></li>
<li>Escape the asterisk in spring-application.adoc <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45033">#45033</a></li>
<li>Add reference to Styra (OPA) Spring Boot SDK <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44976">#44976</a></li>
<li>Update CDS documentation to cover AOTCache <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44970">#44970</a></li>
<li>WebFlux security documentation incorrectly links to servlet classes
<a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44966">#44966</a></li>
<li>Replace mentions of deprecated MockBean annotation <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44947">#44947</a></li>
<li>TaskExecution documentation should describe what happens when
multiple Executor beans are present <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44908">#44908</a></li>
<li>Documentation lists coordinates for some dependencies that are not
actually managed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44879">#44879</a></li>
<li>Polish javadoc of SpringProfileAction <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44826">#44826</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Upgrade to AspectJ 1.9.24 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45184">#45184</a></li>
<li>Upgrade to Couchbase Client 3.7.9 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45072">#45072</a></li>
<li>Upgrade to Hibernate 6.6.13.Final <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45073">#45073</a></li>
<li>Upgrade to HttpClient5 5.4.3 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45074">#45074</a></li>
<li>Upgrade to HttpCore5 5.3.4 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45075">#45075</a></li>
<li>Upgrade to Jaybird 5.0.7.java11 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45076">#45076</a></li>
<li>Upgrade to Jetty 12.0.19 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45077">#45077</a></li>
<li>Upgrade to jOOQ 3.19.22 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45078">#45078</a></li>
<li>Upgrade to Lombok 1.18.38 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45079">#45079</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/b882c29bdf607d5d4db910f7fd0161143a1329c7"><code>b882c29</code></a>
Release v3.4.5</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/918066f39ae72de5a6e1bae78c841396e049e5b6"><code>918066f</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/ab0c332d9995963d22c202706564be58ff724622"><code>ab0c332</code></a>
Next development version (v3.3.12-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/71acf939ace320fbfa35ce48577ba534469dfc90"><code>71acf93</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/d2eaac6b60d117c3d10939866c70fce6b945eefd"><code>d2eaac6</code></a>
Revert &quot;Upgrade to Netty 4.1.120.Final&quot;</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/d24a38f0f890ef70a07be8236bb9717527f50ba5"><code>d24a38f</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/933572ad5e7da2e47d8efc168a86c8cf6105b062"><code>933572a</code></a>
Upgrade to Netty 4.1.120.Final</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/016b3de968b9b9a6319f7bc58abfb1df007bbc4b"><code>016b3de</code></a>
Upgrade to Netty 4.1.120.Final</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/46a709a8503c096e2514c8cd17b1a7e7e715e7b2"><code>46a709a</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/55f67c9a522647039fd3294dee5cb83f4888160a"><code>55f67c9</code></a>
Fix potential null problem in actuator</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-boot/compare/v3.4.4...v3.4.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `org.springframework.boot:spring-boot-starter-thymeleaf` from
3.4.4 to 3.4.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-boot/releases">org.springframework.boot:spring-boot-starter-thymeleaf's
releases</a>.</em></p>
<blockquote>
<h2>v3.4.5</h2>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Spring Boot with native image container image build fails on podman
due to directory permissions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45256">#45256</a></li>
<li>Neo4jReactiveDataAutoConfiguration assumes that certain beans are
available <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45235">#45235</a></li>
<li>Wrong jOOQ exception translator with empty db name <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45219">#45219</a></li>
<li>MessageSourceMessageInterpolator does not replace a parameter when
the message matches its code <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45213">#45213</a></li>
<li>IntegrationMbeanExporter is not eligible for getting processed by
all BeanPostProcessors warnings are shown when using JMX <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45194">#45194</a></li>
<li>OAuth2AuthorizationServerJwtAutoConfiguration uses
<code>@ConditionalOnClass</code> incorrectly <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45178">#45178</a></li>
<li>MongoDB's dependency management is missing Kotlin coroutine driver
modules <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45159">#45159</a></li>
<li>ImagePlatform can cause &quot;OS must not be empty&quot;
IllegalArgumentException <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45153">#45153</a></li>
<li>TypeUtils does not handle generics with identical names in different
positions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45039">#45039</a></li>
<li>HttpClient5 5.4.3 breaks local Docker transport <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45028">#45028</a></li>
<li>spring.datasource.hikari.data-source-class-name cannot be used as a
driver class name is always required and Hikari does not accept both <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45002">#45002</a></li>
<li>Post-processing to apply custom JdbcConnectionDetails triggers an
NPE in Hikari if the JDBC URL is for an unknown driver <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44998">#44998</a></li>
<li>DataSourceBuilder triggers an NPE in Hikari when trying to build a
DataSource with a JDBC URL for an unknown driver <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44995">#44995</a></li>
<li>SSL config does not watch for symlink file changes <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44887">#44887</a></li>
<li>EmbeddedLdapAutoConfiguration should not rely on PreDestroy <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44874">#44874</a></li>
<li>DataSourceTransactionManagerAutoConfiguration should run after
DataSourceAutoConfiguration <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44819">#44819</a></li>
<li>JsonValueWriter can throw StackOverflowError on deeply nested items
<a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44627">#44627</a></li>
<li>In a reactive web app, SslBundle can no longer open store file
locations without using a 'file:' prefix <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44535">#44535</a></li>
<li>Logging a Path object using structured logging throws
StackOverflowError <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44507">#44507</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Make <code>@Component</code> a javadoc link <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45258">#45258</a></li>
<li>Fix documentation links to buildpacks.io <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45241">#45241</a></li>
<li>Clarify the use of multiple profile expressions with
&quot;spring.config.activate.on-profile&quot; <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45224">#45224</a></li>
<li>Show the use of token properties in authorization server clients
configuration example <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45176">#45176</a></li>
<li>Add details of the purpose of the metrics endpoint <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45047">#45047</a></li>
<li>Escape the asterisk in spring-application.adoc <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45033">#45033</a></li>
<li>Add reference to Styra (OPA) Spring Boot SDK <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44976">#44976</a></li>
<li>Update CDS documentation to cover AOTCache <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44970">#44970</a></li>
<li>WebFlux security documentation incorrectly links to servlet classes
<a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44966">#44966</a></li>
<li>Replace mentions of deprecated MockBean annotation <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44947">#44947</a></li>
<li>TaskExecution documentation should describe what happens when
multiple Executor beans are present <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44908">#44908</a></li>
<li>Documentation lists coordinates for some dependencies that are not
actually managed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44879">#44879</a></li>
<li>Polish javadoc of SpringProfileAction <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44826">#44826</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Upgrade to AspectJ 1.9.24 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45184">#45184</a></li>
<li>Upgrade to Couchbase Client 3.7.9 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45072">#45072</a></li>
<li>Upgrade to Hibernate 6.6.13.Final <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45073">#45073</a></li>
<li>Upgrade to HttpClient5 5.4.3 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45074">#45074</a></li>
<li>Upgrade to HttpCore5 5.3.4 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45075">#45075</a></li>
<li>Upgrade to Jaybird 5.0.7.java11 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45076">#45076</a></li>
<li>Upgrade to Jetty 12.0.19 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45077">#45077</a></li>
<li>Upgrade to jOOQ 3.19.22 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45078">#45078</a></li>
<li>Upgrade to Lombok 1.18.38 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45079">#45079</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/b882c29bdf607d5d4db910f7fd0161143a1329c7"><code>b882c29</code></a>
Release v3.4.5</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/918066f39ae72de5a6e1bae78c841396e049e5b6"><code>918066f</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/ab0c332d9995963d22c202706564be58ff724622"><code>ab0c332</code></a>
Next development version (v3.3.12-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/71acf939ace320fbfa35ce48577ba534469dfc90"><code>71acf93</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/d2eaac6b60d117c3d10939866c70fce6b945eefd"><code>d2eaac6</code></a>
Revert &quot;Upgrade to Netty 4.1.120.Final&quot;</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/d24a38f0f890ef70a07be8236bb9717527f50ba5"><code>d24a38f</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/933572ad5e7da2e47d8efc168a86c8cf6105b062"><code>933572a</code></a>
Upgrade to Netty 4.1.120.Final</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/016b3de968b9b9a6319f7bc58abfb1df007bbc4b"><code>016b3de</code></a>
Upgrade to Netty 4.1.120.Final</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/46a709a8503c096e2514c8cd17b1a7e7e715e7b2"><code>46a709a</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/55f67c9a522647039fd3294dee5cb83f4888160a"><code>55f67c9</code></a>
Fix potential null problem in actuator</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-boot/compare/v3.4.4...v3.4.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `org.springframework.boot:spring-boot-starter-security` from
3.4.4 to 3.4.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-boot/releases">org.springframework.boot:spring-boot-starter-security's
releases</a>.</em></p>
<blockquote>
<h2>v3.4.5</h2>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Spring Boot with native image container image build fails on podman
due to directory permissions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45256">#45256</a></li>
<li>Neo4jReactiveDataAutoConfiguration assumes that certain beans are
available <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45235">#45235</a></li>
<li>Wrong jOOQ exception translator with empty db name <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45219">#45219</a></li>
<li>MessageSourceMessageInterpolator does not replace a parameter when
the message matches its code <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45213">#45213</a></li>
<li>IntegrationMbeanExporter is not eligible for getting processed by
all BeanPostProcessors warnings are shown when using JMX <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45194">#45194</a></li>
<li>OAuth2AuthorizationServerJwtAutoConfiguration uses
<code>@ConditionalOnClass</code> incorrectly <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45178">#45178</a></li>
<li>MongoDB's dependency management is missing Kotlin coroutine driver
modules <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45159">#45159</a></li>
<li>ImagePlatform can cause &quot;OS must not be empty&quot;
IllegalArgumentException <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45153">#45153</a></li>
<li>TypeUtils does not handle generics with identical names in different
positions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45039">#45039</a></li>
<li>HttpClient5 5.4.3 breaks local Docker transport <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45028">#45028</a></li>
<li>spring.datasource.hikari.data-source-class-name cannot be used as a
driver class name is always required and Hikari does not accept both <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45002">#45002</a></li>
<li>Post-processing to apply custom JdbcConnectionDetails triggers an
NPE in Hikari if the JDBC URL is for an unknown driver <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44998">#44998</a></li>
<li>DataSourceBuilder triggers an NPE in Hikari when trying to build a
DataSource with a JDBC URL for an unknown driver <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44995">#44995</a></li>
<li>SSL config does not watch for symlink file changes <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44887">#44887</a></li>
<li>EmbeddedLdapAutoConfiguration should not rely on PreDestroy <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44874">#44874</a></li>
<li>DataSourceTransactionManagerAutoConfiguration should run after
DataSourceAutoConfiguration <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44819">#44819</a></li>
<li>JsonValueWriter can throw StackOverflowError on deeply nested items
<a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44627">#44627</a></li>
<li>In a reactive web app, SslBundle can no longer open store file
locations without using a 'file:' prefix <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44535">#44535</a></li>
<li>Logging a Path object using structured logging throws
StackOverflowError <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44507">#44507</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Make <code>@Component</code> a javadoc link <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45258">#45258</a></li>
<li>Fix documentation links to buildpacks.io <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45241">#45241</a></li>
<li>Clarify the use of multiple profile expressions with
&quot;spring.config.activate.on-profile&quot; <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45224">#45224</a></li>
<li>Show the use of token properties in authorization server clients
configuration example <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45176">#45176</a></li>
<li>Add details of the purpose of the metrics endpoint <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45047">#45047</a></li>
<li>Escape the asterisk in spring-application.adoc <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45033">#45033</a></li>
<li>Add reference to Styra (OPA) Spring Boot SDK <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44976">#44976</a></li>
<li>Update CDS documentation to cover AOTCache <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44970">#44970</a></li>
<li>WebFlux security documentation incorrectly links to servlet classes
<a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44966">#44966</a></li>
<li>Replace mentions of deprecated MockBean annotation <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44947">#44947</a></li>
<li>TaskExecution documentation should describe what happens when
multiple Executor beans are present <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44908">#44908</a></li>
<li>Documentation lists coordinates for some dependencies that are not
actually managed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44879">#44879</a></li>
<li>Polish javadoc of SpringProfileAction <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44826">#44826</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Upgrade to AspectJ 1.9.24 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45184">#45184</a></li>
<li>Upgrade to Couchbase Client 3.7.9 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45072">#45072</a></li>
<li>Upgrade to Hibernate 6.6.13.Final <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45073">#45073</a></li>
<li>Upgrade to HttpClient5 5.4.3 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45074">#45074</a></li>
<li>Upgrade to HttpCore5 5.3.4 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45075">#45075</a></li>
<li>Upgrade to Jaybird 5.0.7.java11 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45076">#45076</a></li>
<li>Upgrade to Jetty 12.0.19 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45077">#45077</a></li>
<li>Upgrade to jOOQ 3.19.22 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45078">#45078</a></li>
<li>Upgrade to Lombok 1.18.38 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45079">#45079</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/b882c29bdf607d5d4db910f7fd0161143a1329c7"><code>b882c29</code></a>
Release v3.4.5</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/918066f39ae72de5a6e1bae78c841396e049e5b6"><code>918066f</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/ab0c332d9995963d22c202706564be58ff724622"><code>ab0c332</code></a>
Next development version (v3.3.12-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/71acf939ace320fbfa35ce48577ba534469dfc90"><code>71acf93</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/d2eaac6b60d117c3d10939866c70fce6b945eefd"><code>d2eaac6</code></a>
Revert &quot;Upgrade to Netty 4.1.120.Final&quot;</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/d24a38f0f890ef70a07be8236bb9717527f50ba5"><code>d24a38f</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/933572ad5e7da2e47d8efc168a86c8cf6105b062"><code>933572a</code></a>
Upgrade to Netty 4.1.120.Final</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/016b3de968b9b9a6319f7bc58abfb1df007bbc4b"><code>016b3de</code></a>
Upgrade to Netty 4.1.120.Final</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/46a709a8503c096e2514c8cd17b1a7e7e715e7b2"><code>46a709a</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/55f67c9a522647039fd3294dee5cb83f4888160a"><code>55f67c9</code></a>
Fix potential null problem in actuator</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-boot/compare/v3.4.4...v3.4.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `org.springframework.boot:spring-boot-starter-data-jpa` from
3.4.4 to 3.4.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-boot/releases">org.springframework.boot:spring-boot-starter-data-jpa's
releases</a>.</em></p>
<blockquote>
<h2>v3.4.5</h2>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Spring Boot with native image container image build fails on podman
due to directory permissions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45256">#45256</a></li>
<li>Neo4jReactiveDataAutoConfiguration assumes that certain beans are
available <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45235">#45235</a></li>
<li>Wrong jOOQ exception translator with empty db name <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45219">#45219</a></li>
<li>MessageSourceMessageInterpolator does not replace a parameter when
the message matches its code <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45213">#45213</a></li>
<li>IntegrationMbeanExporter is not eligible for getting processed by
all BeanPostProcessors warnings are shown when using JMX <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45194">#45194</a></li>
<li>OAuth2AuthorizationServerJwtAutoConfiguration uses
<code>@ConditionalOnClass</code> incorrectly <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45178">#45178</a></li>
<li>MongoDB's dependency management is missing Kotlin coroutine driver
modules <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45159">#45159</a></li>
<li>ImagePlatform can cause &quot;OS must not be empty&quot;
IllegalArgumentException <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45153">#45153</a></li>
<li>TypeUtils does not handle generics with identical names in different
positions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45039">#45039</a></li>
<li>HttpClient5 5.4.3 breaks local Docker transport <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45028">#45028</a></li>
<li>spring.datasource.hikari.data-source-class-name cannot be used as a
driver class name is always required and Hikari does not accept both <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45002">#45002</a></li>
<li>Post-processing to apply custom JdbcConnectionDetails triggers an
NPE in Hikari if the JDBC URL is for an unknown driver <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44998">#44998</a></li>
<li>DataSourceBuilder triggers an NPE in Hikari when trying to build a
DataSource with a JDBC URL for an unknown driver <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44995">#44995</a></li>
<li>SSL config does not watch for symlink file changes <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44887">#44887</a></li>
<li>EmbeddedLdapAutoConfiguration should not rely on PreDestroy <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44874">#44874</a></li>
<li>DataSourceTransactionManagerAutoConfiguration should run after
DataSourceAutoConfiguration <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44819">#44819</a></li>
<li>JsonValueWriter can throw StackOverflowError on deeply nested items
<a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44627">#44627</a></li>
<li>In a reactive web app, SslBundle can no longer open store file
locations without using a 'file:' prefix <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44535">#44535</a></li>
<li>Logging a Path object using structured logging throws
StackOverflowError <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44507">#44507</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Make <code>@Component</code> a javadoc link <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45258">#45258</a></li>
<li>Fix documentation links to buildpacks.io <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45241">#45241</a></li>
<li>Clarify the use of multiple profile expressions with
&quot;spring.config.activate.on-profile&quot; <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45224">#45224</a></li>
<li>Show the use of token properties in authorization server clients
configuration example <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45176">#45176</a></li>
<li>Add details of the purpose of the metrics endpoint <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45047">#45047</a></li>
<li>Escape the asterisk in spring-application.adoc <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45033">#45033</a></li>
<li>Add reference to Styra (OPA) Spring Boot SDK <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44976">#44976</a></li>
<li>Update CDS documentation to cover AOTCache <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44970">#44970</a></li>
<li>WebFlux security documentation incorrectly links to servlet classes
<a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44966">#44966</a></li>
<li>Replace mentions of deprecated MockBean annotation <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44947">#44947</a></li>
<li>TaskExecution documentation should describe what happens when
multiple Executor beans are present <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44908">#44908</a></li>
<li>Documentation lists coordinates for some dependencies that are not
actually managed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44879">#44879</a></li>
<li>Polish javadoc of SpringProfileAction <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44826">#44826</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Upgrade to AspectJ 1.9.24 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45184">#45184</a></li>
<li>Upgrade to Couchbase Client 3.7.9 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45072">#45072</a></li>
<li>Upgrade to Hibernate 6.6.13.Final <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45073">#45073</a></li>
<li>Upgrade to HttpClient5 5.4.3 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45074">#45074</a></li>
<li>Upgrade to HttpCore5 5.3.4 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45075">#45075</a></li>
<li>Upgrade to Jaybird 5.0.7.java11 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45076">#45076</a></li>
<li>Upgrade to Jetty 12.0.19 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45077">#45077</a></li>
<li>Upgrade to jOOQ 3.19.22 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45078">#45078</a></li>
<li>Upgrade to Lombok 1.18.38 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45079">#45079</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/b882c29bdf607d5d4db910f7fd0161143a1329c7"><code>b882c29</code></a>
Release v3.4.5</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/918066f39ae72de5a6e1bae78c841396e049e5b6"><code>918066f</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/ab0c332d9995963d22c202706564be58ff724622"><code>ab0c332</code></a>
Next development version (v3.3.12-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/71acf939ace320fbfa35ce48577ba534469dfc90"><code>71acf93</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/d2eaac6b60d117c3d10939866c70fce6b945eefd"><code>d2eaac6</code></a>
Revert &quot;Upgrade to Netty 4.1.120.Final&quot;</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/d24a38f0f890ef70a07be8236bb9717527f50ba5"><code>d24a38f</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/933572ad5e7da2e47d8efc168a86c8cf6105b062"><code>933572a</code></a>
Upgrade to Netty 4.1.120.Final</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/016b3de968b9b9a6319f7bc58abfb1df007bbc4b"><code>016b3de</code></a>
Upgrade to Netty 4.1.120.Final</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/46a709a8503c096e2514c8cd17b1a7e7e715e7b2"><code>46a709a</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/55f67c9a522647039fd3294dee5cb83f4888160a"><code>55f67c9</code></a>
Fix potential null problem in actuator</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-boot/compare/v3.4.4...v3.4.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `org.springframework.boot:spring-boot-starter-oauth2-client`
from 3.4.4 to 3.4.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-boot/releases">org.springframework.boot:spring-boot-starter-oauth2-client's
releases</a>.</em></p>
<blockquote>
<h2>v3.4.5</h2>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Spring Boot with native image container image build fails on podman
due to directory permissions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45256">#45256</a></li>
<li>Neo4jReactiveDataAutoConfiguration assumes that certain beans are
available <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45235">#45235</a></li>
<li>Wrong jOOQ exception translator with empty db name <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45219">#45219</a></li>
<li>MessageSourceMessageInterpolator does not replace a parameter when
the message matches its code <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45213">#45213</a></li>
<li>IntegrationMbeanExporter is not eligible for getting processed by
all BeanPostProcessors warnings are shown when using JMX <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45194">#45194</a></li>
<li>OAuth2AuthorizationServerJwtAutoConfiguration uses
<code>@ConditionalOnClass</code> incorrectly <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45178">#45178</a></li>
<li>MongoDB's dependency management is missing Kotlin coroutine driver
modules <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45159">#45159</a></li>
<li>ImagePlatform can cause &quot;OS must not be empty&quot;
IllegalArgumentException <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45153">#45153</a></li>
<li>TypeUtils does not handle generics with identical names in different
positions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45039">#45039</a></li>
<li>HttpClient5 5.4.3 breaks local Docker transport <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45028">#45028</a></li>
<li>spring.datasource.hikari.data-source-class-name cannot be used as a
driver class name is always required and Hikari does not accept both <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45002">#45002</a></li>
<li>Post-processing to apply custom JdbcConnectionDetails triggers an
NPE in Hikari if the JDBC URL is for an unknown driver <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44998">#44998</a></li>
<li>DataSourceBuilder triggers an NPE in Hikari when trying to build a
DataSource with a JDBC URL for an unknown driver <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44995">#44995</a></li>
<li>SSL config does not watch for symlink file changes <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44887">#44887</a></li>
<li>EmbeddedLdapAutoConfiguration should not rely on PreDestroy <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44874">#44874</a></li>
<li>DataSourceTransactionManagerAutoConfiguration should run after
DataSourceAutoConfiguration <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44819">#44819</a></li>
<li>JsonValueWriter can throw StackOverflowError on deeply nested items
<a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44627">#44627</a></li>
<li>In a reactive web app, SslBundle can no longer open store file
locations without using a 'file:' prefix <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44535">#44535</a></li>
<li>Logging a Path object using structured logging throws
StackOverflowError <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44507">#44507</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Make <code>@Component</code> a javadoc link <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45258">#45258</a></li>
<li>Fix documentation links to buildpacks.io <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45241">#45241</a></li>
<li>Clarify the use of multiple profile expressions with
&quot;spring.config.activate.on-profile&quot; <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45224">#45224</a></li>
<li>Show the use of token properties in authorization server clients
configuration example <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45176">#45176</a></li>
<li>Add details of the purpose of the metrics endpoint <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45047">#45047</a></li>
<li>Escape the asterisk in spring-application.adoc <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45033">#45033</a></li>
<li>Add reference to Styra (OPA) Spring Boot SDK <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44976">#44976</a></li>
<li>Update CDS documentation to cover AOTCache <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44970">#44970</a></li>
<li>WebFlux security documentation incorrectly links to servlet classes
<a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44966">#44966</a></li>
<li>Replace mentions of deprecated MockBean annotation <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44947">#44947</a></li>
<li>TaskExecution documentation should describe what happens when
multiple Executor beans are present <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44908">#44908</a></li>
<li>Documentation lists coordinates for some dependencies that are not
actually managed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44879">#44879</a></li>
<li>Polish javadoc of SpringProfileAction <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44826">#44826</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Upgrade to AspectJ 1.9.24 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45184">#45184</a></li>
<li>Upgrade to Couchbase Client 3.7.9 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45072">#45072</a></li>
<li>Upgrade to Hibernate 6.6.13.Final <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45073">#45073</a></li>
<li>Upgrade to HttpClient5 5.4.3 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45074">#45074</a></li>
<li>Upgrade to HttpCore5 5.3.4 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45075">#45075</a></li>
<li>Upgrade to Jaybird 5.0.7.java11 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45076">#45076</a></li>
<li>Upgrade to Jetty 12.0.19 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45077">#45077</a></li>
<li>Upgrade to jOOQ 3.19.22 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45078">#45078</a></li>
<li>Upgrade to Lombok 1.18.38 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45079">#45079</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/b882c29bdf607d5d4db910f7fd0161143a1329c7"><code>b882c29</code></a>
Release v3.4.5</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/918066f39ae72de5a6e1bae78c841396e049e5b6"><code>918066f</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/ab0c332d9995963d22c202706564be58ff724622"><code>ab0c332</code></a>
Next development version (v3.3.12-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/71acf939ace320fbfa35ce48577ba534469dfc90"><code>71acf93</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/d2eaac6b60d117c3d10939866c70fce6b945eefd"><code>d2eaac6</code></a>
Revert &quot;Upgrade to Netty 4.1.120.Final&quot;</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/d24a38f0f890ef70a07be8236bb9717527f50ba5"><code>d24a38f</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/933572ad5e7da2e47d8efc168a86c8cf6105b062"><code>933572a</code></a>
Upgrade to Netty 4.1.120.Final</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/016b3de968b9b9a6319f7bc58abfb1df007bbc4b"><code>016b3de</code></a>
Upgrade to Netty 4.1.120.Final</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/46a709a8503c096e2514c8cd17b1a7e7e715e7b2"><code>46a709a</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/55f67c9a522647039fd3294dee5cb83f4888160a"><code>55f67c9</code></a>
Fix potential null problem in actuator</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-boot/compare/v3.4.4...v3.4.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `org.springframework.boot:spring-boot-starter-test` from 3.4.4
to 3.4.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-boot/releases">org.springframework.boot:spring-boot-starter-test's
releases</a>.</em></p>
<blockquote>
<h2>v3.4.5</h2>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Spring Boot with native image container image build fails on podman
due to directory permissions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45256">#45256</a></li>
<li>Neo4jReactiveDataAutoConfiguration assumes that certain beans are
available <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45235">#45235</a></li>
<li>Wrong jOOQ exception translator with empty db name <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45219">#45219</a></li>
<li>MessageSourceMessageInterpolator does not replace a parameter when
the message matches its code <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45213">#45213</a></li>
<li>IntegrationMbeanExporter is not eligible for getting processed by
all BeanPostProcessors warnings are shown when using JMX <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45194">#45194</a></li>
<li>OAuth2AuthorizationServerJwtAutoConfiguration uses
<code>@ConditionalOnClass</code> incorrectly <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45178">#45178</a></li>
<li>MongoDB's dependency management is missing Kotlin coroutine driver
modules <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45159">#45159</a></li>
<li>ImagePlatform can cause &quot;OS must not be empty&quot;
IllegalArgumentException <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45153">#45153</a></li>
<li>TypeUtils does not handle generics with identical names in different
positions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45039">#45039</a></li>
<li>HttpClient5 5.4.3 breaks local Docker transport <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45028">#45028</a></li>
<li>spring.datasource.hikari.data-source-class-name cannot be used as a
driver class name is always required and Hikari does not accept both <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45002">#45002</a></li>
<li>Post-processing to apply custom JdbcConnectionDetails triggers an
NPE in Hikari if the JDBC URL is for an unknown driver <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44998">#44998</a></li>
<li>DataSourceBuilder triggers an NPE in Hikari when trying to build a
DataSource with a JDBC URL for an unknown driver <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44995">#44995</a></li>
<li>SSL config does not watch for symlink file changes <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44887">#44887</a></li>
<li>EmbeddedLdapAutoConfiguration should not rely on PreDestroy <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44874">#44874</a></li>
<li>DataSourceTransactionManagerAutoConfiguration should run after
DataSourceAutoConfiguration <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44819">#44819</a></li>
<li>JsonValueWriter can throw StackOverflowError on deeply nested items
<a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44627">#44627</a></li>
<li>In a reactive web app, SslBundle can no longer open store file
locations without using a 'file:' prefix <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44535">#44535</a></li>
<li>Logging a Path object using structured logging throws
StackOverflowError <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44507">#44507</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Make <code>@Component</code> a javadoc link <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45258">#45258</a></li>
<li>Fix documentation links to buildpacks.io <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45241">#45241</a></li>
<li>Clarify the use of multiple profile expressions with
&quot;spring.config.activate.on-profile&quot; <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45224">#45224</a></li>
<li>Show the use of token properties in authorization server clients
configuration example <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45176">#45176</a></li>
<li>Add details of the purpose of the metrics endpoint <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45047">#45047</a></li>
<li>Escape the asterisk in spring-application.adoc <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45033">#45033</a></li>
<li>Add reference to Styra (OPA) Spring Boot SDK <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44976">#44976</a></li>
<li>Update CDS documentation to cover AOTCache <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44970">#44970</a></li>
<li>WebFlux security documentation incorrectly links to servlet classes
<a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44966">#44966</a></li>
<li>Replace mentions of deprecated MockBean annotation <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44947">#44947</a></li>
<li>TaskExecution documentation should describe what happens when
multiple Executor beans are present <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44908">#44908</a></li>
<li>Documentation lists coordinates for some dependencies that are not
actually managed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44879">#44879</a></li>
<li>Polish javadoc of SpringProfileAction <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44826">#44826</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Upgrade to AspectJ 1.9.24 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45184">#45184</a></li>
<li>Upgrade to Couchbase Client 3.7.9 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45072">#45072</a></li>
<li>Upgrade to Hibernate 6.6.13.Final <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45073">#45073</a></li>
<li>Upgrade to HttpClient5 5.4.3 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45074">#45074</a></li>
<li>Upgrade to HttpCore5 5.3.4 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45075">#45075</a></li>
<li>Upgrade to Jaybird 5.0.7.java11 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45076">#45076</a></li>
<li>Upgrade to Jetty 12.0.19 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45077">#45077</a></li>
<li>Upgrade to jOOQ 3.19.22 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45078">#45078</a></li>
<li>Upgrade to Lombok 1.18.38 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45079">#45079</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/b882c29bdf607d5d4db910f7fd0161143a1329c7"><code>b882c29</code></a>
Release v3.4.5</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/918066f39ae72de5a6e1bae78c841396e049e5b6"><code>918066f</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/ab0c332d9995963d22c202706564be58ff724622"><code>ab0c332</code></a>
Next development version (v3.3.12-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/71acf939ace320fbfa35ce48577ba534469dfc90"><code>71acf93</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/d2eaac6b60d117c3d10939866c70fce6b945eefd"><code>d2eaac6</code></a>
Revert &quot;Upgrade to Netty 4.1.120.Final&quot;</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/d24a38f0f890ef70a07be8236bb9717527f50ba5"><code>d24a38f</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/933572ad5e7da2e47d8efc168a86c8cf6105b062"><code>933572a</code></a>
Upgrade to Netty 4.1.120.Final</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/016b3de968b9b9a6319f7bc58abfb1df007bbc4b"><code>016b3de</code></a>
Upgrade to Netty 4.1.120.Final</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/46a709a8503c096e2514c8cd17b1a7e7e715e7b2"><code>46a709a</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/55f67c9a522647039fd3294dee5cb83f4888160a"><code>55f67c9</code></a>
Fix potential null problem in actuator</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-boot/compare/v3.4.4...v3.4.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `org.springframework.boot:spring-boot-starter-actuator` from
3.4.4 to 3.4.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-boot/releases">org.springframework.boot:spring-boot-starter-actuator's
releases</a>.</em></p>
<blockquote>
<h2>v3.4.5</h2>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Spring Boot with native image container image build fails on podman
due to directory permissions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45256">#45256</a></li>
<li>Neo4jReactiveDataAutoConfiguration assumes that certain beans are
available <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45235">#45235</a></li>
<li>Wrong jOOQ exception translator with empty db name  <a href="ht...

_Description has been truncated_

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-29 11:39:15 +01:00
dependabot[bot] b7eed4300e Bump docker/build-push-action from 6.15.0 to 6.16.0 (#3442)
Bumps
[docker/build-push-action](https://github.com/docker/build-push-action)
from 6.15.0 to 6.16.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/docker/build-push-action/releases">docker/build-push-action's
releases</a>.</em></p>
<blockquote>
<h2>v6.16.0</h2>
<ul>
<li>Handle no default attestations env var by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/build-push-action/pull/1343">docker/build-push-action#1343</a></li>
<li>Only print secret keys in build summary output by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/build-push-action/pull/1353">docker/build-push-action#1353</a></li>
<li>Bump <code>@​docker/actions-toolkit</code> from 0.56.0 to 0.59.0 in
<a
href="https://redirect.github.com/docker/build-push-action/pull/1352">docker/build-push-action#1352</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/build-push-action/compare/v6.15.0...v6.16.0">https://github.com/docker/build-push-action/compare/v6.15.0...v6.16.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/docker/build-push-action/commit/14487ce63c7a62a4a324b0bfb37086795e31c6c1"><code>14487ce</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1343">#1343</a>
from crazy-max/fix-no-default-attest</li>
<li><a
href="https://github.com/docker/build-push-action/commit/0ec91264d895acf7dfe05d54d8a3cc28f95b6346"><code>0ec9126</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1366">#1366</a>
from crazy-max/pr-assign-author</li>
<li><a
href="https://github.com/docker/build-push-action/commit/b749522b90af1b517f52d8c1e67b2a965cea5eae"><code>b749522</code></a>
pr-assign-author workflow</li>
<li><a
href="https://github.com/docker/build-push-action/commit/c566248492c912e39910ac79e2f05a82260233a8"><code>c566248</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1363">#1363</a>
from crazy-max/fix-codecov</li>
<li><a
href="https://github.com/docker/build-push-action/commit/13275dd76e44afdffdd61da8b8ae8e26ee11671f"><code>13275dd</code></a>
ci: fix missing source for codecov</li>
<li><a
href="https://github.com/docker/build-push-action/commit/67dc78bbaf388b3265f7e1c880e681f4b90d5f48"><code>67dc78b</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1361">#1361</a>
from mschoettle/patch-1</li>
<li><a
href="https://github.com/docker/build-push-action/commit/0760504437ba8d0d98e7d5b625560bdede11b3b5"><code>0760504</code></a>
docs: add validating build configuration example</li>
<li><a
href="https://github.com/docker/build-push-action/commit/1c198f4467ce458288d816cabd773cd574f16977"><code>1c198f4</code></a>
chore: update generated content</li>
<li><a
href="https://github.com/docker/build-push-action/commit/288d9e2e4a70c24711ba959b94c2209b9205347e"><code>288d9e2</code></a>
handle no default attestations env var</li>
<li><a
href="https://github.com/docker/build-push-action/commit/88844b95d8cbbb41035fa9c94e5967a33b92db78"><code>88844b9</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1353">#1353</a>
from crazy-max/summary-secret-keys</li>
<li>Additional commits viewable in <a
href="https://github.com/docker/build-push-action/compare/471d1dc4e07e5cdedd4c2171150001c434f0b7a4...14487ce63c7a62a4a324b0bfb37086795e31c6c1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=docker/build-push-action&package-manager=github_actions&previous-version=6.15.0&new-version=6.16.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-29 11:38:55 +01:00
dependabot[bot] 4673dbb4e7 Bump org.springframework.boot from 3.4.4 to 3.4.5 (#3441)
Bumps
[org.springframework.boot](https://github.com/spring-projects/spring-boot)
from 3.4.4 to 3.4.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-boot/releases">org.springframework.boot's
releases</a>.</em></p>
<blockquote>
<h2>v3.4.5</h2>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Spring Boot with native image container image build fails on podman
due to directory permissions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45256">#45256</a></li>
<li>Neo4jReactiveDataAutoConfiguration assumes that certain beans are
available <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45235">#45235</a></li>
<li>Wrong jOOQ exception translator with empty db name <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45219">#45219</a></li>
<li>MessageSourceMessageInterpolator does not replace a parameter when
the message matches its code <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45213">#45213</a></li>
<li>IntegrationMbeanExporter is not eligible for getting processed by
all BeanPostProcessors warnings are shown when using JMX <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45194">#45194</a></li>
<li>OAuth2AuthorizationServerJwtAutoConfiguration uses
<code>@ConditionalOnClass</code> incorrectly <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45178">#45178</a></li>
<li>MongoDB's dependency management is missing Kotlin coroutine driver
modules <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45159">#45159</a></li>
<li>ImagePlatform can cause &quot;OS must not be empty&quot;
IllegalArgumentException <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45153">#45153</a></li>
<li>TypeUtils does not handle generics with identical names in different
positions <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45039">#45039</a></li>
<li>HttpClient5 5.4.3 breaks local Docker transport <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45028">#45028</a></li>
<li>spring.datasource.hikari.data-source-class-name cannot be used as a
driver class name is always required and Hikari does not accept both <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45002">#45002</a></li>
<li>Post-processing to apply custom JdbcConnectionDetails triggers an
NPE in Hikari if the JDBC URL is for an unknown driver <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44998">#44998</a></li>
<li>DataSourceBuilder triggers an NPE in Hikari when trying to build a
DataSource with a JDBC URL for an unknown driver <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44995">#44995</a></li>
<li>SSL config does not watch for symlink file changes <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44887">#44887</a></li>
<li>EmbeddedLdapAutoConfiguration should not rely on PreDestroy <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44874">#44874</a></li>
<li>DataSourceTransactionManagerAutoConfiguration should run after
DataSourceAutoConfiguration <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44819">#44819</a></li>
<li>JsonValueWriter can throw StackOverflowError on deeply nested items
<a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44627">#44627</a></li>
<li>In a reactive web app, SslBundle can no longer open store file
locations without using a 'file:' prefix <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44535">#44535</a></li>
<li>Logging a Path object using structured logging throws
StackOverflowError <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44507">#44507</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Make <code>@Component</code> a javadoc link <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45258">#45258</a></li>
<li>Fix documentation links to buildpacks.io <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45241">#45241</a></li>
<li>Clarify the use of multiple profile expressions with
&quot;spring.config.activate.on-profile&quot; <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45224">#45224</a></li>
<li>Show the use of token properties in authorization server clients
configuration example <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45176">#45176</a></li>
<li>Add details of the purpose of the metrics endpoint <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45047">#45047</a></li>
<li>Escape the asterisk in spring-application.adoc <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45033">#45033</a></li>
<li>Add reference to Styra (OPA) Spring Boot SDK <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44976">#44976</a></li>
<li>Update CDS documentation to cover AOTCache <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44970">#44970</a></li>
<li>WebFlux security documentation incorrectly links to servlet classes
<a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44966">#44966</a></li>
<li>Replace mentions of deprecated MockBean annotation <a
href="https://redirect.github.com/spring-projects/spring-boot/pull/44947">#44947</a></li>
<li>TaskExecution documentation should describe what happens when
multiple Executor beans are present <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44908">#44908</a></li>
<li>Documentation lists coordinates for some dependencies that are not
actually managed <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44879">#44879</a></li>
<li>Polish javadoc of SpringProfileAction <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/44826">#44826</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Upgrade to AspectJ 1.9.24 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45184">#45184</a></li>
<li>Upgrade to Couchbase Client 3.7.9 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45072">#45072</a></li>
<li>Upgrade to Hibernate 6.6.13.Final <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45073">#45073</a></li>
<li>Upgrade to HttpClient5 5.4.3 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45074">#45074</a></li>
<li>Upgrade to HttpCore5 5.3.4 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45075">#45075</a></li>
<li>Upgrade to Jaybird 5.0.7.java11 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45076">#45076</a></li>
<li>Upgrade to Jetty 12.0.19 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45077">#45077</a></li>
<li>Upgrade to jOOQ 3.19.22 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45078">#45078</a></li>
<li>Upgrade to Lombok 1.18.38 <a
href="https://redirect.github.com/spring-projects/spring-boot/issues/45079">#45079</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/b882c29bdf607d5d4db910f7fd0161143a1329c7"><code>b882c29</code></a>
Release v3.4.5</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/918066f39ae72de5a6e1bae78c841396e049e5b6"><code>918066f</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/ab0c332d9995963d22c202706564be58ff724622"><code>ab0c332</code></a>
Next development version (v3.3.12-SNAPSHOT)</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/71acf939ace320fbfa35ce48577ba534469dfc90"><code>71acf93</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/d2eaac6b60d117c3d10939866c70fce6b945eefd"><code>d2eaac6</code></a>
Revert &quot;Upgrade to Netty 4.1.120.Final&quot;</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/d24a38f0f890ef70a07be8236bb9717527f50ba5"><code>d24a38f</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/933572ad5e7da2e47d8efc168a86c8cf6105b062"><code>933572a</code></a>
Upgrade to Netty 4.1.120.Final</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/016b3de968b9b9a6319f7bc58abfb1df007bbc4b"><code>016b3de</code></a>
Upgrade to Netty 4.1.120.Final</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/46a709a8503c096e2514c8cd17b1a7e7e715e7b2"><code>46a709a</code></a>
Merge branch '3.3.x' into 3.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-boot/commit/55f67c9a522647039fd3294dee5cb83f4888160a"><code>55f67c9</code></a>
Fix potential null problem in actuator</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-boot/compare/v3.4.4...v3.4.5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.springframework.boot&package-manager=gradle&previous-version=3.4.4&new-version=3.4.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-29 11:38:29 +01:00
dependabot[bot] 5b34c00237 Bump actions/download-artifact from 4.2.1 to 4.3.0 (#3443)
Bumps
[actions/download-artifact](https://github.com/actions/download-artifact)
from 4.2.1 to 4.3.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/download-artifact/releases">actions/download-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v4.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: implement new <code>artifact-ids</code> input by <a
href="https://github.com/GrantBirki"><code>@​GrantBirki</code></a> in <a
href="https://redirect.github.com/actions/download-artifact/pull/401">actions/download-artifact#401</a></li>
<li>Fix workflow example for downloading by artifact ID by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/download-artifact/pull/402">actions/download-artifact#402</a></li>
<li>Prep for v4.3.0 release by <a
href="https://github.com/robherley"><code>@​robherley</code></a> in <a
href="https://redirect.github.com/actions/download-artifact/pull/404">actions/download-artifact#404</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/GrantBirki"><code>@​GrantBirki</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/download-artifact/pull/401">actions/download-artifact#401</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/download-artifact/compare/v4.2.1...v4.3.0">https://github.com/actions/download-artifact/compare/v4.2.1...v4.3.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/download-artifact/commit/d3f86a106a0bac45b974a628896c90dbdf5c8093"><code>d3f86a1</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/404">#404</a>
from actions/robherley/v4.3.0</li>
<li><a
href="https://github.com/actions/download-artifact/commit/fc02353415da80201a0da48ab47022efd7725d11"><code>fc02353</code></a>
prep for v4.3.0 release</li>
<li><a
href="https://github.com/actions/download-artifact/commit/77454371a433f370a16d329ef7db197f700a7a8f"><code>7745437</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/402">#402</a>
from actions/joshmgross/download-by-id-example</li>
<li><a
href="https://github.com/actions/download-artifact/commit/84fc7a0a358aabc7f97f7f590cbfc25f57e26c6a"><code>84fc7a0</code></a>
Remove path filters from Check dist workflow</li>
<li><a
href="https://github.com/actions/download-artifact/commit/67f2bc382f6ba5ba75812a05909e8c25a366b5fb"><code>67f2bc3</code></a>
Fix workflow example for downloading by artifact ID</li>
<li><a
href="https://github.com/actions/download-artifact/commit/8ea3c2c174f79a56792e9fdd9baad75d27c5d369"><code>8ea3c2c</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/401">#401</a>
from actions/download-by-id</li>
<li><a
href="https://github.com/actions/download-artifact/commit/d219c630f65d8bd14366a9e2f731cbf854f62258"><code>d219c63</code></a>
add supporting unit tests for artifact downloads with ids</li>
<li><a
href="https://github.com/actions/download-artifact/commit/54124fbd881f8ce794405a06896c93c49c17463e"><code>54124fb</code></a>
revert <code>getArtifact()</code> changes - for now we have to list and
filter by artifa...</li>
<li><a
href="https://github.com/actions/download-artifact/commit/b83057b90d3e218abf5c7b1906579eb6c598ae85"><code>b83057b</code></a>
bundle</li>
<li><a
href="https://github.com/actions/download-artifact/commit/171183c7dce98c3cf8a1fc842429d0a38ed21d33"><code>171183c</code></a>
use the same <code>artifactClient.getArtifact</code> structure as seen
above in `isSingl...</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/download-artifact/compare/95815c38cf2ff2164869cbab79da8d1f422bc89e...d3f86a106a0bac45b974a628896c90dbdf5c8093">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/download-artifact&package-manager=github_actions&previous-version=4.2.1&new-version=4.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-29 11:37:16 +01:00
José Nuno Barbosa Quintas a1118b861e Multi tool select buttons bug (#3404)
# Description of Changes

Changes:
- In the multitool page, the behavior of the "Select/Deselect All"
buttons was changed so that if no pages are selected, then the "Deselect
All" button is disabled, and if all pages are selected, then the "Select
All" button is disabled.
- These buttons will also appear if the "Page Select" is turned on,
either by pressing the "Page Select" button or manually selecting one
page.
- Furthermore, a bug that caused the pages to remain selected when "Page
Select" is off was also fixed

Why the changes were made:
- The multitool did not allow the "Select All" or "Deselect All" button
to appear simultaneously. The multitool was relying on a toggle mechanic
for the Page Selection and this could prevent the user from selecting or
deselecting all pages as intended, if they manually select/deselect one
or more pages.

Other challenges:
- No particular challenges encountered

Relevant Screenshots:


![Screenshot_1](https://github.com/user-attachments/assets/47e1a4ad-fdfb-460a-9302-80a99f732874)
*Fig. 1 - Only "Select All" button appears when Page Select is turned
on, since no pages are selected*


![Screenshot_2](https://github.com/user-attachments/assets/7174b492-f503-4a19-9bc8-56e18fba64e9)
*Fig. 2 - Both "Select All" and "Deselect All" buttons appear when one
or more, but not all pages are selected*


![Screenshot_3](https://github.com/user-attachments/assets/8157ef49-3268-4fa1-b8df-c7f078237141)
*Fig. 3 - Only "Deselect All" button appears when all pages are
selected*


![Screenshot_4](https://github.com/user-attachments/assets/61b69e6a-1536-47b0-bf11-3dd56df8e365)
*Fig. 4 - When Page Select is turned off, both "Select All" and
"Deselect All" buttons disappear and all pages are deselected*


Closes #3206 

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### UI Changes (if applicable)

- [x] 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](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-04-28 22:44:51 +01:00
stirlingbot[bot] d13a52f892 🌐 Sync Translations + Update README Progress Table (#3418)
### Description of Changes

This Pull Request was automatically generated to synchronize updates to
translation files and documentation. Below are the details of the
changes made:

#### **1. Synchronization of Translation Files**
- Updated translation files (`messages_*.properties`) to reflect changes
in the reference file `messages_en_GB.properties`.
- Ensured consistency and synchronization across all supported language
files.
- Highlighted any missing or incomplete translations.

#### **2. Update README.md**
- Generated the translation progress table in `README.md`.
- Added a summary of the current translation status for all supported
languages.
- Included up-to-date statistics on translation coverage.

#### **Why these changes are necessary**
- Keeps translation files aligned with the latest reference updates.
- Ensures the documentation reflects the current translation progress.

---

Auto-generated by [create-pull-request][1].

[1]: https://github.com/peter-evans/create-pull-request

Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-04-28 21:56:27 +01:00
stirlingbot[bot] d051d48fcd 🤖 format everything with pre-commit by <stirlingbot> (#3429)
Auto-generated by [create-pull-request][1] with **stirlingbot**

[1]: https://github.com/peter-evans/create-pull-request

Signed-off-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-04-28 10:29:37 +01:00
Ludy 0b81dfdf7c Upgrade Gradle to 8.14 in CI Workflows and Gradle Wrapper (#3425)
# Description of Changes

This pull request upgrades the Gradle build system from version 8.12 to
8.14 across the Stirling-PDF project to enhance build stability,
compatibility, and performance. The changes include:

- **What was changed**:
- Updated the Gradle wrapper version in
`gradle/wrapper/gradle-wrapper.properties` from `8.12` to `8.14`.
- Modified the `tasks.wrapper` configuration in `build.gradle` to
specify `gradleVersion = "8.14"`.
- Updated Gradle version references in GitHub Actions workflows
(`multiOSReleases.yml`, `push-docker.yml`, `releaseArtifacts.yml`) from
`8.12` to `8.14` to ensure consistent CI/CD builds.

- **Why the change was made**:
- Gradle 8.14 includes bug fixes, performance improvements, and enhanced
compatibility with newer JDK versions (e.g., Java 17 and 21, as
supported by Stirling-PDF).
- Ensures alignment with the latest Gradle features and security
patches, reducing potential build issues in development and CI/CD
environments.
- Supports the project's recommendation to use newer JDK versions (e.g.,
Java 21) and improves integration with the Foojay Toolchains Plugin.

- **Challenges encountered**:
- Verified compatibility of Gradle 8.14 with existing plugins (e.g.,
`org.springframework.boot`, `org.sonarqube`, `com.diffplug.spotless`) to
ensure no breaking changes.
- Tested CI/CD workflows to confirm that the updated Gradle version does
not introduce failures in build, test, or deployment pipelines.
- Ensured the Gradle wrapper distribution URL is correctly updated to
avoid download issues.


---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-04-27 16:17:07 +01:00
pixeebot[bot] 29803562eb (Snyk) Fixed finding: "Improper Neutralization of CRLF Sequences in HTTP Headers" (#3424)
## Remediation

This change fixes "Improper Neutralization of CRLF Sequences in HTTP
Headers" (id = java/HttpResponseSplitting) identified by Snyk.

## Details

This change ensures that HTTP response header values can't contain
newline characters, leaving you vulnerable to HTTP response splitting
and other attacks.

If malicious users can get newline characters into an HTTP response
header, they can inject and forge new header values that look like they
came from the server, and trick web gateways, proxies, and browsers.
This leads to vulnerabilities like Cross-site Scripting (XSS), HTTP
response splitting, and more attacks from there.

Our change simply makes sure that if the string passed to be a new
response header value is non-null, all the newline characters (CR and
LF) will be removed:
```diff
+ import io.github.pixee.security.Newlines;
  ...
  String orderId = getUserOrderId();
- response.setHeader("X-Acme-Order-ID", orderId);
+ response.setHeader("X-Acme-Order-ID", Newlines.stripAll(orderId));
```

Note: Many modern application servers will sanitize these values, but
it's almost never specified in documentation, and thus there is little
guarantee against regression. Given that, we still recommend this
practice.

<details>
  <summary>More reading</summary>

*
[https://cwe.mitre.org/data/definitions/113](https://cwe.mitre.org/data/definitions/113)
*
[https://www.netsparker.com/blog/web-security/crlf-http-header/](https://www.netsparker.com/blog/web-security/crlf-http-header/)
*
[https://owasp.org/www-community/attacks/HTTP_Response_Splitting](https://owasp.org/www-community/attacks/HTTP_Response_Splitting)
*
[https://regilero.github.io/security/english/2015/10/04/http_smuggling_in_2015_part_one/](https://regilero.github.io/security/english/2015/10/04/http_smuggling_in_2015_part_one/)
</details>

Co-authored-by: pixeebot[bot] <104101892+pixeebot[bot]@users.noreply.github.com>
2025-04-26 23:25:03 +01:00
Ludy 5f8b208db4 Refactor codebase to replace explicit constructors with Lombok annotations and remove boilerplat (#3415)
# Description of Changes

- **What was changed:**  
- Removed explicit constructor definitions annotated with `@Autowired`
across services, controllers, filters, and schedulers.
- Added Lombok’s `@RequiredArgsConstructor` to automatically generate
required-args constructors and eliminate boilerplate.
- Introduced other Lombok annotations (`@Data`, `@Getter`, `@Setter`,
`@EqualsAndHashCode`, `@NoArgsConstructor`) on model and API classes to
replace manual getters/setters and constructors.
- Standardized string comparisons to use the constant-first form (e.g.,
`"value".equals(variable)`).
- Cleaned up unused imports and organized OpenAPI configuration by
extracting default title/description constants.

- **Why the change was made:**  
  - To reduce repetitive boilerplate code and improve maintainability.  
- To leverage Lombok for cleaner, more consistent dependency injection
and data modeling.
  - To ensure a uniform coding style across the entire codebase.

#3406

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code  
- [x] My changes generate no new warnings  

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### UI Changes (if applicable)

- [ ] Screenshots or videos demonstrating the UI changes are attached  

### Testing (if applicable)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-04-25 14:35:12 +01:00
Ludy ec88a272be Update German properties (#3416)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-04-25 14:06:21 +01:00
tkymmm 923696f324 Update messages_ja_JP.properties (#3417)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-04-25 14:06:04 +01:00
stirlingbot[bot] 2354ad8254 Update 3rd Party Licenses (#3414)
Auto-generated by StirlingBot

Signed-off-by: stirlingbot[bot] <1113334+stirlingbot[bot]@users.noreply.github.com>
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-04-24 12:48:08 +01:00
dependabot[bot] 1611a82a98 Bump github/codeql-action from 3.28.15 to 3.28.16 (#3413)
Bumps [github/codeql-action](https://github.com/github/codeql-action)
from 3.28.15 to 3.28.16.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v3.28.16</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>3.28.16 - 23 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2863">#2863</a></li>
</ul>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v3.28.16/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>3.28.16 - 23 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.1. <a
href="https://redirect.github.com/github/codeql-action/pull/2863">#2863</a></li>
</ul>
<h2>3.28.15 - 07 Apr 2025</h2>
<ul>
<li>Fix bug where the action would fail if it tried to produce a debug
artifact with more than 65535 files. <a
href="https://redirect.github.com/github/codeql-action/pull/2842">#2842</a></li>
</ul>
<h2>3.28.14 - 07 Apr 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.21.0. <a
href="https://redirect.github.com/github/codeql-action/pull/2838">#2838</a></li>
</ul>
<h2>3.28.13 - 24 Mar 2025</h2>
<p>No user facing changes.</p>
<h2>3.28.12 - 19 Mar 2025</h2>
<ul>
<li>Dependency caching should now cache more dependencies for Java
<code>build-mode: none</code> extractions. This should speed up
workflows and avoid inconsistent alerts in some cases.</li>
<li>Update default CodeQL bundle version to 2.20.7. <a
href="https://redirect.github.com/github/codeql-action/pull/2810">#2810</a></li>
</ul>
<h2>3.28.11 - 07 Mar 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.20.6. <a
href="https://redirect.github.com/github/codeql-action/pull/2793">#2793</a></li>
</ul>
<h2>3.28.10 - 21 Feb 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.20.5. <a
href="https://redirect.github.com/github/codeql-action/pull/2772">#2772</a></li>
<li>Address an issue where the CodeQL Bundle would occasionally fail to
decompress on macOS. <a
href="https://redirect.github.com/github/codeql-action/pull/2768">#2768</a></li>
</ul>
<h2>3.28.9 - 07 Feb 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.20.4. <a
href="https://redirect.github.com/github/codeql-action/pull/2753">#2753</a></li>
</ul>
<h2>3.28.8 - 29 Jan 2025</h2>
<ul>
<li>Enable support for Kotlin 2.1.10 when running with CodeQL CLI
v2.20.3. <a
href="https://redirect.github.com/github/codeql-action/pull/2744">#2744</a></li>
</ul>
<h2>3.28.7 - 29 Jan 2025</h2>
<p>No user facing changes.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/28deaeda66b76a05916b6923827895f2b14ab387"><code>28deaed</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2865">#2865</a>
from github/update-v3.28.16-2a8cbadc0</li>
<li><a
href="https://github.com/github/codeql-action/commit/03c5d71c11f6cb2c5ba7eef371219a862be30193"><code>03c5d71</code></a>
Update changelog for v3.28.16</li>
<li><a
href="https://github.com/github/codeql-action/commit/2a8cbadc02bb64a7fd15d37c977acbad02496c80"><code>2a8cbad</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2863">#2863</a>
from github/update-bundle/codeql-bundle-v2.21.1</li>
<li><a
href="https://github.com/github/codeql-action/commit/f76eaf51a636a5c1d927998267d92d6475363ace"><code>f76eaf5</code></a>
Add changelog note</li>
<li><a
href="https://github.com/github/codeql-action/commit/e63b3f5166c15fda4eb17886f01abe9445dd13f5"><code>e63b3f5</code></a>
Update default bundle to codeql-bundle-v2.21.1</li>
<li><a
href="https://github.com/github/codeql-action/commit/4c3e5362829f0b0bb62ff5f6c938d7f95574c306"><code>4c3e536</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2853">#2853</a>
from github/dependabot/npm_and_yarn/npm-7d84c66b66</li>
<li><a
href="https://github.com/github/codeql-action/commit/56dd02f26d99811d607284494ff84b7d862fe837"><code>56dd02f</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2852">#2852</a>
from github/dependabot/github_actions/actions-457587...</li>
<li><a
href="https://github.com/github/codeql-action/commit/192406dd845fb2228fcea74898b98df2a6cdcef6"><code>192406d</code></a>
Merge branch 'main' into
dependabot/github_actions/actions-4575878e06</li>
<li><a
href="https://github.com/github/codeql-action/commit/c7dbb2084ed1bb623fbbb3976cd6dbae6daaf1fe"><code>c7dbb20</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/2857">#2857</a>
from github/nickfyson/address-vulns</li>
<li><a
href="https://github.com/github/codeql-action/commit/9a45cd8c5025281c30bbb652197ace083c291e49"><code>9a45cd8</code></a>
move use of input variables into env vars</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/45775bd8235c68ba998cffa5171334d58593da47...28deaeda66b76a05916b6923827895f2b14ab387">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=3.28.15&new-version=3.28.16)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-24 12:47:53 +01:00
dependabot[bot] f5aaa4612a Bump org.springframework.session:spring-session-core from 3.4.2 to 3.4.3 (#3412)
Bumps
[org.springframework.session:spring-session-core](https://github.com/spring-projects/spring-session)
from 3.4.2 to 3.4.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-session/releases">org.springframework.session:spring-session-core's
releases</a>.</em></p>
<blockquote>
<h2>3.4.3</h2>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Bump ch-qos-logback from 1.5.16 to 1.5.17 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3345">#3345</a></li>
<li>Bump ch-qos-logback from 1.5.17 to 1.5.18 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3354">#3354</a></li>
<li>Bump io.projectreactor:reactor-bom from 2023.0.15 to 2023.0.16 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3348">#3348</a></li>
<li>Bump io.projectreactor:reactor-core from 3.6.14 to 3.6.15 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3349">#3349</a></li>
<li>Bump org-slf4j from 2.0.16 to 2.0.17 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3344">#3344</a></li>
<li>Bump org-springframework-boot from 3.3.8 to 3.3.9 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3343">#3343</a></li>
<li>Bump org-springframework-boot from 3.3.9 to 3.3.10 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3356">#3356</a></li>
<li>Bump org.aspectj:aspectjweaver from 1.9.22.1 to 1.9.23 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3350">#3350</a></li>
<li>Bump org.jfrog.buildinfo:build-info-extractor-gradle from 4.33.23 to
4.33.24 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3346">#3346</a></li>
<li>Bump org.mariadb.jdbc:mariadb-java-client from 3.3.3 to 3.3.4 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3365">#3365</a></li>
<li>Bump org.springframework.data:spring-data-bom from 2024.1.3 to
2024.1.4 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3352">#3352</a></li>
<li>Bump org.springframework.security:spring-security-bom from 6.4.2 to
6.4.3 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3342">#3342</a></li>
<li>Bump org.springframework.security:spring-security-bom from 6.4.3 to
6.4.4 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3353">#3353</a></li>
<li>Bump org.springframework:spring-framework-bom from 6.2.3 to 6.2.4 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3351">#3351</a></li>
<li>Bump org.springframework:spring-framework-bom from 6.2.4 to 6.2.5 <a
href="https://redirect.github.com/spring-projects/spring-session/pull/3355">#3355</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-session/commit/38b494e8707900997c72dc37120130d61877f78f"><code>38b494e</code></a>
Release 3.4.3</li>
<li><a
href="https://github.com/spring-projects/spring-session/commit/f3536d97d6b2568c0e727173f1abfc23749760e8"><code>f3536d9</code></a>
Bump io.projectreactor:reactor-core from 3.6.14 to 3.6.15</li>
<li><a
href="https://github.com/spring-projects/spring-session/commit/d2528b46ba051f6c37ab820e8ded7de715b0c69b"><code>d2528b4</code></a>
Bump org.mariadb.jdbc:mariadb-java-client from 3.3.3 to 3.3.4</li>
<li><a
href="https://github.com/spring-projects/spring-session/commit/2353d8b3cec4f0ed104c45f10d01acf278fe1dad"><code>2353d8b</code></a>
Bump spring-io/spring-doc-actions from 0.0.18 to 0.0.19</li>
<li><a
href="https://github.com/spring-projects/spring-session/commit/1ce75dea70c9b2b7e2d7de76ba6c648d94ef14ac"><code>1ce75de</code></a>
Bump org-springframework-boot from 3.3.9 to 3.3.10</li>
<li><a
href="https://github.com/spring-projects/spring-session/commit/e0efae790d89339ac064888101323bbc69146ca6"><code>e0efae7</code></a>
Bump org.springframework:spring-framework-bom from 6.2.4 to 6.2.5</li>
<li><a
href="https://github.com/spring-projects/spring-session/commit/98e03e63642ee71baf2f439c28c4f59e1d1740fb"><code>98e03e6</code></a>
Bump ch-qos-logback from 1.5.17 to 1.5.18</li>
<li><a
href="https://github.com/spring-projects/spring-session/commit/e642b66a87593adf794c87e045cb9a14ef4da106"><code>e642b66</code></a>
Bump org.springframework.security:spring-security-bom</li>
<li><a
href="https://github.com/spring-projects/spring-session/commit/64b7df57658c5f808e6d3c30ddc38d76bd6bcce2"><code>64b7df5</code></a>
Bump org.springframework.data:spring-data-bom from 2024.1.3 to
2024.1.4</li>
<li><a
href="https://github.com/spring-projects/spring-session/commit/ae92843e9d6a8d0b4b04814828f9189dc27af001"><code>ae92843</code></a>
Bump org.springframework:spring-framework-bom from 6.2.3 to 6.2.4</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-session/compare/3.4.2...3.4.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.springframework.session:spring-session-core&package-manager=gradle&previous-version=3.4.2&new-version=3.4.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-24 12:36:32 +01:00
dependabot[bot] da70980be4 Bump sigstore/cosign-installer from 3.8.1 to 3.8.2 (#3411)
Bumps
[sigstore/cosign-installer](https://github.com/sigstore/cosign-installer)
from 3.8.1 to 3.8.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/sigstore/cosign-installer/releases">sigstore/cosign-installer's
releases</a>.</em></p>
<blockquote>
<h2>v3.8.2</h2>
<h2>What's Changed</h2>
<ul>
<li>install cosign v2 from main in <a
href="https://redirect.github.com/sigstore/cosign-installer/pull/186">sigstore/cosign-installer#186</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/sigstore/cosign-installer/compare/v3...v3.8.2">https://github.com/sigstore/cosign-installer/compare/v3...v3.8.2</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/sigstore/cosign-installer/commit/3454372f43399081ed03b604cb2d021dabca52bb"><code>3454372</code></a>
install cosign v2 from main (<a
href="https://redirect.github.com/sigstore/cosign-installer/issues/186">#186</a>)</li>
<li><a
href="https://github.com/sigstore/cosign-installer/commit/b6ee8f83b9a8b8ef7f46b5a8ff326f488b386693"><code>b6ee8f8</code></a>
Bump actions/setup-go from 5.3.0 to 5.4.0 (<a
href="https://redirect.github.com/sigstore/cosign-installer/issues/185">#185</a>)</li>
<li>See full diff in <a
href="https://github.com/sigstore/cosign-installer/compare/d7d6bc7722e3daa8354c50bcb52f4837da5e9b6a...3454372f43399081ed03b604cb2d021dabca52bb">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sigstore/cosign-installer&package-manager=github_actions&previous-version=3.8.1&new-version=3.8.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-24 12:36:14 +01:00
dependabot[bot] f8dbc05006 Bump actions/setup-python from 5.5.0 to 5.6.0 (#3410)
Bumps [actions/setup-python](https://github.com/actions/setup-python)
from 5.5.0 to 5.6.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/setup-python/releases">actions/setup-python's
releases</a>.</em></p>
<blockquote>
<h2>v5.6.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Workflow updates related to Ubuntu 20.04 by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-python/pull/1065">actions/setup-python#1065</a></li>
<li>Fix for Candidate Not Iterable Error by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-python/pull/1082">actions/setup-python#1082</a></li>
<li>Upgrade semver and <code>@​types/semver</code> by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-python/pull/1091">actions/setup-python#1091</a></li>
<li>Upgrade prettier from 2.8.8 to 3.5.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-python/pull/1046">actions/setup-python#1046</a></li>
<li>Upgrade ts-jest from 29.1.2 to 29.3.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-python/pull/1081">actions/setup-python#1081</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-python/compare/v5...v5.6.0">https://github.com/actions/setup-python/compare/v5...v5.6.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/setup-python/commit/a26af69be951a213d495a4c3e4e4022e16d87065"><code>a26af69</code></a>
Bump ts-jest from 29.1.2 to 29.3.2 (<a
href="https://redirect.github.com/actions/setup-python/issues/1081">#1081</a>)</li>
<li><a
href="https://github.com/actions/setup-python/commit/30eafe95483bd95135b7eda0c66a0369af9afdf1"><code>30eafe9</code></a>
Bump prettier from 2.8.8 to 3.5.3 (<a
href="https://redirect.github.com/actions/setup-python/issues/1046">#1046</a>)</li>
<li><a
href="https://github.com/actions/setup-python/commit/5d95bc16d4bc83bb56202da9630d84c6f8a2d8f5"><code>5d95bc1</code></a>
Bump semver and <code>@​types/semver</code> (<a
href="https://redirect.github.com/actions/setup-python/issues/1091">#1091</a>)</li>
<li><a
href="https://github.com/actions/setup-python/commit/6ed2c67c8abe7646815dbd50364eea862d396fd9"><code>6ed2c67</code></a>
Fix for Candidate Not Iterable Error (<a
href="https://redirect.github.com/actions/setup-python/issues/1082">#1082</a>)</li>
<li><a
href="https://github.com/actions/setup-python/commit/e348410e00f449ece8581cb8e88be8f0e7712da6"><code>e348410</code></a>
Remove Ubuntu 20.04 from workflows due to deprecation from 2025-04-15
(<a
href="https://redirect.github.com/actions/setup-python/issues/1065">#1065</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/setup-python/compare/8d9ed9ac5c53483de85588cdf95a591a75ab9f55...a26af69be951a213d495a4c3e4e4022e16d87065">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/setup-python&package-manager=github_actions&previous-version=5.5.0&new-version=5.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-24 12:35:47 +01:00
stirlingbot[bot] 1946ff679c Update 3rd Party Licenses (#3408)
Auto-generated by StirlingBot

Signed-off-by: stirlingbot[bot] <1113334+stirlingbot[bot]@users.noreply.github.com>
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-04-24 10:52:13 +01:00
stirlingbot[bot] a2c0bea0e5 🌐 Sync Translations + Update README Progress Table (#3409)
### Description of Changes

This Pull Request was automatically generated to synchronize updates to
translation files and documentation. Below are the details of the
changes made:

#### **1. Synchronization of Translation Files**
- Updated translation files (`messages_*.properties`) to reflect changes
in the reference file `messages_en_GB.properties`.
- Ensured consistency and synchronization across all supported language
files.
- Highlighted any missing or incomplete translations.

#### **2. Update README.md**
- Generated the translation progress table in `README.md`.
- Added a summary of the current translation status for all supported
languages.
- Included up-to-date statistics on translation coverage.

#### **Why these changes are necessary**
- Keeps translation files aligned with the latest reference updates.
- Ensures the documentation reflects the current translation progress.

---

Auto-generated by [create-pull-request][1].

[1]: https://github.com/peter-evans/create-pull-request

---------

Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-04-24 10:50:22 +01:00
dependabot[bot] 119dd23d9a Bump org.springframework.security:spring-security-saml2-service-provider from 6.4.4 to 6.4.5 (#3393)
Bumps
[org.springframework.security:spring-security-saml2-service-provider](https://github.com/spring-projects/spring-security)
from 6.4.4 to 6.4.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-security/releases">org.springframework.security:spring-security-saml2-service-provider's
releases</a>.</em></p>
<blockquote>
<h2>6.4.5</h2>
<h2> New Features</h2>
<ul>
<li>Add link to docs zip file to the reference <a
href="https://redirect.github.com/spring-projects/spring-security/issues/16799">#16799</a></li>
<li>Fix attribute name in <code>http.adoc</code> <a
href="https://redirect.github.com/spring-projects/spring-security/issues/16784">#16784</a></li>
<li>Update ServerOAuth2AuthorizedClientExchangeFilterFunction javadoc <a
href="https://redirect.github.com/spring-projects/spring-security/issues/16783">#16783</a></li>
</ul>
<h2>🪲 Bug Fixes</h2>
<ul>
<li>[Docs] Broken link on Spring MVC Test Integration page <a
href="https://redirect.github.com/spring-projects/spring-security/issues/16785">#16785</a></li>
<li><code>ServerBearerTokenAuthenticationConverter</code> validates
parameters when not enabled <a
href="https://redirect.github.com/spring-projects/spring-security/issues/16901">#16901</a></li>
<li>Clarify WebInvocationPrivilegeEvaluator JavaDoc <a
href="https://redirect.github.com/spring-projects/spring-security/issues/16782">#16782</a></li>
<li>CookieServerCsrfTokenRepository.withHttpOnlyFalse() ineffective if
setCookieCustomizer() is used <a
href="https://redirect.github.com/spring-projects/spring-security/issues/16862">#16862</a></li>
<li>Correct closing tag in default PassKey HTML form <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16601">#16601</a></li>
<li>Fix WebAuthn saves Anonymous PublicKeyCredentialUserEntity <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16606">#16606</a></li>
<li>OpenSaml support should preserve encrypted elements for further
analysis <a
href="https://redirect.github.com/spring-projects/spring-security/issues/16367">#16367</a></li>
<li>Sorting in AuthorizationAdvisorProxyFactory should be thread-safe <a
href="https://redirect.github.com/spring-projects/spring-security/issues/16837">#16837</a></li>
<li>WebFlux reference links to Servlet docs <a
href="https://redirect.github.com/spring-projects/spring-security/issues/16786">#16786</a></li>
<li>XML config does not apply <code>request-handler-ref</code> to
<code>CsrfAuthenticationStrategy</code> <a
href="https://redirect.github.com/spring-projects/spring-security/issues/16844">#16844</a></li>
</ul>
<h2>🔨 Dependency Upgrades</h2>
<ul>
<li>Bump ch.qos.logback:logback-classic from 1.5.17 to 1.5.18 <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16767">#16767</a></li>
<li>Bump io.micrometer:micrometer-observation from 1.14.5 to 1.14.6 <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16938">#16938</a></li>
<li>Bump io.projectreactor:reactor-bom from 2023.0.16 to 2023.0.17 <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16944">#16944</a></li>
<li>Bump io.spring.gradle:spring-security-release-plugin from 1.0.3 to
1.0.4 <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16919">#16919</a></li>
<li>Bump org-aspectj from 1.9.22.1 to 1.9.24 <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16928">#16928</a></li>
<li>Bump org-eclipse-jetty from 11.0.24 to 11.0.25 <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16758">#16758</a></li>
<li>Bump org.hibernate.orm:hibernate-core from 6.6.12.Final to
6.6.13.Final <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16895">#16895</a></li>
<li>Bump org.springframework.ldap:spring-ldap-core from 3.2.11 to 3.2.12
<a
href="https://redirect.github.com/spring-projects/spring-security/pull/16960">#16960</a></li>
<li>Bump org.springframework:spring-framework-bom from 6.2.5 to 6.2.6 <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16959">#16959</a></li>
</ul>
<h2>🔩 Build Updates</h2>
<ul>
<li>Bump spring-io/spring-doc-actions from 0.0.19 to 0.0.20 <a
href="https://redirect.github.com/spring-projects/spring-security/pull/16894">#16894</a></li>
<li>Release 6.4.5 <a
href="https://redirect.github.com/spring-projects/spring-security/issues/16972">#16972</a></li>
</ul>
<h2>❤️ Contributors</h2>
<p>Thank you to all the contributors who worked on this release:</p>
<p><a href="https://github.com/AB-xdev"><code>@​AB-xdev</code></a>, <a
href="https://github.com/Borghii"><code>@​Borghii</code></a>, and <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-security/commit/e8aef09b4fe24337b42dd6556b79523bd550024b"><code>e8aef09</code></a>
Release 6.4.5</li>
<li><a
href="https://github.com/spring-projects/spring-security/commit/f8d417dc03175f3de9cbe372732d80594c891954"><code>f8d417d</code></a>
Preserve Encrypted Elements</li>
<li><a
href="https://github.com/spring-projects/spring-security/commit/79bacf8204f1e01c0c7ecae285b33fbb571460b9"><code>79bacf8</code></a>
Bump org.springframework:spring-framework-bom from 6.2.5 to 6.2.6</li>
<li><a
href="https://github.com/spring-projects/spring-security/commit/9bcfeab1d68606113d256e1a3defc985866da309"><code>9bcfeab</code></a>
Bump org.springframework.ldap:spring-ldap-core from 3.2.11 to
3.2.12</li>
<li><a
href="https://github.com/spring-projects/spring-security/commit/254c9c9b2d427fe071f5ef4f5af5f1112c6703c2"><code>254c9c9</code></a>
Merge branch '6.3.x' into 6.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-security/commit/a5d963387b8fd7d66000f566f6cae77f8cee0f5b"><code>a5d9633</code></a>
Bump org.springframework:spring-framework-bom from 6.1.18 to 6.1.19</li>
<li><a
href="https://github.com/spring-projects/spring-security/commit/e5d9659b8f3a42eff30e1921509fb6ea9bafce26"><code>e5d9659</code></a>
Merge branch '6.3.x' into 6.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-security/commit/99c4f58c342cf93e4fe8165dd817aa3be1ba84d0"><code>99c4f58</code></a>
Bump org.springframework.ldap:spring-ldap-core from 3.2.11 to
3.2.12</li>
<li><a
href="https://github.com/spring-projects/spring-security/commit/cb60d8b3ed1de5fe1c0fe13cf6f86299c55b037e"><code>cb60d8b</code></a>
Merge branch '6.3.x' into 6.4.x</li>
<li><a
href="https://github.com/spring-projects/spring-security/commit/c1aa99fdd2113a232986e9c3a44673ae752de840"><code>c1aa99f</code></a>
Enforce BCrypt password length for new passwords only</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-security/compare/6.4.4...6.4.5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.springframework.security:spring-security-saml2-service-provider&package-manager=gradle&previous-version=6.4.4&new-version=6.4.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-24 10:48:28 +01:00
dependabot[bot] 62ec512dda Bump step-security/harden-runner from 2.11.1 to 2.12.0 (#3394)
Bumps
[step-security/harden-runner](https://github.com/step-security/harden-runner)
from 2.11.1 to 2.12.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/step-security/harden-runner/releases">step-security/harden-runner's
releases</a>.</em></p>
<blockquote>
<h2>v2.12.0</h2>
<h2>What's Changed</h2>
<ol>
<li>
<p>A new option, <code>disable-sudo-and-containers</code>, is now
available to replace the <code>disable-sudo policy</code>, addressing
Docker-based privilege escalation (<a
href="https://github.com/step-security/harden-runner/security/advisories/GHSA-mxr3-8whj-j74r">CVE-2025-32955</a>).
More details can be found in this <a
href="https://www.stepsecurity.io/blog/evolving-harden-runners-disable-sudo-policy-for-improved-runner-security">blog
post</a>.</p>
</li>
<li>
<p>New detections have been added based on insights from the tj-actions
and reviewdog actions incidents.</p>
</li>
</ol>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/step-security/harden-runner/compare/v2...v2.12.0">https://github.com/step-security/harden-runner/compare/v2...v2.12.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/step-security/harden-runner/commit/0634a2670c59f64b4a01f0f96f84700a4088b9f0"><code>0634a26</code></a>
Merge pull request <a
href="https://redirect.github.com/step-security/harden-runner/issues/541">#541</a>
from step-security/rc-20</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/2e3c5113419044c10e6826351ff7cf7d56cbebe4"><code>2e3c511</code></a>
Update action.yml</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/40873e6a41e9ae4f46268f8ee038b3561bb88504"><code>40873e6</code></a>
Update README.md</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/484c2799ec63f20b4acc41bcf649dd4003718616"><code>484c279</code></a>
Update README.md</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/4c8582f45544ce2dafb2cfae82cfbebf0f41bde2"><code>4c8582f</code></a>
Update agent versions</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/e8d595cd66544d43aca8ac7e42a212a5a83b41f8"><code>e8d595c</code></a>
fix disable_sudo_and_containers bug</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/5d277fc8734baba8746d0c18cb0a2594d4692c66"><code>5d277fc</code></a>
fix journalctl related bug</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/ff2ab228bdb9f0c9129169d47dbb2bdf4b8f9b0e"><code>ff2ab22</code></a>
Merge pull request <a
href="https://redirect.github.com/step-security/harden-runner/issues/536">#536</a>
from rohan-stepsecurity/feat/flag/disable-sudo-and-co...</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/b81d650d0e627a80d0d73d192b33d729507e0ef5"><code>b81d650</code></a>
fix: run sudo command only when both disable-sudo and
disable-sudo-and-docker...</li>
<li><a
href="https://github.com/step-security/harden-runner/commit/769df4ef5d6336b33b11e5b0d43934309cf439f6"><code>769df4e</code></a>
Update agent</li>
<li>Additional commits viewable in <a
href="https://github.com/step-security/harden-runner/compare/c6295a65d1254861815972266d5933fd6e532bdf...0634a2670c59f64b4a01f0f96f84700a4088b9f0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=step-security/harden-runner&package-manager=github_actions&previous-version=2.11.1&new-version=2.12.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-24 10:43:08 +01:00
NeilJared 99e3e60a5d Update messages_es_ES.properties (#3405)
Updated es_ES translation

# Description of Changes

Please provide a summary of the changes, including:

- Updated es-ES translation (style improvement and completed)



---
2025-04-24 10:41:38 +01:00
LudyandAnthony Stirling 413911210f Changes from Version 2.2.0 to 2.8.6 org.springdoc:springdoc-openapi-starter-webmvc-ui (#3400)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #3399

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.

---------

Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
2025-04-24 10:41:26 +01:00
ConnorYoh b4d137cb92 Changed footer to be more responsive to page size (#3398)
# Description of Changes

Please provide a summary of the changes, including:


Closes #3397

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### UI Changes (if applicable)

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


![{472F5883-F959-4964-AA1D-0CA41C17353C}](https://github.com/user-attachments/assets/08fc1ba0-449f-4c94-aaaa-9d82e543d620)

![{47E33B3E-08D5-42B8-8733-12726C5A4EA7}](https://github.com/user-attachments/assets/94a458c4-59d5-452c-bbcb-c51451d24351)

![{162DFADA-787F-4A1B-BAF6-C1D42D2446B4}](https://github.com/user-attachments/assets/84639b36-c484-4c28-9afa-c2dc56537075)

![{CAC92714-A8CA-4296-9CAD-40DBF621C182}](https://github.com/user-attachments/assets/bbfad20f-ab75-4e96-b7db-3f1e44949c19)

![{952CC64F-7CCF-4798-A3DE-309613329B76}](https://github.com/user-attachments/assets/8254adfa-38fa-44bd-b8e7-1cbe7e892466)


![{89EBC7DD-B633-4029-AC3D-BF29C83C7F24}](https://github.com/user-attachments/assets/69893770-05b9-4e3b-8e28-4d699722a0f5)



### Testing (if applicable)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-04-22 23:03:33 +01:00
Dario Ghunney WareandAnthony Stirling 2bb716da84 Mac x86_64 installer Hotfix (#3391)
😅 
- Added java options to jpackage installer
- Fixed trigger in OS release workflow

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.

---------

Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
2025-04-22 11:42:39 +01:00
LudyandAnthony Stirling d66997a8d6 Support domain User instances in getCurrentUsername method (#3383)
# Description of Changes

Please provide a summary of the changes, including:

- **What was changed**  
The `getCurrentUsername()` method in `UserService` now recognizes and
handles principals of type `stirling.software.SPDF.model.User`.
Previously, only `UserDetails` and `OAuth2User` were supported; any
`User` domain object was falling through to the default case and not
returning the expected username.

- **Why the change was made**  
In order to allow our custom domain `User` entities to be used directly
as the authenticated principal (for example, when loading a user via JWT
or session), we need to extract the username from that object. This
makes authentication flows more consistent and prevents unexpected
`null` or fallback values when the principal is our own `User` type.

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.

Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
2025-04-20 20:42:47 +01:00
stirlingbot[bot]andAnthony Stirling 34fd9924b5 Update 3rd Party Licenses (#3389)
Auto-generated by StirlingBot

Signed-off-by: stirlingbot[bot] <1113334+stirlingbot[bot]@users.noreply.github.com>
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com>
2025-04-20 16:46:26 +01:00
stirlingbot[bot] f56403d091 🤖 format everything with pre-commit by <stirlingbot> (#3374)
Auto-generated by [create-pull-request][1] with **stirlingbot**

[1]: https://github.com/peter-evans/create-pull-request

Signed-off-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-04-20 16:43:24 +01:00
dependabot[bot] a52c81b340 Bump org.springframework:spring-jdbc from 6.2.5 to 6.2.6 (#3384)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps
[org.springframework:spring-jdbc](https://github.com/spring-projects/spring-framework)
from 6.2.5 to 6.2.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-framework/releases">org.springframework:spring-jdbc's
releases</a>.</em></p>
<blockquote>
<h2>v6.2.6</h2>
<h2> New Features</h2>
<ul>
<li>An option for SimpleAsyncTaskExecutor to throw an exception when
limit is reached <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34727">#34727</a></li>
<li>Provide first-class support for Bean Overrides with
<code>@ContextHierarchy</code> <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34723">#34723</a></li>
<li>Micro performance optimizations <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34717">#34717</a></li>
<li>Suppress &quot;Unable to rollback against JDBC Connection&quot; in
case of timeout (connection closed) <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34714">#34714</a></li>
<li>Avoid early FactoryBean instantiation for type-based retrieval with
includeNonSingletons=false and allowEagerInit=true <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34710">#34710</a></li>
<li>ReactiveCachingHandler still not using error handler on sync cache.
<a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34708">#34708</a></li>
<li>Add an <code>exchangeForRequiredValue</code> variant to
<code>RestClient</code> <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34692">#34692</a></li>
<li>Recursively boxing Kotlin nested value classes in
<code>CoroutinesUtils</code> <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34682">#34682</a></li>
<li>ServletServerHttpRequest does not use charset parameter of
application/x-www-form-urlencoded <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34675">#34675</a></li>
<li>LifecycleGroup concurrent start and start timeout <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34634">#34634</a></li>
<li>HibernateJpaDialect exception translation misses concrete exceptions
wrapped in Hibernate's ExecutionException <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34633">#34633</a></li>
</ul>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Inconsistency in <code>SseEmitter.onCompletion()</code> behavior
between Spring 6.2.3 and 6.2.5 <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34762">#34762</a></li>
<li>Deadlock while creating Spring beans with parallel bootstrap threads
on IBM Liberty <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34729">#34729</a></li>
<li><code>PropertyBatchUpdateException</code>: causes of nested
<code>PropertyAccessException</code>s not shown in output <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34691">#34691</a></li>
<li>IllegalAccessError for package-private member of
AzureStorageConfiguration on WebSphere <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34684">#34684</a></li>
<li>Change in Jar usecache behavior with Spring 6.1.x causing
java.lang.IllegalStateException: zip file closed <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34678">#34678</a></li>
<li>Startup performance regression due to CGLIB class load attempts in
Spring 6.1.x <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34677">#34677</a></li>
<li>An infinite wait on a parallel context.getBean() <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34672">#34672</a></li>
<li>InvalidObservationException: Invalid start: Observation
'http.client.requests' has already been started <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34671">#34671</a></li>
<li><code>@Configuration</code> classes can no longer be
<code>abstract</code> without <code>@Bean</code> methods <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34663">#34663</a></li>
<li>Generated-code for LinkedHashMap is missing static keyword <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34659">#34659</a></li>
<li>Detect late-set primary markers for autowiring shortcut algorithm <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34658">#34658</a></li>
<li><code>@MockitoBean</code> with custom <code>@Qualifier</code> is not
injected into <code>@Configuration</code> class <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34646">#34646</a></li>
<li>Qualifier Resolution Issue in Parent-Child Context Hierarchies <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34644">#34644</a></li>
<li>Enforced container-level acknowledge call for custom acknowledgement
mode <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34635">#34635</a></li>
<li>UriComponentsBuilder does not treat a URN as opaque if it contains a
slash <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34588">#34588</a></li>
<li>Migrating from Spring 6.1.x to 6.2.x leads to exceptions in a Pekko
setup <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34303">#34303</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Update Javadoc for <code>ignoreDependencyInterface()</code> in
<code>AbstractAutowireCapableBeanFactory</code> <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34747">#34747</a></li>
<li>Update Javadoc to stop mentioning 5.3.x as the status quo <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34740">#34740</a></li>
<li>Fix broken link for Server-Sent Events <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34705">#34705</a></li>
<li>Fix typo in Bean Validation section of reference manual <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34686">#34686</a></li>
<li>Remove unnecessary closing curly brackets in Javadoc <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34679">#34679</a></li>
<li>Add javadoc notes on potential exception suppression in
<code>ListableBeanFactory#getBeansOfType</code> <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34629">#34629</a></li>
<li>Remove remaining references to Forwarded headers in
MvcUriComponentsBuilder <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34625">#34625</a></li>
</ul>
<h2>❤️ Contributors</h2>
<p>Thank you to all the contributors who worked on this release:</p>
<p><a href="https://github.com/acktsap"><code>@​acktsap</code></a>, <a
href="https://github.com/dmitrysulman"><code>@​dmitrysulman</code></a>,
<a href="https://github.com/iggzq"><code>@​iggzq</code></a>, <a
href="https://github.com/izeye"><code>@​izeye</code></a>, <a
href="https://github.com/ngocnhan-tran1996"><code>@​ngocnhan-tran1996</code></a>,
<a href="https://github.com/obourgain"><code>@​obourgain</code></a>, and
<a
href="https://github.com/tobias-haenel"><code>@​tobias-haenel</code></a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/90f9c0929b8cfee22f715834d53903d492309f42"><code>90f9c09</code></a>
Release v6.2.6</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/f40d98668da2cb91df22a508dc0b22c3ec91aba2"><code>f40d986</code></a>
Revise configuration for javadoc Gradle tasks</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/9c13c6b695ac70cd4288016815105d0a694b62fb"><code>9c13c6b</code></a>
Revert &quot;Use optimistic locking where possible in
<code>ResponseBodyEmitter</code>&quot;</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/b49924ba37d588afc0c5232290f5a6726115c10b"><code>b49924b</code></a>
Revert &quot;Fix handling of timeout in SseEmitter&quot;</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/7b8c1040773ab6537acc5c74964f9d8b6563c5f8"><code>7b8c104</code></a>
Upgrade to github-changelog-generator 0.0.12</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/8f62a8f579c31aaa9fd7a2b16e6ba414d3e9163c"><code>8f62a8f</code></a>
Suppress recently introduced warning</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/d0966dfb58056d2e955b555d38993bf65dac41e7"><code>d0966df</code></a>
Revise contribution</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/bb45a3ae69c8068b72ce939e16df46c7dc8bb1cd"><code>bb45a3a</code></a>
Update AbstractAutowireCapableBeanFactory.ignoreDependencyInterface()
Javadoc</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/7095f4cb664f7fcf033dde84325eda83d67ece70"><code>7095f4c</code></a>
Use proper casing for parameter and variable names</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/a22d204681c575c3f61c325d205a96fb92ea8e7a"><code>a22d204</code></a>
Remove duplicate words in Java source code</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-framework/compare/v6.2.5...v6.2.6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.springframework:spring-jdbc&package-manager=gradle&previous-version=6.2.5&new-version=6.2.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-20 16:42:28 +01:00
dependabot[bot] c959b35639 Bump org.springframework:spring-webmvc from 6.2.5 to 6.2.6 (#3385)
[//]: # (dependabot-start)
⚠️  **Dependabot is rebasing this PR** ⚠️ 

Rebasing might not happen immediately, so don't worry if this takes some
time.

Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.

---

[//]: # (dependabot-end)

Bumps
[org.springframework:spring-webmvc](https://github.com/spring-projects/spring-framework)
from 6.2.5 to 6.2.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/spring-projects/spring-framework/releases">org.springframework:spring-webmvc's
releases</a>.</em></p>
<blockquote>
<h2>v6.2.6</h2>
<h2> New Features</h2>
<ul>
<li>An option for SimpleAsyncTaskExecutor to throw an exception when
limit is reached <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34727">#34727</a></li>
<li>Provide first-class support for Bean Overrides with
<code>@ContextHierarchy</code> <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34723">#34723</a></li>
<li>Micro performance optimizations <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34717">#34717</a></li>
<li>Suppress &quot;Unable to rollback against JDBC Connection&quot; in
case of timeout (connection closed) <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34714">#34714</a></li>
<li>Avoid early FactoryBean instantiation for type-based retrieval with
includeNonSingletons=false and allowEagerInit=true <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34710">#34710</a></li>
<li>ReactiveCachingHandler still not using error handler on sync cache.
<a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34708">#34708</a></li>
<li>Add an <code>exchangeForRequiredValue</code> variant to
<code>RestClient</code> <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34692">#34692</a></li>
<li>Recursively boxing Kotlin nested value classes in
<code>CoroutinesUtils</code> <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34682">#34682</a></li>
<li>ServletServerHttpRequest does not use charset parameter of
application/x-www-form-urlencoded <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34675">#34675</a></li>
<li>LifecycleGroup concurrent start and start timeout <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34634">#34634</a></li>
<li>HibernateJpaDialect exception translation misses concrete exceptions
wrapped in Hibernate's ExecutionException <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34633">#34633</a></li>
</ul>
<h2>🐞 Bug Fixes</h2>
<ul>
<li>Inconsistency in <code>SseEmitter.onCompletion()</code> behavior
between Spring 6.2.3 and 6.2.5 <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34762">#34762</a></li>
<li>Deadlock while creating Spring beans with parallel bootstrap threads
on IBM Liberty <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34729">#34729</a></li>
<li><code>PropertyBatchUpdateException</code>: causes of nested
<code>PropertyAccessException</code>s not shown in output <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34691">#34691</a></li>
<li>IllegalAccessError for package-private member of
AzureStorageConfiguration on WebSphere <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34684">#34684</a></li>
<li>Change in Jar usecache behavior with Spring 6.1.x causing
java.lang.IllegalStateException: zip file closed <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34678">#34678</a></li>
<li>Startup performance regression due to CGLIB class load attempts in
Spring 6.1.x <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34677">#34677</a></li>
<li>An infinite wait on a parallel context.getBean() <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34672">#34672</a></li>
<li>InvalidObservationException: Invalid start: Observation
'http.client.requests' has already been started <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34671">#34671</a></li>
<li><code>@Configuration</code> classes can no longer be
<code>abstract</code> without <code>@Bean</code> methods <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34663">#34663</a></li>
<li>Generated-code for LinkedHashMap is missing static keyword <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34659">#34659</a></li>
<li>Detect late-set primary markers for autowiring shortcut algorithm <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34658">#34658</a></li>
<li><code>@MockitoBean</code> with custom <code>@Qualifier</code> is not
injected into <code>@Configuration</code> class <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34646">#34646</a></li>
<li>Qualifier Resolution Issue in Parent-Child Context Hierarchies <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34644">#34644</a></li>
<li>Enforced container-level acknowledge call for custom acknowledgement
mode <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34635">#34635</a></li>
<li>UriComponentsBuilder does not treat a URN as opaque if it contains a
slash <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34588">#34588</a></li>
<li>Migrating from Spring 6.1.x to 6.2.x leads to exceptions in a Pekko
setup <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34303">#34303</a></li>
</ul>
<h2>📔 Documentation</h2>
<ul>
<li>Update Javadoc for <code>ignoreDependencyInterface()</code> in
<code>AbstractAutowireCapableBeanFactory</code> <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34747">#34747</a></li>
<li>Update Javadoc to stop mentioning 5.3.x as the status quo <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34740">#34740</a></li>
<li>Fix broken link for Server-Sent Events <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34705">#34705</a></li>
<li>Fix typo in Bean Validation section of reference manual <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34686">#34686</a></li>
<li>Remove unnecessary closing curly brackets in Javadoc <a
href="https://redirect.github.com/spring-projects/spring-framework/pull/34679">#34679</a></li>
<li>Add javadoc notes on potential exception suppression in
<code>ListableBeanFactory#getBeansOfType</code> <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34629">#34629</a></li>
<li>Remove remaining references to Forwarded headers in
MvcUriComponentsBuilder <a
href="https://redirect.github.com/spring-projects/spring-framework/issues/34625">#34625</a></li>
</ul>
<h2>❤️ Contributors</h2>
<p>Thank you to all the contributors who worked on this release:</p>
<p><a href="https://github.com/acktsap"><code>@​acktsap</code></a>, <a
href="https://github.com/dmitrysulman"><code>@​dmitrysulman</code></a>,
<a href="https://github.com/iggzq"><code>@​iggzq</code></a>, <a
href="https://github.com/izeye"><code>@​izeye</code></a>, <a
href="https://github.com/ngocnhan-tran1996"><code>@​ngocnhan-tran1996</code></a>,
<a href="https://github.com/obourgain"><code>@​obourgain</code></a>, and
<a
href="https://github.com/tobias-haenel"><code>@​tobias-haenel</code></a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/90f9c0929b8cfee22f715834d53903d492309f42"><code>90f9c09</code></a>
Release v6.2.6</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/f40d98668da2cb91df22a508dc0b22c3ec91aba2"><code>f40d986</code></a>
Revise configuration for javadoc Gradle tasks</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/9c13c6b695ac70cd4288016815105d0a694b62fb"><code>9c13c6b</code></a>
Revert &quot;Use optimistic locking where possible in
<code>ResponseBodyEmitter</code>&quot;</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/b49924ba37d588afc0c5232290f5a6726115c10b"><code>b49924b</code></a>
Revert &quot;Fix handling of timeout in SseEmitter&quot;</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/7b8c1040773ab6537acc5c74964f9d8b6563c5f8"><code>7b8c104</code></a>
Upgrade to github-changelog-generator 0.0.12</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/8f62a8f579c31aaa9fd7a2b16e6ba414d3e9163c"><code>8f62a8f</code></a>
Suppress recently introduced warning</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/d0966dfb58056d2e955b555d38993bf65dac41e7"><code>d0966df</code></a>
Revise contribution</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/bb45a3ae69c8068b72ce939e16df46c7dc8bb1cd"><code>bb45a3a</code></a>
Update AbstractAutowireCapableBeanFactory.ignoreDependencyInterface()
Javadoc</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/7095f4cb664f7fcf033dde84325eda83d67ece70"><code>7095f4c</code></a>
Use proper casing for parameter and variable names</li>
<li><a
href="https://github.com/spring-projects/spring-framework/commit/a22d204681c575c3f61c325d205a96fb92ea8e7a"><code>a22d204</code></a>
Remove duplicate words in Java source code</li>
<li>Additional commits viewable in <a
href="https://github.com/spring-projects/spring-framework/compare/v6.2.5...v6.2.6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.springframework:spring-webmvc&package-manager=gradle&previous-version=6.2.5&new-version=6.2.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-20 16:41:57 +01:00
dependabot[bot] 66b234f1df Bump com.fathzer:javaluator from 3.0.5 to 3.0.6 (#3386)
Bumps [com.fathzer:javaluator](https://github.com/fathzer/javaluator)
from 3.0.5 to 3.0.6.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/fathzer/javaluator/commits">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.fathzer:javaluator&package-manager=gradle&previous-version=3.0.5&new-version=3.0.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-20 16:41:08 +01:00
Muratcan Yeldan e5cd8ce901 Add SHOW_SURVEY Environment variable to Docker (#3378)
In the previous implementation, the survey was displayed on the main
screen when the homepage was opened for the 5th, 10th, 15th, 22nd, 30th,
50th, 75th, 100th, 150th, or 200th time, as long as the "Do not show
again" option hadn't been selected.

With this new feature, if the SHOW_SURVEY environment variable is set to
true or not set at all in the Docker configuration, the survey will
continue to be shown as before.

<img width="1679" alt="Screenshot 2025-04-18 at 08 17 37"
src="https://github.com/user-attachments/assets/696b9dc2-9502-4d66-9991-d2b81b52cd02"
/>

However, if the SHOW_SURVEY parameter is explicitly set to false, the
survey will no longer be displayed.

<img width="1707" alt="Screenshot 2025-04-18 at 08 18 39"
src="https://github.com/user-attachments/assets/b57c568a-b5e7-4927-bccf-f9a398bea702"
/>


Closes #1573

---

## Checklist

### General

- [X] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [X] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [X] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [X] I have performed a self-review of my own code
- [X] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### UI Changes (if applicable)

- [X] 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](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-04-20 11:49:34 +01:00
Ludy c388ba73c1 Update Google Java Format to v1.26.0 across devcontainer, VSCode, and Gradle configuration (#3375)
# Description of Changes

Please provide a summary of the changes, including:

- **What was changed**  
Updated `java.format.settings.google.version` from `1.25.2` to `1.26.0`
in:
  - `.devcontainer/devcontainer.json`  
  - `.vscode/settings.json`  
  - `build.gradle` (Spotless plugin configuration)

- **Why the change was made**  
Bump to the latest Google Java Format release (v1.26.0) to pick up
formatting improvements, bug fixes, and maintain consistency across all
development environments.

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-04-17 22:11:30 +01:00
Ludy 54f2e012f5 Bump ruff to v0.11.6 and gitleaks to v8.24.3 in pre-commit config (#3376)
# Description of Changes

Please provide a summary of the changes, including:

- **What was changed**  
Updated the versions of two pre-commit hooks in
`.pre-commit-config.yaml`:
  - `ruff` from `v0.9.10` to `v0.11.6`  
  - `gitleaks` from `v8.24.0` to `v8.24.3`

- **Why the change was made**  
Keeping linting and security-scanning tools up to date ensures we
benefit from the latest bug fixes, performance improvements, and new
checks. This helps maintain code quality and reduces the risk of false
positives or unfixed vulnerabilities.


---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-04-17 22:10:39 +01:00
Anthony Stirling ef6c0f2383 fix security deploy (#3373)
# Description of Changes

Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-04-17 18:52:03 +01:00
Muratcan Yeldan 7bdefb69c2 Make file extension checks case-insensitive in pipeline (#3368)
# Description of Changes

File extensions in the pipeline were being checked in a case-sensitive
manner. Since supported extensions were defined in lowercase only, files
with uppercase extensions were being rejected directly, and logs like
the following were being printed:

<img width="1542" alt="Screenshot 2025-04-17 at 00 14 16"
src="https://github.com/user-attachments/assets/a584b8d8-0a56-4a76-b409-9d6cd38f1a80"
/>

With this change, the uploaded file’s extension is now converted to
lowercase using toLowerCase, making the extension check
case-insensitive. After this change, the logs flow as expected, as shown
below:

<img width="1317" alt="Screenshot 2025-04-17 at 00 49 52"
src="https://github.com/user-attachments/assets/2abdcfc7-4c74-4b06-bbea-ef12e0f737b4"
/>

Closes #3243

---

## Checklist

### General

- [X] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [X] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [X] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [X] I have performed a self-review of my own code
- [X] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-04-17 11:23:08 +01:00
stirlingbot[bot] 49e3706a30 🌐 Sync Translations + Update README Progress Table (#3364)
### Description of Changes

This Pull Request was automatically generated to synchronize updates to
translation files and documentation. Below are the details of the
changes made:

#### **1. Synchronization of Translation Files**
- Updated translation files (`messages_*.properties`) to reflect changes
in the reference file `messages_en_GB.properties`.
- Ensured consistency and synchronization across all supported language
files.
- Highlighted any missing or incomplete translations.

#### **2. Update README.md**
- Generated the translation progress table in `README.md`.
- Added a summary of the current translation status for all supported
languages.
- Included up-to-date statistics on translation coverage.

#### **Why these changes are necessary**
- Keeps translation files aligned with the latest reference updates.
- Ensures the documentation reflects the current translation progress.

---

Auto-generated by [create-pull-request][1].

[1]: https://github.com/peter-evans/create-pull-request

Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-04-16 19:03:54 +01:00
Muratcan Yeldan 06a2360247 Update messages_fr_FR.properties to fix translation mistake (#3365)
# Description of Changes

Fixed incorrect French translations: changed 'Image en PDF' to 'PDF en
Image' for title and header in messages_fr_FR.properties.

Closes #3357

---

## Checklist

### General

- [X] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [X] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [X] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [X] I have performed a self-review of my own code
- [X] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-04-16 19:03:34 +01:00
ConnorYoh 3fda82e39d 2728 bug signed rotated document different than preview (#3360)
# Description of Changes

Please provide a summary of the changes, including:

- Change the maths for accounting for rotation in add image and sign.
- Images are now placed in the expected place


Closes #2728 

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [x] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [x] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-04-16 16:21:08 +01:00
Muratcan Yeldan a1013a339a Update messages_tr_TR.properties (#3363)
# Description of Changes

Completed the rest of the untranslated labels to Turkish(tr_TR).

---

## Checklist

### General

- [X] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [X] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [X] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [X] I have performed a self-review of my own code
- [X] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-04-16 16:20:37 +01:00
Peter Dave Hello 5430e6d159 Update and improve zh_TW Traditional Chinese locale (#3362)
# Description of Changes

Update and improve zh_TW Traditional Chinese locale

cc #3152 #3337

---

## Checklist

### General

- [x] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [x] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [x] I have performed a self-review of my own code
- [x] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-04-16 16:20:26 +01:00
stirlingbot[bot] 6906344178 🌐 Sync Translations + Update README Progress Table (#3359)
### Description of Changes

This Pull Request was automatically generated to synchronize updates to
translation files and documentation. Below are the details of the
changes made:

#### **1. Synchronization of Translation Files**
- Updated translation files (`messages_*.properties`) to reflect changes
in the reference file `messages_en_GB.properties`.
- Ensured consistency and synchronization across all supported language
files.
- Highlighted any missing or incomplete translations.

#### **2. Update README.md**
- Generated the translation progress table in `README.md`.
- Added a summary of the current translation status for all supported
languages.
- Included up-to-date statistics on translation coverage.

#### **Why these changes are necessary**
- Keeps translation files aligned with the latest reference updates.
- Ensures the documentation reflects the current translation progress.

---

Auto-generated by [create-pull-request][1].

[1]: https://github.com/peter-evans/create-pull-request

---------

Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com>
2025-04-15 17:10:44 +01:00
thiagoor-cpu 4bbbbdfafc Update messages_pt_BR.properties (#3356)
Up-to-date 0.45.5 PT-BR

# Description of Changes

Up-to-date 0.45.5 PT-BR

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md)
(if applicable)
- [X] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### 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)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing)
for more details.
2025-04-15 15:17:56 +01:00
469 changed files with 26650 additions and 5045 deletions
+21
View File
@@ -0,0 +1,21 @@
{
"permissions": {
"allow": [
"Bash(mkdir:*)",
"Bash(./gradlew:*)",
"Bash(grep:*)",
"Bash(find:*)",
"Bash(chmod:*)",
"Bash(rm:*)",
"Bash(cat:*)",
"Bash(if [ -d logs ])",
"Bash(then ls -la logs/)",
"Bash(fi)",
"Bash(ls:*)",
"Bash(./testing/cucumber/features/environment.py -v)",
"Bash(./testing/cucumber/features/autojob.feature -v)",
"Bash(git rev-parse:*)"
],
"deny": []
}
}
+1 -1
View File
@@ -49,7 +49,7 @@
"java.configuration.updateBuildConfiguration": "interactive",
"java.format.enabled": true,
"java.format.settings.profile": "GoogleStyle",
"java.format.settings.google.version": "1.25.2",
"java.format.settings.google.version": "1.26.0",
"java.format.settings.google.extra": "--aosp --skip-sorting-imports --skip-javadoc-formatting",
"java.saveActions.cleanup": true,
"java.cleanup.actions": [
+33
View File
@@ -0,0 +1,33 @@
name: 'Setup GitHub App Bot'
description: 'Generates a GitHub App Token and configures Git for a bot'
inputs:
app-id:
description: 'GitHub App ID'
required: True
private-key:
description: 'GitHub App Private Key'
required: True
outputs:
token:
description: 'Generated GitHub App Token'
value: ${{ steps.generate-token.outputs.token }}
committer:
description: 'Committer string for Git'
value: "${{ steps.generate-token.outputs.app-slug }}[bot] <${{ steps.generate-token.outputs.app-slug }}[bot]@users.noreply.github.com>"
app-slug:
description: 'GitHub App slug'
value: ${{ steps.generate-token.outputs.app-slug }}
runs:
using: 'composite'
steps:
- name: Generate a GitHub App Token
id: generate-token
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
with:
app-id: ${{ inputs.app-id }}
private-key: ${{ inputs.private-key }}
- name: Configure Git
run: |
git config --global user.name "${{ steps.generate-token.outputs.app-slug }}[bot]"
git config --global user.email "${{ steps.generate-token.outputs.app-slug }}[bot]@users.noreply.github.com"
shell: bash
+17 -1
View File
@@ -27,18 +27,34 @@ Back End:
Security:
- changed-files:
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/config/interfaces/DatabaseInterface.java'
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/config/security/**/*'
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/controller/api/DatabaseController.java'
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/controller/api/EmailController.java'
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/controller/api/H2SQLController.java'
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/controller/web/AccountWebController.java'
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/controller/web/DatabaseWebController.java'
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/controller/api/UserController.java'
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/model/api/Email.java'
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/model/exception/BackupNotFoundException.java'
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/model/exception/NoProviderFoundExceptionjava'
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/model/provider/**/*'
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/model/AuthenticationType.java'
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/model/BackupNotFoundException.java'
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/model/ApiKeyAuthenticationToken.java'
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/model/AttemptCounter.java'
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/model/Authority.java'
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/model/PersistentLogin.java'
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/model/SessionEntity.java'
- any-glob-to-any-file: 'scripts/download-security-jar.sh'
- any-glob-to-any-file: '.github/workflows/dependency-review.yml'
- any-glob-to-any-file: '.github/workflows/scorecards.yml'
API:
- changed-files:
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/config/OpenApiConfig.java'
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/controller/web/MetricsController.java'
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/controller/api/**/*'
- any-glob-to-any-file: 'src/main/java/stirling/software/SPDF/model/api/**/*'
- any-glob-to-any-file: 'scripts/png_to_webp.py'
- any-glob-to-any-file: 'split_photos.py'
- any-glob-to-any-file: '.github/workflows/swagger.yml'
@@ -41,14 +41,14 @@ jobs:
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
# Generate GitHub App token
- name: Generate GitHub App Token
id: generate-token
uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
with:
app-id: ${{ secrets.GH_APP_ID }}
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
@@ -129,13 +129,13 @@ jobs:
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
- name: Generate GitHub App Token
id: generate-token
uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
with:
app-id: ${{ secrets.GH_APP_ID }}
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
@@ -180,13 +180,13 @@ jobs:
password: ${{ secrets.DOCKER_HUB_API }}
- name: Build and push PR-specific image
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
context: .
file: ./Dockerfile
push: true
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/test:pr-${{ needs.check-comment.outputs.pr_number }}
build-args: VERSION_TAG=${{ steps.versionNumber.outputs.versionNumber }}
build-args: VERSION_TAG=alpha
platforms: linux/amd64
- name: Set up SSH
+1 -1
View File
@@ -21,7 +21,7 @@ jobs:
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
+1 -1
View File
@@ -13,7 +13,7 @@ jobs:
pull-requests: write
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
+7 -4
View File
@@ -24,7 +24,7 @@ jobs:
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
@@ -56,13 +56,16 @@ jobs:
build/reports/tests/
build/test-results/
build/reports/problems/
common/build/reports/tests/
common/build/test-results/
common/build/reports/problems/
retention-days: 3
check-licence:
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
@@ -106,7 +109,7 @@ jobs:
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
@@ -128,7 +131,7 @@ jobs:
sudo chmod +x /usr/local/bin/docker-compose
- name: Set up Python
uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: "3.12"
cache: 'pip' # caching pip dependencies
+12 -7
View File
@@ -15,25 +15,28 @@ jobs:
runs-on: ubuntu-latest
permissions:
issues: write # Allow posting comments on issues/PRs
pull-requests: write
pull-requests: write # Allow writing to pull requests
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
- name: Checkout main branch first
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Set up Python
uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0
- name: Setup GitHub App Bot
id: setup-bot
uses: ./.github/actions/setup-bot
with:
python-version: "3.12"
app-id: ${{ secrets.GH_APP_ID }}
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
- name: Get PR data
id: get-pr-data
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
github-token: ${{ steps.setup-bot.outputs.token }}
script: |
const prNumber = context.payload.pull_request.number;
const repoOwner = context.payload.repository.owner.login;
@@ -54,7 +57,7 @@ jobs:
- name: Fetch PR changed files
id: fetch-pr-changes
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_TOKEN: ${{ steps.setup-bot.outputs.token }}
run: |
echo "Fetching PR changed files..."
echo "Getting list of changed files from PR..."
@@ -64,6 +67,7 @@ jobs:
id: determine-file
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
github-token: ${{ steps.setup-bot.outputs.token }}
script: |
const fs = require("fs");
const path = require("path");
@@ -204,6 +208,7 @@ jobs:
if: env.SCRIPT_OUTPUT != ''
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
github-token: ${{ steps.setup-bot.outputs.token }}
script: |
const { GITHUB_REPOSITORY, SCRIPT_OUTPUT } = process.env;
const [repoOwner, repoName] = GITHUB_REPOSITORY.split('/');
@@ -219,7 +224,7 @@ jobs:
const comment = comments.data.find(c => c.body.includes("## 🚀 Translation Verification Summary"));
// Only update or create comments by the action user
const expectedActor = "github-actions[bot]";
const expectedActor = "${{ steps.setup-bot.outputs.app-slug }}[bot]";
if (comment && comment.user.login === expectedActor) {
// Update existing comment
+2 -2
View File
@@ -17,11 +17,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
- name: "Checkout Repository"
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: "Dependency Review"
uses: actions/dependency-review-action@ce3cf9537a52e8119d91fd484ab5b8a807627bf8 # v4.6.0
uses: actions/dependency-review-action@da24556b548a50705dd671f47852072ea4c105d9 # v4.7.1
+22 -24
View File
@@ -16,52 +16,50 @@ jobs:
permissions:
contents: write
pull-requests: write
repository-projects: write # Required for enabling automerge
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
- name: Generate GitHub App Token
id: generate-token
uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
- name: Check out code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
- name: Setup GitHub App Bot
id: setup-bot
uses: ./.github/actions/setup-bot
with:
app-id: ${{ secrets.GH_APP_ID }}
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
- name: Check out code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Set up JDK 17
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
with:
java-version: "17"
distribution: "adopt"
- uses: gradle/actions/setup-gradle@06832c7b30a0129d7fb559bcc6e43d26f6374244 # v4.3.1
- name: Setup Gradle
uses: gradle/actions/setup-gradle@8379f6a1328ee0e06e2bb424dadb7b159856a326 # v4.4.0
- name: check the licenses for compatibility
- name: Check licenses for compatibility
run: ./gradlew clean checkLicense
- name: FAILED - check the licenses for compatibility
- name: Upload artifact on failure
if: failure()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: dependencies-without-allowed-license.json
path: |
build/reports/dependency-license/dependencies-without-allowed-license.json
path: build/reports/dependency-license/dependencies-without-allowed-license.json
retention-days: 3
- name: Move and Rename License File
- name: Move and rename license file
run: |
mv build/reports/dependency-license/index.json src/main/resources/static/3rdPartyLicenses.json
- name: Set up git config
run: |
git config --global user.name "stirlingbot[bot]"
git config --global user.email "1113334+stirlingbot[bot]@users.noreply.github.com"
- name: Run git add
- name: Commit changes
run: |
git add src/main/resources/static/3rdPartyLicenses.json
git diff --staged --quiet || echo "CHANGES_DETECTED=true" >> $GITHUB_ENV
@@ -71,15 +69,15 @@ jobs:
if: env.CHANGES_DETECTED == 'true'
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with:
token: ${{ steps.generate-token.outputs.token }}
token: ${{ steps.setup-bot.outputs.token }}
commit-message: "Update 3rd Party Licenses"
committer: "stirlingbot[bot] <1113334+stirlingbot[bot]@users.noreply.github.com>"
author: "stirlingbot[bot] <1113334+stirlingbot[bot]@users.noreply.github.com>"
committer: ${{ steps.setup-bot.outputs.committer }}
author: ${{ steps.setup-bot.outputs.committer }}
signoff: true
branch: update-3rd-party-licenses
title: "Update 3rd Party Licenses"
body: |
Auto-generated by StirlingBot
Auto-generated by ${{ steps.setup-bot.outputs.app-slug }}[bot]
labels: licenses,github-actions
draft: false
delete-branch: true
@@ -89,4 +87,4 @@ jobs:
if: steps.cpr.outputs.pull-request-operation == 'created'
run: gh pr merge --squash --auto "${{ steps.cpr.outputs.pull-request-number }}"
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
GH_TOKEN: ${{ steps.setup-bot.outputs.token }}
+1 -1
View File
@@ -15,7 +15,7 @@ jobs:
issues: write
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
+21 -21
View File
@@ -2,13 +2,13 @@ name: Test Installers Build
on:
workflow_dispatch:
release:
types: [created]
inputs:
test_mode:
description: "Run in test mode (skips release step)"
description: "Run in test mode (skip release step)"
required: false
default: "false"
release:
types: [created]
permissions:
contents: read
@@ -21,7 +21,7 @@ jobs:
versionMac: ${{ steps.versionNumberMac.outputs.versionNumberMac }}
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
@@ -56,7 +56,7 @@ jobs:
file_suffix: ""
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
@@ -68,9 +68,9 @@ jobs:
java-version: "21"
distribution: "temurin"
- uses: gradle/actions/setup-gradle@06832c7b30a0129d7fb559bcc6e43d26f6374244 # v4.3.1
- uses: gradle/actions/setup-gradle@8379f6a1328ee0e06e2bb424dadb7b159856a326 # v4.4.0
with:
gradle-version: 8.12
gradle-version: 8.14
- name: Generate jar (With Security=${{ matrix.enable_security }})
run: ./gradlew clean createExe
@@ -106,12 +106,12 @@ jobs:
file_suffix: ""
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
- name: Download build artifacts
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: stirling-${{ matrix.file_suffix }}binaries
@@ -144,7 +144,7 @@ jobs:
contents: write
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
@@ -156,9 +156,9 @@ jobs:
java-version: "21"
distribution: "temurin"
- uses: gradle/actions/setup-gradle@06832c7b30a0129d7fb559bcc6e43d26f6374244 # v4.3.1
- uses: gradle/actions/setup-gradle@8379f6a1328ee0e06e2bb424dadb7b159856a326 # v4.4.0
with:
gradle-version: 8.12
gradle-version: 8.14
# Install Windows dependencies
- name: Install WiX Toolset
@@ -175,7 +175,7 @@ jobs:
STIRLING_PDF_DESKTOP_UI: true
BROWSER_OPEN: true
- name: Set up JDK (x86_64)
- name: Set up JDK (x86_64)
if: matrix.os == 'macos-latest'
run: |
curl -L -o jdk.tar.gz https://cdn.azul.com/zulu/bin/zulu17.56.15-ca-jdk17.0.14-macosx_x64.tar.gz
@@ -200,10 +200,10 @@ jobs:
ls -lah ./build/jpackage/
mkdir ./binaries
if [ "${{ matrix.os }}" = "windows-latest" ]; then
mv "./build/jpackage/Stirling-PDF-${{ needs.read_versions.outputs.version }}.exe" "./binaries/Stirling-PDF-win-installer.exe"
mv "./build/jpackage/Stirling PDF-${{ needs.read_versions.outputs.version }}.exe" "./binaries/Stirling-PDF-win-installer.exe"
elif [ "${{ matrix.os }}" = "macos-latest" ]; then
mv "./build/jpackage/Stirling-PDF-${{ needs.read_versions.outputs.versionMac }}.dmg" "./binaries/Stirling-PDF-mac-installer.dmg"
mv "./build/jpackage/x86_64/Stirling-PDF (x86_64)-${{ needs.read_versions.outputs.versionMac }}.dmg" "./binaries/Stirling-PDF-mac-x86_64-installer.dmg"
mv "./build/jpackage/Stirling PDF-${{ needs.read_versions.outputs.versionMac }}.dmg" "./binaries/Stirling-PDF-mac-installer.dmg"
mv "./build/jpackage/x86_64/Stirling PDF (x86_64)-${{ needs.read_versions.outputs.versionMac }}.dmg" "./binaries/Stirling-PDF-mac-x86_64-installer.dmg"
else
mv "./build/jpackage/stirling-pdf_${{ needs.read_versions.outputs.version }}-1_amd64.deb" "./binaries/Stirling-PDF-linux-installer.deb"
fi
@@ -234,12 +234,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
- name: Download build artifacts
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: ${{ matrix.platform }}binaries
@@ -248,7 +248,7 @@ jobs:
- name: Install Cosign
if: matrix.os == 'windows-latest'
uses: sigstore/cosign-installer@d7d6bc7722e3daa8354c50bcb52f4837da5e9b6a # v3.8.1
uses: sigstore/cosign-installer@3454372f43399081ed03b604cb2d021dabca52bb # v3.8.2
- name: Generate key pair
if: matrix.os == 'windows-latest'
@@ -297,12 +297,12 @@ jobs:
contents: write
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
- name: Download signed artifacts
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
- name: Display structure of downloaded files
run: ls -R
- name: Upload binaries, attestations and signatures to Release and create GitHub Release
+19 -28
View File
@@ -16,62 +16,53 @@ jobs:
pull-requests: write
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
- name: Generate GitHub App Token
id: generate-token
uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
with:
app-id: ${{ secrets.GH_APP_ID }}
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
- name: Get GitHub App User ID
id: get-user-id
run: echo "user-id=$(gh api "/users/${{ steps.generate-token.outputs.app-slug }}[bot]" --jq .id)" >> $GITHUB_OUTPUT
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
- id: committer
run: |
echo "string=${{ steps.generate-token.outputs.app-slug }}[bot] <${{ steps.get-user-id.outputs.user-id }}+${{ steps.generate-token.outputs.app-slug }}[bot]@users.noreply.github.com>" >> "$GITHUB_OUTPUT"
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
- name: Setup GitHub App Bot
id: setup-bot
uses: ./.github/actions/setup-bot
with:
app-id: ${{ secrets.GH_APP_ID }}
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
- name: Set up Python
uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: 3.12
cache: 'pip' # caching pip dependencies
- name: Run Pre-Commit Hooks
run: |
pip install --require-hashes -r ./.github/scripts/requirements_pre_commit.txt
- run: pre-commit run --all-files -c .pre-commit-config.yaml
continue-on-error: true
- name: Set up git config
run: |
git config --global user.name ${{ steps.generate-token.outputs.app-slug }}[bot]
git config --global user.email "${{ steps.get-user-id.outputs.user-id }}+${{ steps.generate-token.outputs.app-slug }}[bot]@users.noreply.github.com"
- name: git add
run: |
git add .
git diff --staged --quiet || echo "CHANGES_DETECTED=true" >> $GITHUB_ENV
- name: Create Pull Request
if: env.CHANGES_DETECTED == 'true'
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with:
token: ${{ steps.generate-token.outputs.token }}
token: ${{ steps.setup-bot.outputs.token }}
commit-message: ":file_folder: pre-commit"
committer: ${{ steps.committer.outputs.string }}
author: ${{ steps.committer.outputs.string }}
committer: ${{ steps.setup-bot.outputs.committer }}
author: ${{ steps.setup-bot.outputs.committer }}
signoff: true
branch: pre-commit
title: "🤖 format everything with pre-commit by <${{ steps.generate-token.outputs.app-slug }}>"
title: "🤖 format everything with pre-commit by ${{ steps.setup-bot.outputs.app-slug }}"
body: |
Auto-generated by [create-pull-request][1] with **${{ steps.generate-token.outputs.app-slug }}**
Auto-generated by [create-pull-request][1] with **${{ steps.setup-bot.outputs.app-slug }}**
[1]: https://github.com/peter-evans/create-pull-request
draft: false
+7 -7
View File
@@ -18,7 +18,7 @@ jobs:
id-token: write
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
@@ -30,9 +30,9 @@ jobs:
java-version: "17"
distribution: "temurin"
- uses: gradle/actions/setup-gradle@06832c7b30a0129d7fb559bcc6e43d26f6374244 # v4.3.1
- uses: gradle/actions/setup-gradle@8379f6a1328ee0e06e2bb424dadb7b159856a326 # v4.4.0
with:
gradle-version: 8.12
gradle-version: 8.14
- name: Run Gradle Command
run: ./gradlew clean build
@@ -42,7 +42,7 @@ jobs:
- name: Install cosign
if: github.ref == 'refs/heads/master'
uses: sigstore/cosign-installer@d7d6bc7722e3daa8354c50bcb52f4837da5e9b6a # v3.8.1
uses: sigstore/cosign-installer@3454372f43399081ed03b604cb2d021dabca52bb # v3.8.2
with:
cosign-release: "v2.4.1"
@@ -90,7 +90,7 @@ jobs:
- name: Build and push main Dockerfile
id: build-push-regular
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
builder: ${{ steps.buildx.outputs.name }}
context: .
@@ -135,7 +135,7 @@ jobs:
- name: Build and push Dockerfile-ultra-lite
id: build-push-lite
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
if: github.ref != 'refs/heads/main'
with:
context: .
@@ -166,7 +166,7 @@ jobs:
- name: Build and push main Dockerfile fat
id: build-push-fat
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
if: github.ref != 'refs/heads/main'
with:
builder: ${{ steps.buildx.outputs.name }}
+8 -8
View File
@@ -23,7 +23,7 @@ jobs:
version: ${{ steps.versionNumber.outputs.versionNumber }}
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
@@ -35,9 +35,9 @@ jobs:
java-version: "17"
distribution: "temurin"
- uses: gradle/actions/setup-gradle@06832c7b30a0129d7fb559bcc6e43d26f6374244 # v4.3.1
- uses: gradle/actions/setup-gradle@8379f6a1328ee0e06e2bb424dadb7b159856a326 # v4.4.0
with:
gradle-version: 8.12
gradle-version: 8.14
- name: Generate jar (With Security=${{ matrix.enable_security }})
run: ./gradlew clean createExe
@@ -83,19 +83,19 @@ jobs:
file_suffix: ""
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
- name: Download build artifacts
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: binaries${{ matrix.file_suffix }}
- name: Display structure of downloaded files
run: ls -R
- name: Install Cosign
uses: sigstore/cosign-installer@d7d6bc7722e3daa8354c50bcb52f4837da5e9b6a # v3.8.1
uses: sigstore/cosign-installer@3454372f43399081ed03b604cb2d021dabca52bb # v3.8.2
- name: Generate key pair
run: cosign generate-key-pair
@@ -161,12 +161,12 @@ jobs:
file_suffix: ""
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
- name: Download signed artifacts
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
name: signed${{ matrix.file_suffix }}
+3 -3
View File
@@ -34,7 +34,7 @@ jobs:
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
@@ -44,7 +44,7 @@ jobs:
persist-credentials: false
- name: "Run analysis"
uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1
uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2
with:
results_file: results.sarif
results_format: sarif
@@ -74,6 +74,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@45775bd8235c68ba998cffa5171334d58593da47 # v3.28.15
uses: github/codeql-action/upload-sarif@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18
with:
sarif_file: results.sarif
+2 -2
View File
@@ -18,7 +18,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
@@ -27,7 +27,7 @@ jobs:
fetch-depth: 0
- name: Setup Gradle
uses: gradle/actions/setup-gradle@06832c7b30a0129d7fb559bcc6e43d26f6374244 # v4.3.1
uses: gradle/actions/setup-gradle@8379f6a1328ee0e06e2bb424dadb7b159856a326 # v4.4.0
- name: Build and analyze with Gradle
env:
+1 -1
View File
@@ -16,7 +16,7 @@ jobs:
pull-requests: write
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
+2 -2
View File
@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
@@ -26,7 +26,7 @@ jobs:
java-version: "17"
distribution: "temurin"
- uses: gradle/actions/setup-gradle@06832c7b30a0129d7fb559bcc6e43d26f6374244 # v4.3.1
- uses: gradle/actions/setup-gradle@8379f6a1328ee0e06e2bb424dadb7b159856a326 # v4.4.0
- name: Generate Swagger documentation
run: ./gradlew generateOpenApiDocs
+16 -57
View File
@@ -16,79 +16,37 @@ permissions:
contents: read
jobs:
read_bot_entries:
sync-files:
runs-on: ubuntu-latest
outputs:
userName: ${{ steps.get-user-id.outputs.user_name }}
userEmail: ${{ steps.get-user-id.outputs.user_email }}
committer: ${{ steps.committer.outputs.committer }}
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
- name: Generate GitHub App Token
id: generate-token
uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Setup GitHub App Bot
id: setup-bot
uses: ./.github/actions/setup-bot
with:
app-id: ${{ secrets.GH_APP_ID }}
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
- name: Get GitHub App User ID
id: get-user-id
run: |
USER_NAME="${{ steps.generate-token.outputs.app-slug }}[bot]"
USER_ID=$(gh api "/users/$USER_NAME" --jq .id)
USER_EMAIL="$USER_ID+$USER_NAME@users.noreply.github.com"
echo "user_name=$USER_NAME" >> "$GITHUB_OUTPUT"
echo "user_email=$USER_EMAIL" >> "$GITHUB_OUTPUT"
echo "user-id=$USER_ID" >> "$GITHUB_OUTPUT"
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
- id: committer
run: |
COMMITTER="${{ steps.get-user-id.outputs.user_name }} <${{ steps.get-user-id.outputs.user_email }}>"
echo "committer=$COMMITTER" >> "$GITHUB_OUTPUT"
sync-files:
needs: ["read_bot_entries"]
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
with:
egress-policy: audit
- name: Generate GitHub App Token
id: generate-token
uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2
with:
app-id: ${{ vars.GH_APP_ID }}
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Set up Python
uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: "3.12"
cache: 'pip' # caching pip dependencies
cache: "pip" # caching pip dependencies
- name: Sync translation property files
run: |
python .github/scripts/check_language_properties.py --reference-file "src/main/resources/messages_en_GB.properties" --branch main
- name: Set up git config
run: |
git config --global user.name ${{ needs.read_bot_entries.outputs.userName }}
git config --global user.email ${{ needs.read_bot_entries.outputs.userEmail }}
- name: Run git add
- name: Commit translation files
run: |
git add src/main/resources/messages_*.properties
git diff --staged --quiet || git commit -m ":memo: Sync translation files" || echo "no changes"
git diff --staged --quiet || git commit -m ":memo: Sync translation files" || echo "No changes detected"
- name: Install dependencies
run: pip install --require-hashes -r ./.github/scripts/requirements_sync_readme.txt
@@ -100,15 +58,16 @@ jobs:
- name: Run git add
run: |
git add README.md
git diff --staged --quiet || git commit -m ":memo: Sync README.md" || echo "no changes"
git diff --staged --quiet || git commit -m ":memo: Sync README.md" || echo "No changes detected"
- name: Create Pull Request
if: always()
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with:
token: ${{ steps.generate-token.outputs.token }}
token: ${{ steps.setup-bot.outputs.token }}
commit-message: Update files
committer: ${{ needs.read_bot_entries.outputs.committer }}
author: ${{ needs.read_bot_entries.outputs.committer }}
committer: ${{ steps.setup-bot.outputs.committer }}
author: ${{ steps.setup-bot.outputs.committer }}
signoff: true
branch: sync_readme
title: ":globe_with_meridians: Sync Translations + Update README Progress Table"
+4 -4
View File
@@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
@@ -46,7 +46,7 @@ jobs:
password: ${{ secrets.DOCKER_HUB_API }}
- name: Build and push test image
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
context: .
file: ./Dockerfile
@@ -105,7 +105,7 @@ jobs:
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
@@ -134,7 +134,7 @@ jobs:
steps:
- name: Harden Runner
uses: step-security/harden-runner@c6295a65d1254861815972266d5933fd6e532bdf # v2.11.1
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0
with:
egress-policy: audit
+2 -2
View File
@@ -1,6 +1,6 @@
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.9.10
rev: v0.11.11
hooks:
- id: ruff
args:
@@ -22,7 +22,7 @@ repos:
files: \.(html|css|js|py|md)$
exclude: (.vscode|.devcontainer|src/main/resources|Dockerfile|.*/pdfjs.*|.*/thirdParty.*|bootstrap.*|.*\.min\..*|.*diff\.js)
- repo: https://github.com/gitleaks/gitleaks
rev: v8.24.0
rev: v8.26.0
hooks:
- id: gitleaks
- repo: https://github.com/pre-commit/pre-commit-hooks
+4 -1
View File
@@ -10,7 +10,7 @@
"java.configuration.updateBuildConfiguration": "interactive",
"java.format.enabled": true,
"java.format.settings.profile": "GoogleStyle",
"java.format.settings.google.version": "1.25.2",
"java.format.settings.google.version": "1.27.0",
"java.format.settings.google.extra": "--aosp --skip-sorting-imports --skip-javadoc-formatting",
// (DE) Aktiviert Kommentare im Java-Format.
// (EN) Enables comments in Java formatting.
@@ -49,7 +49,9 @@
".venv*/",
".vscode/",
"bin/",
"common/bin/",
"build/",
"common/build/",
"configs/",
"customFiles/",
"docs/",
@@ -63,6 +65,7 @@
".git-blame-ignore-revs",
".gitattributes",
".gitignore",
"common/.gitignore",
".pre-commit-config.yaml",
],
// Enables signature help in Java.
+24
View File
@@ -0,0 +1,24 @@
# Codex Contribution Guidelines for Stirling-PDF
This file provides high-level instructions for Codex when modifying any files within this repository. Follow these rules to ensure changes remain consistent with the existing project structure.
## 1. Code Style and Formatting
- Respect the `.editorconfig` settings located in the repository root. Java files use 4 spaces; HTML, JS, and Python generally use 2 spaces. Lines should end with `LF`.
- Format Java code with `./gradlew spotlessApply` before committing.
- Review `DeveloperGuide.md` for project structure and design details before making significant changes.
## 2. Testing
- Run `./gradlew build` before committing changes to ensure the project compiles.
- If the build cannot complete due to environment restrictions, DO NOT COMMIT THE CHANGE
## 3. Commits
- Keep commits focused. Group related changes together and provide concise commit messages.
- Ensure the working tree is clean (`git status`) before concluding your work.
## 4. Pull Requests
- Summarize what was changed and why. Include build results from `./gradlew build` in the PR description.
- Note that the code was generated with the assistance of AI.
## 5. Translations
- Only modify `messages_en_GB.properties` when adding or updating translations.
+2 -1
View File
@@ -153,6 +153,7 @@ services:
SYSTEM_MAXFILESIZE: "100"
METRICS_ENABLED: "true"
SYSTEM_GOOGLEVISIBILITY: "true"
SHOW_SURVEY: "true"
restart: on-failure:5
```
@@ -540,7 +541,7 @@ This would generate n entries of tr for each person in exampleData
```html
<li class="nav-item">
<a class="nav-link" th:href="@{/new-feature}">New Feature</a>
<a class="nav-link" th:href="@{'/new-feature'}">New Feature</a>
</li>
```
+2 -2
View File
@@ -1,5 +1,5 @@
# Main stage
FROM alpine:3.21.3@sha256:a8560b36e8b8210634f77d9f7f9efd7ffa463e380b75e2e74aff4511df3ef88c
FROM alpine:3.22.0@sha256:8a1f59ffb675680d47db6337b49d22281a139e9d709335b492be023728e11715
# Copy necessary files
COPY scripts /scripts
@@ -73,7 +73,7 @@ RUN echo "@main https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /etc/a
py3-pillow@testing \
py3-pdf2image@testing && \
python3 -m venv /opt/venv && \
/opt/venv/bin/pip install --upgrade pip && \
/opt/venv/bin/pip install --upgrade pip setuptools && \
/opt/venv/bin/pip install --no-cache-dir --upgrade unoserver weasyprint && \
ln -s /usr/lib/libreoffice/program/uno.py /opt/venv/lib/python3.12/site-packages/ && \
ln -s /usr/lib/libreoffice/program/unohelper.py /opt/venv/lib/python3.12/site-packages/ && \
+2 -1
View File
@@ -1,7 +1,7 @@
# dockerfile.dev
# Basisimage: Gradle mit JDK 17 (Debian-basiert)
FROM gradle:8.13-jdk17
FROM gradle:8.14-jdk17
# Als Root-Benutzer arbeiten, um benötigte Pakete zu installieren
USER root
@@ -32,6 +32,7 @@ ENV SETUPTOOLS_USE_DISTUTILS=local
# Installation der benötigten Python-Pakete
RUN python3 -m venv --system-site-packages /opt/venv \
&& . /opt/venv/bin/activate \
&& pip install --upgrade pip setuptools \
&& pip install --no-cache-dir WeasyPrint pdf2image pillow unoserver opencv-python-headless pre-commit
# Füge den venv-Pfad zur globalen PATH-Variable hinzu, damit die Tools verfügbar sind
+3 -3
View File
@@ -1,5 +1,5 @@
# Build the application
FROM gradle:8.13-jdk21 AS build
FROM gradle:8.14-jdk21 AS build
COPY build.gradle .
COPY settings.gradle .
@@ -19,7 +19,7 @@ RUN DOCKER_ENABLE_SECURITY=true \
./gradlew clean build -x spotlessApply -x spotlessCheck -x test -x sonarqube
# Main stage
FROM alpine:3.21.3@sha256:a8560b36e8b8210634f77d9f7f9efd7ffa463e380b75e2e74aff4511df3ef88c
FROM alpine:3.22.0@sha256:8a1f59ffb675680d47db6337b49d22281a139e9d709335b492be023728e11715
# Copy necessary files
COPY scripts /scripts
@@ -83,7 +83,7 @@ RUN echo "@main https://dl-cdn.alpinelinux.org/alpine/edge/main" | tee -a /etc/a
py3-pillow@testing \
py3-pdf2image@testing && \
python3 -m venv /opt/venv && \
/opt/venv/bin/pip install --upgrade pip && \
/opt/venv/bin/pip install --upgrade pip setuptools && \
/opt/venv/bin/pip install --no-cache-dir --upgrade unoserver weasyprint && \
ln -s /usr/lib/libreoffice/program/uno.py /opt/venv/lib/python3.12/site-packages/ && \
ln -s /usr/lib/libreoffice/program/unohelper.py /opt/venv/lib/python3.12/site-packages/ && \
+1 -1
View File
@@ -1,5 +1,5 @@
# use alpine
FROM alpine:3.21.3@sha256:a8560b36e8b8210634f77d9f7f9efd7ffa463e380b75e2e74aff4511df3ef88c
FROM alpine:3.22.0@sha256:8a1f59ffb675680d47db6337b49d22281a139e9d709335b492be023728e11715
ARG VERSION_TAG
+41 -41
View File
@@ -112,56 +112,56 @@ Visit our comprehensive documentation at [docs.stirlingpdf.com](https://docs.sti
## Supported Languages
Stirling-PDF currently supports 39 languages!
Stirling-PDF currently supports 40 languages!
| Language | Progress |
| -------------------------------------------- | -------------------------------------- |
| Arabic (العربية) (ar_AR) | ![84%](https://geps.dev/progress/84) |
| Azerbaijani (Azərbaycan Dili) (az_AZ) | ![83%](https://geps.dev/progress/83) |
| Basque (Euskara) (eu_ES) | ![48%](https://geps.dev/progress/48) |
| Bulgarian (Български) (bg_BG) | ![93%](https://geps.dev/progress/93) |
| Catalan (Català) (ca_CA) | ![90%](https://geps.dev/progress/90) |
| Croatian (Hrvatski) (hr_HR) | ![81%](https://geps.dev/progress/81) |
| Czech (Česky) (cs_CZ) | ![92%](https://geps.dev/progress/92) |
| Danish (Dansk) (da_DK) | ![80%](https://geps.dev/progress/80) |
| Dutch (Nederlands) (nl_NL) | ![79%](https://geps.dev/progress/79) |
| Arabic (العربية) (ar_AR) | ![73%](https://geps.dev/progress/73) |
| Azerbaijani (Azərbaycan Dili) (az_AZ) | ![74%](https://geps.dev/progress/74) |
| Basque (Euskara) (eu_ES) | ![43%](https://geps.dev/progress/43) |
| Bulgarian (Български) (bg_BG) | ![81%](https://geps.dev/progress/81) |
| Catalan (Català) (ca_CA) | ![81%](https://geps.dev/progress/81) |
| Croatian (Hrvatski) (hr_HR) | ![72%](https://geps.dev/progress/72) |
| Czech (Česky) (cs_CZ) | ![83%](https://geps.dev/progress/83) |
| Danish (Dansk) (da_DK) | ![73%](https://geps.dev/progress/73) |
| Dutch (Nederlands) (nl_NL) | ![71%](https://geps.dev/progress/71) |
| English (English) (en_GB) | ![100%](https://geps.dev/progress/100) |
| English (US) (en_US) | ![100%](https://geps.dev/progress/100) |
| French (Français) (fr_FR) | ![92%](https://geps.dev/progress/92) |
| German (Deutsch) (de_DE) | ![94%](https://geps.dev/progress/94) |
| Greek (Ελληνικά) (el_GR) | ![91%](https://geps.dev/progress/91) |
| Hindi (हिंदी) (hi_IN) | ![92%](https://geps.dev/progress/92) |
| Hungarian (Magyar) (hu_HU) | ![89%](https://geps.dev/progress/89) |
| Indonesian (Bahasa Indonesia) (id_ID) | ![81%](https://geps.dev/progress/81) |
| Irish (Gaeilge) (ga_IE) | ![92%](https://geps.dev/progress/92) |
| Italian (Italiano) (it_IT) | ![99%](https://geps.dev/progress/99) |
| Japanese (日本語) (ja_JP) | ![89%](https://geps.dev/progress/89) |
| Korean (한국어) (ko_KR) | ![92%](https://geps.dev/progress/92) |
| Norwegian (Norsk) (no_NB) | ![86%](https://geps.dev/progress/86) |
| Persian (فارسی) (fa_IR) | ![88%](https://geps.dev/progress/88) |
| Polish (Polski) (pl_PL) | ![96%](https://geps.dev/progress/96) |
| Portuguese (Português) (pt_PT) | ![91%](https://geps.dev/progress/91) |
| Portuguese Brazilian (Português) (pt_BR) | ![94%](https://geps.dev/progress/94) |
| Romanian (Română) (ro_RO) | ![75%](https://geps.dev/progress/75) |
| Russian (Русский) (ru_RU) | ![94%](https://geps.dev/progress/94) |
| Serbian Latin alphabet (Srpski) (sr_LATN_RS) | ![60%](https://geps.dev/progress/60) |
| Simplified Chinese (简体中文) (zh_CN) | ![93%](https://geps.dev/progress/93) |
| Slovakian (Slovensky) (sk_SK) | ![69%](https://geps.dev/progress/69) |
| Slovenian (Slovenščina) (sl_SI) | ![95%](https://geps.dev/progress/95) |
| Spanish (Español) (es_ES) | ![93%](https://geps.dev/progress/93) |
| Swedish (Svenska) (sv_SE) | ![87%](https://geps.dev/progress/87) |
| Thai (ไทย) (th_TH) | ![80%](https://geps.dev/progress/80) |
| Tibetan (བོད་ཡིག་) (zh_BO) | ![89%](https://geps.dev/progress/89) |
| Traditional Chinese (繁體中文) (zh_TW) | ![99%](https://geps.dev/progress/99) |
| Turkish (Türkçe) (tr_TR) | ![77%](https://geps.dev/progress/77) |
| Ukrainian (Українська) (uk_UA) | ![97%](https://geps.dev/progress/97) |
| Vietnamese (Tiếng Việt) (vi_VN) | ![74%](https://geps.dev/progress/74) |
| French (Français) (fr_FR) | ![82%](https://geps.dev/progress/82) |
| German (Deutsch) (de_DE) | ![89%](https://geps.dev/progress/89) |
| Greek (Ελληνικά) (el_GR) | ![80%](https://geps.dev/progress/80) |
| Hindi (हिंदी) (hi_IN) | ![80%](https://geps.dev/progress/80) |
| Hungarian (Magyar) (hu_HU) | ![87%](https://geps.dev/progress/87) |
| Indonesian (Bahasa Indonesia) (id_ID) | ![74%](https://geps.dev/progress/74) |
| Irish (Gaeilge) (ga_IE) | ![81%](https://geps.dev/progress/81) |
| Italian (Italiano) (it_IT) | ![95%](https://geps.dev/progress/95) |
| Japanese (日本語) (ja_JP) | ![82%](https://geps.dev/progress/82) |
| Korean (한국어) (ko_KR) | ![80%](https://geps.dev/progress/80) |
| Norwegian (Norsk) (no_NB) | ![78%](https://geps.dev/progress/78) |
| Persian (فارسی) (fa_IR) | ![76%](https://geps.dev/progress/76) |
| Polish (Polski) (pl_PL) | ![86%](https://geps.dev/progress/86) |
| Portuguese (Português) (pt_PT) | ![82%](https://geps.dev/progress/82) |
| Portuguese Brazilian (Português) (pt_BR) | ![87%](https://geps.dev/progress/87) |
| Romanian (Română) (ro_RO) | ![68%](https://geps.dev/progress/68) |
| Russian (Русский) (ru_RU) | ![87%](https://geps.dev/progress/87) |
| Serbian Latin alphabet (Srpski) (sr_LATN_RS) | ![52%](https://geps.dev/progress/52) |
| Simplified Chinese (简体中文) (zh_CN) | ![86%](https://geps.dev/progress/86) |
| Slovakian (Slovensky) (sk_SK) | ![61%](https://geps.dev/progress/61) |
| Slovenian (Slovenščina) (sl_SI) | ![85%](https://geps.dev/progress/85) |
| Spanish (Español) (es_ES) | ![88%](https://geps.dev/progress/88) |
| Swedish (Svenska) (sv_SE) | ![78%](https://geps.dev/progress/78) |
| Thai (ไทย) (th_TH) | ![70%](https://geps.dev/progress/70) |
| Tibetan (བོད་ཡིག་) (bo_CN) | ![77%](https://geps.dev/progress/77) |
| Traditional Chinese (繁體中文) (zh_TW) | ![87%](https://geps.dev/progress/87) |
| Turkish (Türkçe) (tr_TR) | ![87%](https://geps.dev/progress/87) |
| Ukrainian (Українська) (uk_UA) | ![87%](https://geps.dev/progress/87) |
| Vietnamese (Tiếng Việt) (vi_VN) | ![68%](https://geps.dev/progress/68) |
| Malayalam (മലയാളം) (ml_IN) | ![87%](https://geps.dev/progress/87) |
## Stirling PDF Enterprise
Stirling PDF offers an Enterprise edition of its software. This is the same great software but with added features, support and comforts.
Check out our [Enterprise docs](https://docs.stirlingpdf.com/Enterprise%20Edition)
Check out our [Enterprise docs](https://docs.stirlingpdf.com/Pro)
## 🤝 Looking to contribute?
+67 -51
View File
@@ -1,15 +1,16 @@
plugins {
id "java"
id "org.springframework.boot" version "3.4.4"
id "jacoco"
id "org.springframework.boot" version "3.5.0"
id "io.spring.dependency-management" version "1.1.7"
id "org.springdoc.openapi-gradle-plugin" version "1.9.0"
id "io.swagger.swaggerhub" version "1.3.2"
id "edu.sc.seis.launch4j" version "3.0.6"
id "com.diffplug.spotless" version "7.0.3"
id "com.diffplug.spotless" version "7.0.4"
id "com.github.jk1.dependency-license-report" version "2.9"
//id "nebula.lint" version "19.0.3"
id("org.panteleyev.jpackageplugin") version "1.6.1"
id "org.sonarqube" version "6.1.0.5360"
id "org.sonarqube" version "6.2.0.5505"
}
import com.github.jk1.license.render.*
@@ -18,18 +19,18 @@ import java.nio.file.Files
import java.time.Year
ext {
springBootVersion = "3.4.4"
pdfboxVersion = "3.0.4"
springBootVersion = "3.5.0"
pdfboxVersion = "3.0.5"
imageioVersion = "3.12.0"
lombokVersion = "1.18.38"
bouncycastleVersion = "1.80"
springSecuritySamlVersion = "6.4.4"
springSecuritySamlVersion = "6.5.0"
openSamlVersion = "4.3.2"
tempJrePath = null
}
group = "stirling.software"
version = "0.45.6"
version = "0.46.2"
java {
// 17 is lowest but we support and recommend 21
@@ -51,16 +52,20 @@ sourceSets {
main {
java {
if (System.getenv("DOCKER_ENABLE_SECURITY") == "false") {
exclude "stirling/software/SPDF/config/interfaces/DatabaseInterface.java"
exclude "stirling/software/SPDF/config/security/**"
exclude "stirling/software/SPDF/controller/api/DatabaseController.java"
exclude "stirling/software/SPDF/controller/api/UserController.java"
exclude "stirling/software/SPDF/controller/api/EmailController.java"
exclude "stirling/software/SPDF/controller/api/H2SQLCondition.java"
exclude "stirling/software/SPDF/controller/api/UserController.java"
exclude "stirling/software/SPDF/controller/web/AccountWebController.java"
exclude "stirling/software/SPDF/controller/web/DatabaseWebController.java"
exclude "stirling/software/SPDF/model/api/Email.java"
exclude "stirling/software/SPDF/model/ApiKeyAuthenticationToken.java"
exclude "stirling/software/SPDF/model/AttemptCounter.java"
exclude "stirling/software/SPDF/model/Authority.java"
exclude "stirling/software/SPDF/model/BackupNotFoundException.java"
exclude "stirling/software/SPDF/model/exception/BackupNotFoundException.java"
exclude "stirling/software/SPDF/model/exception/NoProviderFoundException.java"
exclude "stirling/software/SPDF/model/PersistentLogin.java"
exclude "stirling/software/SPDF/model/SessionEntity.java"
exclude "stirling/software/SPDF/model/User.java"
@@ -78,16 +83,8 @@ sourceSets {
java {
if (System.getenv("DOCKER_ENABLE_SECURITY") == "false") {
exclude "stirling/software/SPDF/config/security/**"
exclude "stirling/software/SPDF/controller/api/UserControllerTest.java"
exclude "stirling/software/SPDF/controller/api/DatabaseControllerTest.java"
exclude "stirling/software/SPDF/controller/web/AccountWebControllerTest.java"
exclude "stirling/software/SPDF/controller/web/DatabaseWebControllerTest.java"
exclude "stirling/software/SPDF/model/ApiKeyAuthenticationTokenTest.java"
exclude "stirling/software/SPDF/model/AttemptCounterTest.java"
exclude "stirling/software/SPDF/model/AuthorityTest.java"
exclude "stirling/software/SPDF/model/PersistentLoginTest.java"
exclude "stirling/software/SPDF/model/SessionEntityTest.java"
exclude "stirling/software/SPDF/model/UserTest.java"
exclude "stirling/software/SPDF/controller/api/EmailControllerTest.java"
exclude "stirling/software/SPDF/repository/**"
}
@@ -116,10 +113,10 @@ jpackage {
input = "build/libs"
destination = "${projectDir}/build/jpackage"
mainJar = "Stirling-PDF-${project.version}.jar"
appName = "Stirling-PDF"
appName = "Stirling PDF"
appVersion = project.version
// appVersion = "2005.45.1"
vendor = "Stirling-Software"
vendor = "Stirling PDF Inc"
appDescription = "Stirling PDF - Your Local PDF Editor"
icon = "src/main/resources/static/favicon.ico"
verbose = true
@@ -151,7 +148,7 @@ jpackage {
winShortcutPrompt = true // Lets user choose whether to create shortcuts
winDirChooser = true // Allows users to choose installation directory
winPerUserInstall = false
winMenuGroup = "Stirling Software"
winMenuGroup = "Stirling PDF"
winUpgradeUuid = "2a43ed0c-b8c2-40cf-89e1-751129b87641" // Unique identifier for updates
winHelpUrl = "https://github.com/Stirling-Tools/Stirling-PDF"
winUpdateUrl = "https://github.com/Stirling-Tools/Stirling-PDF/releases"
@@ -164,8 +161,8 @@ jpackage {
appVersion = getMacVersion(project.version.toString())
icon = "src/main/resources/static/favicon.icns"
type = "dmg"
macPackageIdentifier = "Stirling-PDF"
macPackageName = "Stirling-PDF"
macPackageIdentifier = "Stirling PDF"
macPackageName = "Stirling PDF"
macAppCategory = "public.app-category.productivity"
macSign = false // Enable signing
macAppStore = false // Not targeting App Store initially
@@ -249,18 +246,32 @@ tasks.register('jpackageMacX64') {
def result = exec {
commandLine 'jpackage',
'--type', 'dmg',
'--name', 'Stirling-PDF (x86_64)',
'--input', 'build/libs',
'--main-jar', "Stirling-PDF-${project.version}.jar",
'--main-class', 'org.springframework.boot.loader.launch.JarLauncher',
'--runtime-image', file(jrePath + "/zulu-17.jre/Contents/Home"),
'--dest', 'build/jpackage/x86_64',
'--icon', 'src/main/resources/static/favicon.icns',
'--app-version', getMacVersion(project.version.toString()),
'--mac-package-name', 'Stirling-PDF (x86_64)',
'--mac-package-identifier', 'Stirling-PDF (x86_64)',
'--mac-app-category', 'public.app-category.productivity'
'--type', 'dmg',
'--name', 'Stirling PDF (x86_64)',
'--input', 'build/libs',
'--main-jar', "Stirling-PDF-${project.version}.jar",
'--main-class', 'org.springframework.boot.loader.launch.JarLauncher',
'--runtime-image', file(jrePath + "/zulu-17.jre/Contents/Home"),
'--dest', 'build/jpackage/x86_64',
'--icon', 'src/main/resources/static/favicon.icns',
'--app-version', getMacVersion(project.version.toString()),
'--mac-package-name', 'Stirling PDF (x86_64)',
'--mac-package-identifier', 'Stirling PDF (x86_64)',
'--mac-app-category', 'public.app-category.productivity',
// Java options
'--java-options', '-DBROWSER_OPEN=true',
'--java-options', '-DSTIRLING_PDF_DESKTOP_UI=true',
'--java-options', '-Djava.awt.headless=false',
'--java-options', '-Dapple.awt.UIElement=true',
'--java-options', '--add-opens=java.base/java.lang=ALL-UNNAMED',
'--java-options', '--add-opens=java.desktop/java.awt.event=ALL-UNNAMED',
'--java-options', '--add-opens=java.desktop/sun.awt=ALL-UNNAMED',
'--java-options', '--add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED',
'--java-options', '--add-opens=java.desktop/sun.awt.windows=ALL-UNNAMED',
'--java-options', '--add-opens=java.desktop/sun.lwawt=ALL-UNNAMED',
'--java-options', '--add-opens=java.desktop/sun.lwawt.macosx=ALL-UNNAMED'
standardOutput = outputStream
errorOutput = errorStream
ignoreExitValue = true
@@ -363,9 +374,10 @@ launch4j {
spotless {
java {
target project.fileTree('src').include('**/*.java')
target sourceSets.main.allJava
target project(':common').sourceSets.main.allJava
googleJavaFormat("1.25.2").aosp().reorderImports(false)
googleJavaFormat("1.27.0").aosp().reorderImports(false)
importOrder("java", "javax", "org", "com", "net", "io", "jakarta", "lombok", "me", "stirling")
toggleOffOn()
@@ -390,7 +402,7 @@ sonar {
// rules=['unused-dependency']
// }
tasks.wrapper {
gradleVersion = "8.12"
gradleVersion = "8.14"
distributionType = Wrapper.DistributionType.ALL
}
//tasks.withType(JavaCompile) {
@@ -402,13 +414,14 @@ configurations.all {
// Exclude Tomcat
exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat"
}
dependencies {
implementation project(':common')
//tmp for security bumps
implementation 'ch.qos.logback:logback-core:1.5.18'
implementation 'ch.qos.logback:logback-classic:1.5.18'
// Exclude vulnerable BouncyCastle version used in tableau
configurations.all {
exclude group: 'org.bouncycastle', module: 'bcpkix-jdk15on'
@@ -417,13 +430,13 @@ dependencies {
}
if (System.getenv("STIRLING_PDF_DESKTOP_UI") != "false") {
implementation "me.friwi:jcefmaven:132.3.1"
implementation "me.friwi:jcefmaven:135.0.20"
implementation "org.openjfx:javafx-controls:21"
implementation "org.openjfx:javafx-swing:21"
}
//security updates
implementation "org.springframework:spring-webmvc:6.2.5"
implementation "org.springframework:spring-webmvc:6.2.7"
implementation("io.github.pixee:java-security-toolkit:1.2.1")
@@ -437,22 +450,21 @@ dependencies {
if (System.getenv("DOCKER_ENABLE_SECURITY") != "false") {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-registry-prometheus'
implementation "org.springframework.boot:spring-boot-starter-security:$springBootVersion"
implementation "org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.3.RELEASE"
implementation "org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion"
implementation "org.springframework.boot:spring-boot-starter-oauth2-client:$springBootVersion"
implementation "org.springframework.boot:spring-boot-starter-mail:$springBootVersion"
implementation "org.springframework.session:spring-session-core:3.4.2"
implementation "org.springframework:spring-jdbc:6.2.5"
implementation "org.springframework.session:spring-session-core:3.5.0"
implementation "org.springframework:spring-jdbc:6.2.7"
implementation 'com.unboundid.product.scim2:scim2-sdk-client:2.3.5'
// Don't upgrade h2database
runtimeOnly "com.h2database:h2:2.3.232"
runtimeOnly "org.postgresql:postgresql:42.7.5"
runtimeOnly "org.postgresql:postgresql:42.7.6"
constraints {
implementation "org.opensaml:opensaml-core:$openSamlVersion"
implementation "org.opensaml:opensaml-saml-api:$openSamlVersion"
@@ -466,9 +478,10 @@ dependencies {
implementation 'org.snakeyaml:snakeyaml-engine:2.9'
testImplementation "org.springframework.boot:spring-boot-starter-test:$springBootVersion"
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
// Batik
implementation "org.apache.xmlgraphics:batik-all:1.18"
implementation "org.apache.xmlgraphics:batik-all:1.19"
// TwelveMonkeys
runtimeOnly "com.twelvemonkeys.imageio:imageio-batik:$imageioVersion"
@@ -492,11 +505,11 @@ dependencies {
implementation "com.drewnoakes:metadata-extractor:2.19.0"
implementation "commons-io:commons-io:2.19.0"
implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0"
implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.8"
//general PDF
// https://mvnrepository.com/artifact/com.opencsv/opencsv
implementation ("com.opencsv:opencsv:5.10")
implementation ("com.opencsv:opencsv:5.11")
implementation ("org.apache.pdfbox:pdfbox:$pdfboxVersion")
implementation "org.apache.pdfbox:preflight:$pdfboxVersion"
@@ -509,6 +522,7 @@ dependencies {
exclude group: "org.slf4j", module: "slf4j-simple"
exclude group: "org.bouncycastle", module: "bcprov-jdk15on"
exclude group: "com.google.code.gson", module: "gson"
exclude group: "commons-io", module: "commons-io"
}
implementation 'org.apache.pdfbox:jbig2-imageio:3.0.4'
@@ -516,14 +530,14 @@ dependencies {
implementation "org.bouncycastle:bcprov-jdk18on:$bouncycastleVersion"
implementation "org.bouncycastle:bcpkix-jdk18on:$bouncycastleVersion"
implementation "org.springframework.boot:spring-boot-starter-actuator:$springBootVersion"
implementation "io.micrometer:micrometer-core:1.14.6"
implementation "io.micrometer:micrometer-core:1.15.0"
implementation group: "com.google.zxing", name: "core", version: "3.5.3"
// https://mvnrepository.com/artifact/org.commonmark/commonmark
implementation "org.commonmark:commonmark:0.24.0"
implementation "org.commonmark:commonmark-ext-gfm-tables:0.24.0"
// https://mvnrepository.com/artifact/com.bucket4j/bucket4j_jdk17
implementation "com.bucket4j:bucket4j_jdk17-core:8.14.0"
implementation "com.fathzer:javaluator:3.0.5"
implementation "com.fathzer:javaluator:3.0.6"
implementation 'com.vladsch.flexmark:flexmark-html2md-converter:0.64.8'
@@ -531,6 +545,8 @@ dependencies {
compileOnly "org.projectlombok:lombok:$lombokVersion"
annotationProcessor "org.projectlombok:lombok:$lombokVersion"
// Mockito (core)
testImplementation 'org.mockito:mockito-core:5.18.0'
testRuntimeOnly 'org.mockito:mockito-inline:5.2.0'
}
+196
View File
@@ -0,0 +1,196 @@
### Eclipse ###
.metadata
bin/
tmp/
*.tmp
*.bak
*.exe
*.swp
*~.nib
local.properties
.settings/
.loadpath
.recommenders
.classpath
.project
version.properties
#### Stirling-PDF Files ###
pipeline/watchedFolders/
pipeline/finishedFolders/
customFiles/
configs/
watchedFolders/
clientWebUI/
!cucumber/
!cucumber/exampleFiles/
!cucumber/exampleFiles/example_html.zip
exampleYmlFiles/stirling/
/testing/file_snapshots
SwaggerDoc.json
# Gradle
.gradle
.lock
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# PyDev specific (Python IDE for Eclipse)
*.pydevproject
# CDT-specific (C/C++ Development Tooling)
.cproject
# CDT- autotools
.autotools
# Java annotation processor (APT)
.factorypath
# PDT-specific (PHP Development Tools)
.buildpath
# sbteclipse plugin
.target
# Tern plugin
.tern-project
# TeXlipse plugin
.texlipse
# STS (Spring Tool Suite)
.springBeans
# Code Recommenders
.recommenders/
# Annotation Processing
.apt_generated/
.apt_generated_test/
# Scala IDE specific (Scala & Java development for Eclipse)
.cache-main
.scala_dependencies
.worksheet
# Uncomment this line if you wish to ignore the project description file.
# Typically, this file would be tracked if it contains build/dependency configurations:
#.project
### Eclipse Patch ###
# Spring Boot Tooling
.sts4-cache/
### Git ###
# Created by git for backups. To disable backups in Git:
# $ git config --global mergetool.keepBackup false
*.orig
# Created by git when using merge tools for conflicts
*.BACKUP.*
*.BASE.*
*.LOCAL.*
*.REMOTE.*
*_BACKUP_*.txt
*_BASE_*.txt
*_LOCAL_*.txt
*_REMOTE_*.txt
### Java ###
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
*.db
/build
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*.pyo
# Virtual environments
.env*
.venv*
env*/
venv*/
ENV/
env.bak/
venv.bak/
# VS Code
/.vscode/**/*
!/.vscode/settings.json
!/.vscode/extensions.json
# IntelliJ IDEA
.idea/
*.iml
out/
# Ignore Mac DS_Store files
.DS_Store
**/.DS_Store
# cucumber
/cucumber/reports/**
# Certs and Security Files
*.p12
*.pk8
*.pem
*.crt
*.cer
*.cert
*.der
*.key
*.csr
*.kdbx
*.jks
*.asc
# SSH Keys
*.pub
*.priv
id_rsa
id_rsa.pub
id_ecdsa
id_ecdsa.pub
id_ed25519
id_ed25519.pub
.ssh/
*ssh
# cache
.cache
.ruff_cache
.mypy_cache
.pytest_cache
.ipynb_checkpoints
**/jcef-bundle/
# node_modules
node_modules/
*.mjs
+65
View File
@@ -0,0 +1,65 @@
plugins {
id 'java-library'
id 'io.spring.dependency-management' version '1.1.7'
}
group = 'stirling.software'
version = '0.46.2'
ext {
lombokVersion = "1.18.38"
}
java {
sourceCompatibility = JavaVersion.VERSION_17
}
repositories {
mavenCentral()
}
configurations.all {
exclude group: 'commons-logging', module: 'commons-logging'
exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat"
}
dependencyManagement {
imports {
mavenBom 'org.springframework.boot:spring-boot-dependencies:3.5.0'
}
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-aop'
implementation 'org.springframework.boot:spring-boot-starter-websocket'
implementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:20240325.1'
implementation 'com.fathzer:javaluator:3.0.6'
implementation 'com.posthog.java:posthog:1.2.0'
implementation 'io.github.pixee:java-security-toolkit:1.2.1'
implementation 'org.apache.commons:commons-lang3:3.17.0'
implementation 'com.drewnoakes:metadata-extractor:2.19.0' // Image metadata extractor
implementation 'com.vladsch.flexmark:flexmark-html2md-converter:0.64.8'
implementation "org.apache.pdfbox:pdfbox:$pdfboxVersion"
implementation 'jakarta.servlet:jakarta.servlet-api:6.1.0'
implementation 'org.snakeyaml:snakeyaml-engine:2.9'
implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.8"
compileOnly "org.projectlombok:lombok:$lombokVersion"
annotationProcessor "org.projectlombok:lombok:$lombokVersion"
testImplementation "org.springframework.boot:spring-boot-starter-test"
testImplementation 'org.mockito:mockito-core:5.18.0'
testImplementation 'org.mockito:mockito-junit-jupiter:5.18.0'
testRuntimeOnly 'org.mockito:mockito-inline:5.2.0'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
test {
useJUnitPlatform()
testLogging {
events "passed", "skipped", "failed"
}
}
@@ -0,0 +1,47 @@
package stirling.software.common.annotations;
import java.lang.annotation.*;
import org.springframework.core.annotation.AliasFor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestMapping(method = RequestMethod.POST)
public @interface AutoJobPostMapping {
@AliasFor(annotation = RequestMapping.class, attribute = "value")
String[] value() default {};
@AliasFor(annotation = RequestMapping.class, attribute = "consumes")
String[] consumes() default {"multipart/form-data"};
/**
* Custom timeout in milliseconds for this specific job. If not specified, the default system
* timeout will be used.
*/
long timeout() default -1;
/** Maximum number of times to retry the job on failure. Default is 1 (no retries). */
int retryCount() default 1;
/**
* Whether to track and report progress for this job. If enabled, the job will send progress
* updates through WebSocket.
*/
boolean trackProgress() default true;
/**
* Whether this job can be queued when system resources are limited. If enabled, jobs will be
* queued instead of rejected when the system is under high load. The queue size is dynamically
* adjusted based on available memory and CPU resources.
*/
boolean queueable() default false;
/**
* Optional resource weight of this job (1-100). Higher values indicate more resource-intensive
* jobs that may need stricter queuing. Default is 50 (medium weight).
*/
int resourceWeight() default 50;
}
@@ -0,0 +1,249 @@
package stirling.software.common.aop;
import java.io.IOException;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import stirling.software.common.annotations.AutoJobPostMapping;
import stirling.software.common.controller.WebSocketProgressController;
import stirling.software.common.model.api.PDFFile;
import stirling.software.common.model.job.JobProgress;
import stirling.software.common.service.FileOrUploadService;
import stirling.software.common.service.FileStorage;
import stirling.software.common.service.JobExecutorService;
@Aspect
@Component
@RequiredArgsConstructor
@Slf4j
public class AutoJobAspect {
private final JobExecutorService jobExecutorService;
private final HttpServletRequest request;
private final FileOrUploadService fileOrUploadService;
private final FileStorage fileStorage;
private final WebSocketProgressController webSocketSender;
@Around("@annotation(autoJobPostMapping)")
public Object wrapWithJobExecution(
ProceedingJoinPoint joinPoint, AutoJobPostMapping autoJobPostMapping) {
// Extract parameters from the request and annotation
boolean async = Boolean.parseBoolean(request.getParameter("async"));
long timeout = autoJobPostMapping.timeout();
int retryCount = autoJobPostMapping.retryCount();
boolean trackProgress = autoJobPostMapping.trackProgress();
log.debug(
"AutoJobPostMapping execution with async={}, timeout={}, retryCount={}, trackProgress={}",
async,
timeout > 0 ? timeout : "default",
retryCount,
trackProgress);
// Inspect and possibly mutate arguments
Object[] args = joinPoint.getArgs();
for (int i = 0; i < args.length; i++) {
Object arg = args[i];
if (arg instanceof PDFFile pdfFile) {
// Case 1: fileId is provided but no fileInput
if (pdfFile.getFileInput() == null && pdfFile.getFileId() != null) {
try {
log.debug("Using fileId {} to get file content", pdfFile.getFileId());
MultipartFile file = fileStorage.retrieveFile(pdfFile.getFileId());
pdfFile.setFileInput(file);
} catch (Exception e) {
throw new RuntimeException(
"Failed to resolve file by ID: " + pdfFile.getFileId(), e);
}
}
// Case 2: For async requests, we need to make a copy of the MultipartFile
else if (async && pdfFile.getFileInput() != null) {
try {
log.debug("Making persistent copy of uploaded file for async processing");
MultipartFile originalFile = pdfFile.getFileInput();
String fileId = fileStorage.storeFile(originalFile);
// Store the fileId for later reference
pdfFile.setFileId(fileId);
// Replace the original MultipartFile with our persistent copy
MultipartFile persistentFile = fileStorage.retrieveFile(fileId);
pdfFile.setFileInput(persistentFile);
log.debug("Created persistent file copy with fileId: {}", fileId);
} catch (IOException e) {
throw new RuntimeException(
"Failed to create persistent copy of uploaded file", e);
}
}
}
}
// Extract queueable and resourceWeight parameters
boolean queueable = autoJobPostMapping.queueable();
int resourceWeight = autoJobPostMapping.resourceWeight();
// Integrate with the enhanced JobExecutorService
if (retryCount <= 1) {
// No retries needed, simple execution
return jobExecutorService.runJobGeneric(
async,
() -> {
try {
if (trackProgress && async) {
String jobId = (String) request.getAttribute("jobId");
if (jobId != null) {
webSocketSender.sendProgress(
jobId,
new JobProgress(
jobId,
"Processing",
50,
"Executing operation"));
}
}
return joinPoint.proceed(args);
} catch (Throwable ex) {
log.error(
"AutoJobAspect caught exception during job execution: {}",
ex.getMessage(),
ex);
throw new RuntimeException(ex);
}
},
timeout,
queueable,
resourceWeight);
} else {
// Use retry logic
return executeWithRetries(
joinPoint,
args,
async,
timeout,
retryCount,
trackProgress,
queueable,
resourceWeight);
}
}
private Object executeWithRetries(
ProceedingJoinPoint joinPoint,
Object[] args,
boolean async,
long timeout,
int maxRetries,
boolean trackProgress,
boolean queueable,
int resourceWeight) {
AtomicInteger attempts = new AtomicInteger(0);
// Use AtomicReference to make the jobId effectively final for lambda usage
AtomicReference<String> jobIdRef = new AtomicReference<>();
return jobExecutorService.runJobGeneric(
async,
() -> {
int currentAttempt = attempts.incrementAndGet();
try {
if (trackProgress && async) {
// Only get the jobId once and store it in the AtomicReference
if (jobIdRef.get() == null) {
jobIdRef.set(getJobIdFromContext());
}
String jobId = jobIdRef.get();
if (jobId != null) {
webSocketSender.sendProgress(
jobId,
new JobProgress(
jobId,
"Started",
0,
"Executing (attempt "
+ currentAttempt
+ " of "
+ Math.max(1, maxRetries)
+ ")"));
}
}
return joinPoint.proceed(args);
} catch (Throwable ex) {
log.error(
"AutoJobAspect caught exception during job execution (attempt {}/{}): {}",
currentAttempt,
Math.max(1, maxRetries),
ex.getMessage(),
ex);
// Check if we should retry
if (currentAttempt < maxRetries) {
log.info(
"Retrying operation, attempt {}/{}",
currentAttempt + 1,
maxRetries);
String jobId = jobIdRef.get();
if (trackProgress && async && jobId != null) {
webSocketSender.sendProgress(
jobId,
new JobProgress(
jobId,
"Retrying",
(int) (currentAttempt * 100.0 / maxRetries),
"Retry attempt "
+ (currentAttempt + 1)
+ " of "
+ maxRetries));
}
try {
// Simple exponential backoff
Thread.sleep(100 * currentAttempt);
} catch (InterruptedException ie) {
Thread.currentThread().interrupt();
}
// Recursive call to retry
return executeWithRetries(
joinPoint,
args,
async,
timeout,
maxRetries,
trackProgress,
queueable,
resourceWeight);
}
// No more retries, throw the exception
throw new RuntimeException("Job failed: " + ex.getMessage(), ex);
}
},
timeout,
queueable,
resourceWeight);
}
// Try to get the job ID from the context (if this is an async job)
private String getJobIdFromContext() {
try {
return (String) request.getAttribute("jobId");
} catch (Exception e) {
log.debug("Could not retrieve job ID from context: {}", e.getMessage());
return null;
}
}
}
@@ -0,0 +1,23 @@
package stirling.software.common.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws").setAllowedOriginPatterns("*").withSockJS();
}
}
@@ -1,10 +1,11 @@
package stirling.software.SPDF.config;
package stirling.software.common.configuration;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.Locale;
import java.util.Properties;
import java.util.function.Predicate;
@@ -15,27 +16,39 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
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.thymeleaf.spring6.SpringTemplateEngine;
import com.posthog.java.shaded.kotlin.text.Regex;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import stirling.software.SPDF.model.ApplicationProperties;
import stirling.software.common.model.ApplicationProperties;
@Configuration
@Lazy
@Slf4j
@Configuration
@RequiredArgsConstructor
public class AppConfig {
private final Environment env;
private final ApplicationProperties applicationProperties;
public AppConfig(ApplicationProperties applicationProperties) {
this.applicationProperties = applicationProperties;
}
@Getter
@Value("${baseUrl:http://localhost}")
private String baseUrl;
@Getter
@Value("${server.servlet.context-path:/}")
private String contextPath;
@Getter
@Value("${server.port:8080}")
private String serverPort;
@Bean
@ConditionalOnProperty(name = "system.customHTMLFiles", havingValue = "true")
@@ -197,4 +210,62 @@ public class AppConfig {
public String uuid() {
return applicationProperties.getAutomaticallyGenerated().getUUID();
}
@Bean
public ApplicationProperties.Security security() {
return applicationProperties.getSecurity();
}
@Bean
public ApplicationProperties.Security.OAUTH2 oAuth2() {
return applicationProperties.getSecurity().getOauth2();
}
@Bean
public ApplicationProperties.Premium premium() {
return applicationProperties.getPremium();
}
@Bean
public ApplicationProperties.System system() {
return applicationProperties.getSystem();
}
@Bean
public ApplicationProperties.Datasource datasource() {
return applicationProperties.getSystem().getDatasource();
}
@Bean(name = "disablePixel")
public boolean disablePixel() {
return Boolean.getBoolean(env.getProperty("DISABLE_PIXEL"));
}
@Bean(name = "machineType")
public String determineMachineType() {
try {
boolean isDocker = runningInDocker();
boolean isKubernetes = System.getenv("KUBERNETES_SERVICE_HOST") != null;
boolean isBrowserOpen = "true".equalsIgnoreCase(env.getProperty("BROWSER_OPEN"));
if (isKubernetes) {
return "Kubernetes";
} else if (isDocker) {
return "Docker";
} else if (isBrowserOpen) {
String os = System.getProperty("os.name").toLowerCase(Locale.ROOT);
if (os.contains("win")) {
return "Client-windows";
} else if (os.contains("mac")) {
return "Client-mac";
} else {
return "Client-unix";
}
} else {
return "Server-jar";
}
} catch (Exception e) {
return "Unknown";
}
}
}
@@ -1,4 +1,4 @@
package stirling.software.SPDF.config;
package stirling.software.common.configuration;
import java.io.FileNotFoundException;
import java.io.IOException;
@@ -13,6 +13,8 @@ import java.util.List;
import lombok.extern.slf4j.Slf4j;
import stirling.software.common.util.YamlHelper;
/**
* A naive, line-based approach to merging "settings.yml" with "settings.yml.template" while
* preserving exact whitespace, blank lines, and inline comments -- but we only rewrite the file if
@@ -76,7 +78,7 @@ public class ConfigInitializer {
Path customSettingsPath = Paths.get(InstallationPathConfig.getCustomSettingsPath());
if (Files.notExists(customSettingsPath)) {
Files.createFile(customSettingsPath);
log.info("Created custom_settings file: {}", customSettingsPath.toString());
log.info("Created custom_settings file: {}", customSettingsPath);
}
}
@@ -1,4 +1,4 @@
package stirling.software.SPDF.config;
package stirling.software.common.configuration;
import java.io.IOException;
import java.io.InputStream;
@@ -11,8 +11,11 @@ import org.thymeleaf.templateresolver.AbstractConfigurableTemplateResolver;
import org.thymeleaf.templateresource.FileTemplateResource;
import org.thymeleaf.templateresource.ITemplateResource;
import stirling.software.SPDF.model.InputStreamTemplateResource;
import lombok.extern.slf4j.Slf4j;
import stirling.software.common.model.InputStreamTemplateResource;
@Slf4j
public class FileFallbackTemplateResolver extends AbstractConfigurableTemplateResolver {
private final ResourceLoader resourceLoader;
@@ -40,7 +43,8 @@ public class FileFallbackTemplateResolver extends AbstractConfigurableTemplateRe
return new FileTemplateResource(resource.getFile().getPath(), characterEncoding);
}
} catch (IOException e) {
// Log the exception to help with debugging issues loading external templates
log.warn("Unable to read template '{}' from file system", resourceName, e);
}
InputStream inputStream =
@@ -1,4 +1,4 @@
package stirling.software.SPDF.config;
package stirling.software.common.configuration;
import java.io.File;
import java.nio.file.Paths;
@@ -48,24 +48,21 @@ public class InstallationPathConfig {
String os = System.getProperty("os.name").toLowerCase();
if (os.contains("win")) {
return Paths.get(
System.getenv("APPDATA"), // parent path
"Stirling-PDF")
.toString()
System.getenv("APPDATA"), // parent path
"Stirling-PDF")
+ File.separator;
} else if (os.contains("mac")) {
return Paths.get(
System.getProperty("user.home"),
"Library",
"Application Support",
"Stirling-PDF")
.toString()
System.getProperty("user.home"),
"Library",
"Application Support",
"Stirling-PDF")
+ File.separator;
} else {
return Paths.get(
System.getProperty("user.home"), // parent path
".config",
"Stirling-PDF")
.toString()
System.getProperty("user.home"), // parent path
".config",
"Stirling-PDF")
+ File.separator;
}
}
@@ -1,4 +1,4 @@
package stirling.software.SPDF.config;
package stirling.software.common.configuration;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
@@ -1,4 +1,4 @@
package stirling.software.SPDF.config;
package stirling.software.common.configuration;
import org.springframework.stereotype.Component;
@@ -1,4 +1,4 @@
package stirling.software.SPDF.config;
package stirling.software.common.configuration;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -9,9 +9,9 @@ import org.springframework.context.annotation.Configuration;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import stirling.software.SPDF.model.ApplicationProperties;
import stirling.software.SPDF.model.ApplicationProperties.CustomPaths.Operations;
import stirling.software.SPDF.model.ApplicationProperties.CustomPaths.Pipeline;
import stirling.software.common.model.ApplicationProperties;
import stirling.software.common.model.ApplicationProperties.CustomPaths.Operations;
import stirling.software.common.model.ApplicationProperties.CustomPaths.Pipeline;
@Slf4j
@Configuration
@@ -1,6 +1,5 @@
package stirling.software.SPDF.config;
package stirling.software.common.configuration;
import java.io.IOException;
import java.util.Properties;
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
@@ -12,8 +11,7 @@ import org.springframework.core.io.support.PropertySourceFactory;
public class YamlPropertySourceFactory implements PropertySourceFactory {
@Override
public PropertySource<?> createPropertySource(String name, EncodedResource encodedResource)
throws IOException {
public PropertySource<?> createPropertySource(String name, EncodedResource encodedResource) {
YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
factory.setResources(encodedResource.getResource());
Properties properties = factory.getObject();
@@ -0,0 +1,7 @@
package stirling.software.common.configuration.interfaces;
public interface ShowAdminInterface {
default boolean getShowUpdateOnlyAdmins() {
return true;
}
}
@@ -0,0 +1,114 @@
package stirling.software.common.controller;
import java.util.Map;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import stirling.software.common.model.job.JobResult;
import stirling.software.common.model.job.JobStats;
import stirling.software.common.service.FileStorage;
import stirling.software.common.service.TaskManager;
/** REST controller for job-related endpoints */
@RestController
@RequiredArgsConstructor
@Slf4j
public class JobController {
private final TaskManager taskManager;
private final FileStorage fileStorage;
/**
* Get the status of a job
*
* @param jobId The job ID
* @return The job result
*/
@GetMapping("/api/v1/general/job/{jobId}")
public ResponseEntity<?> getJobStatus(@PathVariable("jobId") String jobId) {
JobResult result = taskManager.getJobResult(jobId);
if (result == null) {
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok(result);
}
/**
* Get the result of a job
*
* @param jobId The job ID
* @return The job result
*/
@GetMapping("/api/v1/general/job/{jobId}/result")
public ResponseEntity<?> getJobResult(@PathVariable("jobId") String jobId) {
JobResult result = taskManager.getJobResult(jobId);
if (result == null) {
return ResponseEntity.notFound().build();
}
if (!result.isComplete()) {
return ResponseEntity.badRequest().body("Job is not complete yet");
}
if (result.getError() != null) {
return ResponseEntity.badRequest().body("Job failed: " + result.getError());
}
if (result.getFileId() != null) {
try {
byte[] fileContent = fileStorage.retrieveBytes(result.getFileId());
return ResponseEntity.ok()
.header("Content-Type", result.getContentType())
.header(
"Content-Disposition",
"form-data; name=\"attachment\"; filename=\""
+ result.getOriginalFileName()
+ "\"")
.body(fileContent);
} catch (Exception e) {
log.error("Error retrieving file for job {}: {}", jobId, e.getMessage(), e);
return ResponseEntity.internalServerError()
.body("Error retrieving file: " + e.getMessage());
}
}
return ResponseEntity.ok(result.getResult());
}
/**
* Get statistics about jobs in the system
*
* @return Job statistics
*/
@GetMapping("/api/v1/general/job/stats")
public ResponseEntity<JobStats> getJobStats() {
JobStats stats = taskManager.getJobStats();
return ResponseEntity.ok(stats);
}
/**
* Manually trigger cleanup of old jobs
*
* @return A response indicating how many jobs were cleaned up
*/
@PostMapping("/api/v1/general/job/cleanup")
public ResponseEntity<?> cleanupOldJobs() {
int beforeCount = taskManager.getJobStats().getTotalJobs();
taskManager.cleanupOldJobs();
int afterCount = taskManager.getJobStats().getTotalJobs();
int removedCount = beforeCount - afterCount;
return ResponseEntity.ok(
Map.of(
"message", "Cleanup complete",
"removedJobs", removedCount,
"remainingJobs", afterCount));
}
}
@@ -0,0 +1,27 @@
package stirling.software.common.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Controller;
import lombok.NoArgsConstructor;
import stirling.software.common.model.job.JobProgress;
@Controller
@NoArgsConstructor
public class WebSocketProgressController {
private SimpMessagingTemplate messagingTemplate;
@Autowired(required = false)
public void setMessagingTemplate(SimpMessagingTemplate messagingTemplate) {
this.messagingTemplate = messagingTemplate;
}
public void sendProgress(String jobId, JobProgress progress) {
if (messagingTemplate != null) {
messagingTemplate.convertAndSend("/topic/progress/" + jobId, progress);
}
}
}
@@ -1,6 +1,4 @@
package stirling.software.SPDF.model;
import static stirling.software.SPDF.utils.validation.Validator.*;
package stirling.software.common.model;
import java.io.File;
import java.io.FileNotFoundException;
@@ -17,7 +15,6 @@ import java.util.List;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.core.env.ConfigurableEnvironment;
@@ -26,6 +23,7 @@ import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.EncodedResource;
import org.springframework.stereotype.Component;
import lombok.Data;
import lombok.Getter;
@@ -33,21 +31,37 @@ import lombok.Setter;
import lombok.ToString;
import lombok.extern.slf4j.Slf4j;
import stirling.software.SPDF.config.InstallationPathConfig;
import stirling.software.SPDF.config.YamlPropertySourceFactory;
import stirling.software.SPDF.model.exception.UnsupportedProviderException;
import stirling.software.SPDF.model.provider.GitHubProvider;
import stirling.software.SPDF.model.provider.GoogleProvider;
import stirling.software.SPDF.model.provider.KeycloakProvider;
import stirling.software.SPDF.model.provider.Provider;
import stirling.software.common.configuration.InstallationPathConfig;
import stirling.software.common.configuration.YamlPropertySourceFactory;
import stirling.software.common.model.exception.UnsupportedProviderException;
import stirling.software.common.model.oauth2.GitHubProvider;
import stirling.software.common.model.oauth2.GoogleProvider;
import stirling.software.common.model.oauth2.KeycloakProvider;
import stirling.software.common.model.oauth2.Provider;
import stirling.software.common.util.ValidationUtils;
@Configuration
@ConfigurationProperties(prefix = "")
@Data
@Order(Ordered.HIGHEST_PRECEDENCE)
@Slf4j
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
@ConfigurationProperties(prefix = "")
public class ApplicationProperties {
private Legal legal = new Legal();
private Security security = new Security();
private System system = new System();
private Ui ui = new Ui();
private Endpoints endpoints = new Endpoints();
private Metrics metrics = new Metrics();
private AutomaticallyGenerated automaticallyGenerated = new AutomaticallyGenerated();
private Mail mail = new Mail();
private Premium premium = new Premium();
private EnterpriseEdition enterpriseEdition = new EnterpriseEdition();
private AutoPipeline autoPipeline = new AutoPipeline();
private ProcessExecutor processExecutor = new ProcessExecutor();
@Bean
public PropertySource<?> dynamicYamlPropertySource(ConfigurableEnvironment environment)
throws IOException {
@@ -74,19 +88,6 @@ public class ApplicationProperties {
return propertySource;
}
private Legal legal = new Legal();
private Security security = new Security();
private System system = new System();
private Ui ui = new Ui();
private Endpoints endpoints = new Endpoints();
private Metrics metrics = new Metrics();
private AutomaticallyGenerated automaticallyGenerated = new AutomaticallyGenerated();
private Premium premium = new Premium();
private EnterpriseEdition enterpriseEdition = new EnterpriseEdition();
private AutoPipeline autoPipeline = new AutoPipeline();
private ProcessExecutor processExecutor = new ProcessExecutor();
@Data
public static class AutoPipeline {
private String outputFolder;
@@ -246,11 +247,11 @@ public class ApplicationProperties {
}
public boolean isSettingsValid() {
return !isStringEmpty(this.getIssuer())
&& !isStringEmpty(this.getClientId())
&& !isStringEmpty(this.getClientSecret())
&& !isCollectionEmpty(this.getScopes())
&& !isStringEmpty(this.getUseAsUsername());
return !ValidationUtils.isStringEmpty(this.getIssuer())
&& !ValidationUtils.isStringEmpty(this.getClientId())
&& !ValidationUtils.isStringEmpty(this.getClientSecret())
&& !ValidationUtils.isCollectionEmpty(this.getScopes())
&& !ValidationUtils.isStringEmpty(this.getUseAsUsername());
}
@Data
@@ -420,6 +421,16 @@ public class ApplicationProperties {
}
}
@Data
public static class Mail {
private boolean enabled;
private String host;
private int port;
private String username;
@ToString.Exclude private String password;
private String from;
}
@Data
public static class Premium {
private boolean enabled;
@@ -1,4 +1,4 @@
package stirling.software.SPDF.utils;
package stirling.software.common.model;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -1,4 +1,4 @@
package stirling.software.SPDF.model;
package stirling.software.common.model;
import java.io.IOException;
import java.io.InputStream;
@@ -39,7 +39,6 @@ public class InputStreamTemplateResource implements ITemplateResource {
@Override
public boolean exists() {
// TODO Auto-generated method stub
return false;
return inputStream != null;
}
}
@@ -0,0 +1,19 @@
package stirling.software.common.model;
import java.util.Calendar;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class PdfMetadata {
private String author;
private String producer;
private String title;
private String creator;
private String subject;
private String keywords;
private Calendar creationDate;
private Calendar modificationDate;
}
@@ -1,4 +1,4 @@
package stirling.software.SPDF.model.api;
package stirling.software.common.model.api;
import org.springframework.web.multipart.MultipartFile;
@@ -9,7 +9,11 @@ import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode
public class PDFFile {
@Schema(description = "The input PDF file")
public class GeneralFile {
@Schema(
description = "The input file",
requiredMode = Schema.RequiredMode.REQUIRED,
format = "binary")
private MultipartFile fileInput;
}
@@ -0,0 +1,25 @@
package stirling.software.common.model.api;
import org.springframework.web.multipart.MultipartFile;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@EqualsAndHashCode
public class PDFFile {
@Schema(
description = "The input PDF file",
contentMediaType = "application/pdf",
format = "binary")
private MultipartFile fileInput;
@Schema(
description = "File ID for server-side files (can be used instead of fileInput)",
example = "a1b2c3d4-5678-90ab-cdef-ghijklmnopqr")
private String fileId;
}
@@ -1,11 +1,11 @@
package stirling.software.SPDF.model.api.converters;
package stirling.software.common.model.api.converters;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import stirling.software.SPDF.model.api.PDFFile;
import stirling.software.common.model.api.PDFFile;
@Data
@EqualsAndHashCode(callSuper = true)
@@ -13,6 +13,7 @@ public class HTMLToPdfRequest extends PDFFile {
@Schema(
description = "Zoom level for displaying the website. Default is '1'.",
requiredMode = Schema.RequiredMode.REQUIRED,
defaultValue = "1")
private float zoom;
}
@@ -1,4 +1,4 @@
package stirling.software.SPDF.model.api.misc;
package stirling.software.common.model.api.misc;
public enum HighContrastColorCombination {
WHITE_TEXT_ON_BLACK,
@@ -1,4 +1,4 @@
package stirling.software.SPDF.model.api.misc;
package stirling.software.common.model.api.misc;
public enum ReplaceAndInvert {
HIGH_CONTRAST_COLOR,
@@ -0,0 +1,28 @@
package stirling.software.common.model.api.security;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode
public class RedactionArea {
@Schema(description = "The left edge point of the area to be redacted.")
private Double x;
@Schema(description = "The top edge point of the area to be redacted.")
private Double y;
@Schema(description = "The height of the area to be redacted.")
private Double height;
@Schema(description = "The width of the area to be redacted.")
private Double width;
@Schema(description = "The page on which the area should be redacted.")
private Integer page;
@Schema(description = "The color used to redact the specified area.")
private String color;
}
@@ -0,0 +1,66 @@
package stirling.software.common.model.enumeration;
import java.util.LinkedHashMap;
import java.util.Map;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@Getter
@RequiredArgsConstructor
public enum Role {
// Unlimited access
ADMIN("ROLE_ADMIN", Integer.MAX_VALUE, Integer.MAX_VALUE, "adminUserSettings.admin"),
// Unlimited access
USER("ROLE_USER", Integer.MAX_VALUE, Integer.MAX_VALUE, "adminUserSettings.user"),
// 40 API calls Per Day, 40 web calls
LIMITED_API_USER("ROLE_LIMITED_API_USER", 40, 40, "adminUserSettings.apiUser"),
// 20 API calls Per Day, 20 web calls
EXTRA_LIMITED_API_USER("ROLE_EXTRA_LIMITED_API_USER", 20, 20, "adminUserSettings.extraApiUser"),
// 0 API calls per day and 20 web calls
WEB_ONLY_USER("ROLE_WEB_ONLY_USER", 0, 20, "adminUserSettings.webOnlyUser"),
INTERNAL_API_USER(
"STIRLING-PDF-BACKEND-API-USER",
Integer.MAX_VALUE,
Integer.MAX_VALUE,
"adminUserSettings.internalApiUser"),
DEMO_USER("ROLE_DEMO_USER", 100, 100, "adminUserSettings.demoUser");
private final String roleId;
private final int apiCallsPerDay;
private final int webCallsPerDay;
private final String roleName;
public static String getRoleNameByRoleId(String roleId) {
// Using the fromString method to get the Role enum based on the roleId
Role role = fromString(roleId);
// Return the roleName of the found Role enum
return role.getRoleName();
}
// Method to retrieve all role IDs and role names
public static Map<String, String> getAllRoleDetails() {
// Using LinkedHashMap to preserve order
Map<String, String> roleDetails = new LinkedHashMap<>();
for (Role role : Role.values()) {
roleDetails.put(role.getRoleId(), role.getRoleName());
}
return roleDetails;
}
public static Role fromString(String roleId) {
for (Role role : Role.values()) {
if (role.getRoleId().equalsIgnoreCase(roleId)) {
return role;
}
}
throw new IllegalArgumentException("No Role defined for id: " + roleId);
}
}
@@ -1,4 +1,4 @@
package stirling.software.SPDF.model;
package stirling.software.common.model.enumeration;
import lombok.Getter;
@@ -0,0 +1,7 @@
package stirling.software.common.model.exception;
public class UnsupportedClaimException extends RuntimeException {
public UnsupportedClaimException(String message) {
super(message);
}
}
@@ -1,4 +1,4 @@
package stirling.software.SPDF.model.exception;
package stirling.software.common.model.exception;
public class UnsupportedProviderException extends Exception {
public UnsupportedProviderException(String message) {
@@ -0,0 +1,15 @@
package stirling.software.common.model.job;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class JobProgress {
private String jobId;
private String status;
private int percentComplete;
private String message;
}
@@ -0,0 +1,14 @@
package stirling.software.common.model.job;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class JobResponse<T> {
private boolean async;
private String jobId;
private T result;
}
@@ -0,0 +1,94 @@
package stirling.software.common.model.job;
import java.time.LocalDateTime;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/** Represents the result of a job execution. Used by the TaskManager to store job results. */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class JobResult {
/** The job ID */
private String jobId;
/** Flag indicating if the job is complete */
private boolean complete;
/** Error message if the job failed */
private String error;
/** The file ID of the result file, if applicable */
private String fileId;
/** Original file name, if applicable */
private String originalFileName;
/** MIME type of the result, if applicable */
private String contentType;
/** Time when the job was created */
private LocalDateTime createdAt;
/** Time when the job was completed */
private LocalDateTime completedAt;
/** The actual result object, if not a file */
private Object result;
/**
* Create a new JobResult with the given job ID
*
* @param jobId The job ID
* @return A new JobResult
*/
public static JobResult createNew(String jobId) {
return JobResult.builder()
.jobId(jobId)
.complete(false)
.createdAt(LocalDateTime.now())
.build();
}
/**
* Mark this job as complete with a file result
*
* @param fileId The file ID of the result
* @param originalFileName The original file name
* @param contentType The content type of the file
*/
public void completeWithFile(String fileId, String originalFileName, String contentType) {
this.complete = true;
this.fileId = fileId;
this.originalFileName = originalFileName;
this.contentType = contentType;
this.completedAt = LocalDateTime.now();
}
/**
* Mark this job as complete with a general result
*
* @param result The result object
*/
public void completeWithResult(Object result) {
this.complete = true;
this.result = result;
this.completedAt = LocalDateTime.now();
}
/**
* Mark this job as failed with an error message
*
* @param error The error message
*/
public void failWithError(String error) {
this.complete = true;
this.error = error;
this.completedAt = LocalDateTime.now();
}
}
@@ -0,0 +1,43 @@
package stirling.software.common.model.job;
import java.time.LocalDateTime;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/** Represents statistics about jobs in the system */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class JobStats {
/** Total number of jobs (active and completed) */
private int totalJobs;
/** Number of active (incomplete) jobs */
private int activeJobs;
/** Number of completed jobs */
private int completedJobs;
/** Number of failed jobs */
private int failedJobs;
/** Number of successful jobs */
private int successfulJobs;
/** Number of jobs with file results */
private int fileResultJobs;
/** The oldest active job's creation timestamp */
private LocalDateTime oldestActiveJobTime;
/** The newest active job's creation timestamp */
private LocalDateTime newestActiveJobTime;
/** The average processing time for completed jobs in milliseconds */
private long averageProcessingTimeMs;
}
@@ -1,11 +1,11 @@
package stirling.software.SPDF.model.provider;
package stirling.software.common.model.oauth2;
import java.util.ArrayList;
import java.util.Collection;
import lombok.NoArgsConstructor;
import stirling.software.SPDF.model.UsernameAttribute;
import stirling.software.common.model.enumeration.UsernameAttribute;
@NoArgsConstructor
public class GitHubProvider extends Provider {
@@ -1,11 +1,11 @@
package stirling.software.SPDF.model.provider;
package stirling.software.common.model.oauth2;
import java.util.ArrayList;
import java.util.Collection;
import lombok.NoArgsConstructor;
import stirling.software.SPDF.model.UsernameAttribute;
import stirling.software.common.model.enumeration.UsernameAttribute;
@NoArgsConstructor
public class GoogleProvider extends Provider {
@@ -1,11 +1,11 @@
package stirling.software.SPDF.model.provider;
package stirling.software.common.model.oauth2;
import java.util.ArrayList;
import java.util.Collection;
import lombok.NoArgsConstructor;
import stirling.software.SPDF.model.UsernameAttribute;
import stirling.software.common.model.enumeration.UsernameAttribute;
@NoArgsConstructor
public class KeycloakProvider extends Provider {
@@ -1,6 +1,6 @@
package stirling.software.SPDF.model.provider;
package stirling.software.common.model.oauth2;
import static stirling.software.SPDF.model.UsernameAttribute.EMAIL;
import static stirling.software.common.model.enumeration.UsernameAttribute.EMAIL;
import java.util.ArrayList;
import java.util.Arrays;
@@ -9,8 +9,8 @@ import java.util.Collection;
import lombok.Data;
import lombok.NoArgsConstructor;
import stirling.software.SPDF.model.UsernameAttribute;
import stirling.software.SPDF.model.exception.UnsupportedUsernameAttribute;
import stirling.software.common.model.enumeration.UsernameAttribute;
import stirling.software.common.model.exception.UnsupportedClaimException;
@Data
@NoArgsConstructor
@@ -83,7 +83,7 @@ public class Provider {
return usernameAttribute;
}
default ->
throw new UnsupportedUsernameAttribute(
throw new UnsupportedClaimException(
String.format(EXCEPTION_MESSAGE, usernameAttribute, clientName));
}
}
@@ -94,7 +94,7 @@ public class Provider {
return usernameAttribute;
}
default ->
throw new UnsupportedUsernameAttribute(
throw new UnsupportedClaimException(
String.format(EXCEPTION_MESSAGE, usernameAttribute, clientName));
}
}
@@ -105,7 +105,7 @@ public class Provider {
return usernameAttribute;
}
default ->
throw new UnsupportedUsernameAttribute(
throw new UnsupportedClaimException(
String.format(EXCEPTION_MESSAGE, usernameAttribute, clientName));
}
}
@@ -1,4 +1,4 @@
package stirling.software.SPDF.service;
package stirling.software.common.service;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -19,9 +19,10 @@ import org.apache.pdfbox.pdmodel.PDDocument;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import stirling.software.SPDF.model.api.PDFFile;
import stirling.software.common.model.api.PDFFile;
/**
* Adaptive PDF document factory that optimizes memory usage based on file size and available system
@@ -29,6 +30,7 @@ import stirling.software.SPDF.model.api.PDFFile;
*/
@Component
@Slf4j
@RequiredArgsConstructor
public class CustomPDFDocumentFactory {
private final PdfMetadataService pdfMetadataService;
@@ -63,10 +65,6 @@ public class CustomPDFDocumentFactory {
// Counter for tracking temporary resources
private static final AtomicLong tempCounter = new AtomicLong(0);
public CustomPDFDocumentFactory(PdfMetadataService pdfMetadataService) {
this.pdfMetadataService = pdfMetadataService;
}
/**
* Main entry point for loading a PDF document from a file. Automatically selects the most
* appropriate loading strategy.
@@ -0,0 +1,78 @@
package stirling.software.common.service;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.nio.file.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import lombok.RequiredArgsConstructor;
@Service
@RequiredArgsConstructor
public class FileOrUploadService {
@Value("${stirling.tempDir:/tmp/stirling-files}")
private String tempDirPath;
public Path resolveFilePath(String fileId) {
return Path.of(tempDirPath).resolve(fileId);
}
public MultipartFile toMockMultipartFile(String name, byte[] data) throws IOException {
return new CustomMultipartFile(name, data);
}
// Custom implementation of MultipartFile
private static class CustomMultipartFile implements MultipartFile {
private final String name;
private final byte[] content;
public CustomMultipartFile(String name, byte[] content) {
this.name = name;
this.content = content;
}
@Override
public String getName() {
return name;
}
@Override
public String getOriginalFilename() {
return name;
}
@Override
public String getContentType() {
return "application/pdf";
}
@Override
public boolean isEmpty() {
return content == null || content.length == 0;
}
@Override
public long getSize() {
return content.length;
}
@Override
public byte[] getBytes() throws IOException {
return content;
}
@Override
public java.io.InputStream getInputStream() throws IOException {
return new ByteArrayInputStream(content);
}
@Override
public void transferTo(java.io.File dest) throws IOException, IllegalStateException {
Files.write(dest.toPath(), content);
}
}
}
@@ -0,0 +1,152 @@
package stirling.software.common.service;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.UUID;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
/**
* Service for storing and retrieving files with unique file IDs. Used by the AutoJobPostMapping
* system to handle file references.
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class FileStorage {
@Value("${stirling.tempDir:/tmp/stirling-files}")
private String tempDirPath;
private final FileOrUploadService fileOrUploadService;
/**
* Store a file and return its unique ID
*
* @param file The file to store
* @return The unique ID assigned to the file
* @throws IOException If there is an error storing the file
*/
public String storeFile(MultipartFile file) throws IOException {
String fileId = generateFileId();
Path filePath = getFilePath(fileId);
// Ensure the directory exists
Files.createDirectories(filePath.getParent());
// Transfer the file to the storage location
file.transferTo(filePath.toFile());
log.debug("Stored file with ID: {}", fileId);
return fileId;
}
/**
* Store a byte array as a file and return its unique ID
*
* @param bytes The byte array to store
* @param originalName The original name of the file (for extension)
* @return The unique ID assigned to the file
* @throws IOException If there is an error storing the file
*/
public String storeBytes(byte[] bytes, String originalName) throws IOException {
String fileId = generateFileId();
Path filePath = getFilePath(fileId);
// Ensure the directory exists
Files.createDirectories(filePath.getParent());
// Write the bytes to the file
Files.write(filePath, bytes);
log.debug("Stored byte array with ID: {}", fileId);
return fileId;
}
/**
* Retrieve a file by its ID as a MultipartFile
*
* @param fileId The ID of the file to retrieve
* @return The file as a MultipartFile
* @throws IOException If the file doesn't exist or can't be read
*/
public MultipartFile retrieveFile(String fileId) throws IOException {
Path filePath = getFilePath(fileId);
if (!Files.exists(filePath)) {
throw new IOException("File not found with ID: " + fileId);
}
byte[] fileData = Files.readAllBytes(filePath);
return fileOrUploadService.toMockMultipartFile(fileId, fileData);
}
/**
* Retrieve a file by its ID as a byte array
*
* @param fileId The ID of the file to retrieve
* @return The file as a byte array
* @throws IOException If the file doesn't exist or can't be read
*/
public byte[] retrieveBytes(String fileId) throws IOException {
Path filePath = getFilePath(fileId);
if (!Files.exists(filePath)) {
throw new IOException("File not found with ID: " + fileId);
}
return Files.readAllBytes(filePath);
}
/**
* Delete a file by its ID
*
* @param fileId The ID of the file to delete
* @return true if the file was deleted, false otherwise
*/
public boolean deleteFile(String fileId) {
try {
Path filePath = getFilePath(fileId);
return Files.deleteIfExists(filePath);
} catch (IOException e) {
log.error("Error deleting file with ID: {}", fileId, e);
return false;
}
}
/**
* Check if a file exists by its ID
*
* @param fileId The ID of the file to check
* @return true if the file exists, false otherwise
*/
public boolean fileExists(String fileId) {
Path filePath = getFilePath(fileId);
return Files.exists(filePath);
}
/**
* Get the path for a file ID
*
* @param fileId The ID of the file
* @return The path to the file
*/
private Path getFilePath(String fileId) {
return Path.of(tempDirPath).resolve(fileId);
}
/**
* Generate a unique file ID
*
* @return A unique file ID
*/
private String generateFileId() {
return UUID.randomUUID().toString();
}
}
@@ -0,0 +1,465 @@
package stirling.software.common.service;
import java.io.IOException;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.function.Supplier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import stirling.software.common.controller.WebSocketProgressController;
import stirling.software.common.model.job.JobProgress;
import stirling.software.common.model.job.JobResponse;
import stirling.software.common.util.ExecutorFactory;
/** Service for executing jobs asynchronously or synchronously */
@Service
@Slf4j
public class JobExecutorService {
private final TaskManager taskManager;
private final WebSocketProgressController webSocketSender;
private final FileStorage fileStorage;
private final HttpServletRequest request;
private final ResourceMonitor resourceMonitor;
private final JobQueue jobQueue;
private final ExecutorService executor = ExecutorFactory.newVirtualOrCachedThreadExecutor();
private final long effectiveTimeoutMs;
public JobExecutorService(
TaskManager taskManager,
WebSocketProgressController webSocketSender,
FileStorage fileStorage,
HttpServletRequest request,
ResourceMonitor resourceMonitor,
JobQueue jobQueue,
@Value("${spring.mvc.async.request-timeout:1200000}") long asyncRequestTimeoutMs,
@Value("${server.servlet.session.timeout:30m}") String sessionTimeout) {
this.taskManager = taskManager;
this.webSocketSender = webSocketSender;
this.fileStorage = fileStorage;
this.request = request;
this.resourceMonitor = resourceMonitor;
this.jobQueue = jobQueue;
// Parse session timeout and calculate effective timeout once during initialization
long sessionTimeoutMs = parseSessionTimeout(sessionTimeout);
this.effectiveTimeoutMs = Math.min(asyncRequestTimeoutMs, sessionTimeoutMs);
log.debug(
"Job executor configured with effective timeout of {} ms", this.effectiveTimeoutMs);
}
/**
* Run a job either asynchronously or synchronously
*
* @param async Whether to run the job asynchronously
* @param work The work to be done
* @return The response
*/
public ResponseEntity<?> runJobGeneric(boolean async, Supplier<Object> work) {
return runJobGeneric(async, work, -1);
}
/**
* Run a job either asynchronously or synchronously with a custom timeout
*
* @param async Whether to run the job asynchronously
* @param work The work to be done
* @param customTimeoutMs Custom timeout in milliseconds, or -1 to use the default
* @return The response
*/
public ResponseEntity<?> runJobGeneric(
boolean async, Supplier<Object> work, long customTimeoutMs) {
return runJobGeneric(async, work, customTimeoutMs, false, 50);
}
/**
* Run a job either asynchronously or synchronously with custom parameters
*
* @param async Whether to run the job asynchronously
* @param work The work to be done
* @param customTimeoutMs Custom timeout in milliseconds, or -1 to use the default
* @param queueable Whether this job can be queued when system resources are limited
* @param resourceWeight The resource weight of this job (1-100)
* @return The response
*/
public ResponseEntity<?> runJobGeneric(
boolean async,
Supplier<Object> work,
long customTimeoutMs,
boolean queueable,
int resourceWeight) {
String jobId = UUID.randomUUID().toString();
// Store the job ID in the request for potential use by other components
if (request != null) {
request.setAttribute("jobId", jobId);
}
// Determine which timeout to use
long timeoutToUse = customTimeoutMs > 0 ? customTimeoutMs : effectiveTimeoutMs;
log.debug(
"Running job with ID: {}, async: {}, timeout: {}ms, queueable: {}, weight: {}",
jobId,
async,
timeoutToUse,
queueable,
resourceWeight);
// Check if we need to queue this job based on resource availability
boolean shouldQueue =
queueable
&& async
&& // Only async jobs can be queued
resourceMonitor.shouldQueueJob(resourceWeight);
if (shouldQueue) {
// Queue the job instead of executing immediately
log.debug(
"Queueing job {} due to resource constraints (weight: {})",
jobId,
resourceWeight);
taskManager.createTask(jobId);
// Create a specialized wrapper that updates the TaskManager
Supplier<Object> wrappedWork =
() -> {
try {
Object result = work.get();
processJobResult(jobId, result);
return result;
} catch (Exception e) {
log.error(
"Error executing queued job {}: {}", jobId, e.getMessage(), e);
taskManager.setError(jobId, e.getMessage());
throw e;
}
};
// Queue the job and get the future
CompletableFuture<ResponseEntity<?>> future =
jobQueue.queueJob(jobId, resourceWeight, wrappedWork, timeoutToUse);
// Return immediately with job ID
return ResponseEntity.ok().body(new JobResponse<>(true, jobId, null));
} else if (async) {
taskManager.createTask(jobId);
webSocketSender.sendProgress(jobId, new JobProgress(jobId, "Started", 0, "Running"));
executor.execute(
() -> {
try {
log.debug(
"Running async job {} with timeout {} ms", jobId, timeoutToUse);
// Execute with timeout
Object result = executeWithTimeout(() -> work.get(), timeoutToUse);
processJobResult(jobId, result);
webSocketSender.sendProgress(
jobId, new JobProgress(jobId, "Done", 100, "Complete"));
} catch (TimeoutException te) {
log.error("Job {} timed out after {} ms", jobId, timeoutToUse);
taskManager.setError(jobId, "Job timed out");
webSocketSender.sendProgress(
jobId, new JobProgress(jobId, "Error", 100, "Job timed out"));
} catch (Exception e) {
log.error("Error executing job {}: {}", jobId, e.getMessage(), e);
taskManager.setError(jobId, e.getMessage());
webSocketSender.sendProgress(
jobId, new JobProgress(jobId, "Error", 100, e.getMessage()));
}
});
return ResponseEntity.ok().body(new JobResponse<>(true, jobId, null));
} else {
try {
log.debug("Running sync job with timeout {} ms", timeoutToUse);
// Execute with timeout
Object result = executeWithTimeout(() -> work.get(), timeoutToUse);
// If the result is already a ResponseEntity, return it directly
if (result instanceof ResponseEntity) {
return (ResponseEntity<?>) result;
}
// Process different result types
return handleResultForSyncJob(result);
} catch (TimeoutException te) {
log.error("Synchronous job timed out after {} ms", timeoutToUse);
return ResponseEntity.internalServerError()
.body(Map.of("error", "Job timed out after " + timeoutToUse + " ms"));
} catch (Exception e) {
log.error("Error executing synchronous job: {}", e.getMessage(), e);
// Construct a JSON error response
return ResponseEntity.internalServerError()
.body(Map.of("error", "Job failed: " + e.getMessage()));
}
}
}
/**
* Process the result of an asynchronous job
*
* @param jobId The job ID
* @param result The result
*/
private void processJobResult(String jobId, Object result) {
try {
if (result instanceof byte[]) {
// Store byte array as a file
String fileId = fileStorage.storeBytes((byte[]) result, "result.pdf");
taskManager.setFileResult(jobId, fileId, "result.pdf", "application/pdf");
log.debug("Stored byte[] result with fileId: {}", fileId);
} else if (result instanceof ResponseEntity) {
ResponseEntity<?> response = (ResponseEntity<?>) result;
Object body = response.getBody();
if (body instanceof byte[]) {
// Extract filename from content-disposition header if available
String filename = "result.pdf";
String contentType = "application/pdf";
if (response.getHeaders().getContentDisposition() != null) {
String disposition =
response.getHeaders().getContentDisposition().toString();
if (disposition.contains("filename=")) {
filename =
disposition.substring(
disposition.indexOf("filename=") + 9,
disposition.lastIndexOf("\""));
}
}
if (response.getHeaders().getContentType() != null) {
contentType = response.getHeaders().getContentType().toString();
}
String fileId = fileStorage.storeBytes((byte[]) body, filename);
taskManager.setFileResult(jobId, fileId, filename, contentType);
log.debug("Stored ResponseEntity<byte[]> result with fileId: {}", fileId);
} else {
// Check if the response body contains a fileId
if (body != null && body.toString().contains("fileId")) {
try {
// Try to extract fileId using reflection
java.lang.reflect.Method getFileId =
body.getClass().getMethod("getFileId");
String fileId = (String) getFileId.invoke(body);
if (fileId != null && !fileId.isEmpty()) {
// Try to get filename and content type
String filename = "result.pdf";
String contentType = "application/pdf";
try {
java.lang.reflect.Method getOriginalFileName =
body.getClass().getMethod("getOriginalFilename");
String origName = (String) getOriginalFileName.invoke(body);
if (origName != null && !origName.isEmpty()) {
filename = origName;
}
} catch (Exception e) {
log.debug(
"Could not get original filename: {}", e.getMessage());
}
try {
java.lang.reflect.Method getContentType =
body.getClass().getMethod("getContentType");
String ct = (String) getContentType.invoke(body);
if (ct != null && !ct.isEmpty()) {
contentType = ct;
}
} catch (Exception e) {
log.debug("Could not get content type: {}", e.getMessage());
}
taskManager.setFileResult(jobId, fileId, filename, contentType);
log.debug("Extracted fileId from response body: {}", fileId);
taskManager.setComplete(jobId);
return;
}
} catch (Exception e) {
log.debug(
"Failed to extract fileId from response body: {}",
e.getMessage());
}
}
// Store generic result
taskManager.setResult(jobId, body);
}
} else if (result instanceof MultipartFile) {
MultipartFile file = (MultipartFile) result;
String fileId = fileStorage.storeFile(file);
taskManager.setFileResult(
jobId, fileId, file.getOriginalFilename(), file.getContentType());
log.debug("Stored MultipartFile result with fileId: {}", fileId);
} else {
// Check if result has a fileId field
if (result != null) {
try {
// Try to extract fileId using reflection
java.lang.reflect.Method getFileId =
result.getClass().getMethod("getFileId");
String fileId = (String) getFileId.invoke(result);
if (fileId != null && !fileId.isEmpty()) {
// Try to get filename and content type
String filename = "result.pdf";
String contentType = "application/pdf";
try {
java.lang.reflect.Method getOriginalFileName =
result.getClass().getMethod("getOriginalFilename");
String origName = (String) getOriginalFileName.invoke(result);
if (origName != null && !origName.isEmpty()) {
filename = origName;
}
} catch (Exception e) {
log.debug("Could not get original filename: {}", e.getMessage());
}
try {
java.lang.reflect.Method getContentType =
result.getClass().getMethod("getContentType");
String ct = (String) getContentType.invoke(result);
if (ct != null && !ct.isEmpty()) {
contentType = ct;
}
} catch (Exception e) {
log.debug("Could not get content type: {}", e.getMessage());
}
taskManager.setFileResult(jobId, fileId, filename, contentType);
log.debug("Extracted fileId from result object: {}", fileId);
taskManager.setComplete(jobId);
return;
}
} catch (Exception e) {
log.debug(
"Failed to extract fileId from result object: {}", e.getMessage());
}
}
// Default case: store the result as is
taskManager.setResult(jobId, result);
}
taskManager.setComplete(jobId);
} catch (Exception e) {
log.error("Error processing job result: {}", e.getMessage(), e);
taskManager.setError(jobId, "Error processing result: " + e.getMessage());
}
}
/**
* Handle different result types for synchronous jobs
*
* @param result The result object
* @return The appropriate ResponseEntity
* @throws IOException If there is an error processing the result
*/
private ResponseEntity<?> handleResultForSyncJob(Object result) throws IOException {
if (result instanceof byte[]) {
// Return byte array as PDF
return ResponseEntity.ok()
.contentType(MediaType.APPLICATION_PDF)
.header(
HttpHeaders.CONTENT_DISPOSITION,
"form-data; name=\"attachment\"; filename=\"result.pdf\"")
.body(result);
} else if (result instanceof MultipartFile) {
// Return MultipartFile content
MultipartFile file = (MultipartFile) result;
return ResponseEntity.ok()
.contentType(MediaType.parseMediaType(file.getContentType()))
.header(
HttpHeaders.CONTENT_DISPOSITION,
"form-data; name=\"attachment\"; filename=\""
+ file.getOriginalFilename()
+ "\"")
.body(file.getBytes());
} else {
// Default case: return as JSON
return ResponseEntity.ok(result);
}
}
/**
* Parse session timeout string (e.g., "30m", "1h") to milliseconds
*
* @param timeout The timeout string
* @return The timeout in milliseconds
*/
private long parseSessionTimeout(String timeout) {
if (timeout == null || timeout.isEmpty()) {
return 30 * 60 * 1000; // Default: 30 minutes
}
try {
String value = timeout.replaceAll("[^\\d.]", "");
String unit = timeout.replaceAll("[\\d.]", "");
double numericValue = Double.parseDouble(value);
return switch (unit.toLowerCase()) {
case "s" -> (long) (numericValue * 1000);
case "m" -> (long) (numericValue * 60 * 1000);
case "h" -> (long) (numericValue * 60 * 60 * 1000);
case "d" -> (long) (numericValue * 24 * 60 * 60 * 1000);
default -> (long) (numericValue * 60 * 1000); // Default to minutes
};
} catch (Exception e) {
log.warn("Could not parse session timeout '{}', using default", timeout);
return 30 * 60 * 1000; // Default: 30 minutes
}
}
/**
* Execute a supplier with a timeout
*
* @param supplier The supplier to execute
* @param timeoutMs The timeout in milliseconds
* @return The result from the supplier
* @throws TimeoutException If the execution times out
* @throws Exception If the supplier throws an exception
*/
private <T> T executeWithTimeout(Supplier<T> supplier, long timeoutMs)
throws TimeoutException, Exception {
java.util.concurrent.CompletableFuture<T> future =
java.util.concurrent.CompletableFuture.supplyAsync(supplier);
try {
return future.get(timeoutMs, TimeUnit.MILLISECONDS);
} catch (java.util.concurrent.TimeoutException e) {
future.cancel(true);
throw new TimeoutException("Execution timed out after " + timeoutMs + " ms");
} catch (java.util.concurrent.ExecutionException e) {
throw (Exception) e.getCause();
} catch (java.util.concurrent.CancellationException e) {
throw new Exception("Execution was cancelled", e);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new Exception("Execution was interrupted", e);
}
}
}
@@ -0,0 +1,428 @@
package stirling.software.common.service;
import java.time.Instant;
import java.util.Map;
import java.util.concurrent.*;
import java.util.function.Supplier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.PreDestroy;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import stirling.software.common.controller.WebSocketProgressController;
import stirling.software.common.model.job.JobProgress;
import stirling.software.common.util.ExecutorFactory;
/**
* Manages a queue of jobs with dynamic sizing based on system resources. Used when system resources
* are limited to prevent overloading.
*/
@Service
@Slf4j
public class JobQueue {
private final ResourceMonitor resourceMonitor;
private final WebSocketProgressController webSocketSender;
@Value("${stirling.job.queue.base-capacity:10}")
private int baseQueueCapacity = 10;
@Value("${stirling.job.queue.min-capacity:2}")
private int minQueueCapacity = 2;
@Value("${stirling.job.queue.check-interval-ms:1000}")
private long queueCheckIntervalMs = 1000;
@Value("${stirling.job.queue.max-wait-time-ms:600000}")
private long maxWaitTimeMs = 600000; // 10 minutes
private BlockingQueue<QueuedJob> jobQueue;
private final Map<String, QueuedJob> jobMap = new ConcurrentHashMap<>();
private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
private final ExecutorService jobExecutor = ExecutorFactory.newVirtualOrCachedThreadExecutor();
private boolean shuttingDown = false;
@Getter private int rejectedJobs = 0;
@Getter private int totalQueuedJobs = 0;
@Getter private int currentQueueSize = 0;
/** Represents a job waiting in the queue. */
@Data
@AllArgsConstructor
private static class QueuedJob {
private final String jobId;
private final int resourceWeight;
private final Supplier<Object> work;
private final long timeoutMs;
private final Instant queuedAt;
private CompletableFuture<ResponseEntity<?>> future;
private volatile boolean cancelled = false;
}
public JobQueue(ResourceMonitor resourceMonitor, WebSocketProgressController webSocketSender) {
this.resourceMonitor = resourceMonitor;
this.webSocketSender = webSocketSender;
// Initialize with dynamic capacity
int capacity =
resourceMonitor.calculateDynamicQueueCapacity(baseQueueCapacity, minQueueCapacity);
this.jobQueue = new LinkedBlockingQueue<>(capacity);
}
@PostConstruct
public void initialize() {
log.debug(
"Starting job queue with base capacity {}, min capacity {}",
baseQueueCapacity,
minQueueCapacity);
// Periodically process the job queue
scheduler.scheduleWithFixedDelay(
this::processQueue, 0, queueCheckIntervalMs, TimeUnit.MILLISECONDS);
// Periodically update queue capacity based on resource usage
scheduler.scheduleWithFixedDelay(
this::updateQueueCapacity,
10000, // Initial delay
30000, // 30 second interval
TimeUnit.MILLISECONDS);
}
@PreDestroy
public void shutdown() {
log.info("Shutting down job queue");
shuttingDown = true;
// Complete any futures that are still waiting
jobMap.forEach(
(id, job) -> {
if (!job.future.isDone()) {
job.future.completeExceptionally(
new RuntimeException("Server shutting down, job cancelled"));
}
});
scheduler.shutdownNow();
jobExecutor.shutdownNow();
log.info(
"Job queue shutdown complete. Stats: total={}, rejected={}",
totalQueuedJobs,
rejectedJobs);
}
/**
* Queues a job for execution when resources permit.
*
* @param jobId The job ID
* @param resourceWeight The resource weight of the job (1-100)
* @param work The work to be done
* @param timeoutMs The timeout in milliseconds
* @return A CompletableFuture that will complete when the job is executed
*/
public CompletableFuture<ResponseEntity<?>> queueJob(
String jobId, int resourceWeight, Supplier<Object> work, long timeoutMs) {
// Create a CompletableFuture to track this job's completion
CompletableFuture<ResponseEntity<?>> future = new CompletableFuture<>();
// Create the queued job
QueuedJob job =
new QueuedJob(jobId, resourceWeight, work, timeoutMs, Instant.now(), future, false);
// Store in our map for lookup
jobMap.put(jobId, job);
// Update stats
totalQueuedJobs++;
currentQueueSize = jobQueue.size();
// Try to add to the queue
try {
boolean added = jobQueue.offer(job, 5, TimeUnit.SECONDS);
if (!added) {
log.warn("Queue full, rejecting job {}", jobId);
rejectedJobs++;
future.completeExceptionally(
new RuntimeException("Job queue full, please try again later"));
jobMap.remove(jobId);
return future;
}
log.debug(
"Job {} queued for execution (weight: {}, queue size: {})",
jobId,
resourceWeight,
jobQueue.size());
// Notify client via WebSocket that job is queued
webSocketSender.sendProgress(
jobId, new JobProgress(jobId, "Queued", 0, "Waiting in queue for resources"));
return future;
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
future.completeExceptionally(new RuntimeException("Job queue interrupted"));
jobMap.remove(jobId);
return future;
}
}
/**
* Gets the current capacity of the job queue.
*
* @return The current capacity
*/
public int getQueueCapacity() {
return ((LinkedBlockingQueue<QueuedJob>) jobQueue).remainingCapacity() + jobQueue.size();
}
/** Updates the capacity of the job queue based on available system resources. */
private void updateQueueCapacity() {
try {
// Calculate new capacity
int newCapacity =
resourceMonitor.calculateDynamicQueueCapacity(
baseQueueCapacity, minQueueCapacity);
int currentCapacity = getQueueCapacity();
if (newCapacity != currentCapacity) {
log.debug(
"Updating job queue capacity from {} to {}", currentCapacity, newCapacity);
// Create new queue with updated capacity
BlockingQueue<QueuedJob> newQueue = new LinkedBlockingQueue<>(newCapacity);
// Transfer jobs from old queue to new queue
jobQueue.drainTo(newQueue);
jobQueue = newQueue;
currentQueueSize = jobQueue.size();
}
} catch (Exception e) {
log.error("Error updating queue capacity: {}", e.getMessage(), e);
}
}
/** Processes jobs in the queue, executing them when resources permit. */
private void processQueue() {
if (shuttingDown || jobQueue.isEmpty()) {
return;
}
try {
// Get current resource status
ResourceMonitor.ResourceStatus status = resourceMonitor.getCurrentStatus().get();
// Check if we should execute any jobs
boolean canExecuteJobs = (status != ResourceMonitor.ResourceStatus.CRITICAL);
if (!canExecuteJobs) {
// Under critical load, don't execute any jobs
log.debug("System under critical load, delaying job execution");
return;
}
// Get jobs from the queue, up to a limit based on resource availability
int jobsToProcess =
Math.max(
1,
switch (status) {
case OK -> 3;
case WARNING -> 1;
case CRITICAL -> 0;
});
for (int i = 0; i < jobsToProcess && !jobQueue.isEmpty(); i++) {
QueuedJob job = jobQueue.poll();
if (job == null) break;
// Check if it's been waiting too long
long waitTimeMs = Instant.now().toEpochMilli() - job.queuedAt.toEpochMilli();
if (waitTimeMs > maxWaitTimeMs) {
log.warn(
"Job {} exceeded maximum wait time ({} ms), executing anyway",
job.jobId,
waitTimeMs);
}
// Remove from our map
jobMap.remove(job.jobId);
currentQueueSize = jobQueue.size();
// Notify via WebSocket
webSocketSender.sendProgress(
job.jobId,
new JobProgress(job.jobId, "Processing", 10, "Starting job execution"));
// Execute the job
executeJob(job);
}
} catch (Exception e) {
log.error("Error processing job queue: {}", e.getMessage(), e);
}
}
/**
* Executes a job from the queue.
*
* @param job The job to execute
*/
private void executeJob(QueuedJob job) {
if (job.cancelled) {
log.debug("Job {} was cancelled, not executing", job.jobId);
return;
}
jobExecutor.execute(
() -> {
log.debug("Executing queued job {} (queued at {})", job.jobId, job.queuedAt);
try {
// Execute with timeout
Object result = executeWithTimeout(job.work, job.timeoutMs);
// Process the result
if (result instanceof ResponseEntity) {
job.future.complete((ResponseEntity<?>) result);
} else {
job.future.complete(ResponseEntity.ok(result));
}
// Update WebSocket
webSocketSender.sendProgress(
job.jobId,
new JobProgress(
job.jobId, "Complete", 100, "Job completed successfully"));
} catch (Exception e) {
log.error(
"Error executing queued job {}: {}", job.jobId, e.getMessage(), e);
job.future.completeExceptionally(e);
// Update WebSocket
webSocketSender.sendProgress(
job.jobId,
new JobProgress(
job.jobId, "Error", 100, "Job failed: " + e.getMessage()));
}
});
}
/**
* Execute a supplier with a timeout.
*
* @param supplier The supplier to execute
* @param timeoutMs The timeout in milliseconds
* @return The result from the supplier
* @throws Exception If there is an execution error
*/
private <T> T executeWithTimeout(Supplier<T> supplier, long timeoutMs) throws Exception {
CompletableFuture<T> future = CompletableFuture.supplyAsync(supplier);
try {
if (timeoutMs <= 0) {
// No timeout
return future.join();
} else {
// With timeout
return future.get(timeoutMs, TimeUnit.MILLISECONDS);
}
} catch (TimeoutException e) {
future.cancel(true);
throw new TimeoutException("Job timed out after " + timeoutMs + "ms");
} catch (ExecutionException e) {
throw (Exception) e.getCause();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new InterruptedException("Job was interrupted");
}
}
/**
* Checks if a job is queued.
*
* @param jobId The job ID
* @return true if the job is queued
*/
public boolean isJobQueued(String jobId) {
return jobMap.containsKey(jobId);
}
/**
* Gets the current position of a job in the queue.
*
* @param jobId The job ID
* @return The position (0-based) or -1 if not found
*/
public int getJobPosition(String jobId) {
if (!jobMap.containsKey(jobId)) {
return -1;
}
// Count positions
int position = 0;
for (QueuedJob job : jobQueue) {
if (job.jobId.equals(jobId)) {
return position;
}
position++;
}
// If we didn't find it in the queue but it's in the map,
// it might be executing already
return -1;
}
/**
* Cancels a queued job.
*
* @param jobId The job ID
* @return true if the job was cancelled, false if not found
*/
public boolean cancelJob(String jobId) {
QueuedJob job = jobMap.remove(jobId);
if (job != null) {
job.cancelled = true;
job.future.completeExceptionally(new RuntimeException("Job cancelled by user"));
// Try to remove from queue if it's still there
jobQueue.remove(job);
currentQueueSize = jobQueue.size();
log.debug("Job {} cancelled", jobId);
// Update WebSocket
webSocketSender.sendProgress(
jobId, new JobProgress(jobId, "Cancelled", 100, "Job cancelled by user"));
return true;
}
return false;
}
/**
* Get queue statistics.
*
* @return A map containing queue statistics
*/
public Map<String, Object> getQueueStats() {
return Map.of(
"queuedJobs", jobQueue.size(),
"queueCapacity", getQueueCapacity(),
"totalQueuedJobs", totalQueuedJobs,
"rejectedJobs", rejectedJobs,
"resourceStatus", resourceMonitor.getCurrentStatus().get().name());
}
}
@@ -1,4 +1,4 @@
package stirling.software.SPDF.service;
package stirling.software.common.service;
import java.util.Calendar;
@@ -7,9 +7,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import stirling.software.SPDF.controller.api.pipeline.UserServiceInterface;
import stirling.software.SPDF.model.ApplicationProperties;
import stirling.software.SPDF.model.PdfMetadata;
import stirling.software.common.model.ApplicationProperties;
import stirling.software.common.model.PdfMetadata;
@Service
public class PdfMetadataService {
@@ -19,7 +18,6 @@ public class PdfMetadataService {
private final UserServiceInterface userService;
private final boolean runningProOrHigher;
@Autowired
public PdfMetadataService(
ApplicationProperties applicationProperties,
@Qualifier("StirlingPDFLabel") String stirlingPDFLabel,
@@ -1,12 +1,21 @@
package stirling.software.SPDF.service;
package stirling.software.common.service;
import java.io.File;
import java.lang.management.*;
import java.lang.management.GarbageCollectorMXBean;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.OperatingSystemMXBean;
import java.lang.management.RuntimeMXBean;
import java.lang.management.ThreadMXBean;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.TimeZone;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -16,8 +25,7 @@ import org.springframework.stereotype.Service;
import com.posthog.java.PostHog;
import stirling.software.SPDF.controller.api.pipeline.UserServiceInterface;
import stirling.software.SPDF.model.ApplicationProperties;
import stirling.software.common.model.ApplicationProperties;
@Service
public class PostHogService {
@@ -29,7 +37,6 @@ public class PostHogService {
private final Environment env;
private boolean configDirMounted;
@Autowired
public PostHogService(
PostHog postHog,
@Qualifier("UUID") String uuid,
@@ -201,7 +208,7 @@ public class PostHogService {
// New environment variables
dockerMetrics.put("version_tag", System.getenv("VERSION_TAG"));
dockerMetrics.put("docker_enable_security", System.getenv("DOCKER_ENABLE_SECURITY"));
dockerMetrics.put("without_enhanced_features", System.getenv("WITHOUT_ENHANCED_FEATURES"));
dockerMetrics.put("fat_docker", System.getenv("FAT_DOCKER"));
return dockerMetrics;
@@ -0,0 +1,277 @@
package stirling.software.common.service;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.OperatingSystemMXBean;
import java.time.Duration;
import java.time.Instant;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.PreDestroy;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
/**
* Monitors system resources (CPU, memory) to inform job scheduling decisions. Provides information
* about available resources to prevent overloading the system.
*/
@Service
@Slf4j
public class ResourceMonitor {
@Value("${stirling.resource.memory.critical-threshold:0.9}")
private double memoryCriticalThreshold = 0.9; // 90% usage is critical
@Value("${stirling.resource.memory.high-threshold:0.75}")
private double memoryHighThreshold = 0.75; // 75% usage is high
@Value("${stirling.resource.cpu.critical-threshold:0.9}")
private double cpuCriticalThreshold = 0.9; // 90% usage is critical
@Value("${stirling.resource.cpu.high-threshold:0.75}")
private double cpuHighThreshold = 0.75; // 75% usage is high
@Value("${stirling.resource.monitor.interval-ms:60000}")
private long monitorIntervalMs = 60000; // 60 seconds
private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
private final MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean();
private final OperatingSystemMXBean osMXBean = ManagementFactory.getOperatingSystemMXBean();
@Getter
private final AtomicReference<ResourceStatus> currentStatus =
new AtomicReference<>(ResourceStatus.OK);
@Getter
private final AtomicReference<ResourceMetrics> latestMetrics =
new AtomicReference<>(new ResourceMetrics());
/** Represents the current status of system resources. */
public enum ResourceStatus {
/** Resources are available, normal operations can proceed */
OK,
/** Resources are under strain, consider queueing high-resource operations */
WARNING,
/** Resources are critically low, queue all operations */
CRITICAL
}
/** Detailed metrics about system resources. */
@Getter
public static class ResourceMetrics {
private final double cpuUsage;
private final double memoryUsage;
private final long freeMemoryBytes;
private final long totalMemoryBytes;
private final long maxMemoryBytes;
private final Instant timestamp;
public ResourceMetrics() {
this(0, 0, 0, 0, 0, Instant.now());
}
public ResourceMetrics(
double cpuUsage,
double memoryUsage,
long freeMemoryBytes,
long totalMemoryBytes,
long maxMemoryBytes,
Instant timestamp) {
this.cpuUsage = cpuUsage;
this.memoryUsage = memoryUsage;
this.freeMemoryBytes = freeMemoryBytes;
this.totalMemoryBytes = totalMemoryBytes;
this.maxMemoryBytes = maxMemoryBytes;
this.timestamp = timestamp;
}
/**
* Gets the age of these metrics.
*
* @return Duration since these metrics were collected
*/
public Duration getAge() {
return Duration.between(timestamp, Instant.now());
}
/**
* Check if these metrics are stale (older than threshold).
*
* @param thresholdMs Staleness threshold in milliseconds
* @return true if metrics are stale
*/
public boolean isStale(long thresholdMs) {
return getAge().toMillis() > thresholdMs;
}
}
@PostConstruct
public void initialize() {
log.debug("Starting resource monitoring with interval of {}ms", monitorIntervalMs);
scheduler.scheduleAtFixedRate(
this::updateResourceMetrics, 0, monitorIntervalMs, TimeUnit.MILLISECONDS);
}
@PreDestroy
public void shutdown() {
log.info("Shutting down resource monitoring");
scheduler.shutdownNow();
}
/** Updates the resource metrics by sampling current system state. */
private void updateResourceMetrics() {
try {
// Get CPU usage
double cpuUsage = osMXBean.getSystemLoadAverage() / osMXBean.getAvailableProcessors();
if (cpuUsage < 0) cpuUsage = getAlternativeCpuLoad(); // Fallback if not available
// Get memory usage
long heapUsed = memoryMXBean.getHeapMemoryUsage().getUsed();
long nonHeapUsed = memoryMXBean.getNonHeapMemoryUsage().getUsed();
long totalUsed = heapUsed + nonHeapUsed;
long maxMemory = Runtime.getRuntime().maxMemory();
long totalMemory = Runtime.getRuntime().totalMemory();
long freeMemory = Runtime.getRuntime().freeMemory();
double memoryUsage = (double) totalUsed / maxMemory;
// Create new metrics
ResourceMetrics metrics =
new ResourceMetrics(
cpuUsage,
memoryUsage,
freeMemory,
totalMemory,
maxMemory,
Instant.now());
latestMetrics.set(metrics);
// Determine system status
ResourceStatus newStatus;
if (cpuUsage > cpuCriticalThreshold || memoryUsage > memoryCriticalThreshold) {
newStatus = ResourceStatus.CRITICAL;
} else if (cpuUsage > cpuHighThreshold || memoryUsage > memoryHighThreshold) {
newStatus = ResourceStatus.WARNING;
} else {
newStatus = ResourceStatus.OK;
}
// Update status if it changed
ResourceStatus oldStatus = currentStatus.getAndSet(newStatus);
if (oldStatus != newStatus) {
log.info("System resource status changed from {} to {}", oldStatus, newStatus);
log.info(
"Current metrics - CPU: {:.1f}%, Memory: {:.1f}%, Free Memory: {} MB",
cpuUsage * 100, memoryUsage * 100, freeMemory / (1024 * 1024));
}
} catch (Exception e) {
log.error("Error updating resource metrics: {}", e.getMessage(), e);
}
}
/**
* Alternative method to estimate CPU load if getSystemLoadAverage() is not available. This is a
* fallback and less accurate than the official JMX method.
*
* @return Estimated CPU load as a value between 0.0 and 1.0
*/
private double getAlternativeCpuLoad() {
try {
// Try to get CPU time if available through reflection
// This is a fallback since we can't directly cast to platform-specific classes
try {
java.lang.reflect.Method m =
osMXBean.getClass().getDeclaredMethod("getProcessCpuLoad");
m.setAccessible(true);
return (double) m.invoke(osMXBean);
} catch (Exception e) {
// Try the older method
try {
java.lang.reflect.Method m =
osMXBean.getClass().getDeclaredMethod("getSystemCpuLoad");
m.setAccessible(true);
return (double) m.invoke(osMXBean);
} catch (Exception e2) {
log.trace(
"Could not get CPU load through reflection, assuming moderate load (0.5)");
return 0.5;
}
}
} catch (Exception e) {
log.trace("Could not get CPU load, assuming moderate load (0.5)");
return 0.5; // Default to moderate load
}
}
/**
* Calculates the dynamic job queue capacity based on current resource usage.
*
* @param baseCapacity The base capacity when system is under minimal load
* @param minCapacity The minimum capacity to maintain even under high load
* @return The calculated job queue capacity
*/
public int calculateDynamicQueueCapacity(int baseCapacity, int minCapacity) {
ResourceMetrics metrics = latestMetrics.get();
ResourceStatus status = currentStatus.get();
// Simple linear reduction based on memory and CPU load
double capacityFactor =
switch (status) {
case OK -> 1.0;
case WARNING -> 0.6;
case CRITICAL -> 0.3;
};
// Apply additional reduction based on specific memory pressure
if (metrics.memoryUsage > 0.8) {
capacityFactor *= 0.5; // Further reduce capacity under memory pressure
}
// Calculate capacity with minimum safeguard
int capacity = (int) Math.max(minCapacity, Math.ceil(baseCapacity * capacityFactor));
log.debug(
"Dynamic queue capacity: {} (base: {}, factor: {:.2f}, status: {})",
capacity,
baseCapacity,
capacityFactor,
status);
return capacity;
}
/**
* Checks if a job with the given weight can be executed immediately or should be queued based
* on current resource availability.
*
* @param resourceWeight The resource weight of the job (1-100)
* @return true if the job should be queued, false if it can run immediately
*/
public boolean shouldQueueJob(int resourceWeight) {
ResourceStatus status = currentStatus.get();
// Always run lightweight jobs (weight < 20) unless critical
if (resourceWeight < 20 && status != ResourceStatus.CRITICAL) {
return false;
}
// Medium weight jobs run immediately if resources are OK
if (resourceWeight < 60 && status == ResourceStatus.OK) {
return false;
}
// Heavy jobs (weight >= 60) and any job during WARNING/CRITICAL should be queued
return true;
}
}
@@ -0,0 +1,274 @@
package stirling.software.common.service;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import jakarta.annotation.PreDestroy;
import lombok.extern.slf4j.Slf4j;
import stirling.software.common.model.job.JobResult;
import stirling.software.common.model.job.JobStats;
/** Manages async tasks and their results */
@Service
@Slf4j
public class TaskManager {
private final Map<String, JobResult> jobResults = new ConcurrentHashMap<>();
@Value("${stirling.jobResultExpiryMinutes:30}")
private int jobResultExpiryMinutes = 30;
private final FileStorage fileStorage;
private final ScheduledExecutorService cleanupExecutor =
Executors.newSingleThreadScheduledExecutor();
/** Initialize the task manager and start the cleanup scheduler */
public TaskManager(FileStorage fileStorage) {
this.fileStorage = fileStorage;
// Schedule periodic cleanup of old job results
cleanupExecutor.scheduleAtFixedRate(
this::cleanupOldJobs,
10, // Initial delay
10, // Interval
TimeUnit.MINUTES);
log.debug(
"Task manager initialized with job result expiry of {} minutes",
jobResultExpiryMinutes);
}
/**
* Create a new task with the given job ID
*
* @param jobId The job ID
*/
public void createTask(String jobId) {
jobResults.put(jobId, JobResult.createNew(jobId));
log.debug("Created task with job ID: {}", jobId);
}
/**
* Set the result of a task as a general object
*
* @param jobId The job ID
* @param result The result object
*/
public void setResult(String jobId, Object result) {
JobResult jobResult = getOrCreateJobResult(jobId);
jobResult.completeWithResult(result);
log.debug("Set result for job ID: {}", jobId);
}
/**
* Set the result of a task as a file
*
* @param jobId The job ID
* @param fileId The file ID
* @param originalFileName The original file name
* @param contentType The content type of the file
*/
public void setFileResult(
String jobId, String fileId, String originalFileName, String contentType) {
JobResult jobResult = getOrCreateJobResult(jobId);
jobResult.completeWithFile(fileId, originalFileName, contentType);
log.debug("Set file result for job ID: {} with file ID: {}", jobId, fileId);
}
/**
* Set an error for a task
*
* @param jobId The job ID
* @param error The error message
*/
public void setError(String jobId, String error) {
JobResult jobResult = getOrCreateJobResult(jobId);
jobResult.failWithError(error);
log.debug("Set error for job ID: {}: {}", jobId, error);
}
/**
* Mark a task as complete
*
* @param jobId The job ID
*/
public void setComplete(String jobId) {
JobResult jobResult = getOrCreateJobResult(jobId);
if (jobResult.getResult() == null
&& jobResult.getFileId() == null
&& jobResult.getError() == null) {
// If no result or error has been set, mark it as complete with an empty result
jobResult.completeWithResult("Task completed successfully");
}
log.debug("Marked job ID: {} as complete", jobId);
}
/**
* Check if a task is complete
*
* @param jobId The job ID
* @return true if the task is complete, false otherwise
*/
public boolean isComplete(String jobId) {
JobResult result = jobResults.get(jobId);
return result != null && result.isComplete();
}
/**
* Get the result of a task
*
* @param jobId The job ID
* @return The result object, or null if the task doesn't exist or is not complete
*/
public JobResult getJobResult(String jobId) {
return jobResults.get(jobId);
}
/**
* Get statistics about all jobs in the system
*
* @return Job statistics
*/
public JobStats getJobStats() {
int totalJobs = jobResults.size();
int activeJobs = 0;
int completedJobs = 0;
int failedJobs = 0;
int successfulJobs = 0;
int fileResultJobs = 0;
LocalDateTime oldestActiveJobTime = null;
LocalDateTime newestActiveJobTime = null;
long totalProcessingTimeMs = 0;
for (JobResult result : jobResults.values()) {
if (result.isComplete()) {
completedJobs++;
// Calculate processing time for completed jobs
if (result.getCreatedAt() != null && result.getCompletedAt() != null) {
long processingTimeMs =
java.time.Duration.between(
result.getCreatedAt(), result.getCompletedAt())
.toMillis();
totalProcessingTimeMs += processingTimeMs;
}
if (result.getError() != null) {
failedJobs++;
} else {
successfulJobs++;
if (result.getFileId() != null) {
fileResultJobs++;
}
}
} else {
activeJobs++;
// Track oldest and newest active jobs
if (result.getCreatedAt() != null) {
if (oldestActiveJobTime == null
|| result.getCreatedAt().isBefore(oldestActiveJobTime)) {
oldestActiveJobTime = result.getCreatedAt();
}
if (newestActiveJobTime == null
|| result.getCreatedAt().isAfter(newestActiveJobTime)) {
newestActiveJobTime = result.getCreatedAt();
}
}
}
}
// Calculate average processing time
long averageProcessingTimeMs =
completedJobs > 0 ? totalProcessingTimeMs / completedJobs : 0;
return JobStats.builder()
.totalJobs(totalJobs)
.activeJobs(activeJobs)
.completedJobs(completedJobs)
.failedJobs(failedJobs)
.successfulJobs(successfulJobs)
.fileResultJobs(fileResultJobs)
.oldestActiveJobTime(oldestActiveJobTime)
.newestActiveJobTime(newestActiveJobTime)
.averageProcessingTimeMs(averageProcessingTimeMs)
.build();
}
/**
* Get or create a job result
*
* @param jobId The job ID
* @return The job result
*/
private JobResult getOrCreateJobResult(String jobId) {
return jobResults.computeIfAbsent(jobId, JobResult::createNew);
}
/** Clean up old completed job results */
public void cleanupOldJobs() {
LocalDateTime expiryThreshold =
LocalDateTime.now().minus(jobResultExpiryMinutes, ChronoUnit.MINUTES);
int removedCount = 0;
try {
for (Map.Entry<String, JobResult> entry : jobResults.entrySet()) {
JobResult result = entry.getValue();
// Remove completed jobs that are older than the expiry threshold
if (result.isComplete()
&& result.getCompletedAt() != null
&& result.getCompletedAt().isBefore(expiryThreshold)) {
// If the job has a file result, delete the file
if (result.getFileId() != null) {
try {
fileStorage.deleteFile(result.getFileId());
} catch (Exception e) {
log.warn(
"Failed to delete file for job {}: {}",
entry.getKey(),
e.getMessage());
}
}
// Remove the job result
jobResults.remove(entry.getKey());
removedCount++;
}
}
if (removedCount > 0) {
log.info("Cleaned up {} expired job results", removedCount);
}
} catch (Exception e) {
log.error("Error during job cleanup: {}", e.getMessage(), e);
}
}
/** Shutdown the cleanup executor */
@PreDestroy
public void shutdown() {
try {
log.info("Shutting down job result cleanup executor");
cleanupExecutor.shutdown();
if (!cleanupExecutor.awaitTermination(5, TimeUnit.SECONDS)) {
cleanupExecutor.shutdownNow();
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
cleanupExecutor.shutdownNow();
}
}
}
@@ -1,4 +1,4 @@
package stirling.software.SPDF.controller.api.pipeline;
package stirling.software.common.service;
public interface UserServiceInterface {
String getApiKeyForUser(String username);
@@ -1,10 +1,10 @@
package stirling.software.SPDF.utils;
package stirling.software.common.util;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult;
import stirling.software.common.util.ProcessExecutor.ProcessExecutorResult;
public class CheckProgramInstall {
@@ -1,4 +1,4 @@
package stirling.software.SPDF.utils;
package stirling.software.common.util;
import org.owasp.html.HtmlPolicyBuilder;
import org.owasp.html.PolicyFactory;
@@ -1,4 +1,4 @@
package stirling.software.SPDF.utils;
package stirling.software.common.util;
import java.io.PrintWriter;
import java.io.StringWriter;
@@ -0,0 +1,31 @@
package stirling.software.common.util;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class ExecutorFactory {
/**
* Creates an ExecutorService using virtual threads if available (Java 21+), or falls back to a
* cached thread pool on older Java versions.
*/
public static ExecutorService newVirtualOrCachedThreadExecutor() {
try {
ExecutorService executor =
(ExecutorService)
Executors.class
.getMethod("newVirtualThreadPerTaskExecutor")
.invoke(null);
return executor;
} catch (NoSuchMethodException e) {
log.debug("Virtual threads not available; falling back to cached thread pool.");
} catch (Exception e) {
log.debug("Error initializing virtual thread executor: {}", e.getMessage(), e);
}
return Executors.newCachedThreadPool();
}
}
@@ -1,4 +1,4 @@
package stirling.software.SPDF.utils;
package stirling.software.common.util;
import static java.nio.file.StandardWatchEventKinds.*;
@@ -12,14 +12,13 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Predicate;
import java.util.stream.Stream;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import lombok.extern.slf4j.Slf4j;
import stirling.software.SPDF.config.RuntimePathConfig;
import stirling.software.common.configuration.RuntimePathConfig;
@Component
@Slf4j
@@ -38,7 +37,6 @@ public class FileMonitor {
* @param pathFilter the filter to apply to the paths, return true if the path should be
* monitored, false otherwise
*/
@Autowired
public FileMonitor(
@Qualifier("directoryFilter") Predicate<Path> pathFilter,
RuntimePathConfig runtimePathConfig)
@@ -1,4 +1,4 @@
package stirling.software.SPDF.utils;
package stirling.software.common.util;
import java.io.*;
import java.nio.charset.StandardCharsets;
@@ -16,8 +16,8 @@ import java.util.zip.ZipOutputStream;
import io.github.pixee.security.ZipSecurity;
import stirling.software.SPDF.model.api.converters.HTMLToPdfRequest;
import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult;
import stirling.software.common.model.api.converters.HTMLToPdfRequest;
import stirling.software.common.util.ProcessExecutor.ProcessExecutorResult;
public class FileToPdf {
@@ -1,4 +1,4 @@
package stirling.software.SPDF.utils;
package stirling.software.common.util;
import java.io.File;
import java.io.FileOutputStream;
@@ -27,8 +27,7 @@ import io.github.pixee.security.Urls;
import lombok.extern.slf4j.Slf4j;
import stirling.software.SPDF.config.InstallationPathConfig;
import stirling.software.SPDF.config.YamlHelper;
import stirling.software.common.configuration.InstallationPathConfig;
@Slf4j
public class GeneralUtils {
@@ -1,4 +1,4 @@
package stirling.software.SPDF.utils;
package stirling.software.common.util;
import java.awt.geom.AffineTransform;
import java.awt.image.*;
@@ -1,4 +1,4 @@
package stirling.software.SPDF.utils;
package stirling.software.common.util;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -25,11 +25,13 @@ import com.vladsch.flexmark.util.data.MutableDataSet;
import io.github.pixee.security.Filenames;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import stirling.software.SPDF.utils.ProcessExecutor.ProcessExecutorResult;
import stirling.software.common.util.ProcessExecutor.ProcessExecutorResult;
@Slf4j
@NoArgsConstructor
public class PDFToFile {
public ResponseEntity<byte[]> processPdfToMarkdown(MultipartFile inputFile)
@@ -1,4 +1,4 @@
package stirling.software.SPDF.utils;
package stirling.software.common.util;
import java.awt.*;
import java.awt.image.BufferedImage;
@@ -35,7 +35,7 @@ import io.github.pixee.security.Filenames;
import lombok.extern.slf4j.Slf4j;
import stirling.software.SPDF.service.CustomPDFDocumentFactory;
import stirling.software.common.service.CustomPDFDocumentFactory;
@Slf4j
public class PdfUtils {
@@ -1,4 +1,4 @@
package stirling.software.SPDF.utils;
package stirling.software.common.util;
import java.io.BufferedReader;
import java.io.File;
@@ -17,7 +17,7 @@ import io.github.pixee.security.BoundedLineReader;
import lombok.extern.slf4j.Slf4j;
import stirling.software.SPDF.model.ApplicationProperties;
import stirling.software.common.model.ApplicationProperties;
@Slf4j
public class ProcessExecutor {
@@ -1,4 +1,4 @@
package stirling.software.SPDF.utils;
package stirling.software.common.util;
import java.util.List;
@@ -1,10 +1,11 @@
package stirling.software.SPDF.utils.validation;
package stirling.software.common.util;
import java.util.Collection;
import static stirling.software.common.util.ValidationUtils.isCollectionEmpty;
import static stirling.software.common.util.ValidationUtils.isStringEmpty;
import stirling.software.SPDF.model.provider.Provider;
import stirling.software.common.model.oauth2.Provider;
public class Validator {
public class ProviderUtils {
public static boolean validateProvider(Provider provider) {
if (provider == null) {
@@ -25,12 +26,4 @@ public class Validator {
return true;
}
public static boolean isStringEmpty(String input) {
return input == null || input.isBlank();
}
public static boolean isCollectionEmpty(Collection<String> input) {
return input == null || input.isEmpty();
}
}
@@ -1,14 +1,12 @@
package stirling.software.SPDF.utils;
package stirling.software.common.util;
public class RequestUriUtils {
public static boolean isStaticResource(String requestURI) {
return isStaticResource("", requestURI);
}
public static boolean isStaticResource(String contextPath, String requestURI) {
return requestURI.startsWith(contextPath + "/css/")
|| requestURI.startsWith(contextPath + "/fonts/")
|| requestURI.startsWith(contextPath + "/js/")
@@ -1,9 +1,7 @@
package stirling.software.SPDF.utils;
package stirling.software.common.util;
import java.awt.*;
import javax.swing.*;
public class UIScaling {
private static final double BASE_RESOLUTION_WIDTH = 1920.0;
private static final double BASE_RESOLUTION_HEIGHT = 1080.0;
@@ -1,4 +1,4 @@
package stirling.software.SPDF.utils;
package stirling.software.common.util;
import java.io.IOException;
import java.net.ServerSocket;
@@ -0,0 +1,14 @@
package stirling.software.common.util;
import java.util.Collection;
public class ValidationUtils {
public static boolean isStringEmpty(String input) {
return input == null || input.isBlank();
}
public static boolean isCollectionEmpty(Collection<String> input) {
return input == null || input.isEmpty();
}
}
@@ -1,4 +1,4 @@
package stirling.software.SPDF.utils;
package stirling.software.common.util;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -1,4 +1,4 @@
package stirling.software.SPDF.config;
package stirling.software.common.util;
import java.io.IOException;
import java.io.StringWriter;

Some files were not shown because too many files have changed in this diff Show More