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 48cadfde7a Minor SonarQube fixes
48cadfde7a is described below

commit 48cadfde7ae0ec05ba19bce5bd492aaf9d95efb6
Author: James Bognar <[email protected]>
AuthorDate: Sat Apr 4 10:03:48 2026 -0400

    Minor SonarQube fixes
---
 .../main/java/org/apache/juneau/BeanContext.java   | 62 ++++++++++++----------
 .../src/main/java/org/apache/juneau/ClassMeta.java | 23 ++++----
 .../juneau/InvalidDataConversionException.java     |  2 +-
 .../apache/juneau/annotation/SwapAnnotation.java   |  3 ++
 .../org/apache/juneau/bson/BsonParserSession.java  |  7 +++
 .../org/apache/juneau/cbor/CborParserSession.java  |  3 +-
 .../juneau/cbor/annotation/CborAnnotation.java     |  3 ++
 .../org/apache/juneau/collections/JsonMap.java     |  4 +-
 .../java/org/apache/juneau/cp/BasicFileFinder.java |  6 ++-
 .../org/apache/juneau/hjson/HjsonTokenizer.java    |  3 ++
 .../org/apache/juneau/hocon/HoconTokenizer.java    |  3 ++
 .../apache/juneau/ini/IniSerializerSession.java    |  8 +++
 .../org/apache/juneau/json/JsonParserSession.java  |  4 +-
 .../apache/juneau/msgpack/MsgPackOutputStream.java |  7 ++-
 .../juneau/msgpack/MsgPackParserSession.java       |  3 +-
 .../apache/juneau/parser/ParserInputStream.java    |  3 ++
 .../org/apache/juneau/proto/ProtoTokenizer.java    |  4 +-
 .../apache/juneau/serializer/SerializerPipe.java   |  6 +++
 .../java/org/apache/juneau/toml/TomlTokenizer.java |  6 +--
 .../java/org/apache/juneau/utils/Iso8601Utils.java |  9 ++++
 .../commons/conversion/BasicConverter_Test.java    |  7 +--
 .../conversion/ConfigurableConverter_Test.java     |  2 +-
 .../java/org/apache/juneau/rest/Swagger_Test.java  |  1 +
 23 files changed, 119 insertions(+), 60 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
