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)