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;