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)} > {@link ThemeSettings} bean > {@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();
