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
The following commit(s) were added to refs/heads/master by this push:
new 5dbf026a11 TODO-999: Eclipse compiler-option-ignored cleanup, S3878
infinite-recursion fixes (Jetty/Tomcat/LinkString), OAuthResourceOwnerFlow
deprecation propagation, LocaleFormat Locale.Builder migration, resource-leak
suppressions, and juneau-utest Sonar fixes (S125/S3415/S1130/RouteIndexMixin).
5dbf026a11 is described below
commit 5dbf026a11549930ed3fa38c49010e0ff7cacecd
Author: James Bognar <[email protected]>
AuthorDate: Thu Jun 4 07:35:35 2026 -0400
TODO-999: Eclipse compiler-option-ignored cleanup, S3878 infinite-recursion
fixes (Jetty/Tomcat/LinkString), OAuthResourceOwnerFlow deprecation
propagation, LocaleFormat Locale.Builder migration, resource-leak suppressions,
and juneau-utest Sonar fixes (S125/S3415/S1130/RouteIndexMixin).
Co-authored-by: Cursor <[email protected]>
---
.../src/main/java/org/apache/juneau/bean/LinkString.java | 5 ++++-
.../src/main/java/org/apache/juneau/LocaleFormat.java | 9 ++++-----
.../main/java/org/apache/juneau/encoders/EncoderSet.java | 3 +++
.../java/org/apache/juneau/ini/IniSerializerSession.java | 1 -
.../org/apache/juneau/parquet/ParquetParserSession.java | 1 -
.../main/java/org/apache/juneau/parser/ParserSession.java | 2 +-
.../src/main/java/org/apache/juneau/parser/ParserSet.java | 3 +++
.../java/org/apache/juneau/serializer/SerializerSet.java | 3 +++
.../juneau/microservice/jetty/JettyServerComponent.java | 8 +++++++-
.../juneau/microservice/tomcat/TomcatServerComponent.java | 15 ++++++++-------
.../rest/reactive/ReactiveOptIn_BareServer_Test.java | 1 +
.../rest/auth/oauth/flow/OAuthResourceOwnerFlow.java | 15 +++++++++++++++
.../juneau/rest/reactive/ReactiveResponseProcessor.java | 8 ++++++--
.../juneau/rest/view/freemarker/FreemarkerDispatcher.java | 2 +-
.../org/apache/juneau/rest/view/jsp/JspDispatcher.java | 2 +-
.../juneau/rest/view/mustache/MustacheDispatcher.java | 2 +-
.../juneau/rest/view/thymeleaf/ThymeleafDispatcher.java | 2 +-
.../src/main/java/org/apache/juneau/rest/RestContext.java | 2 +-
.../apache/juneau/commons/collections/MultiList_Test.java | 4 ++--
.../juneau/junit5/JuneauBeanStoreExtension_Test.java | 6 +++---
.../java/org/apache/juneau/junit5/TestBeanStore_Test.java | 1 +
.../juneau/rest/StackOverlay_RestContext_Spike_Test.java | 1 +
.../juneau/rest/ops/RouteIndexMixin_AsMixin_Test.java | 1 +
.../juneau/rest/view/jsp/JspMixin_PathTraversal_Test.java | 1 +
24 files changed, 69 insertions(+), 29 deletions(-)
diff --git
a/juneau-bean/juneau-bean-common/src/main/java/org/apache/juneau/bean/LinkString.java
b/juneau-bean/juneau-bean-common/src/main/java/org/apache/juneau/bean/LinkString.java
index 321a0628b8..cba991a132 100644
---
a/juneau-bean/juneau-bean-common/src/main/java/org/apache/juneau/bean/LinkString.java
+++
b/juneau-bean/juneau-bean-common/src/main/java/org/apache/juneau/bean/LinkString.java
@@ -142,8 +142,11 @@ public class LinkString implements Comparable<LinkString> {
* <br>Can be <jk>null</jk> to unset the property.
* @return This object.
*/
+ @SuppressWarnings({
+ "java:S1905" // Cast required to disambiguate varargs overload
from this single-String overload; removing it causes infinite recursion.
+ })
public LinkString setUri(String value) {
- setUri(value, new Object[0]);
+ setUri(value, (Object[])new Object[0]);
return this;
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/LocaleFormat.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/LocaleFormat.java
index 5c9b88ad96..2c0b354694 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/LocaleFormat.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/LocaleFormat.java
@@ -89,10 +89,9 @@ public enum LocaleFormat {
private static Locale parseUnderscore(String s) {
var parts = s.split("_", -1);
- return switch (parts.length) {
- case 1 -> new Locale(parts[0]); // NOSONAR: legacy
Locale constructor required for underscore form
- case 2 -> new Locale(parts[0], parts[1]); // NOSONAR:
legacy Locale constructor required for underscore form
- default -> new Locale(parts[0], parts[1], parts[2]);
// NOSONAR: legacy Locale constructor required for underscore form
- };
+ var b = new Locale.Builder().setLanguage(parts[0]);
+ if (parts.length > 1) b.setRegion(parts[1]);
+ if (parts.length > 2) b.setVariant(parts[2]);
+ return b.build();
}
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/encoders/EncoderSet.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/encoders/EncoderSet.java
index 1b94397427..3549b7cde2 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/encoders/EncoderSet.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/encoders/EncoderSet.java
@@ -139,6 +139,9 @@ public class EncoderSet {
* @since 9.5.0
*/
@Override
+ @SuppressWarnings({
+ "resource" // BasicBeanStore lifecycle is owned by the
enclosing builder; closed externally when the builder is disposed.
+ })
public Builder overridingBeanStore(BeanStore store) {
if (store != null)
this.beanStore = new
BasicBeanStore(this.beanStore, store);
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ini/IniSerializerSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ini/IniSerializerSession.java
index 24577cd2d7..86074a5b73 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ini/IniSerializerSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ini/IniSerializerSession.java
@@ -17,7 +17,6 @@
package org.apache.juneau.ini;
import static org.apache.juneau.commons.utils.AssertionUtils.*;
-import static org.apache.juneau.commons.utils.StringUtils.*;
import static org.apache.juneau.commons.utils.ThrowableUtils.*;
import static org.apache.juneau.commons.utils.Utils.*;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parquet/ParquetParserSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parquet/ParquetParserSession.java
index 5d6e877592..0471300d50 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parquet/ParquetParserSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parquet/ParquetParserSession.java
@@ -31,7 +31,6 @@ import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
import java.util.Set;
import java.util.UUID;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
index 13c2a9ab63..501dec8044 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
@@ -820,7 +820,7 @@ public class ParserSession extends MarshallingSession {
throw new ParseException(this, completeThrown,
"Exception occurred in BeanConsumer.complete(). exception={0}, message={1}.",
cns(completeThrown), lm(completeThrown));
}
- private <T> Exception drainToConsumer(BeanConsumer<T> consumer, List<T>
list) {
+ private static <T> Exception drainToConsumer(BeanConsumer<T> consumer,
List<T> list) {
try {
consumer.begin();
for (var element : list)
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSet.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSet.java
index 49525b1eb3..5c54f15b51 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSet.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSet.java
@@ -165,6 +165,9 @@ public class ParserSet {
* @since 9.5.0
*/
@Override
+ @SuppressWarnings({
+ "resource" // BasicBeanStore lifecycle is owned by the
enclosing builder; closed externally when the builder is disposed.
+ })
public Builder overridingBeanStore(BeanStore store) {
if (store != null)
this.beanStore = new
BasicBeanStore(this.beanStore, store);
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSet.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSet.java
index f60c1636e2..2578a806a8 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSet.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSet.java
@@ -165,6 +165,9 @@ public class SerializerSet {
* @since 9.5.0
*/
@Override
+ @SuppressWarnings({
+ "resource" // BasicBeanStore lifecycle is owned by the
enclosing builder; closed externally when the builder is disposed.
+ })
public Builder overridingBeanStore(BeanStore store) {
if (store != null)
this.beanStore = new
BasicBeanStore(this.beanStore, store);
diff --git
a/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyServerComponent.java
b/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyServerComponent.java
index 3dc8600c11..bef5cae770 100644
---
a/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyServerComponent.java
+++
b/juneau-microservice/juneau-microservice-jetty/src/main/java/org/apache/juneau/microservice/jetty/JettyServerComponent.java
@@ -338,10 +338,13 @@ public class JettyServerComponent implements
MicroserviceListener {
* @param pathSpec The context path of the servlet.
* @return This object.
*/
+ @SuppressWarnings({
+ "java:S3878" // Array wrapper required to dispatch to varargs
overload; without it the call recurses infinitely back to this single-String
overload.
+ })
public JettyServerComponent addServlet(Servlet servlet, String
pathSpec) {
if (nn(pathSpec) && ! pathSpec.endsWith("/*"))
pathSpec = trimTrailingSlashes(pathSpec) + "/*";
- return addServlet(servlet, new String[] {pathSpec});
+ return addServlet(servlet, new String[]{pathSpec});
}
/**
@@ -365,6 +368,9 @@ public class JettyServerComponent implements
MicroserviceListener {
* @param urlPattern The URL pattern the filter applies to (e.g. {@code
"/*"}, {@code "/api/*"}).
* @return This object.
*/
+ @SuppressWarnings({
+ "java:S3878" // Array wrapper required to dispatch to varargs
overload; without it the call recurses infinitely back to this single-String
overload.
+ })
public JettyServerComponent addFilter(jakarta.servlet.Filter filter,
String urlPattern) {
return addFilter(filter, new String[]{urlPattern});
}
diff --git
a/juneau-microservice/juneau-microservice-tomcat/src/main/java/org/apache/juneau/microservice/tomcat/TomcatServerComponent.java
b/juneau-microservice/juneau-microservice-tomcat/src/main/java/org/apache/juneau/microservice/tomcat/TomcatServerComponent.java
index e5a3705d60..7ac94e80f4 100644
---
a/juneau-microservice/juneau-microservice-tomcat/src/main/java/org/apache/juneau/microservice/tomcat/TomcatServerComponent.java
+++
b/juneau-microservice/juneau-microservice-tomcat/src/main/java/org/apache/juneau/microservice/tomcat/TomcatServerComponent.java
@@ -124,7 +124,7 @@ public class TomcatServerComponent implements
MicroserviceListener {
port = RANDOM.nextInt(32767 - ports[0] + 1) +
ports[0];
try (var ss = new ServerSocket(port)) {
return port;
- } catch (@SuppressWarnings("unused") IOException e) {
+ } catch (IOException e) {
// Port is in use, try next port in array
}
}
@@ -187,8 +187,7 @@ public class TomcatServerComponent implements
MicroserviceListener {
@Override /* Overridden from MicroserviceListener */
@SuppressWarnings({
- "java:S3776", // Cognitive complexity acceptable for server
creation logic
- "resource" // ms.getBeanStore() is owned by the microservice
lifecycle; do not close here.
+ "java:S3776" // Cognitive complexity acceptable for server
creation logic
})
public void onStart(Microservice ms) {
try {
@@ -285,7 +284,7 @@ public class TomcatServerComponent implements
MicroserviceListener {
t.start();
try {
t.join();
- } catch (@SuppressWarnings("unused") InterruptedException e) {
+ } catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
@@ -302,8 +301,9 @@ public class TomcatServerComponent implements
MicroserviceListener {
* @param pathSpec The context path of the servlet.
* @return This object.
*/
+ @SuppressWarnings("java:S3878") // Array wrapper required to dispatch
to varargs overload; without it the call recurses infinitely back to this
single-String overload.
public TomcatServerComponent addServlet(Servlet servlet, String
pathSpec) {
- return addServlet(servlet, new String[]
{normalizePathSpec(pathSpec)});
+ return addServlet(servlet, new
String[]{normalizePathSpec(pathSpec)});
}
/**
@@ -329,8 +329,9 @@ public class TomcatServerComponent implements
MicroserviceListener {
* @param urlPattern The URL pattern the filter applies to (e.g. {@code
"/*"}, {@code "/api/*"}).
* @return This object.
*/
+ @SuppressWarnings("java:S3878") // Array wrapper required to dispatch
to varargs overload; without it the call recurses infinitely back to this
single-String overload.
public TomcatServerComponent addFilter(jakarta.servlet.Filter filter,
String urlPattern) {
- return addFilter(filter, new String[] {urlPattern});
+ return addFilter(filter, new String[]{urlPattern});
}
/**
@@ -399,7 +400,7 @@ public class TomcatServerComponent implements
MicroserviceListener {
String hostname = "localhost";
try {
hostname = InetAddress.getLocalHost().getHostName();
- } catch (@SuppressWarnings("unused") UnknownHostException e) {
+ } catch (UnknownHostException e) {
// Cannot determine hostname, use default "localhost"
}
return hostname;
diff --git
a/juneau-rest/juneau-rest-mock/src/test/java/org/apache/juneau/rest/reactive/ReactiveOptIn_BareServer_Test.java
b/juneau-rest/juneau-rest-mock/src/test/java/org/apache/juneau/rest/reactive/ReactiveOptIn_BareServer_Test.java
index 284d8eb301..83ebcb153d 100644
---
a/juneau-rest/juneau-rest-mock/src/test/java/org/apache/juneau/rest/reactive/ReactiveOptIn_BareServer_Test.java
+++
b/juneau-rest/juneau-rest-mock/src/test/java/org/apache/juneau/rest/reactive/ReactiveOptIn_BareServer_Test.java
@@ -71,6 +71,7 @@ class ReactiveOptIn_BareServer_Test {
@SuppressWarnings("resource") // Static test client; intentionally
held for the test class lifetime.
private static final MockRestClient CA =
MockRestClient.buildLax(A.class);
+ @SuppressWarnings("resource")
@Test void a01_bareServer_doesNotProcessFlowPublisherReactively()
throws Exception {
String content;
try (var req = CA.get("/flux")) {
diff --git
a/juneau-rest/juneau-rest-server-oauth/src/main/java/org/apache/juneau/rest/auth/oauth/flow/OAuthResourceOwnerFlow.java
b/juneau-rest/juneau-rest-server-oauth/src/main/java/org/apache/juneau/rest/auth/oauth/flow/OAuthResourceOwnerFlow.java
index 2907c348cf..354cf09359 100644
---
a/juneau-rest/juneau-rest-server-oauth/src/main/java/org/apache/juneau/rest/auth/oauth/flow/OAuthResourceOwnerFlow.java
+++
b/juneau-rest/juneau-rest-server-oauth/src/main/java/org/apache/juneau/rest/auth/oauth/flow/OAuthResourceOwnerFlow.java
@@ -60,6 +60,7 @@ public class OAuthResourceOwnerFlow {
*
* @return A new builder.
*/
+ @Deprecated(since = "9.5.0", forRemoval = false)
public static Builder create() {
return new Builder();
}
@@ -67,6 +68,7 @@ public class OAuthResourceOwnerFlow {
/**
* Builder.
*/
+ @Deprecated(since = "9.5.0", forRemoval = false)
public static class Builder {
private URI tokenEndpoint;
private String clientId;
@@ -77,6 +79,7 @@ public class OAuthResourceOwnerFlow {
private Consumer<HTTPRequest> httpRequestConfigurator;
/** Constructor. */
+ @Deprecated(since = "9.5.0", forRemoval = false)
protected Builder() {}
/**
@@ -85,6 +88,7 @@ public class OAuthResourceOwnerFlow {
* @param value The endpoint.
* @return This object.
*/
+ @Deprecated(since = "9.5.0", forRemoval = false)
public Builder tokenEndpoint(URI value) {
tokenEndpoint = assertArgNotNull("value", value);
return this;
@@ -96,6 +100,7 @@ public class OAuthResourceOwnerFlow {
* @param value The client ID.
* @return This object.
*/
+ @Deprecated(since = "9.5.0", forRemoval = false)
public Builder clientId(String value) {
clientId = assertArgNotNullOrBlank("value", value);
return this;
@@ -107,6 +112,7 @@ public class OAuthResourceOwnerFlow {
* @param value The secret.
* @return This object.
*/
+ @Deprecated(since = "9.5.0", forRemoval = false)
public Builder clientSecret(String value) {
assertArgNotNullOrBlank("value", value);
clientSecretSupplier = () -> value;
@@ -119,6 +125,7 @@ public class OAuthResourceOwnerFlow {
* @param value The supplier.
* @return This object.
*/
+ @Deprecated(since = "9.5.0", forRemoval = false)
public Builder clientSecretSupplier(Supplier<String> value) {
clientSecretSupplier = assertArgNotNull("value", value);
return this;
@@ -130,6 +137,7 @@ public class OAuthResourceOwnerFlow {
* @param value The username.
* @return This object.
*/
+ @Deprecated(since = "9.5.0", forRemoval = false)
public Builder username(String value) {
username = assertArgNotNullOrBlank("value", value);
return this;
@@ -141,6 +149,7 @@ public class OAuthResourceOwnerFlow {
* @param value The password.
* @return This object.
*/
+ @Deprecated(since = "9.5.0", forRemoval = false)
public Builder password(String value) {
assertArgNotNullOrBlank("value", value);
passwordSupplier = () -> value;
@@ -153,6 +162,7 @@ public class OAuthResourceOwnerFlow {
* @param value The supplier.
* @return This object.
*/
+ @Deprecated(since = "9.5.0", forRemoval = false)
public Builder passwordSupplier(Supplier<String> value) {
passwordSupplier = assertArgNotNull("value", value);
return this;
@@ -164,6 +174,7 @@ public class OAuthResourceOwnerFlow {
* @param values The scopes.
* @return This object.
*/
+ @Deprecated(since = "9.5.0", forRemoval = false)
public Builder scope(String... values) {
assertArgNotNull("values", values);
for (var v : values) {
@@ -179,6 +190,7 @@ public class OAuthResourceOwnerFlow {
* @param value The callback.
* @return This object.
*/
+ @Deprecated(since = "9.5.0", forRemoval = false)
public Builder httpRequestConfigurator(Consumer<HTTPRequest>
value) {
httpRequestConfigurator = assertArgNotNull("value",
value);
return this;
@@ -189,6 +201,7 @@ public class OAuthResourceOwnerFlow {
*
* @return A new {@link OAuthResourceOwnerFlow}.
*/
+ @Deprecated(since = "9.5.0", forRemoval = false)
public OAuthResourceOwnerFlow build() {
if (tokenEndpoint == null)
throw new
IllegalStateException("OAuthResourceOwnerFlow requires tokenEndpoint(...)");
@@ -217,6 +230,7 @@ public class OAuthResourceOwnerFlow {
*
* @param b The builder.
*/
+ @Deprecated(since = "9.5.0", forRemoval = false)
protected OAuthResourceOwnerFlow(Builder b) {
this.tokenEndpoint = b.tokenEndpoint;
this.clientId = b.clientId;
@@ -232,6 +246,7 @@ public class OAuthResourceOwnerFlow {
*
* @return The acquired token.
*/
+ @Deprecated(since = "9.5.0", forRemoval = false)
public OAuthToken acquire() {
var clientAuth = new ClientSecretBasic(new ClientID(clientId),
new Secret(clientSecretSupplier.get()));
var grant = new ResourceOwnerPasswordCredentialsGrant(username,
new Secret(passwordSupplier.get()));
diff --git
a/juneau-rest/juneau-rest-server-reactive/src/main/java/org/apache/juneau/rest/reactive/ReactiveResponseProcessor.java
b/juneau-rest/juneau-rest-server-reactive/src/main/java/org/apache/juneau/rest/reactive/ReactiveResponseProcessor.java
index 93dfde6017..42eeaf7f53 100644
---
a/juneau-rest/juneau-rest-server-reactive/src/main/java/org/apache/juneau/rest/reactive/ReactiveResponseProcessor.java
+++
b/juneau-rest/juneau-rest-server-reactive/src/main/java/org/apache/juneau/rest/reactive/ReactiveResponseProcessor.java
@@ -273,7 +273,9 @@ public class ReactiveResponseProcessor implements
ResponseProcessor {
// Frame encoders.
//
-----------------------------------------------------------------------------------------------------------------
- @SuppressWarnings({ "java:S2095", "resource" }) // Writer is
response-owned; we never close it.
+ @SuppressWarnings({
+ "java:S2095" // Writer is response-owned; we never close it.
+ })
private static void writeSseFrame(FinishablePrintWriter w, Object
element) throws IOException, SerializeException {
if (element == null)
return;
@@ -285,7 +287,9 @@ public class ReactiveResponseProcessor implements
ResponseProcessor {
SseSerializer.DEFAULT.serialize(new SseEvent(null, data), w);
}
- @SuppressWarnings({ "java:S2095", "resource" }) // Writer is
response-owned; we never close it.
+ @SuppressWarnings({
+ "java:S2095" // Writer is response-owned; we never close it.
+ })
private static void writeNdjsonFrame(FinishablePrintWriter w, Object
element) throws SerializeException {
if (element == null)
return;
diff --git
a/juneau-rest/juneau-rest-server-view-freemarker/src/main/java/org/apache/juneau/rest/view/freemarker/FreemarkerDispatcher.java
b/juneau-rest/juneau-rest-server-view-freemarker/src/main/java/org/apache/juneau/rest/view/freemarker/FreemarkerDispatcher.java
index 090cd2568d..91615deb3c 100644
---
a/juneau-rest/juneau-rest-server-view-freemarker/src/main/java/org/apache/juneau/rest/view/freemarker/FreemarkerDispatcher.java
+++
b/juneau-rest/juneau-rest-server-view-freemarker/src/main/java/org/apache/juneau/rest/view/freemarker/FreemarkerDispatcher.java
@@ -252,7 +252,7 @@ public class FreemarkerDispatcher implements
RawTemplateDispatcher {
try {
var resolved =
FileUtils.resolveVirtualPathSafely(basePath, template);
safeTemplate = stripBasePath(basePath, resolved);
- } catch (@SuppressWarnings("unused") IllegalArgumentException
ex) {
+ } catch (IllegalArgumentException ex) {
throw new Forbidden("Path escapes configured base
path.");
}
diff --git
a/juneau-rest/juneau-rest-server-view-jsp/src/main/java/org/apache/juneau/rest/view/jsp/JspDispatcher.java
b/juneau-rest/juneau-rest-server-view-jsp/src/main/java/org/apache/juneau/rest/view/jsp/JspDispatcher.java
index 648021035b..9adad20b2e 100644
---
a/juneau-rest/juneau-rest-server-view-jsp/src/main/java/org/apache/juneau/rest/view/jsp/JspDispatcher.java
+++
b/juneau-rest/juneau-rest-server-view-jsp/src/main/java/org/apache/juneau/rest/view/jsp/JspDispatcher.java
@@ -98,7 +98,7 @@ public class JspDispatcher implements RawTemplateDispatcher {
String target;
try {
target = JspViewRenderer.joinPath(basePath, path);
- } catch (@SuppressWarnings("unused") IllegalArgumentException
ex) {
+ } catch (IllegalArgumentException ex) {
throw new Forbidden("Path escapes configured base
path.");
}
try {
diff --git
a/juneau-rest/juneau-rest-server-view-mustache/src/main/java/org/apache/juneau/rest/view/mustache/MustacheDispatcher.java
b/juneau-rest/juneau-rest-server-view-mustache/src/main/java/org/apache/juneau/rest/view/mustache/MustacheDispatcher.java
index d94a7c68d2..99df5d1cb2 100644
---
a/juneau-rest/juneau-rest-server-view-mustache/src/main/java/org/apache/juneau/rest/view/mustache/MustacheDispatcher.java
+++
b/juneau-rest/juneau-rest-server-view-mustache/src/main/java/org/apache/juneau/rest/view/mustache/MustacheDispatcher.java
@@ -221,7 +221,7 @@ public class MustacheDispatcher implements
RawTemplateDispatcher {
try {
var resolved =
FileUtils.resolveVirtualPathSafely(basePath, template);
safeTemplate = stripBasePath(basePath, resolved);
- } catch (@SuppressWarnings("unused") IllegalArgumentException
ex) {
+ } catch (IllegalArgumentException ex) {
throw new Forbidden("Path escapes configured base
path.");
}
diff --git
a/juneau-rest/juneau-rest-server-view-thymeleaf/src/main/java/org/apache/juneau/rest/view/thymeleaf/ThymeleafDispatcher.java
b/juneau-rest/juneau-rest-server-view-thymeleaf/src/main/java/org/apache/juneau/rest/view/thymeleaf/ThymeleafDispatcher.java
index 9c6a7e6edc..36c6e45e01 100644
---
a/juneau-rest/juneau-rest-server-view-thymeleaf/src/main/java/org/apache/juneau/rest/view/thymeleaf/ThymeleafDispatcher.java
+++
b/juneau-rest/juneau-rest-server-view-thymeleaf/src/main/java/org/apache/juneau/rest/view/thymeleaf/ThymeleafDispatcher.java
@@ -212,7 +212,7 @@ public class ThymeleafDispatcher implements
RawTemplateDispatcher {
try {
var resolved =
FileUtils.resolveVirtualPathSafely(basePath, template);
safeTemplate = stripBasePath(basePath, resolved);
- } catch (@SuppressWarnings("unused") IllegalArgumentException
ex) {
+ } catch (IllegalArgumentException ex) {
throw new Forbidden("Path escapes configured base
path.");
}
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index b9240908ae..a08bf329a2 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -1970,7 +1970,7 @@ public class RestContext extends Context {
var args = new Args(mixinClass, this, builder.inner, () ->
mixinResource, "", null, null, null, true);
var mixinCtx = new RestContext(args);
var setCtx = ClassInfo.of(mixinResource).getMethod(x ->
x.hasName("setContext") && x.hasParameterTypes(RestContext.class)).orElse(null);
- if (nn(setCtx))
+ if (setCtx != null)
setCtx.accessible().invoke(mixinResource, mixinCtx);
return mixinCtx;
}
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/commons/collections/MultiList_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/commons/collections/MultiList_Test.java
index 5858843853..8957e968eb 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/commons/collections/MultiList_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/commons/collections/MultiList_Test.java
@@ -808,8 +808,8 @@ class MultiList_Test extends TestBase {
@Test
void h15_equals_nonList() {
var ml = new MultiList<>(l("a", "b"), l("c"));
- assertNotEquals(ml, "not-a-list");
- assertNotEquals(ml, null);
+ assertNotEquals("not-a-list", ml);
+ assertNotEquals(null, ml);
}
@Test
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/junit5/JuneauBeanStoreExtension_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/junit5/JuneauBeanStoreExtension_Test.java
index 44c8666eb4..9a14a47977 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/junit5/JuneauBeanStoreExtension_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/junit5/JuneauBeanStoreExtension_Test.java
@@ -302,7 +302,7 @@ class JuneauBeanStoreExtension_Test extends TestBase {
}
@Test
- void i04_resolveParameter_fallsBackToClassScope() throws Exception {
+ void i04_resolveParameter_fallsBackToClassScope() {
var ext = JuneauBeanStoreExtension.create();
var classCtx =
org.apache.juneau.junit5.testsupport.StubExtensionContext.of(F02_NullableField.class,
null);
ext.beforeAll(classCtx);
@@ -317,7 +317,7 @@ class JuneauBeanStoreExtension_Test extends TestBase {
}
@Test
- void i05_getStore_returnsClassScope_whenNoMethodScope() throws
Exception {
+ void i05_getStore_returnsClassScope_whenNoMethodScope() {
var ext = JuneauBeanStoreExtension.create();
var classCtx =
org.apache.juneau.junit5.testsupport.StubExtensionContext.of(F02_NullableField.class,
null);
ext.beforeAll(classCtx);
@@ -330,7 +330,7 @@ class JuneauBeanStoreExtension_Test extends TestBase {
}
@Test
- void i06_readClassStore_returnsNull_whenNoParentChainHasIt() throws
Exception {
+ void i06_readClassStore_returnsNull_whenNoParentChainHasIt() {
// Build a method context whose parent chain does NOT contain a
class-scope store.
var ext = JuneauBeanStoreExtension.create();
var standaloneCtx =
org.apache.juneau.junit5.testsupport.StubExtensionContext.of(F02_NullableField.class,
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/junit5/TestBeanStore_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/junit5/TestBeanStore_Test.java
index e480270174..f757f8ba57 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/junit5/TestBeanStore_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/junit5/TestBeanStore_Test.java
@@ -110,6 +110,7 @@ class TestBeanStore_Test extends TestBase {
// c — supplier-based overrides
//-----------------------------------------------------------------------------------------------------------------
+ @SuppressWarnings("java:S125") // Explanatory prose on
overload-resolution; not dead code.
@Test
void c01_supplier_invokedLazily() {
var calls = new AtomicInteger();
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/rest/StackOverlay_RestContext_Spike_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/rest/StackOverlay_RestContext_Spike_Test.java
index 239c554d84..ec00f38719 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/rest/StackOverlay_RestContext_Spike_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/rest/StackOverlay_RestContext_Spike_Test.java
@@ -158,6 +158,7 @@ class StackOverlay_RestContext_Spike_Test extends TestBase {
// d — toString lifecycle / cycle safety on the production-shaped
composition
//-----------------------------------------------------------------------------------------------------------------
+ @SuppressWarnings("java:S125") // Explanatory prose describing the
fixture shape; not dead code.
@Test
void d01_toString_doesNotStackOverflow_onProductionShapedComposition() {
// Production shape: outer BasicBeanStore holds StackOverlay in
its overridingParent slot;
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/rest/ops/RouteIndexMixin_AsMixin_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/rest/ops/RouteIndexMixin_AsMixin_Test.java
index 7e2982e6e0..0a45537144 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/rest/ops/RouteIndexMixin_AsMixin_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/rest/ops/RouteIndexMixin_AsMixin_Test.java
@@ -155,6 +155,7 @@ class RouteIndexMixin_AsMixin_Test extends TestBase {
@Rest(mixins=RouteIndexMixin.class)
public static class C extends RestServlet implements
BasicUniversalConfig {
private static final long serialVersionUID = 1L;
+ @Deprecated
@RestGet(path="/c-item", summary="C item",
description={"line one", "line two"})
public String cItem() { return "c"; }
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/rest/view/jsp/JspMixin_PathTraversal_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/rest/view/jsp/JspMixin_PathTraversal_Test.java
index d3fb50c60f..464471c116 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/rest/view/jsp/JspMixin_PathTraversal_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/rest/view/jsp/JspMixin_PathTraversal_Test.java
@@ -104,6 +104,7 @@ class JspMixin_PathTraversal_Test extends TestBase {
// URL-encoded traversal handling
//-----------------------------------------------------------------------------------------------------------------
+ @SuppressWarnings("java:S125") // Explanatory prose on URL-decoding
behaviour; not dead code.
@Test void t05_urlEncodedTraversal_doesNotEscape() throws Exception {
// Behavior depends on whether HttpClient / MockRest
URL-decodes %2e%2e before the
// handler sees the path: