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 b1894cad46 SonarQube bug fixes
b1894cad46 is described below

commit b1894cad466ce48d919414a9681447ff5431284a
Author: James Bognar <[email protected]>
AuthorDate: Wed Feb 18 10:20:14 2026 -0500

    SonarQube bug fixes
---
 .../apache/juneau/bean/openapi3/ui/OpenApiUI.java  |  2 +-
 .../apache/juneau/bean/swagger/ui/SwaggerUI.java   |  2 +-
 .../juneau/commons/utils/CollectionUtils.java      | 37 ++++++++++++++++------
 .../apache/juneau/commons/utils/StringUtils.java   | 18 ++++++++---
 .../main/java/org/apache/juneau/BeanSession.java   |  3 ++
 .../org/apache/juneau/collections/JsonList.java    |  6 ++++
 .../org/apache/juneau/httppart/HttpPartSchema.java | 15 +++++++++
 .../org/apache/juneau/json/JsonParserSession.java  | 13 +++++---
 .../jsonschema/JsonSchemaGeneratorSession.java     |  7 +++-
 .../org/apache/juneau/jsonschema/SchemaUtils.java  |  9 ++++++
 .../org/apache/juneau/objecttools/ObjectRest.java  |  3 ++
 .../apache/juneau/objecttools/ObjectSearcher.java  |  5 ++-
 .../apache/juneau/objecttools/ObjectSorter.java    |  3 ++
 .../java/org/apache/juneau/swap/ObjectSwap.java    |  3 ++
 .../org/apache/juneau/uon/UonParserSession.java    | 12 +++++--
 .../urlencoding/UrlEncodingParserSession.java      | 10 ++++--
 .../microservice/resources/DirectoryResource.java  |  3 ++
 .../microservice/resources/LogsResource.java       |  3 ++
 .../juneau/rest/mock/MockServletRequest.java       |  2 +-
 .../rest/swagger/BasicSwaggerProviderSession.java  |  6 +++-
 .../juneau/commons/utils/CollectionUtils_Test.java | 15 ++++++---
 .../juneau/commons/utils/StringUtils_Test.java     |  2 +-
 22 files changed, 143 insertions(+), 36 deletions(-)

diff --git 
a/juneau-bean/juneau-bean-openapi-v3/src/main/java/org/apache/juneau/bean/openapi3/ui/OpenApiUI.java
 
b/juneau-bean/juneau-bean-openapi-v3/src/main/java/org/apache/juneau/bean/openapi3/ui/OpenApiUI.java
index 0db80298d4..95c76b96dc 100644
--- 
a/juneau-bean/juneau-bean-openapi-v3/src/main/java/org/apache/juneau/bean/openapi3/ui/OpenApiUI.java
+++ 
b/juneau-bean/juneau-bean-openapi-v3/src/main/java/org/apache/juneau/bean/openapi3/ui/OpenApiUI.java
@@ -342,7 +342,7 @@ public class OpenApiUI extends ObjectSwap<OpenApi,Div> {
         */
        private static List<Object> toBRL(String s) {
                if (s == null)
-                       return null;
+                       return emptyList();
                if (s.indexOf(',') == -1)
                        return singletonList(s);
                var l = list();
diff --git 
a/juneau-bean/juneau-bean-swagger-v2/src/main/java/org/apache/juneau/bean/swagger/ui/SwaggerUI.java
 
b/juneau-bean/juneau-bean-swagger-v2/src/main/java/org/apache/juneau/bean/swagger/ui/SwaggerUI.java
index 14715aaa73..52dd7b2b10 100644
--- 
a/juneau-bean/juneau-bean-swagger-v2/src/main/java/org/apache/juneau/bean/swagger/ui/SwaggerUI.java
+++ 
b/juneau-bean/juneau-bean-swagger-v2/src/main/java/org/apache/juneau/bean/swagger/ui/SwaggerUI.java
@@ -373,7 +373,7 @@ public class SwaggerUI extends ObjectSwap<Swagger,Div> {
         */
        private static List<Object> toBRL(String s) {
                if (s == null)
-                       return null;
+                       return emptyList();
                if (s.indexOf(',') == -1)
                        return singletonList(s);
                var l = list();
diff --git 
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/utils/CollectionUtils.java
 
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/utils/CollectionUtils.java
index f8db492c72..8915a8260a 100644
--- 
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/utils/CollectionUtils.java
+++ 
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/utils/CollectionUtils.java
@@ -2190,6 +2190,9 @@ public class CollectionUtils {
         * @param value The list to wrap.
         * @return The wrapped list.
         */
+       @SuppressWarnings({
+               "java:S1168"     // TODO: Pass-through null by design. Consider 
empty list.
+       })
        public static <E> List<E> synced(List<E> value) {
                return value == null ? null : 
Collections.synchronizedList(value);
        }
@@ -2202,6 +2205,9 @@ public class CollectionUtils {
         * @param value The map to wrap.
         * @return The wrapped map.
         */
+       @SuppressWarnings({
+               "java:S1168"     // TODO: Pass-through null by design. Consider 
empty map.
+       })
        public static <K,V> Map<K,V> synced(Map<K,V> value) {
                return value == null ? null : 
Collections.synchronizedMap(value);
        }
@@ -2213,6 +2219,9 @@ public class CollectionUtils {
         * @param value The set to wrap.
         * @return The wrapped set.
         */
+       @SuppressWarnings({
+               "java:S1168"     // TODO: Pass-through null by design. Consider 
empty set.
+       })
        public static <E> Set<E> synced(Set<E> value) {
                return value == null ? null : 
Collections.synchronizedSet(value);
        }
@@ -2253,11 +2262,16 @@ public class CollectionUtils {
         *
         * @param <E> The element type.
         * @param value The collection to copy from.
-        * @param nullIfEmpty If <jk>true</jk> will return <jk>null</jk> if the 
collection is empty.
-        * @return A new modifiable list.
+        * @param nullIfEmpty If <jk>true</jk> will return <jk>null</jk> if the 
collection is empty or null.
+        * @return A new modifiable list, or an empty list if the input was 
<jk>null</jk> (when nullIfEmpty is false), or <jk>null</jk> if nullIfEmpty and 
the input was null or empty.
         */
+       @SuppressWarnings({
+               "java:S1168"     // Intentional null when nullIfEmpty and (null 
or empty).
+       })
        public static <E> ArrayList<E> toList(Collection<E> value, boolean 
nullIfEmpty) {
-               if (value == null || (nullIfEmpty && value.isEmpty()))
+               if (value == null)
+                       return nullIfEmpty ? null : new ArrayList<>();
+               if (nullIfEmpty && value.isEmpty())
                        return null;
                var l = new ArrayList<E>();
                value.forEach(l::add);
@@ -2442,11 +2456,11 @@ public class CollectionUtils {
         *
         * @param <E> The element type.
         * @param value The value to copy from.
-        * @return A new {@link TreeSet}, or <jk>null</jk> if the input was 
null.
+        * @return A new {@link TreeSet}, or an empty {@link TreeSet} if the 
input was <jk>null</jk>.
         */
        public static <E> TreeSet<E> toSortedSet(Collection<E> value) {
                if (value == null)
-                       return null;
+                       return new TreeSet<>();
                var l = new TreeSet<E>();
                value.forEach(l::add);
                return l;
@@ -2458,10 +2472,15 @@ public class CollectionUtils {
         * @param <E> The element type.
         * @param value The value to copy from.
         * @param nullIfEmpty If <jk>true</jk> returns <jk>null</jk> if the 
collection is empty.
-        * @return A new {@link TreeSet}, or <jk>null</jk> if the input was 
null.
+        * @return A new {@link TreeSet}, or an empty {@link TreeSet} if the 
input was <jk>null</jk>, or <jk>null</jk> if nullIfEmpty and the collection is 
empty.
         */
+       @SuppressWarnings({
+               "java:S1168"     // Intentional null when nullIfEmpty and empty.
+       })
        public static <E> TreeSet<E> toSortedSet(Collection<E> value, boolean 
nullIfEmpty) {
-               if (value == null || (nullIfEmpty && value.isEmpty()))
+               if (value == null)
+                       return new TreeSet<>();
+               if (nullIfEmpty && value.isEmpty())
                        return null;
                var l = new TreeSet<E>();
                value.forEach(l::add);
@@ -2473,10 +2492,10 @@ public class CollectionUtils {
         *
         * @param <T> The element type.
         * @param copyFrom The set to copy from.
-        * @return A new {@link TreeSet}, or <jk>null</jk> if the set was 
<jk>null</jk>.
+        * @return A new {@link TreeSet}, or an empty {@link TreeSet} if the 
input was <jk>null</jk>.
         */
        public static <T> TreeSet<T> toSortedSet(Set<T> copyFrom) {
-               return copyFrom == null ? null : new TreeSet<>(copyFrom);
+               return copyFrom == null ? new TreeSet<>() : new 
TreeSet<>(copyFrom);
        }
 
        /**
diff --git 
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/utils/StringUtils.java
 
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/utils/StringUtils.java
index 10aeeb25c0..68f5a838e9 100644
--- 
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/utils/StringUtils.java
+++ 
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/utils/StringUtils.java
@@ -3879,9 +3879,11 @@ public class StringUtils {
         * Combines collection values into a simple comma-delimited string.
         *
         * @param values The values to join.
-        * @return A comma-delimited string.
+        * @return A comma-delimited string, or <jk>null</jk> if the input is 
<jk>null</jk>.
         */
        public static String join(Collection<?> values) {
+               if (values == null)
+                       return null;
                return joine(toList(values), ',');
        }
 
@@ -6439,6 +6441,9 @@ public class StringUtils {
         * @param limit The maximum number of tokens to return.
         * @return The tokens, or <jk>null</jk> if the string was null.
         */
+       @SuppressWarnings({
+               "java:S1168"     // TODO: splita used widely; null propagates 
from split(). Consider empty array. See BasicCsvHeader, etc.
+       })
        public static String[] splita(String s, char c, int limit) {
                var l = StringUtils.split(s, c, limit);
                return l == null ? null : l.toArray(new String[l.size()]);
@@ -6451,6 +6456,9 @@ public class StringUtils {
         * @param c The character to split on.
         * @return The tokens, or null if the input array was null
         */
+       @SuppressWarnings({
+               "java:S1168"     // TODO: splita used widely. Consider empty 
array. See BasicCsvHeader, etc.
+       })
        public static String[] splita(String[] s, char c) {
                if (s == null)
                        return null;
@@ -6592,17 +6600,17 @@ public class StringUtils {
         *
         * @param s The input string.
         * @return
-        *      The results, or <jk>null</jk> if the input was <jk>null</jk>.
-        *      <br>An empty string results in an empty array.
+        *      The results, or an empty list if the input was <jk>null</jk>.
+        *      <br>An empty string results in an empty list.
         */
        @SuppressWarnings({
-               "java:S3776" // Cognitive complexity acceptable for nested 
string splitting
+               "java:S3776"     // Cognitive complexity acceptable for nested 
string splitting
        })
        public static List<String> splitNested(String s) {
                var escapeChars = getEscapeSet(',');
 
                if (s == null)
-                       return null;
+                       return Collections.emptyList();
                if (isEmpty(s))
                        return Collections.emptyList();
                if (s.indexOf(',') == -1)
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
index d58c38b747..848466a7e3 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
@@ -1009,6 +1009,9 @@ public class BeanSession extends ContextSession {
         *      Should be <jk>null</jk> if not a member class.
         * @return A new instance of the class.
         */
+       @SuppressWarnings({
+               "java:S1168"     // TODO: null when BeanMeta not found. 
Consider empty BeanMap.
+       })
        public final <T> BeanMap<T> newBeanMap(Object outer, Class<T> c) {
                var m = getBeanMeta(c);
                if (m == null)
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonList.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonList.java
index ce85bf06b8..5f7df5629c 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonList.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonList.java
@@ -263,6 +263,9 @@ public class JsonList extends LinkedList<Object> {
         * @return A new list or <jk>null</jk> if the input was <jk>null</jk>.
         * @throws ParseException Malformed input encountered.
         */
+       @SuppressWarnings({
+               "java:S1168"     // TODO: null input = null output by design. 
Consider empty JsonList.
+       })
        public static JsonList ofJson(Reader json) throws ParseException {
                return json == null ? null : new JsonList(json);
        }
@@ -277,6 +280,9 @@ public class JsonList extends LinkedList<Object> {
         * @return The parsed string.
         * @throws ParseException Malformed input encountered.
         */
+       @SuppressWarnings({
+               "java:S1168"     // TODO: null for empty input. Consider empty 
JsonList.
+       })
        public static JsonList ofJsonOrCdl(String s) throws ParseException {
                if (Utils.e(s))  // NOAI
                        return null;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java
index 57fb9bcd0a..22e4596445 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java
@@ -3601,6 +3601,9 @@ public class HttpPartSchema {
                return create().tString().fUon();
        }
 
+       @SuppressWarnings({
+               "java:S1168"     // TODO: null when input null. Consider empty 
map.
+       })
        private static Map<String,HttpPartSchema> build(Map<String,Object> in, 
boolean noValidate) {
                if (in == null)
                        return null;
@@ -3609,6 +3612,9 @@ public class HttpPartSchema {
                return u(m);
        }
 
+       @SuppressWarnings({
+               "java:S1168"     // TODO: null for null input. Consider default 
schema.
+       })
        private static HttpPartSchema build(Object in, boolean noValidate) {
                if (in == null)
                        return null;
@@ -3621,6 +3627,9 @@ public class HttpPartSchema {
                return in == null ? emptySet() : u(copyOf(in));
        }
 
+       @SuppressWarnings({
+               "java:S1168"     // TODO: null for empty input. Consider empty 
JsonMap.
+       })
        static final JsonMap toJsonMap(String[] ss) {
                String s = StringUtils.joinnl(ss);
                if (s.isEmpty())
@@ -3645,6 +3654,9 @@ public class HttpPartSchema {
                }
        }
 
+       @SuppressWarnings({
+               "java:S1168"     // TODO: null for empty input. Consider empty 
set.
+       })
        static final Set<String> toSet(String s) {
                if (isEmpty(s))
                        return null;
@@ -3657,6 +3669,9 @@ public class HttpPartSchema {
                return set;
        }
 
+       @SuppressWarnings({
+               "java:S1168"     // TODO: null when all arrays empty. Consider 
empty set.
+       })
        static final Set<String> toSet(String[]...s) {
                var isNotEmpty = false;
                for (var ss : s)
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserSession.java
index c7aecd4829..fc0b8b99a6 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserSession.java
@@ -364,7 +364,8 @@ public class JsonParserSession extends ReaderParserSession {
        }
 
        @SuppressWarnings({
-               "java:S3776" // Cognitive complexity acceptable for parser 
state machine
+               "java:S1168",    // Compiler-satisfying return: all paths 
return m or throw. S1168 flags null returns; here null is unreachable.
+               "java:S3776"     // Cognitive complexity acceptable for parser 
state machine
        })
        private <T> BeanMap<T> parseIntoBeanMap2(ParserReader r, BeanMap<T> m) 
throws IOException, ParseException, ExecutableException {
 
@@ -457,8 +458,9 @@ public class JsonParserSession extends ReaderParserSession {
        }
 
        @SuppressWarnings({
-               "java:S3776", // Cognitive complexity acceptable for parser 
state machine
-               "java:S135" // Multiple break statements necessary for state 
machine error handling
+               "java:S1168",    // Compiler-satisfying return: all paths 
return l or throw. S1168 flags null returns; here null is unreachable.
+               "java:S135",     // Multiple break statements necessary for 
state machine error handling
+               "java:S3776"     // Cognitive complexity acceptable for parser 
state machine
        })
        private <E> Collection<E> parseIntoCollection2(ParserReader r, 
Collection<E> l, ClassMeta<?> type, BeanPropertyMeta pMeta) throws IOException, 
ParseException, ExecutableException {
 
@@ -523,8 +525,9 @@ public class JsonParserSession extends ReaderParserSession {
        }
 
        @SuppressWarnings({
-               "java:S3776", // Cognitive complexity acceptable for parser 
state machine
-               "java:S135" // Multiple break statements necessary for state 
machine error handling
+               "java:S1168",    // Compiler-satisfying return: all paths 
return m or throw. S1168 flags null returns; here null is unreachable.
+               "java:S135",     // Multiple break statements necessary for 
state machine error handling
+               "java:S3776"     // Cognitive complexity acceptable for parser 
state machine
        })
        private <K,V> Map<K,V> parseIntoMap2(ParserReader r, Map<K,V> m, 
ClassMeta<K> keyType, ClassMeta<V> valueType, BeanPropertyMeta pMeta) throws 
IOException, ParseException, ExecutableException {
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorSession.java
index 8f6d68270b..8afab18e42 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorSession.java
@@ -321,7 +321,12 @@ public class JsonSchemaGeneratorSession extends 
BeanTraverseSession {
                return null;
        }
 
-       @SuppressWarnings({ "unchecked", "rawtypes", "java:S3776" })
+       @SuppressWarnings({
+               "java:S1168",    // TODO: null when type ignored. Consider 
empty schema.
+               "java:S3776",
+               "rawtypes",
+               "unchecked"
+       })
        private JsonMap getSchema(ClassMeta<?> eType, String attrName, 
List<String> pNames, boolean exampleAdded, boolean descriptionAdded, 
JsonSchemaBeanPropertyMeta jsbpm)
                throws BeanRecursionException, SerializeException {
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/SchemaUtils.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/SchemaUtils.java
index 5e2a20eedc..81c13a45ad 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/SchemaUtils.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/SchemaUtils.java
@@ -61,6 +61,9 @@ public class SchemaUtils {
         * @return The parsed contents.
         * @throws ParseException Invalid JSON encountered.
         */
+       @SuppressWarnings({
+               "java:S1168"     // TODO: null = not configured. Consider empty 
JsonMap for config parsing.
+       })
        public static JsonMap parseMap(Object o) throws ParseException {
                if (o == null)
                        return null;
@@ -88,6 +91,9 @@ public class SchemaUtils {
         * @return The parsed contents.
         * @throws ParseException Invalid JSON encountered.
         */
+       @SuppressWarnings({
+               "java:S1168"     // TODO: null = not configured. Consider empty 
JsonMap.
+       })
        public static JsonMap parseMap(String[] ss) throws ParseException {
                if (ss.length == 0)
                        return null;
@@ -106,6 +112,9 @@ public class SchemaUtils {
         * @return The parsed contents.
         * @throws ParseException Invalid JSON encountered.
         */
+       @SuppressWarnings({
+               "java:S1168"     // TODO: null = not configured. Consider empty 
set.
+       })
        public static Set<String> parseSet(String[] ss) throws ParseException {
                if (ss.length == 0)
                        return null;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/ObjectRest.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/ObjectRest.java
index 748dba5806..5e4c6e49b1 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/ObjectRest.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/ObjectRest.java
@@ -594,6 +594,9 @@ public class ObjectRest {
         * @param url The URL.
         * @return The list of methods.
         */
+       @SuppressWarnings({
+               "java:S1168"     // TODO: null when object not found at URL. 
Consider empty collection.
+       })
        public Collection<String> getPublicMethods(String url) {
                var o = get(url);
                if (o == null)
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/ObjectSearcher.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/ObjectSearcher.java
index f575adca4c..31b608a338 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/ObjectSearcher.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/ObjectSearcher.java
@@ -279,7 +279,10 @@ public class ObjectSearcher implements 
ObjectTool<SearchArgs> {
         * @param searchArgs The search arguments.  See {@link SearchArgs} for 
format.
         * @return A list of maps/beans matching the
         */
-       @SuppressWarnings("unchecked")
+       @SuppressWarnings({
+               "java:S1168",    // TODO: null when result not 
list/collection/array. Consider empty list.
+               "unchecked"
+       })
        public <R> List<R> run(Object input, String searchArgs) {
                Object r = run(BeanContext.DEFAULT_SESSION, input, 
SearchArgs.create(searchArgs));
                if (r instanceof List r2)
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/ObjectSorter.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/ObjectSorter.java
index 99f567c517..444e416d16 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/ObjectSorter.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/ObjectSorter.java
@@ -167,6 +167,9 @@ public class ObjectSorter implements ObjectTool<SortArgs> {
         * @param sortArgs The sort arguments.  See {@link SortArgs} for format.
         * @return A list of maps/beans matching the
         */
+       @SuppressWarnings({
+               "java:S1168"     // TODO: null when result not 
list/collection/array. Consider empty list.
+       })
        public <R> List<R> run(Object input, String sortArgs) {
                var r = run(BeanContext.DEFAULT_SESSION, input, 
SortArgs.create(sortArgs));
                if (r instanceof List r2)
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/ObjectSwap.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/ObjectSwap.java
index 0afa2ce2a6..df7394fa4a 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/ObjectSwap.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/ObjectSwap.java
@@ -162,6 +162,9 @@ public abstract class ObjectSwap<T,S> {
         * </ul>
         * @return The media types that this swap is applicable to, or 
<jk>null</jk> if it's applicable for all media types.
         */
+       @SuppressWarnings({
+               "java:S1168"     // TODO: Intentional null = applicable to all 
media types. Consider empty array.
+       })
        public MediaType[] forMediaTypes() {
                return null;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
index 49ebcf1947..a487968f61 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
@@ -456,7 +456,11 @@ public class UonParserSession extends ReaderParserSession 
implements HttpPartPar
                throw new ParseException(this, "Unrecognized syntax for 
boolean.  ''{0}''.", s);
        }
 
-       @SuppressWarnings({ "java:S3776", "java:S6541" })
+       @SuppressWarnings({
+               "java:S1168",    // TODO: null for empty/EOF or 
parseAttrName('%00'). Parser state machine.
+               "java:S3776",
+               "java:S6541"
+       })
        private <T> BeanMap<T> parseIntoBeanMap(UonReader r, BeanMap<T> m) 
throws IOException, ParseException, ExecutableException {
 
                int c = r.readSkipWs();
@@ -575,7 +579,8 @@ public class UonParserSession extends ReaderParserSession 
implements HttpPartPar
        }
 
        @SuppressWarnings({
-               "java:S3776" // Cognitive complexity acceptable for parser 
state machine
+               "java:S1168",    // TODO: null for EOF/AMP. Parser state 
machine.
+               "java:S3776"     // Cognitive complexity acceptable for parser 
state machine
        })
        private <E> Collection<E> parseIntoCollection(UonReader r, 
Collection<E> l, ClassMeta<E> type, boolean isUrlParamValue, BeanPropertyMeta 
pMeta)
                throws IOException, ParseException, ExecutableException {
@@ -665,7 +670,8 @@ public class UonParserSession extends ReaderParserSession 
implements HttpPartPar
        }
 
        @SuppressWarnings({
-               "java:S3776" // Cognitive complexity acceptable for parser 
state machine
+               "java:S1168",    // TODO: null for EOF/AMP. Parser state 
machine.
+               "java:S3776"     // Cognitive complexity acceptable for parser 
state machine
        })
        private <K,V> Map<K,V> parseIntoMap(UonReader r, Map<K,V> m, 
ClassMeta<K> keyType, ClassMeta<V> valueType, BeanPropertyMeta pMeta) throws 
IOException, ParseException, ExecutableException {
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java
index f9c9a48b84..8b16294ef8 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java
@@ -300,7 +300,12 @@ public class UrlEncodingParserSession extends 
UonParserSession {
                return (T)o;
        }
 
-       @SuppressWarnings({ "java:S3776", "java:S6541", "java:S1213" }) // 
Method name matches private method in parent class by design
+       @SuppressWarnings({
+               "java:S1168",    // TODO: null when currAttr is '%00'. Parser 
state machine.
+               "java:S1213",    // Method name matches private method in 
parent class by design
+               "java:S3776",
+               "java:S6541"
+       })
        private <T> BeanMap<T> parseIntoBeanMap(UonReader r, BeanMap<T> m) 
throws IOException, ParseException, ExecutableException {
 
                int c = r.peekSkipWs();
@@ -428,7 +433,8 @@ public class UrlEncodingParserSession extends 
UonParserSession {
        }
 
        @SuppressWarnings({
-               "java:S3776" // Cognitive complexity acceptable for parser 
state machine
+               "java:S1168",    // Compiler-satisfying return: all paths 
return m or throw. S1168 flags null returns; here null is unreachable.
+               "java:S3776"     // Cognitive complexity acceptable for parser 
state machine
        })
        private <K,V> Map<K,V> parseIntoMap2(UonReader r, Map<K,V> m, 
ClassMeta<?> type, Object outer) throws IOException, ParseException, 
ExecutableException {
 
diff --git 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
index d7eec52bc7..b7d2e5cc3d 100755
--- 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
+++ 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
@@ -143,6 +143,9 @@ public class DirectoryResource extends BasicRestServlet {
                        return l;
                }
 
+               @SuppressWarnings({
+                       "java:S1168"     // TODO: Intentional null when file or 
!includeChildren. Consider empty set.
+               })
                public Set<FileResource> getFiles() {
                        if (f.isFile() || ! includeChildren)
                                return null;
diff --git 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
index fcd80340a4..deffae68dc 100644
--- 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
+++ 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
@@ -119,6 +119,9 @@ public class LogsResource extends BasicRestServlet {
                        return l;
                }
 
+               @SuppressWarnings({
+                       "java:S1168"     // TODO: Intentional null when file or 
!includeChildren. Consider empty set.
+               })
                public Set<FileResource> getFiles() {
                        if (f.isFile() || ! includeChildren)
                                return null;
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java
index 9c10c05db1..9b66603099 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java
@@ -425,7 +425,7 @@ public class MockServletRequest implements 
HttpServletRequest {
        }
 
        @Override /* Overridden from HttpServletRequest */
-       public Collection<Part> getParts() throws IOException, ServletException 
{ return null; }
+       public Collection<Part> getParts() throws IOException, ServletException 
{ return Collections.emptyList(); }
 
        @Override /* Overridden from HttpServletRequest */
        public String getPathInfo() {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.java
index e8f355472c..0a91e5288b 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.java
@@ -60,7 +60,11 @@ import jakarta.servlet.*;
  *     <li class='link'><a class="doclink" 
href="https://juneau.apache.org/docs/topics/JuneauBeanSwagger2";>juneau-bean-swagger-v2</a>
  * </ul>
  */
-@SuppressWarnings({"resource","java:S1168","java:S115"})
+@SuppressWarnings({
+       "resource",
+       "java:S1168",    // Swagger/OpenAPI spec: null = omit field (e.g. 
parseList, parseMap, nullIfEmpty, toMap, firstNonEmpty)
+       "java:S115"      // Constants use UPPER_snakeCase convention (e.g., 
SWAGGER_paths)
+})
 public class BasicSwaggerProviderSession {
 
        private static final Logger LOG = 
Logger.getLogger(BasicSwaggerProviderSession.class);
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/commons/utils/CollectionUtils_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/commons/utils/CollectionUtils_Test.java
index 539b883da9..c58f67c3d3 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/commons/utils/CollectionUtils_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/commons/utils/CollectionUtils_Test.java
@@ -1280,7 +1280,9 @@ class CollectionUtils_Test extends TestBase {
                Collection<String> empty = list();
                assertNull(toList(empty, true));
                assertNotNull(toList(empty, false));
-               assertNull(toList(null, false));
+               assertNotNull(toList(null, false));
+               assertTrue(toList(null, false).isEmpty());
+               assertNull(toList(null, true));
        }
 
        
//====================================================================================================
@@ -1382,7 +1384,8 @@ class CollectionUtils_Test extends TestBase {
                TreeSet<Integer> result2 = toSortedSet(input2);
                assertEquals(l(1, 2, 3), new ArrayList<>(result2));
 
-               assertNull(toSortedSet((Set<String>)null));
+               assertNotNull(toSortedSet((Set<String>)null));
+               assertTrue(toSortedSet((Set<String>)null).isEmpty());
        }
 
        
//====================================================================================================
@@ -1472,8 +1475,9 @@ class CollectionUtils_Test extends TestBase {
                TreeSet<Integer> result2 = toSortedSet(col2);
                assertEquals(l(1, 2, 3), new ArrayList<>(result2));
 
-               // Test line 2117: null returns null
-               assertNull(toSortedSet((Collection<String>)null));
+               // Test line 2117: null returns empty TreeSet
+               assertNotNull(toSortedSet((Collection<String>)null));
+               assertTrue(toSortedSet((Collection<String>)null).isEmpty());
        }
 
        
//====================================================================================================
@@ -1489,7 +1493,8 @@ class CollectionUtils_Test extends TestBase {
                Collection<String> empty = list();
                assertNull(toSortedSet(empty, true));
                assertNotNull(toSortedSet(empty, false));
-               assertNull(toSortedSet((Collection<String>)null, false));
+               assertNotNull(toSortedSet((Collection<String>)null, false));
+               assertTrue(toSortedSet((Collection<String>)null, 
false).isEmpty());
        }
 
        
//====================================================================================================
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/commons/utils/StringUtils_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/commons/utils/StringUtils_Test.java
index 318a9e4160..f40a84ab03 100755
--- 
a/juneau-utest/src/test/java/org/apache/juneau/commons/utils/StringUtils_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/commons/utils/StringUtils_Test.java
@@ -5673,7 +5673,7 @@ class StringUtils_Test extends TestBase {
                assertEquals("b{c,d{e,f}}", result3.get(1));
 
                // Null/empty input
-               assertNull(splitNested(null));
+               assertTrue(splitNested(null).isEmpty());
                assertTrue(splitNested("").isEmpty());
 
                // Code path: c == '\\' when inEscape is true (double backslash)

Reply via email to