index 9b7a4f10aa..8274f39b8d 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
@@ -3842,7 +3842,8 @@ public class BeanContext extends Context implements 
ConversionFinder {
         */
        @Override
        @SuppressWarnings({
-               "java:S3776"  // Cognitive complexity acceptable for 
comprehensive conversion dispatch
+               "java:S3776", // Cognitive complexity acceptable for 
comprehensive conversion dispatch
+               "java:S6541"  // Brain Method: conversion dispatch inherently 
requires handling many type pairs in one place
        })
        public Conversion<?,?> findConversion(Class<?> inType, Class<?> 
outType) {
                var toMeta = getClassMeta(outType);
@@ -4053,7 +4054,7 @@ public class BeanContext extends Context implements 
ConversionFinder {
                                                throw rex("Cannot convert 
string to {0}: {1}", outType.getName(), str);
                                        var elemType = args.length > 0 ? 
args[0] : null;
                                        var l2 = 
JsonList.ofJson(str).setBeanSession(bs);
-                                       var result = (Collection<Object>) 
newCollection(outType);
+                                       var result = newCollection(outType);
                                        l2.forEach(x -> result.add(elemType != 
null && x != null ? converter.to(x, elemType) : x));
                                        return result;
                                } catch (Exception e) {
@@ -4134,14 +4135,14 @@ public class BeanContext extends Context implements 
ConversionFinder {
                                        var temporal = 
(java.time.temporal.Temporal) in;
                                        java.time.Instant instant;
                                        try {
-                                               instant = 
java.time.Instant.from(temporal);
-                                       } catch (java.time.DateTimeException e) 
{
-                                               // LocalDateTime lacks offset 
info - interpret using session/system timezone
-                                               var tz = 
sessionTimeZone(session);
-                                               var zoneId = tz != null ? 
tz.toZoneId() : java.time.ZoneId.systemDefault();
-                                               instant = 
java.time.LocalDateTime.from(temporal).atZone(zoneId).toInstant();
-                                       }
-                                       return 
Iso8601Utils.fromEpochMillis(instant.toEpochMilli(), toMeta, 
sessionTimeZone(session));
+                                       instant = 
java.time.Instant.from(temporal);
+                                       } catch (@SuppressWarnings("unused") 
java.time.DateTimeException e) {
+                                       // LocalDateTime lacks offset info - 
interpret using session/system timezone
+                                       var tz = sessionTimeZone(session);
+                                       var zoneId = tz != null ? tz.toZoneId() 
: java.time.ZoneId.systemDefault();
+                                       instant = 
java.time.LocalDateTime.from(temporal).atZone(zoneId).toInstant();
+                               }
+                               return 
Iso8601Utils.fromEpochMillis(instant.toEpochMilli(), toMeta, 
sessionTimeZone(session));
                                };
                }
                if (toMeta.isDate() && outType == java.util.Date.class) {
@@ -4152,14 +4153,14 @@ public class BeanContext extends Context implements 
ConversionFinder {
                                        var temporal = 
(java.time.temporal.Temporal) in;
                                        java.time.Instant instant;
                                        try {
-                                               instant = 
java.time.Instant.from(temporal);
-                                       } catch (java.time.DateTimeException e) 
{
-                                               // LocalDateTime lacks offset 
info - interpret using session/system timezone
-                                               var tz = 
sessionTimeZone(session);
-                                               var zoneId = tz != null ? 
tz.toZoneId() : java.time.ZoneId.systemDefault();
-                                               instant = 
java.time.LocalDateTime.from(temporal).atZone(zoneId).toInstant();
-                                       }
-                                       return java.util.Date.from(instant);
+                                       instant = 
java.time.Instant.from(temporal);
+                                       } catch (@SuppressWarnings("unused") 
java.time.DateTimeException e) {
+                                       // LocalDateTime lacks offset info - 
interpret using session/system timezone
+                                       var tz = sessionTimeZone(session);
+                                       var zoneId = tz != null ? tz.toZoneId() 
: java.time.ZoneId.systemDefault();
+                                       instant = 
java.time.LocalDateTime.from(temporal).atZone(zoneId).toInstant();
+                               }
+                               return java.util.Date.from(instant);
                                };
                }
 
@@ -4227,9 +4228,9 @@ public class BeanContext extends Context implements 
ConversionFinder {
                        return (in, memberOf, session, args) -> 
converter.to(in.toString(), memberOf, session, Boolean.class);
                }
 
-               // --- Object → Bean via toString() + BeanMap.load() (fallback 
for bean-compatible types) ---
-               // Matches old convertToMemberType fallback: if (to.isBean()) 
return newBeanMap(to.inner()).load(value.toString()).getBean()
-               // Excludes cases where input is already assignable to output 
(handled by BeanSession isInstance shortcut).
+       // --- Object → Bean via toString() + BeanMap.load() (fallback for 
bean-compatible types) ---
+       // Replicates the old convertToMemberType fallback for beans 
(newBeanMap + load + getBean).
+       // Excludes cases where input is already assignable to output (handled 
by BeanSession isInstance shortcut).
                if (toMeta.isBean() && !Map.class.isAssignableFrom(inType) && 
!CharSequence.class.isAssignableFrom(inType)
                                && !outType.isAssignableFrom(inType)) {
                        return (in, memberOf, session, args) -> {
@@ -4249,7 +4250,7 @@ public class BeanContext extends Context implements 
ConversionFinder {
                return session == null ? null : 
session.get(TimeZone.class).orElse(null);
        }
 
-       private BeanSession beanSession(ConverterSession session) {
+       private static BeanSession beanSession(ConverterSession session) {
                return session instanceof BeanSession bs ? bs : null;
        }
 
@@ -4266,7 +4267,7 @@ public class BeanContext extends Context implements 
ConversionFinder {
                        return new TreeSet<>();
                try {
                        return (Collection<Object>) 
outType.getDeclaredConstructor().newInstance();
-               } catch (Exception e) {
+               } catch (@SuppressWarnings("unused") Exception e) {
                        return new ArrayList<>();
                }
        }
@@ -4913,17 +4914,22 @@ public class BeanContext extends Context implements 
ConversionFinder {
 
                // Loop until we find a ParameterizedType
                if (! (o instanceof ParameterizedType)) {
-                       loop: do {
+                       while (nn(c)) {
                                o = c.getGenericSuperclass();
                                if (o instanceof ParameterizedType)
-                                       break loop;
+                                       break;
+                               boolean found = false;
                                for (var t : c.getGenericInterfaces()) {
                                        o = t;
-                                       if (o instanceof ParameterizedType)
-                                               break loop;
+                                       if (o instanceof ParameterizedType) {
+                                               found = true;
+                                               break;
+                                       }
                                }
+                               if (found)
+                                       break;
                                c = c.getSuperclass();
-                       } while (nn(c));
+                       }
                }
 
                if (o instanceof ParameterizedType o2 && ! 
o2.getRawType().equals(Enum.class)) {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
index a9320ed103..1d8cb95120 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
@@ -68,7 +68,8 @@ import org.apache.juneau.swap.*;
 @Bean(properties = 
"innerClass,elementType,keyType,valueType,notABeanReason,initException,beanMeta")
 @SuppressWarnings({
        "java:S1200",  // Class has 23 dependencies, acceptable for this core 
reflection metadata class
-       "java:S1452"   // Wildcard required - ClassMeta<?>, ObjectSwap<T,?>, 
etc. for element/component types
+       "java:S1452",  // Wildcard required - ClassMeta<?>, ObjectSwap<T,?>, 
etc. for element/component types
+       "java:S6539"   // Monster Class: ClassMeta is a focused 
reflection-metadata cache; splitting would increase coupling
 })
 public class ClassMeta<T> extends ClassInfoTyped<T> {
 
@@ -868,8 +869,8 @@ public class ClassMeta<T> extends ClassInfoTyped<T> {
                // array conversions from element types, which can produce 
false positives here.
                if (inner().isArray() && c.isArray())
                        return false;
-               // Exclude Collections and Maps: BeanSession handles those via 
convertToCollectionType/convertToMapType;
-               // BasicConverter's generic collection/map conversions produce 
false positives (Mutaters never did these).
+               // Exclude Collections and Maps: BeanSession handles 
collection/map conversion directly;
+               // BasicConverter's generic conversions produce false positives 
that Mutaters never did.
                if (Collection.class.isAssignableFrom(inner()) || 
Map.class.isAssignableFrom(inner()))
                        return false;
                return BasicConverter.INSTANCE.canConvert(c, inner());
@@ -906,8 +907,8 @@ public class ClassMeta<T> extends ClassInfoTyped<T> {
                // array conversions from element types, which can produce 
false positives here.
                if (inner().isArray() && c.isArray())
                        return false;
-               // Exclude Collection/Map targets: BeanSession handles those 
via convertToCollectionType/convertToMapType;
-               // BasicConverter's generic collection/map conversions produce 
false positives (Mutaters never did these).
+               // Exclude Collection/Map targets: BeanSession handles 
collection/map conversion directly;
+               // BasicConverter's generic conversions produce false positives 
that Mutaters never did.
                if (Collection.class.isAssignableFrom(c) || 
Map.class.isAssignableFrom(c))
                        return false;
                return BasicConverter.INSTANCE.canConvert(inner(), c);
@@ -1452,9 +1453,9 @@ public class ClassMeta<T> extends ClassInfoTyped<T> {
        private KeyValueTypes findKeyValueTypes() {
                if (cat.is(MAP) && ! cat.is(BEANMAP)) {
                        // If this is a MAP, see if it's parameterized (e.g. 
AddressBook extends HashMap<String,Person>)
-                       var parameters = beanContext.findParameters(inner(), 
inner());
-                       if (nn(parameters) && parameters.length == 2) {
-                               return new KeyValueTypes(parameters[0], 
parameters[1]);
+                       var typeParams = beanContext.findParameters(inner(), 
inner());
+                       if (nn(typeParams) && typeParams.length == 2) {
+                               return new KeyValueTypes(typeParams[0], 
typeParams[1]);
                        }
                        return new 
KeyValueTypes(beanContext.getClassMeta(Object.class), 
beanContext.getClassMeta(Object.class));
                }
@@ -1467,9 +1468,9 @@ public class ClassMeta<T> extends ClassInfoTyped<T> {
                if (cat.is(ARRAY)) {
                        return 
beanContext.getClassMeta(inner().getComponentType());
                } else if (cat.is(COLLECTION) || cat.is(ITERABLE) || 
cat.is(ITERATOR) || cat.is(STREAM) || is(Optional.class)) {
-                       var parameters = beanContext.findParameters(inner(), 
inner());
-                       if (nn(parameters) && parameters.length == 1) {
-                               return parameters[0];
+                       var typeParams = beanContext.findParameters(inner(), 
inner());
+                       if (nn(typeParams) && typeParams.length == 1) {
+                               return typeParams[0];
                        }
                        return beanContext.getClassMeta(Object.class);
                }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/InvalidDataConversionException.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/InvalidDataConversionException.java
index 2723293874..365fb5e7c6 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/InvalidDataConversionException.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/InvalidDataConversionException.java
@@ -46,7 +46,7 @@ public class InvalidDataConversionException extends 
BasicRuntimeException {
        }
 
        private static String value(Object o) {
-               if (o instanceof Class o2)
+               if (o instanceof Class<?> o2)
                        return "'" + name(o2) + "'";
                return Json5Serializer.DEFAULT == null ? "'" + o.toString() + 
"'" : Json5Serializer.DEFAULT.toString(o);
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SwapAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SwapAnnotation.java
index 57f30a8f57..767f7ad815 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SwapAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SwapAnnotation.java
@@ -221,6 +221,9 @@ public class SwapAnnotation {
 
        }
 
+       @SuppressWarnings({
+               "java:S2160" // equals not needed; annotation object identity 
is sufficient for usage in Sets/Maps
+       })
        private static class Object extends AppliedOnClassAnnotationObject 
implements Swap {
 
                private final String[] description;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/bson/BsonParserSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/bson/BsonParserSession.java
index 41baec1bf7..5fc1b5b396 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/bson/BsonParserSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/bson/BsonParserSession.java
@@ -118,6 +118,9 @@ public class BsonParserSession extends 
InputStreamParserSession {
                return o;
        }
 
+       @SuppressWarnings({
+               "resource" // is is caller-owned; this method does not close it
+       })
        private <T> T parseDocument(BsonInputStream is, ClassMeta<?> eType, 
Object outer, BeanPropertyMeta pMeta) throws IOException, ParseException, 
ExecutableException {
                is.readDocumentSize();
                if (eType == null)
@@ -233,6 +236,10 @@ public class BsonParserSession extends 
InputStreamParserSession {
                return beanMap;
        }
 
+       @SuppressWarnings({
+               "unused",    // pMeta kept for API consistency with other 
parseXxx methods
+               "java:S1172" // Same as above
+       })
        private Object parseArray(BsonInputStream is, ClassMeta<?> eType, 
Object outer, BeanPropertyMeta pMeta) throws IOException, ParseException, 
ExecutableException {
                is.readDocumentSize();
                if (eType == null)
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cbor/CborParserSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cbor/CborParserSession.java
index f8599ea002..5151c56c4c 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cbor/CborParserSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cbor/CborParserSession.java
@@ -183,8 +183,9 @@ public class CborParserSession extends 
InputStreamParserSession {
         * Workhorse method.
         */
        @SuppressWarnings({
+               "resource",   // is is caller-owned; this method does not close 
it
                "java:S3776", // Cognitive complexity acceptable for this 
specific logic
-               "java:S6541", // Single-threaded session contexts do not 
require synchronization
+               "java:S6541"  // Single-threaded session contexts do not 
require synchronization
        })
        private <T> T parseAnything(ClassMeta<?> eType, CborInputStream is, 
Object outer, BeanPropertyMeta pMeta) throws IOException, ParseException, 
ExecutableException {
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cbor/annotation/CborAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cbor/annotation/CborAnnotation.java
index b9d5da7a14..617662c377 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cbor/annotation/CborAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cbor/annotation/CborAnnotation.java
@@ -175,6 +175,9 @@ public class CborAnnotation {
                }
        }
 
+       @SuppressWarnings({
+               "java:S2160" // equals not needed; annotation object identity 
is sufficient for usage in Sets/Maps
+       })
        private static class Object extends AppliedOnClassAnnotationObject 
implements Cbor {
 
                private final String[] description;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonMap.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonMap.java
index 451d703d42..1cf2fb35ac 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonMap.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonMap.java
@@ -751,8 +751,8 @@ public class JsonMap extends LinkedHashMap<String,Object> {
                        || (x instanceof Boolean x2 && x2.equals(false))
                        || (x instanceof Number x3 && x3.intValue() == -1)
                || (isArray(x) && Array.getLength(x) == 0)
-               || (x instanceof Map x2 && x2.isEmpty())
-               || (x instanceof Collection x3 && x3.isEmpty())
+               || (x instanceof Map<?,?> x2 && x2.isEmpty())
+               || (x instanceof Collection<?> x3 && x3.isEmpty())
                ));
                // @formatter:on
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicFileFinder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicFileFinder.java
index 4d3121f30c..7e54637830 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicFileFinder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicFileFinder.java
@@ -178,12 +178,14 @@ public class BasicFileFinder implements FileFinder {
 
                if (lf == null) {
                        List<String> candidateFileNames = 
getCandidateFileNames(name, locale);
-                       paths: for (LocalDir root : roots) {
+                       for (LocalDir root : roots) {
                                for (var cfn : candidateFileNames) {
                                        lf = root.resolve(cfn);
                                        if (nn(lf))
-                                               break paths;
+                                               break;
                                }
+                               if (nn(lf))
+                                       break;
                        }
 
                        if (nn(lf) && isIgnoredFile(lf.getName()))
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/hjson/HjsonTokenizer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/hjson/HjsonTokenizer.java
index 05f98463bc..678851a6cd 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/hjson/HjsonTokenizer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/hjson/HjsonTokenizer.java
@@ -137,6 +137,9 @@ public class HjsonTokenizer {
         *
         * @param reader The reader to tokenize.
         */
+       @SuppressWarnings({
+               "resource" // BufferedReader is owned by PushbackReader; 
PushbackReader constructor never throws
+       })
        public HjsonTokenizer(Reader reader) {
                var in = reader instanceof BufferedReader br ? br : new 
BufferedReader(reader);
                this.reader = new PushbackReader(in, 4);
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/hocon/HoconTokenizer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/hocon/HoconTokenizer.java
index 3b6e4cb178..0ce2c990c6 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/hocon/HoconTokenizer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/hocon/HoconTokenizer.java
@@ -159,6 +159,9 @@ public class HoconTokenizer {
         *
         * @param reader The reader to tokenize.
         */
+       @SuppressWarnings({
+               "resource" // BufferedReader is owned by PushbackReader; 
PushbackReader constructor never throws
+       })
        public HoconTokenizer(Reader reader) {
                var in = reader instanceof BufferedReader br ? br : new 
BufferedReader(reader);
                this.reader = new PushbackReader(in, 8);
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 990a610464..bba2fed120 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
@@ -215,6 +215,10 @@ public class IniSerializerSession extends 
WriterSerializerSession {
                });
        }
 
+       @SuppressWarnings({
+               "unused",    // type reserved for future type-aware section 
serialization
+               "java:S1172" // Same as above
+       })
        private void serializeMapSection(IniWriter w, Map<?,?> map, 
ClassMeta<?> type) throws SerializeException {
                Predicate<Object> checkNull = x -> isKeepNullProperties() || 
nn(x);
                forEachEntry(map, e -> {
@@ -298,6 +302,10 @@ public class IniSerializerSession extends 
WriterSerializerSession {
                return b.build();
        }
 
+       @SuppressWarnings({
+               "unused",    // value accepted for future value-aware inline 
detection
+               "java:S1172" // Same as above
+       })
        private static boolean isSimpleOrJson5Inline(ClassMeta<?> aType, Object 
value) {
                if (aType.isBean() || aType.isMap())
                        return false;
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 03bc1119f0..e4e06483b8 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
@@ -626,7 +626,9 @@ public class JsonParserSession extends ReaderParserSession {
        }
 
        @SuppressWarnings({
-               "java:S3776" // Cognitive complexity acceptable for number 
parsing logic
+               "unused",    // r accepted for API consistency; subclasses may 
use it for position tracking
+               "java:S1172", // Same as above
+               "java:S3776"  // Cognitive complexity acceptable for number 
parsing logic
        })
        protected Number parseNumber(ParserReader r, String s, Class<? extends 
Number> type) throws ParseException {
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackOutputStream.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackOutputStream.java
index 08c6b80898..11cca663ce 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackOutputStream.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackOutputStream.java
@@ -88,10 +88,9 @@ public class MsgPackOutputStream extends OutputStream {
 
        
        @SuppressWarnings({
-               "java:S1172", // Parameter out unused; loop counter advances 
for surrogate pairs
-               "java:S127", // For-loop counter modification acceptable in 
this algorithm
+               "java:S127" // For-loop counter modification acceptable in this 
algorithm
        })
-       private int writeUtf8To(CharSequence in, OutputStream out) {
+       private int writeUtf8To(CharSequence in) {
                var count = 0;
                for (int i = 0, len = in.length(); i < len; i++) {
                        var c = (in.charAt(i) & 0xFFFF);
@@ -385,7 +384,7 @@ public class MsgPackOutputStream extends OutputStream {
                else
                        append1(STR32).append4(length);
 
-               int length2 = writeUtf8To(cs, os);
+               int length2 = writeUtf8To(cs);
 
                if (length != length2)
                        throw new SerializeException("Unexpected length.  
Expected={0}, Actual={1}", length, length2);
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserSession.java
index 665a3c08db..086fab90cb 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserSession.java
@@ -184,8 +184,9 @@ public class MsgPackParserSession extends 
InputStreamParserSession {
         * Workhorse method.
         */
        @SuppressWarnings({
+               "resource",   // is is caller-owned; this method does not close 
it
                "java:S3776", // Cognitive complexity acceptable for this 
specific logic
-               "java:S6541", // Single-threaded session contexts do not 
require synchronization
+               "java:S6541"  // Single-threaded session contexts do not 
require synchronization
        })
        private <T> T parseAnything(ClassMeta<?> eType, MsgPackInputStream is, 
Object outer, BeanPropertyMeta pMeta) throws IOException, ParseException, 
ExecutableException {
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserInputStream.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserInputStream.java
index f6ce540a59..88ecf109d0 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserInputStream.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserInputStream.java
@@ -43,6 +43,9 @@ public class ParserInputStream extends InputStream implements 
Positionable {
         * @param pipe The parser input.
         * @throws IOException Thrown by underlying stream.
         */
+       @SuppressWarnings({
+               "resource" // is is owned by the pipe; lifetime managed by the 
caller's session
+       })
        protected ParserInputStream(ParserPipe pipe) throws IOException {
                this.is = pipe.getInputStream();
                pipe.setPositionable(this);
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/proto/ProtoTokenizer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/proto/ProtoTokenizer.java
index f414bb53b1..e37de186e3 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/proto/ProtoTokenizer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/proto/ProtoTokenizer.java
@@ -103,8 +103,8 @@ class ProtoTokenizer {
                        }
                        if (c == '#') {
                                readChar();
-                               while ((c = readChar()) >= 0 && c != '\n' && c 
!= '\r')
-                                       ;
+                       while ((c = readChar()) >= 0 && c != '\n' && c != '\r')
+                               { /* consume comment characters until end of 
line */ }
                                if (c == '\r' && peekChar() == '\n')
                                        readChar();
                                continue;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerPipe.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerPipe.java
index 3401e997b1..f221431497 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerPipe.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerPipe.java
@@ -117,6 +117,9 @@ public class SerializerPipe implements Closeable {
         *      the underlying stream.
         * @throws IOException If object could not be converted to an output 
stream.
         */
+       @SuppressWarnings({
+               "resource" // FileOutputStream is owned by 
BufferedOutputStream; BufferedOutputStream constructor never throws
+       })
        public OutputStream getOutputStream() throws IOException {
                if (output == null)
                        throw ioex("Output cannot be null.");
@@ -158,6 +161,9 @@ public class SerializerPipe implements Closeable {
         *      the underlying writer.
         * @throws SerializeException If object could not be converted to a 
writer.
         */
+       @SuppressWarnings({
+               "resource" // FileOutputStream and BufferedOutputStream are 
owned by OutputStreamWriter; neither wrapping constructor throws
+       })
        public Writer getWriter() throws SerializeException {
                if (output == null)
                        throw new SerializeException("Output cannot be null.");
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/toml/TomlTokenizer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/toml/TomlTokenizer.java
index 150bada10b..ad27804dbe 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/toml/TomlTokenizer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/toml/TomlTokenizer.java
@@ -111,8 +111,8 @@ class TomlTokenizer {
 
        void skipComment() throws IOException {
                if (peek() == '#') {
-                       while (read() >= 0 && peek() != '\n' && peek() != '\r')
-                               ;
+               while (read() >= 0 && peek() != '\n' && peek() != '\r')
+                       { /* consume comment characters until end of line */ }
                }
        }
 
@@ -129,7 +129,7 @@ class TomlTokenizer {
        void skipToNextLine() throws IOException {
                int c;
                while ((c = read()) >= 0 && c != '\n' && c != '\r')
-                       ;
+                       { /* consume characters until end of line */ }
                if (c == '\r' && peek() == '\n')
                        read();
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/Iso8601Utils.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/Iso8601Utils.java
index c03bcf3a5b..4b0bea8916 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/Iso8601Utils.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/Iso8601Utils.java
@@ -86,6 +86,9 @@ public final class Iso8601Utils {
         * @param timeZone The session time zone (used when the value lacks 
zone info).
         * @return The ISO 8601 string representation.
         */
+       @SuppressWarnings({
+               "java:S1172" // type kept for API compatibility; callers pass 
ClassMeta context for potential future use
+       })
        public static String format(Object value, ClassMeta<?> type, TimeZone 
timeZone) {
                if (value instanceof Duration d)
                        return d.toString();
@@ -148,6 +151,9 @@ public final class Iso8601Utils {
         * @param timeZone The session time zone.
         * @return The ISO date string.
         */
+       @SuppressWarnings({
+               "java:S1172" // type kept for API compatibility; callers pass 
ClassMeta context for potential future use
+       })
        public static String formatAsDate(Object value, ClassMeta<?> type, 
TimeZone timeZone) {
                ZoneId zoneId = timeZone != null ? timeZone.toZoneId() : 
ZoneId.systemDefault();
                if (value instanceof Calendar c) {
@@ -169,6 +175,9 @@ public final class Iso8601Utils {
         * @param timeZone The session time zone.
         * @return The ISO date-time string.
         */
+       @SuppressWarnings({
+               "java:S1172" // type kept for API compatibility; callers pass 
ClassMeta context for potential future use
+       })
        public static String formatAsDateTime(Object value, ClassMeta<?> type, 
TimeZone timeZone) {
                ZoneId zoneId = timeZone != null ? timeZone.toZoneId() : 
ZoneId.systemDefault();
                if (value instanceof Calendar c) {
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/commons/conversion/BasicConverter_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/commons/conversion/BasicConverter_Test.java
index 858efe9c4a..393b31e22c 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/commons/conversion/BasicConverter_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/commons/conversion/BasicConverter_Test.java
@@ -27,7 +27,8 @@ import org.apache.juneau.*;
 import org.junit.jupiter.api.*;
 
 @SuppressWarnings({
-       "unused" // Test helper classes have fields read only via assertions
+       "unused",    // Test helper classes have fields read only via assertions
+       "java:S5778" // assertThrows lambdas intentionally contain multiple 
statements to fully exercise the conversion path
 })
 
 class BasicConverter_Test extends TestBase {
@@ -789,8 +790,8 @@ class BasicConverter_Test extends TestBase {
        }
 
        @Test void p01_innerClassConstructorWithMemberOf() {
-               // to(o, memberOf, session, Class) routes through the 
inner-class path in findConstructorConversion;
-               // memberOf (this) is passed as the synthetic outer-instance 
parameter.
+               // Verifies the inner-class path in findConstructorConversion 
where the outer instance
+               // is passed as the synthetic first constructor parameter.
                var x = C.to("hello", this, (ConverterSession)null, 
P01_Inner.class);
                assertEquals("hello", x.value);
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/commons/conversion/ConfigurableConverter_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/commons/conversion/ConfigurableConverter_Test.java
index d330881505..d1d30ea4b9 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/commons/conversion/ConfigurableConverter_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/commons/conversion/ConfigurableConverter_Test.java
@@ -25,7 +25,7 @@ import org.junit.jupiter.api.*;
 /**
  * Unit tests for {@link ConfigurableConverter}.
  */
-public class ConfigurableConverter_Test {
+class ConfigurableConverter_Test {
 
        // 
=================================================================================================================
        // a - ConversionFinder integration
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/Swagger_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/rest/Swagger_Test.java
index d30fb46177..c5ef0195c1 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/rest/Swagger_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/rest/Swagger_Test.java
@@ -1230,6 +1230,7 @@ class Swagger_Test extends TestBase {
        @Rest
        @Deprecated
        public static class J2 {
+               @Deprecated
                @RestGet(path="/path2/{foo}")
                public X a() {
                        return null;

Reply via email to