This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git

commit e145337f99d068a686abc2fa2db7b74baf0b3ff8
Author: James Bognar <[email protected]>
AuthorDate: Wed Aug 19 16:48:08 2026 -0400

    Reactor-wide Eclipse resource-warning cleanup
    
    Removes 55 unnecessary @SuppressWarnings("resource") annotations across
    the reactor (marshall, rest-client, rest-server, mcp, mcp-auth,
    examples-mcp, microservice, auth-oauth, auth-saml,
    view-freemarker/mustache/thymeleaf, console-ui, datatables, jsonpatch,
    commons) and adds rationale-carrying suppressions where the Eclipse JDT
    @Owning analysis reports false positives in main and test code. Includes
    a try-with-resources fix in ExampleClient and drops an unused Shorts
    import. Pure static-analysis hygiene with no behavioral changes.
---
 .../juneau/bean/jsonpatch/JsonPatchMarshaller.java |  3 ---
 .../juneau/commons/logging/LogContext_Test.java    |  3 ++-
 .../commons/logging/LogRecordCapture_Test.java     |  3 +++
 .../juneau/commons/reflect/ParameterInfo_Test.java |  1 -
 .../juneau/marshall/html/BasicHtmlWriter.java      |  3 ---
 .../juneau/marshall/html/SimpleHtmlWriter.java     |  3 ---
 .../juneau/marshall/json5l/Json5lTokenReader.java  |  3 ---
 .../juneau/marshall/jsonl/JsonlTokenReader.java    |  3 ---
 .../marshall/parquet/ParquetParserSession.java     |  3 ---
 .../org/apache/juneau/marshall/parser/Parser.java  |  3 +--
 .../juneau/marshall/serializer/Serializer.java     |  3 +--
 .../apache/juneau/marshall/xml/BasicXmlWriter.java |  3 ---
 .../marshall/cbor/CborConformanceFixes_Test.java   |  3 ---
 .../marshall/cbor/CborParser_MaxLength_Test.java   |  3 +--
 .../json/JsonTokenReaderCoverage_Test.java         |  3 ---
 .../json/JsonTokenReaderSupplemental_Test.java     |  3 ---
 .../json5/Json5TokenReaderCoverage_Test.java       |  3 ---
 .../json5/Json5TokenReaderSupplemental_Test.java   |  3 ---
 .../marshall/json5l/Json5lCoverage_Test.java       |  3 +--
 .../marshall/msgpack/MsgPackConformance_Test.java  |  3 ---
 .../msgpack/MsgPackParser_MaxLength_Test.java      |  3 +--
 .../parquet/ParquetSerializerBuilder_Test.java     |  1 -
 .../apache/juneau/examples/mcp/ExampleClient.java  |  7 ++-----
 .../juneau/microservice/examples/LogParser.java    |  3 ---
 .../examples/DirectoryResource_Coverage_Test.java  | 12 -----------
 .../examples/LogsResource_Coverage_Test.java       | 24 ----------------------
 .../apache/juneau/microservice/Microservice.java   |  3 ---
 .../McpProtectedResourceMetadataClient_Test.java   |  3 ---
 .../client/mcp/auth/McpTokenProvider_Test.java     |  3 ---
 .../apache/juneau/rest/client/ResponseBody.java    |  3 +--
 .../juneau/rest/client/TransportResponse.java      |  3 ---
 .../juneau/rest/client/remote/RemoteClient.java    |  6 ------
 .../rest/server/auth/oauth/Flows_Live_Test.java    |  3 ---
 .../OAuthIntrospectionValidator_Audience_Test.java |  3 ---
 .../OAuthIntrospectionValidator_Live_Test.java     |  1 -
 .../auth/oauth/OidcDiscoveryClient_Live_Test.java  |  3 ---
 .../SamlMetadataResolvers_BoundedFetch_Test.java   |  3 ---
 .../auth/saml/SamlMetadataResolvers_Test.java      |  3 ---
 .../ConsoleDataTablesFreemarkerMixin.java          |  3 +++
 .../ConsoleDataTablesFreemarkerMixin_Test.java     |  3 +++
 .../freemarker/console/ConsoleFreemarkerMixin.java |  3 +++
 .../rest/server/console/ConsoleChromeMixin.java    |  3 +++
 .../rest/server/datatables/DataTablesMixin.java    |  2 ++
 .../datatables/DataTablesClientHelpers_Test.java   |  7 +++++--
 .../datatables/DataTablesQueryProtocol_Test.java   |  2 ++
 .../SubscriptionsListenDispatch_Test.java          |  3 ---
 .../server/mcp/BasicMcpSubscriptionBroker.java     |  6 +++---
 .../mcp/BasicMcpSubscriptionBroker_Test.java       |  3 +++
 .../view/freemarker/FreemarkerServlet_Test.java    |  3 ---
 .../server/view/mustache/MustacheServlet_Test.java |  3 ---
 .../view/thymeleaf/ThymeleafServlet_Test.java      |  3 ---
 .../juneau/rest/server/sse/SseResponseSupport.java |  3 ---
 .../juneau/rest/server/RestRequest_Test.java       |  1 -
 .../server/httppart/RequestHeaderList_Test.java    |  3 ---
 .../logging/BasicRestDebugFormatter_Test.java      |  1 -
 55 files changed, 40 insertions(+), 157 deletions(-)

diff --git 
a/juneau-bean/juneau-bean-jsonpatch/src/main/java/org/apache/juneau/bean/jsonpatch/JsonPatchMarshaller.java
 
b/juneau-bean/juneau-bean-jsonpatch/src/main/java/org/apache/juneau/bean/jsonpatch/JsonPatchMarshaller.java
index 47055898c2..b9980cf833 100644
--- 
a/juneau-bean/juneau-bean-jsonpatch/src/main/java/org/apache/juneau/bean/jsonpatch/JsonPatchMarshaller.java
+++ 
b/juneau-bean/juneau-bean-jsonpatch/src/main/java/org/apache/juneau/bean/jsonpatch/JsonPatchMarshaller.java
@@ -64,9 +64,6 @@ import org.apache.juneau.marshall.serializer.*;
  *     <li class='link'><a class="doclink" 
href="https://juneau.apache.org/docs/topics/JuneauBeanJsonPatch";>juneau-bean-jsonpatch</a>
  * </ul>
  */
-@SuppressWarnings({
-       "resource" // Cursor shortcut methods return Closeables owned by the 
caller; Eclipse JDT @Owning warning is by design.
-})
 public class JsonPatchMarshaller extends CharMarshaller {
 
        /**
diff --git 
a/juneau-core/juneau-commons/src/test/java/org/apache/juneau/commons/logging/LogContext_Test.java
 
b/juneau-core/juneau-commons/src/test/java/org/apache/juneau/commons/logging/LogContext_Test.java
index 778084aa07..d46b152c4b 100644
--- 
a/juneau-core/juneau-commons/src/test/java/org/apache/juneau/commons/logging/LogContext_Test.java
+++ 
b/juneau-core/juneau-commons/src/test/java/org/apache/juneau/commons/logging/LogContext_Test.java
@@ -28,7 +28,8 @@ import org.junit.jupiter.api.*;
  * Tests for {@link LogContext}.
  */
 @SuppressWarnings({
-       "java:S117" // Local variable name intentional for test readability.
+       "java:S117", // Local variable name intentional for test readability.
+       "resource" // Test-fixture AutoCloseables are managed by the test 
lifecycle, not real leaks (mixed-module resource analysis on test code).
 })
 class LogContext_Test extends TestBase {
 
diff --git 
a/juneau-core/juneau-commons/src/test/java/org/apache/juneau/commons/logging/LogRecordCapture_Test.java
 
b/juneau-core/juneau-commons/src/test/java/org/apache/juneau/commons/logging/LogRecordCapture_Test.java
index f1a62bc1e5..bf3e23f067 100644
--- 
a/juneau-core/juneau-commons/src/test/java/org/apache/juneau/commons/logging/LogRecordCapture_Test.java
+++ 
b/juneau-core/juneau-commons/src/test/java/org/apache/juneau/commons/logging/LogRecordCapture_Test.java
@@ -28,6 +28,9 @@ import org.junit.jupiter.api.*;
 /**
  * Tests for {@link LogRecordCapture}.
  */
+@SuppressWarnings({
+       "resource" // Test-fixture AutoCloseables are managed by the test 
lifecycle, not real leaks (mixed-module resource analysis on test code).
+})
 class LogRecordCapture_Test extends TestBase {
 
        private static RichLogger getLogger(String name) {
diff --git 
a/juneau-core/juneau-commons/src/test/java/org/apache/juneau/commons/reflect/ParameterInfo_Test.java
 
b/juneau-core/juneau-commons/src/test/java/org/apache/juneau/commons/reflect/ParameterInfo_Test.java
index 966e6a5c76..f3528766b9 100644
--- 
a/juneau-core/juneau-commons/src/test/java/org/apache/juneau/commons/reflect/ParameterInfo_Test.java
+++ 
b/juneau-core/juneau-commons/src/test/java/org/apache/juneau/commons/reflect/ParameterInfo_Test.java
@@ -41,7 +41,6 @@ import org.junit.jupiter.api.*;
        "java:S116",  // Field names use underscores for test data clarity
        "java:S1172", // Unused parameters kept for API consistency or 
framework requirements
        "java:S3008", // Static field names use underscores for test data 
clarity
-       "resource",   // Closeable resources in tests are intentionally 
unassigned; closing is handled by test infrastructure.
        "unused"      // Unused parameters/variables kept for consistent method 
signatures across test utilities.
 })
 class ParameterInfo_Test extends TestBase {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/html/BasicHtmlWriter.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/html/BasicHtmlWriter.java
index fc56644b28..ee9c7449bb 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/html/BasicHtmlWriter.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/html/BasicHtmlWriter.java
@@ -33,9 +33,6 @@ import org.apache.juneau.marshall.*;
  *             This class is not intended for external use.
  * </ul>
  */
-@SuppressWarnings({
-       "resource" // Writer resource managed by calling code
-})
 public class BasicHtmlWriter extends HtmlWriter<BasicHtmlWriter> {
 
        /**
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/html/SimpleHtmlWriter.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/html/SimpleHtmlWriter.java
index 0cac8f222b..563d0c4bd8 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/html/SimpleHtmlWriter.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/html/SimpleHtmlWriter.java
@@ -32,9 +32,6 @@ import java.io.*;
 
  * </ul>
  */
-@SuppressWarnings({
-       "resource" // Writer resource managed by calling code
-})
 public class SimpleHtmlWriter extends HtmlWriter<SimpleHtmlWriter> {
 
        /**
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/json5l/Json5lTokenReader.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/json5l/Json5lTokenReader.java
index fb797a6cc3..1ec46d90ec 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/json5l/Json5lTokenReader.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/json5l/Json5lTokenReader.java
@@ -36,9 +36,6 @@ import org.apache.juneau.marshall.stream.*;
  *     <li>The cursor is a true O(1)-memory streaming cursor ({@link 
#isStreaming()} == <jk>true</jk>).
  * </ul>
  */
-@SuppressWarnings({
-       "resource" // The cursor's underlying ParserPipe is owned by the caller 
via try-with-resources on the cursor itself; Eclipse JDT flags the inner pipe 
as unclosed but that's by design.
-})
 public class Json5lTokenReader extends Json5TokenReader {
 
        /**
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/jsonl/JsonlTokenReader.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/jsonl/JsonlTokenReader.java
index cbf3a2dca4..af498f4616 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/jsonl/JsonlTokenReader.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/jsonl/JsonlTokenReader.java
@@ -49,9 +49,6 @@ import org.apache.juneau.marshall.stream.*;
  *     <li>The cursor is a true O(1)-memory streaming cursor ({@link 
#isStreaming()} == <jk>true</jk>).
  * </ul>
  */
-@SuppressWarnings({
-       "resource" // The cursor's underlying ParserPipe is owned by the caller 
via try-with-resources on the cursor itself; Eclipse JDT flags the inner pipe 
as unclosed but that's by design.
-})
 public class JsonlTokenReader extends JsonTokenReader {
 
        /**
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/parquet/ParquetParserSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/parquet/ParquetParserSession.java
index b3f349500f..ffce021d8a 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/parquet/ParquetParserSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/parquet/ParquetParserSession.java
@@ -504,9 +504,6 @@ public class ParquetParserSession extends 
InputStreamParserSession implements Re
         * @throws ParseException If the header is malformed or declares 
out-of-range sizes.
         * @throws IOException If the underlying Thrift decode fails.
         */
-       @SuppressWarnings({
-               "resource" // bais is an in-memory ByteArrayInputStream; no OS 
resource to close.
-       })
        private static PageHeaderInfo readPageHeader(byte[] fileBytes, int off, 
String columnPath, int maxLength, long maxCount) throws ParseException, 
IOException {
                var bais = new ByteArrayInputStream(fileBytes, off, 
fileBytes.length - off);
                var dec = new ThriftCompactDecoder(bais);
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/parser/Parser.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/parser/Parser.java
index 7c70761036..1fbbe69990 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/parser/Parser.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/parser/Parser.java
@@ -139,8 +139,7 @@ import org.apache.juneau.marshall.xml.*;
  */
 @SuppressWarnings({
        "rawtypes",
-       "java:S115", // Constants use UPPER_snakeCase convention (e.g., 
PROP_autoCloseStreams)
-       "resource" // Closeable resources are owned by the caller's parser 
session; Eclipse JDT @Owning warning is by design.
+       "java:S115" // Constants use UPPER_snakeCase convention (e.g., 
PROP_autoCloseStreams)
 })
 public class Parser extends MarshallingContextable {
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/serializer/Serializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/serializer/Serializer.java
index 3149b2a4eb..526509f4dc 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/serializer/Serializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/serializer/Serializer.java
@@ -73,8 +73,7 @@ import org.apache.juneau.marshall.stream.*;
  */
 @SuppressWarnings({
        "java:S115", // Constants use UPPER_snakeCase convention
-       "rawtypes",
-       "resource" // Closeable resources are owned by the caller's serializer 
session; Eclipse JDT @Owning warning is by design.
+       "rawtypes"
 })
 public class Serializer extends MarshallingTraverseContext {
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/xml/BasicXmlWriter.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/xml/BasicXmlWriter.java
index ed6644f66f..7e554d9d58 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/xml/BasicXmlWriter.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/xml/BasicXmlWriter.java
@@ -32,9 +32,6 @@ import org.apache.juneau.marshall.*;
  *             This class is not intended for external use.
  * </ul>
  */
-@SuppressWarnings({
-       "resource" // Writer resource managed by calling code
-})
 public final class BasicXmlWriter extends XmlWriter<BasicXmlWriter> {
 
        /**
diff --git 
a/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/cbor/CborConformanceFixes_Test.java
 
b/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/cbor/CborConformanceFixes_Test.java
index 01186aa6a3..1c828b638c 100644
--- 
a/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/cbor/CborConformanceFixes_Test.java
+++ 
b/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/cbor/CborConformanceFixes_Test.java
@@ -42,9 +42,6 @@ import org.junit.jupiter.params.provider.*;
  *     <li><b>e</b> — GAP-8: unpaired UTF-16 surrogate on encode.
  * </ul>
  */
-@SuppressWarnings({
-       "resource" // Token readers are closed via try-with-resources; JDT's 
flow analysis over chained factory calls yields false-positive leak reports.
-})
 class CborConformanceFixes_Test extends TestBase {
 
        private static String enc(Object input) throws Exception {
diff --git 
a/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/cbor/CborParser_MaxLength_Test.java
 
b/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/cbor/CborParser_MaxLength_Test.java
index 1f8cc78091..56430b8cc4 100644
--- 
a/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/cbor/CborParser_MaxLength_Test.java
+++ 
b/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/cbor/CborParser_MaxLength_Test.java
@@ -39,8 +39,7 @@ import org.junit.jupiter.api.*;
  * allocation.
  */
 @SuppressWarnings({
-       "unchecked", // Parser returns Object; cast to Map in tests.
-       "resource"   // Token readers are closed via try-with-resources; JDT 
mis-flags the chained factory call.
+       "unchecked" // Parser returns Object; cast to Map in tests.
 })
 class CborParser_MaxLength_Test extends TestBase {
 
diff --git 
a/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/json/JsonTokenReaderCoverage_Test.java
 
b/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/json/JsonTokenReaderCoverage_Test.java
index d48468b34b..c15d0d6da3 100644
--- 
a/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/json/JsonTokenReaderCoverage_Test.java
+++ 
b/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/json/JsonTokenReaderCoverage_Test.java
@@ -38,9 +38,6 @@ import org.junit.jupiter.api.*;
  * the {@code read}/{@code canRead}/{@code skipChildren} bridges, and the 
malformed-input error
  * paths) to raise JaCoCo line+branch coverage toward 100%.
  */
-@SuppressWarnings({
-       "resource" // Token readers are closed via try-with-resources; JDT's 
flow analysis over chained factory calls yields false-positive leak reports.
-})
 class JsonTokenReaderCoverage_Test extends TestBase {
 
        private static void drain(String json) throws Exception {
diff --git 
a/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/json/JsonTokenReaderSupplemental_Test.java
 
b/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/json/JsonTokenReaderSupplemental_Test.java
index 19066ddd8d..e2ab353cb3 100644
--- 
a/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/json/JsonTokenReaderSupplemental_Test.java
+++ 
b/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/json/JsonTokenReaderSupplemental_Test.java
@@ -30,9 +30,6 @@ import org.junit.jupiter.api.*;
  * settings)} constructor, string trimming, number-lexeme validation edges, 
comment scanning,
  * deep-nesting overflow stack, and the {@code read()} exception funnel.
  */
-@SuppressWarnings({
-       "resource" // Token readers are closed via try-with-resources; JDT 
false-positive leak reports over chained factory calls.
-})
 class JsonTokenReaderSupplemental_Test extends TestBase {
 
        private static void drain(String json) throws Exception {
diff --git 
a/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/json5/Json5TokenReaderCoverage_Test.java
 
b/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/json5/Json5TokenReaderCoverage_Test.java
index e07bcacc26..1e36780398 100644
--- 
a/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/json5/Json5TokenReaderCoverage_Test.java
+++ 
b/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/json5/Json5TokenReaderCoverage_Test.java
@@ -40,9 +40,6 @@ import org.junit.jupiter.api.*;
  * comma/end dispatch overrides.  Also pins which JSON5-spec number forms are 
intentionally NOT
  * implemented by this cursor.
  */
-@SuppressWarnings({
-       "resource" // Token readers are closed via try-with-resources; JDT's 
flow analysis over chained factory calls yields false-positive leak reports.
-})
 class Json5TokenReaderCoverage_Test extends TestBase {
 
        private static void drain(String json) throws Exception {
diff --git 
a/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/json5/Json5TokenReaderSupplemental_Test.java
 
b/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/json5/Json5TokenReaderSupplemental_Test.java
index 01b7dcaf2d..4c011cba95 100644
--- 
a/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/json5/Json5TokenReaderSupplemental_Test.java
+++ 
b/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/json5/Json5TokenReaderSupplemental_Test.java
@@ -30,9 +30,6 @@ import org.junit.jupiter.api.*;
  * detection for {@code ]} / } at value position, the empty-object field 
dispatch, and the
  * single-quoted string trim path.
  */
-@SuppressWarnings({
-       "resource" // Token readers are closed via try-with-resources; JDT 
false-positive leak reports over chained factory calls.
-})
 class Json5TokenReaderSupplemental_Test extends TestBase {
 
        @Nested class A_missingValues extends TestBase {
diff --git 
a/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/json5l/Json5lCoverage_Test.java
 
b/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/json5l/Json5lCoverage_Test.java
index b22bdfbe48..cfdafa79b7 100644
--- 
a/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/json5l/Json5lCoverage_Test.java
+++ 
b/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/json5l/Json5lCoverage_Test.java
@@ -32,8 +32,7 @@ import org.junit.jupiter.api.*;
  * by the primary behavioral tests.
  */
 @SuppressWarnings({
-       "unchecked", // Parser returns Object; casts in tests
-       "resource"   // Token readers/pipes are short-lived test fixtures.
+       "unchecked" // Parser returns Object; casts in tests
 })
 class Json5lCoverage_Test extends TestBase {
 
diff --git 
a/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/msgpack/MsgPackConformance_Test.java
 
b/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/msgpack/MsgPackConformance_Test.java
index f1b9edd97a..fcbc590278 100644
--- 
a/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/msgpack/MsgPackConformance_Test.java
+++ 
b/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/msgpack/MsgPackConformance_Test.java
@@ -172,9 +172,6 @@ class MsgPackConformance_Test extends TestBase {
                        () -> parse("DB FF FF FF FF", Object.class));
        }
 
-       @SuppressWarnings({
-               "resource" // The token cursor's pipe is closed by 
try-with-resources; JDT mis-flags the chained factory call.
-       })
        @Test void d04_tokenCursorBinLengthAbove2pow31Rejected() throws 
Exception {
                // The token-cursor BIN path reads through readBinary(), whose 
length cap rejects a declared length
                // above the configured maximum (and, implicitly, above 
Integer.MAX_VALUE).
diff --git 
a/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/msgpack/MsgPackParser_MaxLength_Test.java
 
b/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/msgpack/MsgPackParser_MaxLength_Test.java
index e6c1829df7..612ea44671 100644
--- 
a/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/msgpack/MsgPackParser_MaxLength_Test.java
+++ 
b/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/msgpack/MsgPackParser_MaxLength_Test.java
@@ -38,8 +38,7 @@ import org.junit.jupiter.api.*;
  * driving a large allocation.
  */
 @SuppressWarnings({
-       "unchecked", // Parser returns Object; cast to Map in tests.
-       "resource"   // Token readers are closed via try-with-resources; JDT 
mis-flags the chained factory call.
+       "unchecked" // Parser returns Object; cast to Map in tests.
 })
 class MsgPackParser_MaxLength_Test extends TestBase {
 
diff --git 
a/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/parquet/ParquetSerializerBuilder_Test.java
 
b/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/parquet/ParquetSerializerBuilder_Test.java
index 12a5f44722..acf47331b1 100644
--- 
a/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/parquet/ParquetSerializerBuilder_Test.java
+++ 
b/juneau-core/juneau-marshall/src/test/java/org/apache/juneau/marshall/parquet/ParquetSerializerBuilder_Test.java
@@ -130,7 +130,6 @@ class ParquetSerializerBuilder_Test extends TestBase {
        }
 
        @Test
-       @SuppressWarnings("resource")
        void a07_contextSerializeRecordsDelegator() throws Exception {
                // The context-level writeRecords(...) convenience delegator 
forwards to the session.
                var sb = new StringBuilder();
diff --git 
a/juneau-examples/juneau-examples-mcp/src/main/java/org/apache/juneau/examples/mcp/ExampleClient.java
 
b/juneau-examples/juneau-examples-mcp/src/main/java/org/apache/juneau/examples/mcp/ExampleClient.java
index 955c0f3483..5b202a58c5 100644
--- 
a/juneau-examples/juneau-examples-mcp/src/main/java/org/apache/juneau/examples/mcp/ExampleClient.java
+++ 
b/juneau-examples/juneau-examples-mcp/src/main/java/org/apache/juneau/examples/mcp/ExampleClient.java
@@ -165,14 +165,13 @@ public final class ExampleClient {
                var updates = new LinkedBlockingQueue<String>();
                var acknowledged = new CountDownLatch(1);
 
-               var handle = client.listen(
+               try (var handle = client.listen(
                        new 
SubscriptionFilter().setResourceSubscriptions(List.of(noteUri)),
                        new McpSubscriptionListener() {
                                @Override public void 
onAcknowledged(SubscriptionFilter honoredFilter) { acknowledged.countDown(); }
                                @Override public void onResourceUpdated(String 
uri) { updates.add(uri); }
                                @Override public void onError(Throwable t) { 
System.out.println("   subscription error: " + t); }
-                       });
-               try {
+                       })) {
                        if (! acknowledged.await(10, TimeUnit.SECONDS))
                                System.out.println("   (warning: subscription 
was not acknowledged in time)");
                        else
@@ -185,8 +184,6 @@ public final class ExampleClient {
                                System.out.println("   (warning: no 
resources/updated notification arrived in time)");
                        else
                                System.out.println("   -> received 
resources/updated for: " + updatedUri);
-               } finally {
-                       handle.close();
                }
        }
 
diff --git 
a/juneau-microservice/juneau-microservice-examples/src/main/java/org/apache/juneau/microservice/examples/LogParser.java
 
b/juneau-microservice/juneau-microservice-examples/src/main/java/org/apache/juneau/microservice/examples/LogParser.java
index fc50c3abf2..161044673c 100644
--- 
a/juneau-microservice/juneau-microservice-examples/src/main/java/org/apache/juneau/microservice/examples/LogParser.java
+++ 
b/juneau-microservice/juneau-microservice-examples/src/main/java/org/apache/juneau/microservice/examples/LogParser.java
@@ -243,9 +243,6 @@ public class LogParser implements 
Iterable<LogParser.Entry>, Closeable {
         * @param w The writer to write the log file to.
         * @throws IOException Thrown by underlying stream.
         */
-       @SuppressWarnings({
-               "resource" // Log file resources managed by parser
-       })
        public void writeTo(Writer w) throws IOException {
                try {
                        if (! hasNext())
diff --git 
a/juneau-microservice/juneau-microservice-examples/src/test/java/org/apache/juneau/microservice/examples/DirectoryResource_Coverage_Test.java
 
b/juneau-microservice/juneau-microservice-examples/src/test/java/org/apache/juneau/microservice/examples/DirectoryResource_Coverage_Test.java
index 866c74323c..cc314bfcee 100644
--- 
a/juneau-microservice/juneau-microservice-examples/src/test/java/org/apache/juneau/microservice/examples/DirectoryResource_Coverage_Test.java
+++ 
b/juneau-microservice/juneau-microservice-examples/src/test/java/org/apache/juneau/microservice/examples/DirectoryResource_Coverage_Test.java
@@ -213,9 +213,6 @@ class DirectoryResource_Coverage_Test extends TestBase {
                // The ReadOnlyDirResource has views=true but deletes=false, so 
the listing should expose
                // "view" / "download" actions but not "delete".
                try (var c = buildClient(ReadOnlyDirResource.class)) {
-                       @SuppressWarnings({
-                               "resource"  // Closeable resources in tests are 
intentionally unassigned; closing is handled by test infrastructure.
-                       })
                        var resp = c.get("/").run();
                        resp.assertStatus(200);
                        var body = resp.getContent().asString();
@@ -231,9 +228,6 @@ class DirectoryResource_Coverage_Test extends TestBase {
        })
        @Test void e02_actionListing_allDisabled_doesNotIncludeFileActions() 
throws Exception {
                try (var c = buildClient(AllDisabledDirResource.class)) {
-                       @SuppressWarnings({
-                               "resource"  // Closeable resources in tests are 
intentionally unassigned; closing is handled by test infrastructure.
-                       })
                        var resp = c.get("/").run();
                        resp.assertStatus(200);
                        var body = resp.getContent().asString();
@@ -250,9 +244,6 @@ class DirectoryResource_Coverage_Test extends TestBase {
        })
        @Test void e03_actionListing_fullyEnabled_includesAllActions() throws 
Exception {
                try (var c = buildClient(TestDirResource.class)) {
-                       @SuppressWarnings({
-                               "resource"  // Closeable resources in tests are 
intentionally unassigned; closing is handled by test infrastructure.
-                       })
                        var resp = c.get("/").run();
                        resp.assertStatus(200);
                        var body = resp.getContent().asString();
@@ -300,9 +291,6 @@ class DirectoryResource_Coverage_Test extends TestBase {
        })
        @Test void g01_subdirectory_listing_includesNestedFiles() throws 
Exception {
                try (var c = buildClient(TestDirResource.class)) {
-                       @SuppressWarnings({
-                               "resource"  // Closeable resources in tests are 
intentionally unassigned; closing is handled by test infrastructure.
-                       })
                        var resp = c.get("/sub").run();
                        resp.assertStatus(200);
                        
assertTrue(resp.getContent().asString().contains("nested.txt"));
diff --git 
a/juneau-microservice/juneau-microservice-examples/src/test/java/org/apache/juneau/microservice/examples/LogsResource_Coverage_Test.java
 
b/juneau-microservice/juneau-microservice-examples/src/test/java/org/apache/juneau/microservice/examples/LogsResource_Coverage_Test.java
index 8aa36f7f77..c3a208b688 100644
--- 
a/juneau-microservice/juneau-microservice-examples/src/test/java/org/apache/juneau/microservice/examples/LogsResource_Coverage_Test.java
+++ 
b/juneau-microservice/juneau-microservice-examples/src/test/java/org/apache/juneau/microservice/examples/LogsResource_Coverage_Test.java
@@ -191,9 +191,6 @@ class LogsResource_Coverage_Test extends TestBase {
        })
        @Test void b01_view_highlight_writesHtmlWithSeverityColors() throws 
Exception {
                try (var c = buildClient(true)) {
-                       @SuppressWarnings({
-                               "resource"  // Closeable resources in tests are 
intentionally unassigned; closing is handled by test infrastructure.
-                       })
                        var resp = c.request("VIEW", 
"/multi.log?highlight=true").run();
                        resp.assertStatus(200);
                        var body = resp.getContent().asString();
@@ -209,9 +206,6 @@ class LogsResource_Coverage_Test extends TestBase {
        @Test void b02_view_highlight_emptyFile_writesEmptyMarker() throws 
Exception {
                // Filter out everything via a severity that doesn't match any 
line.
                try (var c = buildClient(true)) {
-                       @SuppressWarnings({
-                               "resource"  // Closeable resources in tests are 
intentionally unassigned; closing is handled by test infrastructure.
-                       })
                        var resp = c.request("VIEW", 
"/plain.log?highlight=true&severity=NOPE").run();
                        resp.assertStatus(200);
                        var body = resp.getContent().asString();
@@ -224,9 +218,6 @@ class LogsResource_Coverage_Test extends TestBase {
        })
        @Test void b03_view_plain_noFilters_streamsRawReader() throws Exception 
{
                try (var c = buildClient(true)) {
-                       @SuppressWarnings({
-                               "resource"  // Closeable resources in tests are 
intentionally unassigned; closing is handled by test infrastructure.
-                       })
                        var resp = c.request("VIEW", "/plain.log").run();
                        resp.assertStatus(200);
                        
assertTrue(resp.getContent().asString().contains("hello"));
@@ -238,9 +229,6 @@ class LogsResource_Coverage_Test extends TestBase {
        @Test void b04_view_plain_withFilters_usesParser() throws Exception {
                // Passing thread/start/end/loggers params triggers the filter 
branch in getReader(...)
                try (var c = buildClient(true)) {
-                       @SuppressWarnings({
-                               "resource"  // Closeable resources in tests are 
intentionally unassigned; closing is handled by test infrastructure.
-                       })
                        var resp = c.request("VIEW", 
"/multi.log?thread=NoSuchThread").run();
                        resp.assertStatus(200);
                }
@@ -250,9 +238,6 @@ class LogsResource_Coverage_Test extends TestBase {
        })
        @Test void b05_parse_returnsParsedEntries() throws Exception {
                try (var c = buildClient(true)) {
-                       @SuppressWarnings({
-                               "resource"  // Closeable resources in tests are 
intentionally unassigned; closing is handled by test infrastructure.
-                       })
                        var resp = c.request("PARSE", "/plain.log").run();
                        resp.assertStatus(200);
                }
@@ -270,9 +255,6 @@ class LogsResource_Coverage_Test extends TestBase {
        })
        @Test void b07_get_directoryListing_includesChildLogs() throws 
Exception {
                try (var c = buildClient(true)) {
-                       @SuppressWarnings({
-                               "resource"  // Closeable resources in tests are 
intentionally unassigned; closing is handled by test infrastructure.
-                       })
                        var resp = c.get("/").run();
                        resp.assertStatus(200);
                        var body = resp.getContent().asString();
@@ -288,9 +270,6 @@ class LogsResource_Coverage_Test extends TestBase {
        })
        @Test void b08_get_subdirectoryListing() throws Exception {
                try (var c = buildClient(true)) {
-                       @SuppressWarnings({
-                               "resource"  // Closeable resources in tests are 
intentionally unassigned; closing is handled by test infrastructure.
-                       })
                        var resp = c.get("/sub").run();
                        resp.assertStatus(200);
                        var body = resp.getContent().asString();
@@ -328,9 +307,6 @@ class LogsResource_Coverage_Test extends TestBase {
        })
        @Test void b12_download_returnsFileContents() throws Exception {
                try (var c = buildClient(true)) {
-                       @SuppressWarnings({
-                               "resource"  // Closeable resources in tests are 
intentionally unassigned; closing is handled by test infrastructure.
-                       })
                        var resp = c.request("DOWNLOAD", "/plain.log").run();
                        resp.assertStatus(200);
                        
assertTrue(resp.getContent().asString().contains("hello"));
diff --git 
a/juneau-microservice/juneau-microservice/src/main/java/org/apache/juneau/microservice/Microservice.java
 
b/juneau-microservice/juneau-microservice/src/main/java/org/apache/juneau/microservice/Microservice.java
index 1ea34459b6..0ace11b55c 100755
--- 
a/juneau-microservice/juneau-microservice/src/main/java/org/apache/juneau/microservice/Microservice.java
+++ 
b/juneau-microservice/juneau-microservice/src/main/java/org/apache/juneau/microservice/Microservice.java
@@ -106,9 +106,6 @@ public class Microservice implements ConfigEventListener {
        /**
         * Builder class.
         */
-       @SuppressWarnings({
-               "resource" // configStore, consoleReader, consoleWriter are 
passed in by the caller or assigned to system streams; lifecycle managed 
externally
-       })
        public static class Builder implements BeanStoreOverridable<Builder> {
 
                Args args;
diff --git 
a/juneau-rest/juneau-rest-client-mcp-auth/src/test/java/org/apache/juneau/rest/client/mcp/auth/McpProtectedResourceMetadataClient_Test.java
 
b/juneau-rest/juneau-rest-client-mcp-auth/src/test/java/org/apache/juneau/rest/client/mcp/auth/McpProtectedResourceMetadataClient_Test.java
index 05c85a337b..eb5c560c7f 100644
--- 
a/juneau-rest/juneau-rest-client-mcp-auth/src/test/java/org/apache/juneau/rest/client/mcp/auth/McpProtectedResourceMetadataClient_Test.java
+++ 
b/juneau-rest/juneau-rest-client-mcp-auth/src/test/java/org/apache/juneau/rest/client/mcp/auth/McpProtectedResourceMetadataClient_Test.java
@@ -33,9 +33,6 @@ import com.sun.net.httpserver.*;
  *
  * @since 10.0.0
  */
-@SuppressWarnings({
-       "resource" // HttpServer held as test fixture; lifecycle managed by 
@AfterEach
-})
 class McpProtectedResourceMetadataClient_Test extends TestBase {
 
        private HttpServer server;
diff --git 
a/juneau-rest/juneau-rest-client-mcp-auth/src/test/java/org/apache/juneau/rest/client/mcp/auth/McpTokenProvider_Test.java
 
b/juneau-rest/juneau-rest-client-mcp-auth/src/test/java/org/apache/juneau/rest/client/mcp/auth/McpTokenProvider_Test.java
index 588ef5bfa6..afa87516ab 100644
--- 
a/juneau-rest/juneau-rest-client-mcp-auth/src/test/java/org/apache/juneau/rest/client/mcp/auth/McpTokenProvider_Test.java
+++ 
b/juneau-rest/juneau-rest-client-mcp-auth/src/test/java/org/apache/juneau/rest/client/mcp/auth/McpTokenProvider_Test.java
@@ -39,9 +39,6 @@ import com.sun.net.httpserver.*;
  *
  * @since 10.0.0
  */
-@SuppressWarnings({
-       "resource" // HttpServer held as test fixture; lifecycle managed by 
@AfterEach
-})
 class McpTokenProvider_Test extends TestBase {
 
        private static final URI RES = 
URI.create("https://mcp.example.com/api";);
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
index 2d06874779..fca8b54a6a 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
@@ -220,8 +220,7 @@ public final class ResponseBody {
         *      produced cursor is not assignable to {@code type}.
         */
        @SuppressWarnings({
-               "unchecked", // The produced cursor is verified assignable to 
'type' before the cast.
-               "resource"   // The cursor reads from the borrowed response 
stream; the caller closes the cursor / RestResponse.
+               "unchecked" // The produced cursor is verified assignable to 
'type' before the cast.
        })
        public <T> T asCursor(Parser parser, Class<T> type) throws IOException {
                assertArgNotNull("parser", parser);
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/TransportResponse.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/TransportResponse.java
index 7c8936c3ec..bc37f85f47 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/TransportResponse.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/TransportResponse.java
@@ -130,9 +130,6 @@ public final class TransportResponse implements Closeable {
         *
         * @since 9.2.1
         */
-       @SuppressWarnings({
-               "resource" // body and closeCallback are passed into 
TransportResponse which owns and closes them
-       })
        public static final class Builder {
 
                int statusCode;
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteClient.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteClient.java
index f9921a87b7..d3ebe23410 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteClient.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteClient.java
@@ -119,7 +119,6 @@ public final class RemoteClient {
        // 
------------------------------------------------------------------------------------------------------------------
 
        @SuppressWarnings({
-               "resource", // resp is closed within this method or returned to 
caller (RESPONSE mode)
                "java:S112", // Reflective remote-proxy dispatch intentionally 
propagates arbitrary exceptions (target-method, parse, transport, and 
user-declared @Remote exception types) to the caller; narrowing the throws 
clauses would break that contract.
                "java:S2143" // Date 'instanceof' check classifies simple-typed 
@Request args (a type test, not date arithmetic); no behavior-preserving 
java.time equivalent.
        })
@@ -910,9 +909,6 @@ public final class RemoteClient {
                 * the response, firing the transport close callback).  On any 
failure before the stream is handed back, the
                 * response is closed.  A body-less response ({@code null} 
stream) is released immediately and returns <jk>null</jk>.
                 */
-               @SuppressWarnings({
-                       "resource" // On success the live response is owned by 
the returned stream (caller closes it); on failure it is closed in the finally 
block.
-               })
                private InputStream processStreamReturn(RestRequest req, Method 
method, boolean throwOnError) throws Exception {
                        var resp = req.run();
                        var ok = false;
@@ -941,7 +937,6 @@ public final class RemoteClient {
                 * the live response stream (decoded as UTF-8) and closing it 
releases the connection.
                 */
                @SuppressWarnings({
-                       "resource" // On success the live response is owned by 
the returned reader (caller closes it); on failure it is closed in the finally 
block.
                })
                private Reader processReaderReturn(RestRequest req, Method 
method, boolean throwOnError) throws Exception {
                        var resp = req.run();
@@ -1178,7 +1173,6 @@ public final class RemoteClient {
                 * the cursor is handed back, the response is closed.
                 */
                @SuppressWarnings({
-                       "resource" // On success the response is owned by the 
returned cursor (caller closes it); on failure it is closed in the finally 
block.
                })
                private Object processCursor(RestRequest req, Class<?> 
returnType, Method method, boolean throwOnError) throws Exception {
                        var resp = req.run();
diff --git 
a/juneau-rest/juneau-rest-server-auth-oauth/src/test/java/org/apache/juneau/rest/server/auth/oauth/Flows_Live_Test.java
 
b/juneau-rest/juneau-rest-server-auth-oauth/src/test/java/org/apache/juneau/rest/server/auth/oauth/Flows_Live_Test.java
index 58e9f5d25e..534d9b5688 100644
--- 
a/juneau-rest/juneau-rest-server-auth-oauth/src/test/java/org/apache/juneau/rest/server/auth/oauth/Flows_Live_Test.java
+++ 
b/juneau-rest/juneau-rest-server-auth-oauth/src/test/java/org/apache/juneau/rest/server/auth/oauth/Flows_Live_Test.java
@@ -41,9 +41,6 @@ import com.sun.net.httpserver.*;
  *
  * @since 10.0.0
  */
-@SuppressWarnings({
-       "resource" // HttpServer held as test fixture; lifecycle managed by 
@AfterEach
-})
 class Flows_Live_Test extends TestBase {
 
        private HttpServer server;
diff --git 
a/juneau-rest/juneau-rest-server-auth-oauth/src/test/java/org/apache/juneau/rest/server/auth/oauth/OAuthIntrospectionValidator_Audience_Test.java
 
b/juneau-rest/juneau-rest-server-auth-oauth/src/test/java/org/apache/juneau/rest/server/auth/oauth/OAuthIntrospectionValidator_Audience_Test.java
index c1e0f923e8..ba3cc1733a 100644
--- 
a/juneau-rest/juneau-rest-server-auth-oauth/src/test/java/org/apache/juneau/rest/server/auth/oauth/OAuthIntrospectionValidator_Audience_Test.java
+++ 
b/juneau-rest/juneau-rest-server-auth-oauth/src/test/java/org/apache/juneau/rest/server/auth/oauth/OAuthIntrospectionValidator_Audience_Test.java
@@ -36,9 +36,6 @@ import com.sun.net.httpserver.*;
  *
  * @since 10.0.0
  */
-@SuppressWarnings({
-       "resource"    // HttpServer held as test fixture; lifecycle managed by 
@AfterEach
-})
 class OAuthIntrospectionValidator_Audience_Test extends TestBase {
 
        private HttpServer server;
diff --git 
a/juneau-rest/juneau-rest-server-auth-oauth/src/test/java/org/apache/juneau/rest/server/auth/oauth/OAuthIntrospectionValidator_Live_Test.java
 
b/juneau-rest/juneau-rest-server-auth-oauth/src/test/java/org/apache/juneau/rest/server/auth/oauth/OAuthIntrospectionValidator_Live_Test.java
index 8a277ef47f..38f1e6e6c3 100644
--- 
a/juneau-rest/juneau-rest-server-auth-oauth/src/test/java/org/apache/juneau/rest/server/auth/oauth/OAuthIntrospectionValidator_Live_Test.java
+++ 
b/juneau-rest/juneau-rest-server-auth-oauth/src/test/java/org/apache/juneau/rest/server/auth/oauth/OAuthIntrospectionValidator_Live_Test.java
@@ -37,7 +37,6 @@ import com.sun.net.httpserver.*;
  * @since 10.0.0
  */
 @SuppressWarnings({
-       "resource",    // HttpServer held as test fixture; lifecycle managed by 
@AfterEach
        "java:S5778"   // assertThrows lambdas with chained calls; intermediate 
invocations do not throw in practice
 })
 class OAuthIntrospectionValidator_Live_Test extends TestBase {
diff --git 
a/juneau-rest/juneau-rest-server-auth-oauth/src/test/java/org/apache/juneau/rest/server/auth/oauth/OidcDiscoveryClient_Live_Test.java
 
b/juneau-rest/juneau-rest-server-auth-oauth/src/test/java/org/apache/juneau/rest/server/auth/oauth/OidcDiscoveryClient_Live_Test.java
index 04d88e8ef7..825c671999 100644
--- 
a/juneau-rest/juneau-rest-server-auth-oauth/src/test/java/org/apache/juneau/rest/server/auth/oauth/OidcDiscoveryClient_Live_Test.java
+++ 
b/juneau-rest/juneau-rest-server-auth-oauth/src/test/java/org/apache/juneau/rest/server/auth/oauth/OidcDiscoveryClient_Live_Test.java
@@ -34,9 +34,6 @@ import com.sun.net.httpserver.*;
  *
  * @since 10.0.0
  */
-@SuppressWarnings({
-       "resource" // HttpServer held as test fixture; lifecycle managed by 
@AfterEach
-})
 class OidcDiscoveryClient_Live_Test extends TestBase {
 
        private HttpServer server;
diff --git 
a/juneau-rest/juneau-rest-server-auth-saml/src/test/java/org/apache/juneau/rest/server/auth/saml/SamlMetadataResolvers_BoundedFetch_Test.java
 
b/juneau-rest/juneau-rest-server-auth-saml/src/test/java/org/apache/juneau/rest/server/auth/saml/SamlMetadataResolvers_BoundedFetch_Test.java
index 5e10648835..2c8aa8b06d 100644
--- 
a/juneau-rest/juneau-rest-server-auth-saml/src/test/java/org/apache/juneau/rest/server/auth/saml/SamlMetadataResolvers_BoundedFetch_Test.java
+++ 
b/juneau-rest/juneau-rest-server-auth-saml/src/test/java/org/apache/juneau/rest/server/auth/saml/SamlMetadataResolvers_BoundedFetch_Test.java
@@ -49,9 +49,6 @@ class SamlMetadataResolvers_BoundedFetch_Test extends 
TestBase {
                void run(String url) throws Exception;
        }
 
-       @SuppressWarnings({
-               "resource" // HttpServer held as local fixture; stopped in 
finally block
-       })
        private static void withServer(HttpHandler handler, UrlAction action) 
throws Exception {
                var server = HttpServer.create(new 
InetSocketAddress(InetAddress.getLoopbackAddress(), 0), 0);
                server.createContext("/metadata", handler);
diff --git 
a/juneau-rest/juneau-rest-server-auth-saml/src/test/java/org/apache/juneau/rest/server/auth/saml/SamlMetadataResolvers_Test.java
 
b/juneau-rest/juneau-rest-server-auth-saml/src/test/java/org/apache/juneau/rest/server/auth/saml/SamlMetadataResolvers_Test.java
index a7cf2d349b..87ee764ddc 100644
--- 
a/juneau-rest/juneau-rest-server-auth-saml/src/test/java/org/apache/juneau/rest/server/auth/saml/SamlMetadataResolvers_Test.java
+++ 
b/juneau-rest/juneau-rest-server-auth-saml/src/test/java/org/apache/juneau/rest/server/auth/saml/SamlMetadataResolvers_Test.java
@@ -107,9 +107,6 @@ class SamlMetadataResolvers_Test extends TestBase {
        // D: url(String) — HTTP server returns non-2xx → IOException 
(SamlMetadataResolvers.java line 125)
        // 
-----------------------------------------------------------------------------------------------------------------
 
-       @SuppressWarnings({
-               "resource" // HttpServer held as local fixture; stopped in 
finally block
-       })
        @Test void d01_url_nonSuccessStatus_throwsIOException() throws 
Exception {
                var server = HttpServer.create(new 
InetSocketAddress(InetAddress.getLoopbackAddress(), 0), 0);
                server.createContext("/metadata", ex -> {
diff --git 
a/juneau-rest/juneau-rest-server-console-ui-freemarker-datatables/src/main/java/org/apache/juneau/rest/server/view/freemarker/console/datatables/ConsoleDataTablesFreemarkerMixin.java
 
b/juneau-rest/juneau-rest-server-console-ui-freemarker-datatables/src/main/java/org/apache/juneau/rest/server/view/freemarker/console/datatables/ConsoleDataTablesFreemarkerMixin.java
index 9d0c254ec2..bc5d282ffe 100644
--- 
a/juneau-rest/juneau-rest-server-console-ui-freemarker-datatables/src/main/java/org/apache/juneau/rest/server/view/freemarker/console/datatables/ConsoleDataTablesFreemarkerMixin.java
+++ 
b/juneau-rest/juneau-rest-server-console-ui-freemarker-datatables/src/main/java/org/apache/juneau/rest/server/view/freemarker/console/datatables/ConsoleDataTablesFreemarkerMixin.java
@@ -104,6 +104,9 @@ public class ConsoleDataTablesFreemarkerMixin extends 
ConsoleFreemarkerMixin {
         * @param req The current REST request.
         * @return The active FreeMarker configuration. Never {@code null}.
         */
+       @SuppressWarnings({
+               "resource" // False positive: req.getContext().getBeanStore() 
returns a borrowed, container-owned AutoCloseable, not a resource created/owned 
here.
+       })
        @Override
        public Configuration resolveConfiguration(RestRequest req) {
                var cfg = super.resolveConfiguration(req);
diff --git 
a/juneau-rest/juneau-rest-server-console-ui-freemarker-datatables/src/test/java/org/apache/juneau/rest/server/view/freemarker/console/datatables/ConsoleDataTablesFreemarkerMixin_Test.java
 
b/juneau-rest/juneau-rest-server-console-ui-freemarker-datatables/src/test/java/org/apache/juneau/rest/server/view/freemarker/console/datatables/ConsoleDataTablesFreemarkerMixin_Test.java
index 49dab351cd..2d42cb7964 100644
--- 
a/juneau-rest/juneau-rest-server-console-ui-freemarker-datatables/src/test/java/org/apache/juneau/rest/server/view/freemarker/console/datatables/ConsoleDataTablesFreemarkerMixin_Test.java
+++ 
b/juneau-rest/juneau-rest-server-console-ui-freemarker-datatables/src/test/java/org/apache/juneau/rest/server/view/freemarker/console/datatables/ConsoleDataTablesFreemarkerMixin_Test.java
@@ -39,6 +39,9 @@ import org.junit.jupiter.api.*;
  * pill markup (Phase 6's now-render-aware {@code DataTablesTable}) nested 
inside a {@code jc-table} through the
  * same trusted-HTML adapter Phase 5 built for {@code <@tag>}.
  */
+@SuppressWarnings({
+       "resource" // Test-fixture AutoCloseables are managed by the test 
lifecycle, not real leaks (mixed-module resource analysis on test code).
+})
 class ConsoleDataTablesFreemarkerMixin_Test extends TestBase {
 
        @TagDomain(domain="status")
diff --git 
a/juneau-rest/juneau-rest-server-console-ui-freemarker/src/main/java/org/apache/juneau/rest/server/view/freemarker/console/ConsoleFreemarkerMixin.java
 
b/juneau-rest/juneau-rest-server-console-ui-freemarker/src/main/java/org/apache/juneau/rest/server/view/freemarker/console/ConsoleFreemarkerMixin.java
index dfac7307ac..a99e5dcf5d 100644
--- 
a/juneau-rest/juneau-rest-server-console-ui-freemarker/src/main/java/org/apache/juneau/rest/server/view/freemarker/console/ConsoleFreemarkerMixin.java
+++ 
b/juneau-rest/juneau-rest-server-console-ui-freemarker/src/main/java/org/apache/juneau/rest/server/view/freemarker/console/ConsoleFreemarkerMixin.java
@@ -134,6 +134,9 @@ public class ConsoleFreemarkerMixin extends FreemarkerMixin 
{
         * @param req The current REST request.
         * @return The active FreeMarker configuration. Never {@code null}.
         */
+       @SuppressWarnings({
+               "resource" // False positive: req.getContext().getBeanStore() 
returns a borrowed, container-owned AutoCloseable, not a resource created/owned 
here.
+       })
        @Override
        public Configuration resolveConfiguration(RestRequest req) {
                if 
(req.getContext().getBeanStore().getBean(Configuration.class).isPresent())
diff --git 
a/juneau-rest/juneau-rest-server-console-ui/src/main/java/org/apache/juneau/rest/server/console/ConsoleChromeMixin.java
 
b/juneau-rest/juneau-rest-server-console-ui/src/main/java/org/apache/juneau/rest/server/console/ConsoleChromeMixin.java
index a913a84473..ff93efb567 100644
--- 
a/juneau-rest/juneau-rest-server-console-ui/src/main/java/org/apache/juneau/rest/server/console/ConsoleChromeMixin.java
+++ 
b/juneau-rest/juneau-rest-server-console-ui/src/main/java/org/apache/juneau/rest/server/console/ConsoleChromeMixin.java
@@ -341,6 +341,9 @@ public class ConsoleChromeMixin {
        int debugBuildCount() { return buildCount.get(); }
 
        /** Resolves the active theme via the documented precedence: 
builder-supplied {@code theme(Theme)} &gt; {@link ThemeSettings} bean &gt; 
{@link Theme#OPEN}. */
+       @SuppressWarnings({
+               "resource" // False positive: req.getContext().getBeanStore() 
returns a borrowed, container-owned AutoCloseable, not a resource created/owned 
here.
+       })
        private Theme resolveActiveTheme(RestRequest req) {
                if (theme != null)
                        return theme;
diff --git 
a/juneau-rest/juneau-rest-server-datatables/src/main/java/org/apache/juneau/rest/server/datatables/DataTablesMixin.java
 
b/juneau-rest/juneau-rest-server-datatables/src/main/java/org/apache/juneau/rest/server/datatables/DataTablesMixin.java
index 0639dc30d4..23dcbb2a5e 100644
--- 
a/juneau-rest/juneau-rest-server-datatables/src/main/java/org/apache/juneau/rest/server/datatables/DataTablesMixin.java
+++ 
b/juneau-rest/juneau-rest-server-datatables/src/main/java/org/apache/juneau/rest/server/datatables/DataTablesMixin.java
@@ -145,6 +145,8 @@ public class DataTablesMixin {
        }
 
        /** Returns the shipped glue-script bytes, reading (and caching) them 
from the classpath on first call. */
+       // IoUtils.read(InputStream) closes the stream (see its Javadoc); JDT 
can't see through the call.
+       @SuppressWarnings("resource")
        private static byte[] glueScript() throws IOException {
                var g = glueScript;
                if (g == null) {
diff --git 
a/juneau-rest/juneau-rest-server-datatables/src/test/java/org/apache/juneau/rest/server/datatables/DataTablesClientHelpers_Test.java
 
b/juneau-rest/juneau-rest-server-datatables/src/test/java/org/apache/juneau/rest/server/datatables/DataTablesClientHelpers_Test.java
index 3aa7a51379..e0f93890e1 100644
--- 
a/juneau-rest/juneau-rest-server-datatables/src/test/java/org/apache/juneau/rest/server/datatables/DataTablesClientHelpers_Test.java
+++ 
b/juneau-rest/juneau-rest-server-datatables/src/test/java/org/apache/juneau/rest/server/datatables/DataTablesClientHelpers_Test.java
@@ -33,6 +33,9 @@ import org.junit.jupiter.api.*;
  * Tests the client-side DataTables browser helpers: {@link 
DataTablesColumns}, {@link DataTablesTable}, and
  * {@link DataTablesMixin}.
  */
+@SuppressWarnings({
+       "resource" // MockRestClient.close() is a no-op (no real OS resource); 
test-fixture AutoCloseables are managed by the test lifecycle (mixed-module 
resource analysis on test code).
+})
 class DataTablesClientHelpers_Test extends TestBase {
 
        /**
@@ -53,7 +56,7 @@ class DataTablesClientHelpers_Test extends TestBase {
                @Schema(title="Full Name") public String getName() { return 
"Alice"; }
                @Schema(title="") public String getNotes() { return "n"; }
                public String getReleaseDate() { return releaseDate; }
-               public void setSecret(String value) { /* write-only */ }
+               public void setSecret(@SuppressWarnings("unused") String value) 
{ /* write-only */ }
        }
 
        private static Map<String,String> byData(List<Map<String,Object>> cols) 
{
@@ -87,7 +90,7 @@ class DataTablesClientHelpers_Test extends TestBase {
        /** Pure getter/setter bean (no public fields) with a write-only 
property to exercise the read-only filter. */
        public static class WriteOnlyRow {
                public String getVisible() { return "v"; }
-               public void setHidden(String value) { /* write-only */ }
+               public void setHidden(@SuppressWarnings("unused") String value) 
{ /* write-only */ }
        }
 
        @Test void a03_notABeanThrows() {
diff --git 
a/juneau-rest/juneau-rest-server-datatables/src/test/java/org/apache/juneau/rest/server/datatables/DataTablesQueryProtocol_Test.java
 
b/juneau-rest/juneau-rest-server-datatables/src/test/java/org/apache/juneau/rest/server/datatables/DataTablesQueryProtocol_Test.java
index a4525ee009..32fe4d54ef 100644
--- 
a/juneau-rest/juneau-rest-server-datatables/src/test/java/org/apache/juneau/rest/server/datatables/DataTablesQueryProtocol_Test.java
+++ 
b/juneau-rest/juneau-rest-server-datatables/src/test/java/org/apache/juneau/rest/server/datatables/DataTablesQueryProtocol_Test.java
@@ -35,6 +35,8 @@ import org.junit.jupiter.api.*;
  * Tests the DataTables server-side-processing protocol against the
  * <a class="doclink" 
href="https://datatables.net/manual/server-side";>DataTables server-side 
contract</a>.
  */
+// MockRestClient.close() is a no-op (no real OS resource); mixed-module JDT 
resource analysis is a per-project limitation.
+@SuppressWarnings("resource")
 class DataTablesQueryProtocol_Test extends TestBase {
 
        /** A resource wired to the DataTables protocol via a {@link 
QueryableSettings} bean. */
diff --git 
a/juneau-rest/juneau-rest-server-mcp-v20260728/src/test/java/org/apache/juneau/rest/server/mcp/v20260728/SubscriptionsListenDispatch_Test.java
 
b/juneau-rest/juneau-rest-server-mcp-v20260728/src/test/java/org/apache/juneau/rest/server/mcp/v20260728/SubscriptionsListenDispatch_Test.java
index c492ae111a..f2ea4fb141 100644
--- 
a/juneau-rest/juneau-rest-server-mcp-v20260728/src/test/java/org/apache/juneau/rest/server/mcp/v20260728/SubscriptionsListenDispatch_Test.java
+++ 
b/juneau-rest/juneau-rest-server-mcp-v20260728/src/test/java/org/apache/juneau/rest/server/mcp/v20260728/SubscriptionsListenDispatch_Test.java
@@ -67,9 +67,6 @@ class SubscriptionsListenDispatch_Test {
                });
        }
 
-       @SuppressWarnings({
-               "resource" // Returned BeanStore is owned by the caller (a 
fresh per-test fixture, GC'd with the test); Eclipse JDT @Owning warning is by 
design.
-       })
        private static BasicBeanStore ctxWith(McpSubscriptionBroker broker, 
McpSubscriptionsConfig config) {
                return new 
BasicBeanStore().addBean(McpSubscriptionBroker.class, broker)
                        .addBean(McpOptions.class, new 
McpOptions().setSubscriptions(config));
diff --git 
a/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/BasicMcpSubscriptionBroker.java
 
b/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/BasicMcpSubscriptionBroker.java
index 0c7279f518..2c48cc4734 100644
--- 
a/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/BasicMcpSubscriptionBroker.java
+++ 
b/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/server/mcp/BasicMcpSubscriptionBroker.java
@@ -75,9 +75,6 @@ public class BasicMcpSubscriptionBroker implements 
McpSubscriptionBroker {
                synchronized (admissionLock) {
                        if (! subscriptions.containsKey(subscriptionId) && 
subscriptions.size() >= max)
                                return Optional.empty();
-                       @SuppressWarnings({
-                               "resource" // Returned subscription is 
caller-owned and closed by the caller/framework; Eclipse JDT @Owning warning is 
by design.
-                       })
                        var sub = doRegister(subscriptionId, honoredFilter);
                        return Optional.of(sub);
                }
@@ -97,6 +94,9 @@ public class BasicMcpSubscriptionBroker implements 
McpSubscriptionBroker {
                return sub;
        }
 
+       @SuppressWarnings({
+               "resource" // Not a leak: sub is removed from the map then 
explicitly closed; try-with-resources adds nothing over the remove-then-close 
pattern (mirrors register()'s previous.close()).
+       })
        @Override
        public void unregister(String subscriptionId) {
                if (subscriptionId == null)
diff --git 
a/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/BasicMcpSubscriptionBroker_Test.java
 
b/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/BasicMcpSubscriptionBroker_Test.java
index 843478d18d..a308fd072f 100644
--- 
a/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/BasicMcpSubscriptionBroker_Test.java
+++ 
b/juneau-rest/juneau-rest-server-mcp/src/test/java/org/apache/juneau/rest/server/mcp/BasicMcpSubscriptionBroker_Test.java
@@ -24,6 +24,9 @@ import java.util.concurrent.atomic.*;
 
 import org.junit.jupiter.api.Test;
 
+@SuppressWarnings({
+       "resource" // Test-fixture AutoCloseables are managed by the test 
lifecycle, not real leaks (mixed-module resource analysis on test code).
+})
 class BasicMcpSubscriptionBroker_Test {
 
        @Test void a01_constructorRejectsNonPositiveQueueSize() {
diff --git 
a/juneau-rest/juneau-rest-server-view-freemarker/src/test/java/org/apache/juneau/rest/server/view/freemarker/FreemarkerServlet_Test.java
 
b/juneau-rest/juneau-rest-server-view-freemarker/src/test/java/org/apache/juneau/rest/server/view/freemarker/FreemarkerServlet_Test.java
index 983fc46ce2..10c62230c3 100644
--- 
a/juneau-rest/juneau-rest-server-view-freemarker/src/test/java/org/apache/juneau/rest/server/view/freemarker/FreemarkerServlet_Test.java
+++ 
b/juneau-rest/juneau-rest-server-view-freemarker/src/test/java/org/apache/juneau/rest/server/view/freemarker/FreemarkerServlet_Test.java
@@ -28,9 +28,6 @@ import org.junit.jupiter.api.*;
  *
  * @since 10.0.0
  */
-@SuppressWarnings({
-       "resource" // Both flavors are plain in-memory beans (no I/O resources 
held); nothing to close.
-})
 class FreemarkerServlet_Test extends TestBase {
 
        @Test void a01_servlet_noArgCtor_buildsDefaultDispatcher() {
diff --git 
a/juneau-rest/juneau-rest-server-view-mustache/src/test/java/org/apache/juneau/rest/server/view/mustache/MustacheServlet_Test.java
 
b/juneau-rest/juneau-rest-server-view-mustache/src/test/java/org/apache/juneau/rest/server/view/mustache/MustacheServlet_Test.java
index b04c75147a..7026a693b5 100644
--- 
a/juneau-rest/juneau-rest-server-view-mustache/src/test/java/org/apache/juneau/rest/server/view/mustache/MustacheServlet_Test.java
+++ 
b/juneau-rest/juneau-rest-server-view-mustache/src/test/java/org/apache/juneau/rest/server/view/mustache/MustacheServlet_Test.java
@@ -28,9 +28,6 @@ import org.junit.jupiter.api.*;
  *
  * @since 10.0.0
  */
-@SuppressWarnings({
-       "resource" // Both flavors are plain in-memory beans (no I/O resources 
held); nothing to close.
-})
 class MustacheServlet_Test extends TestBase {
 
        @Test void a01_servlet_noArgCtor_buildsDefaultDispatcher() {
diff --git 
a/juneau-rest/juneau-rest-server-view-thymeleaf/src/test/java/org/apache/juneau/rest/server/view/thymeleaf/ThymeleafServlet_Test.java
 
b/juneau-rest/juneau-rest-server-view-thymeleaf/src/test/java/org/apache/juneau/rest/server/view/thymeleaf/ThymeleafServlet_Test.java
index 3d8ce2f66b..6ed0ae0bc8 100644
--- 
a/juneau-rest/juneau-rest-server-view-thymeleaf/src/test/java/org/apache/juneau/rest/server/view/thymeleaf/ThymeleafServlet_Test.java
+++ 
b/juneau-rest/juneau-rest-server-view-thymeleaf/src/test/java/org/apache/juneau/rest/server/view/thymeleaf/ThymeleafServlet_Test.java
@@ -28,9 +28,6 @@ import org.junit.jupiter.api.*;
  *
  * @since 10.0.0
  */
-@SuppressWarnings({
-       "resource" // Both flavors are plain in-memory beans (no I/O resources 
held); nothing to close.
-})
 class ThymeleafServlet_Test extends TestBase {
 
        @Test void a01_servlet_noArgCtor_buildsDefaultDispatcher() {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/server/sse/SseResponseSupport.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/server/sse/SseResponseSupport.java
index 7ab6cd7658..6f5efa71b5 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/server/sse/SseResponseSupport.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/server/sse/SseResponseSupport.java
@@ -37,9 +37,6 @@ public class SseResponseSupport implements AutoCloseable {
                "resource" // Writer is response-owned and intentionally not 
closed by this wrapper.
        })
        private final FinishablePrintWriter writer;
-       @SuppressWarnings({
-               "resource" // Scheduler is BeanStore-managed and shared; this 
wrapper must not close it.
-       })
        private final ScheduledExecutorService scheduler;
        @SuppressWarnings({
                "resource" // Heartbeat lifecycle is controlled by this wrapper 
and closed in close()/heartbeat().
diff --git 
a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/server/RestRequest_Test.java
 
b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/server/RestRequest_Test.java
index c6506cae40..6ccbb18d02 100644
--- 
a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/server/RestRequest_Test.java
+++ 
b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/server/RestRequest_Test.java
@@ -62,7 +62,6 @@ class RestRequest_Test {
        // b — getStaticFiles() (delegate to RestContext#getStaticFiles())
        // 
-----------------------------------------------------------------------------------------
 
-       @SuppressWarnings("resource") // Mockito mocks; nothing to close.
        @Test void b01_getStaticFiles_delegatesToContext() throws Exception {
                var context = mock(RestContext.class);
                var staticFiles = mock(StaticFiles.class);
diff --git 
a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/server/httppart/RequestHeaderList_Test.java
 
b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/server/httppart/RequestHeaderList_Test.java
index a6a83622a7..10a50bceeb 100644
--- 
a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/server/httppart/RequestHeaderList_Test.java
+++ 
b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/server/httppart/RequestHeaderList_Test.java
@@ -38,9 +38,6 @@ import jakarta.servlet.http.*;
  */
 class RequestHeaderList_Test {
 
-       @SuppressWarnings({
-               "resource" // Mockito mock; nothing to close.
-       })
        private static HttpServletRequest servletRequest(Map<String,String> 
headers) {
                var r = mock(HttpServletRequest.class);
                
when(r.getHeaderNames()).thenReturn(Collections.enumeration(headers.keySet()));
diff --git 
a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/server/logging/BasicRestDebugFormatter_Test.java
 
b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/server/logging/BasicRestDebugFormatter_Test.java
index 7dd581c8f9..f842f10ea4 100644
--- 
a/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/server/logging/BasicRestDebugFormatter_Test.java
+++ 
b/juneau-rest/juneau-rest-server/src/test/java/org/apache/juneau/rest/server/logging/BasicRestDebugFormatter_Test.java
@@ -39,7 +39,6 @@ import jakarta.servlet.http.*;
  *
  * @since 10.0.0
  */
-@SuppressWarnings("resource") // Mockito mocks; nothing to close.
 class BasicRestDebugFormatter_Test {
 
        private final BasicRestDebugFormatter f = new BasicRestDebugFormatter();

Reply via email to